Η Google κυκλοφόρησε το Magika 1.0, ένα κιτ εργαλείων που έχει σχεδιαστεί για τον εντοπισμό τύπων περιεχομένου αρχείων με βάση την ανάλυση δεδομένων αρχείων. Το Magika μπορεί να αναγνωρίσει με ακρίβεια γλώσσες προγραμματισμού, μεθόδους συμπίεσης, πακέτα εγκατάστασης, εκτελέσιμο κώδικα, τύπους σήμανσης και μορφές ήχου, βίντεο, εγγράφων και εικόνας. Το σχετικό κιτ εργαλείων και το μοντέλο μηχανικής μάθησης διατίθενται με άδεια χρήσης Apache 2.0. Διατίθενται συνδέσεις για Rust, Python, JavaScript/TypeScript και Go.
Το Magika διαφέρει από παρόμοια έργα που καθορίζουν τον τύπο MIME με βάση το περιεχόμενο χρησιμοποιώντας μεθόδους μηχανικής μάθησης, υψηλή απόδοση και ακρίβεια ανίχνευσης. Το μοντέλο εκπαιδεύτηκε χρησιμοποιώντας το πλαίσιο Keras σε 100 εκατομμύρια αρχεία παραδειγμάτων (μέγεθος συνόλου δεδομένων άνω των 3 TB) και υποστηρίζει την αναγνώριση 200 τύπων δεδομένων με ακρίβεια τουλάχιστον 99%. Το μοντέλο έχει μεταγλωττιστεί σε μορφή ONNX και έχει μέγεθος μόνο μερικά megabyte. Η χρήση μεθόδων βαθιάς μηχανικής μάθησης επέτρεψε αύξηση 50% στην ακρίβεια ανίχνευσης σε σύγκριση με το προηγουμένως χρησιμοποιούμενο σύστημα της Google που βασιζόταν σε χειροκίνητα καθορισμένους κανόνες.
Στην Google, το σύστημα χρησιμοποιείται για την ταξινόμηση αρχείων στις υπηρεσίες Gmail, Drive, Code Insight και Safe Browsing κατά τη διάρκεια ελέγχων ασφαλείας και ελέγχων συμμόρφωσης. Το Magika ενσωματώνεται στις πλατφόρμες VirusTotal και abuse.ch ως κύριο επίπεδο φιλτραρίσματος πριν από την εκτέλεση συγκεκριμένων αναλυτών. Η διαμόρφωση Magika που αναπτύσσεται στην υποδομή της Google σαρώνει αρκετά εκατομμύρια αρχεία ανά δευτερόλεπτο και αρκετές εκατοντάδες δισεκατομμύρια αρχεία την εβδομάδα. Μετά τη φόρτωση του μοντέλου, ο χρόνος συμπερασμού είναι 5 ms όταν δοκιμάζεται σε έναν μόνο πυρήνα CPU. Ο χρόνος ανίχνευσης είναι ουσιαστικά ανεξάρτητος από το μέγεθος του αρχείου.
Για να χρησιμοποιήσετε το Magika στα έργα σας, έχουμε ετοιμάσει ένα βοηθητικό πρόγραμμα γραμμής εντολών, πακέτα για Python, Rust και Go, και μια βιβλιοθήκη JavaScript που μπορεί να εκτελεστεί στο πρόγραμμα περιήγησης ή σε έργα Node.js. Η διεπαφή γραμμής εντολών και το API υποστηρίζουν λειτουργίες μαζικής λειτουργίας, επιτρέποντάς σας να σαρώνετε πολλά αρχεία με ένα μόνο αίτημα. Υπάρχει μια αναδρομική λειτουργία σάρωσης για ολόκληρο τον κατάλογο και τρεις λειτουργίες πρόβλεψης για την προσαρμογή της ανοχής σφάλματος (υψηλή εμπιστοσύνη, μέτρια εμπιστοσύνη και βέλτιστη εκτίμηση).
Το έργο αναπτύχθηκε αρχικά σε Python, αλλά κατά την προετοιμασία για την έκδοση 1.0, η μηχανή ανίχνευσης τύπου περιεχομένου ξαναγράφηκε σε Rust, επιτυγχάνοντας υψηλότερη απόδοση διατηρώντας παράλληλα το απαιτούμενο επίπεδο ασφάλειας κώδικα. Το πλαίσιο ONNX Runtime χρησιμοποιείται για την εκτέλεση του μοντέλου μηχανικής μάθησης και η βιβλιοθήκη Tokio χρησιμοποιείται για παράλληλη, ασύγχρονη επεξεργασία αιτημάτων. Σε ένα MacBook Pro (M4), η απόδοση της μηχανής της επιτρέπει να επεξεργάζεται περίπου 1000 αρχεία ανά δευτερόλεπτο.
Εκτός από τη νέα μηχανή, οι αλλαγές στην έκδοση 1.0 περιλαμβάνουν την επέκταση του αριθμού των υποστηριζόμενων τύπων από περίπου 100 σε 200, την προσθήκη ενός νέου προγράμματος-πελάτη γραμμής εντολών γραμμένου σε Rust, βελτιωμένη ακρίβεια στην ανίχνευση μορφών κειμένου, όπως αρχεία διαμόρφωσης και κώδικα, και αναδιαμορφωμένες ενότητες Python και TypeScript για την απλοποίηση της ενσωμάτωσής τους με άλλα έργα. Οι υποστηριζόμενοι νέοι τύποι περιεχομένου περιλαμβάνουν μορφές που χρησιμοποιούνται στη μηχανική μάθηση και την Τεχνητή Νοημοσύνη, τις γλώσσες προγραμματισμού Swift, Kotlin, TypeScript, Dart, Solidity (solidity), Web Assembly και Zig, στοιχεία DevOps (Dockerfiles, TOML, HashiCorp, αρχεία δημιουργίας Bazel και κανόνες YARA), βάσεις δεδομένων SQLite, αρχεία AutoCAD (dwg, dxf), Adobe Photoshop (psd) και γραμματοσειρές (woff, woff2). Ο διαχωρισμός κώδικα σε C++ και C, JavaScript και TypeScript έχει βελτιωθεί.
Πηγή: opennet.ru
