Google ha pubblicato Magika 1.0, un toolkit per identificare il tipo di contenuto dei file

Google ha lanciato la versione 1.0 dello strumento Magika, progettato per determinare il tipo di contenuto attraverso l'analisi dei dati disponibili nel file. Magika può identificare con precisione i linguaggi di programmazione utilizzati, i metodi di compressione, i pacchetti di installazione, il codice eseguibile, i tipi di markup, i formati audio, video, documenti e immagini. Gli strumenti correlati al progetto e il modello di machine learning sono disponibili sotto licenza Apache 2.0. I wrapper sono disponibili per i linguaggi Rust, Python, JavaScript/TypeScript e Go.

A differenza di progetti simili che determinano il MIME type in base al contenuto, Magika si distingue per l'applicazione di metodi di machine learning. alta performance e precisione del riconoscimento. Il modello è stato addestrato utilizzando il framework Keras su 100 milioni di file (dimensione del dataset superiore a 3 TB) e supporta il riconoscimento di 200 tipi di dati con una precisione di almeno il 99%. Il modello è strutturato nel formato ONNX e ha una dimensione di solo pochi megabyte. L'uso di metodi di deep learning ha permesso di aumentare la precisione del riconoscimento del 50% rispetto al precedente sistema di Google basato su regole definite manualmente.

In Google, il sistema viene utilizzato per la classificazione dei file nei servizi Gmail, Drive, Code Insight e Safe Browsing durante le verifiche di sicurezza e conformità alle regole dei servizi. È stata garantita l'integrazione di Magika nelle piattaforme VirusTotal e abuse.ch come anello per la filtrazione iniziale dei file prima dell'esecuzione di analizzatori specifici. La configurazione di Magika implementata nell'infrastruttura Google consente di scansionare diversi milioni di file al secondo e centinaia di miliardi di file alla settimana. Dopo il caricamento del modello, il tempo di generazione dell'output è di 5 ms durante il test su un singolo core CPU. Il tempo di identificazione è quasi indipendente dalla dimensione del file.

Per integrare Magika nei propri progetti, sono stati preparati un'utilità da riga di comando, pacchetti per Python, Rust e Go, oltre a una libreria JavaScript in grado di funzionare nei browser o in progetti basati su Node.js. L'interfaccia da riga di comando e l'API supportano l'esecuzione delle operazioni in modalità batch, consentendo di controllare più file con una sola richiesta. È disponibile una modalità di scansione ricorsiva dell'intero contenuto della directory e tre modalità di previsione per configurare la tolleranza agli errori (alta affidabilità, media affidabilità e migliore stima).

Inizialmente, il progetto è stato sviluppato in Python, ma con il rilascio della versione 1.0, il motore per la determinazione dei tipi di contenuto è stato riscritto in Rust, permettendo di ottenere prestazioni superiori mantenendo un adeguato livello di sicurezza del codice. Per l'esecuzione del modello di apprendimento automatico è stato utilizzato il framework ONNX Runtime, e per l'elaborazione parallela e asincrona delle richieste è stata adottata la libreria Tokio. Su MacBook Pro (M4), le prestazioni del motore consentono di elaborare circa 1000 file al secondo.

Oltre al nuovo motore, le novità della versione 1.0 includono l'espansione del numero di tipi supportati da circa 100 a 200; l'aggiunta di un nuovo client da riga di comando, scritto in Rust; un aumento della precisione nel riconoscimento dei formati di testo, come i file di configurazione e il codice; una revisione dei moduli per Python e TypeScript per semplificarne l'integrazione con altri progetti. Tra i nuovi tipi di contenuto supportati ci sono: formati utilizzati nell'apprendimento automatico e nell'AI; linguaggi di programmazione Swift, Kotlin, TypeScript, Dart, Solidity (solidity), Web Assembly e Zig; componenti DevOps (Dockerfiles, TOML, HashiCorp, file di build Bazel e regole YARA); database SQLite; file AutoCAD (dwg, dxf), Adobe Photoshop (psd) e font (woff, woff2). È stato migliorato il partizionamento del codice in C++ e C, JavaScript e TypeScript.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster