Google esitles tööriista Magika 1.0, mis on loodud sisu tüübi määramiseks failis leiduvate andmete analüüsi põhjal. Magika suudab täpselt kindlaks teha sisu kasutatavad programmeerimiskeeled, kokkusurumismeetodid, paigalduspaketid, täidetavad koodid, märgistusvormid, heliformaadid, videod, dokumendid ja pildid. Projekti osana levitatakse tööriista ja valmis masinõppe mudelit Apache 2.0 litsentsi alusel. Raamistikke on ette valmistatud keelte jaoks Rust, Python, JavaScript/TypeScript ja Go.
Erinevalt sarnastest projektidest, mis määravad MIME-tüübi sisu põhjal, kasutab Magika masinõppe meetodeid, kõrge jõudlusega ja määramise täpsus. Mudel on koolitatud Keras raamistikus 100 miljoni faili näite põhjal (andmekogumi suurus on üle 3 TB) ja toetab 200 andmeliigi tuvastamist vähemalt 99% täpsusega. Mudel on kokku pandud ONNX formaadis ja selle suurus on vaid mõned megabait. Sügava masinõppe meetodite rakendamine on võimaldanud tõsta määramise täpsust 50% võrreldes Google'i varasema käsitsi määratud reeglite süsteemiga.
Google'i süsteemi kasutatakse failide klassifitseerimiseks Gmaili, Drive'i, Code Insight'i ja Safe Browsing teenustes, tehes turbekontrolle ja vastavust regulatiivsetele nõuetele. Magika integreerimine VirusTotal'i ja abuse.ch platvormidesse võimaldab failide esmast filtreerimist enne konkreetsete analüsaatorite käivitamist. Google'i infrastruktuuris üles seatud Magika konfiguratsioon tagab mitu miljonit faili skaneerimist sekundis ja sadu miljardeid faile nädalas. Pärast mudeli laadimist on väljundi genereerimise aeg 5 ms ühe CPU südamiku testimisel. Tuvastamise aeg ei sõltu peaaegu failide suurusest.
Magika kasutamiseks oma projektides on valmis command-line tööriist, paketid Pythonile, Rustile ja Go-le, samuti JavaScripti teek, mis töötab nii brauseris kui ka Node.js projektides. Command-line liides ja API toetavad operatsioone graafikurežiimis, mis tähendab, et saate kontrollida mitut faili ühe päringuga. On olemas rekurssiivne skannimisrežiim kogu katalooge sisule ja kolm prognoosimisrežiimi, et kohandada veakindlust (kõrge usaldusväärsus, keskmine usaldusväärsus ja parim oletus).
Alguses arenes projekt Pythonis, kuid versiooni 1.0 väljalaske ettevalmistamisel kirjutati sisu määratlemise mootor ümber Rusti keeles, mis võimaldas saavutada kõrgemat jõudlust, säilitades samas vajalikul tasemel koodi kaitset. Masinõppemudeli käitamiseks kasutatakse ONNX Runtime raamistikku ja päringute paralleelseks asünkroonses töötlemiseks - teeki Tokio. MacBook Pro (M4) puhul võimaldab mootori jõudlus töödelda umbes 1000 faili sekundis.
Lisaks uuele mootorile on 1.0 väljalaske muudatusteks toe ulatuse laiendamine umbes 100 tüübist 200-le; uue käsureakliendi lisamine, mis on kirjutatud Rustis; täpsuse suurendamine tekstiformaatide, näiteks konfiguratsioonifailide ja koodi tuvastamisel; Pythonile ja TypeScriptile mõeldud moodulite ümberkasutamine, et lihtsustada nende integreerimist teiste projektidega. Uute toetatud sisu tüüpide seas on: masinõppes ja AI-s kasutatavad formaadid; programmeerimiskeeled Swift, Kotlin, TypeScript, Dart, Solidity (solidity), WebAssembly ja Zig; DevOps-komponendid (Dockerfile'id, TOML, HashiCorp, Bazeli ehitusfailid ja YARA reeglid); SQLite andmebaasid; AutoCAD failid (dwg, dxf), Adobe Photoshop (psd) ja fondid (woff, woff2). C++ ja C, JavaScripti ja TypeScripti koodi eraldamine on paranenud.
Allikas: opennet.ru
