Google esitles Magika 1.0 tööriista, mis on mõeldud sisu tüübi määramiseks failide andmete analüüsi põhjal. Magika suudab täpselt tuvastada failis kasutatavad programmeerimiskeeled, kompressioonimeetodid, installipaketid, täitmisfaile, märgistusviise, heliformaadid, videod, dokumendid ja pildid. Projekti raames töötati välja tööriistad ja valmis masinõppe mudel, mis on litsentseeritud Apache 2.0 alusel. Raamistikke on valmistatud keeltele Rust, Python, JavaScript/TypeScript ja Go.
Erinevalt sarnastest projektidest, mis määravad MIME-tüübi sisu põhjal, kasutab Magika masinõppemeetodeid, kõrge jõudlusega ja määramise täpsust. Mudel on koolitatud Keras platvormil 100 miljoni failinäite põhjal (andmestiku kogusuurus üle 3 TB) ning toetab tuvastamist 200 andmetaipaga, säilitades vähemalt 99% täpsuse. Mudel on kokku pandud ONNX formaadis ja selle suurus on vaid paar megabaiti. Sügava masinõppe meetodite rakendamine võimaldas 50% võrra suurendada määramise täpsust võrreldes Google'i varasema käsitsi määratud reeglitel baseeruva süsteemiga.
Google'is kasutatakse süsteemi failide klassifitseerimiseks Gmaili, Drive'i, Code Insight'i ja Safe Browsing teenustes turvakontrollide ja teenuste reeglite järgimise tagamiseks. Magika integreeritakse VirusTotal ja abuse.ch platvormidesse esmase failifiltreerimise lingina enne spetsiifiliste analüsaatorite töötlust. Google'i infrastruktuuris rakendatud Magika konfigureerimine võimaldab skaneerida mitut miljonit faili sekundis ja sadu miljardeid faile nädalas. Pärast mudeli laadimist on väljundi genereerimiseks vajalik aeg 5 ms, kui testimine toimub ühes CPU tuumas. Määramise aeg ei sõltu peaaegu faili suurusest.
Magika kasutamiseks oma projektides on ette valmistatud käsurea tööriist, paketid Pythonile, Rustile ja Go-le, samuti JavaScripti teek, mis suudab töötada brauseris või Node.js-põhistes projektides. Käsurea liides ja API toetavad toimingute läbiviimist rühmitatud viisil ehk võimaldavad kontrollida mitu faili ühe päringu jooksul. On olemas rekursiivse skaneerimise režiim kogu katalooge sisu jaoks ja kolm prognoosimisrežiimi, et kohandada veaotsingu vastupidavust (kõrge kindlus, keskmine kindlus ja parim oletus).
Alguses arenes projekt Pythonis, kuid versiooni 1.0 ettevalmistamisel kirjutati sisu tüübi määramise mootor ümber Rusti keeles, mis võimaldas saavutada kõrgemat jõudlust, säilitades samas koodi vajaliku kaitsetaseme. Masinõppe mudeli täitmiseks kasutatakse raamistikku ONNX Runtime, ning päringute paralleelseks ja asünkroonseks töötlemiseks kasutatakse Tokio teeki. MacBook Pro (M4) peal suudab mootor töödelda umbes 1000 faili sekundis.
Lisaks uuele mootorile on versioonis 1.0 muutunud toetatavate tüüpide arv umbes 100-lt 200-le; lisatud on uus käsurea klient, mis on kirjutatud Rustis; tõhustatud on tekstivormingute määramise täpsust, nagu konfiguratsioonifailid ja kood; Pythonile ja TypeScriptille on ümber kujundatud moodulid, 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), Web Assembly ja Zig; DevOpsi komponendid (Dockerfiles, TOML, HashiCorp, Bazel ehitusfailid ja YARA reeglid); SQLite andmebaasid; AutoCADi failid (dwg, dxf), Adobe Photoshopi (psd) ja fondid (woff, woff2). Parandatud on koodi eraldust C++ ja C, JavaScripti ja TypeScripti vahel.
Allikas: opennet.ru
