A Google bemutatta a Magika 1.0 eszközkészletét, amely a fájlban található adatok elemzése alapján képes meghatározni a tartalom típusát. A Magika pontosan azonosítja a tartalomban használt programozási nyelveket, tömörítési módszereket, telepítőcsomagokat, futtatható kódokat, markup típusokat, audio, video, dokumentum és képformátumokat. A projekthez kapcsolódó eszközkészlet és a kész gépi tanulási modell az Apache 2.0 licenc alatt terjesztett.
A Magika a tartalom alapján a MIME-típusok meghatározására szolgáló hasonló projektektől eltérően gépi tanulási módszerek alkalmazásával különbözik. a magas teljesítmény és a meghatározás pontosságával. A modellt a Keras keretrendszer segítségével 100 millió példafájl felhasználásával képezték ki (az adatgyűjtemény mérete meghaladja a 3 TB-ot), és legalább 99% pontossággal képes 200 típusú adat azonosítására. A modell ONNX formátumban van összerakva, és mindössze néhány megabájtos mérettel rendelkezik. A mély gépi tanulási módszerek alkalmazása lehetővé tette a pontosabb meghatározást 50%-kal a Google korábban használt, manuálisan megadott szabályokon alapuló rendszeréhez képest.
A Google rendszerében a fájlok osztályozására használják a Gmail, Drive, Code Insight és Safe Browsing szolgáltatásokban biztonsági ellenőrzések és a szolgáltatási szabályoknak való megfelelés során. A Magika integrálva van a VirusTotal és abuse.ch platformokkal, mint a fájlok elsődleges szűrésének eleme, mielőtt specifikus elemzők működnének. A Google infrastruktúrájában telepített Magika konfigurációja másodpercenként több millió fájl és heti több száz milliárd fájl átvizsgálását biztosítja. A modell betöltése után az output generálási idő 5 ms egy CPU magon való tesztelés esetén. A meghatározási idő majdnem független a fájl méretétől.
A Magika egyes projektekhez való használatához készült a parancssori segédprogram, Python, Rust és Go csomagok, valamint egy JavaScript-könyvtár, amely a böngészőben vagy a Node.js alapú projektekben használható. A parancssori felület és az API támogatja a kötegelt műveletek végrehajtását, azaz lehetővé teszi több fájl ellenőrzését egyetlen kérésben. Van egy rekurzív keresési mód, amely a könyvtár teljes tartalmát átvizsgálja, és három előrejelzési mód a hiba tolerancia beállítására (magas biztonság, közepes biztonság és legjobb becslés).
A projekt kezdetben Python nyelven fejlődött, de az 1.0-ás kiadás előkészítésekor a tartalom típusának meghatározó motorja Rust nyelvre lett átírva, ami lehetővé tette a magasabb teljesítmény elérését, miközben megőrizte a kód biztonságának megfelelő szintjét. A gépi tanulási modell végrehajtásához az ONNX Runtime keretrendszert használták, míg a kérdések párhuzamos, aszinkron feldolgozásához a Tokio könyvtárt. A MacBook Pro (M4) teljesítménye lehetővé teszi a motor számára, hogy másodpercenként körülbelül 1000 fájlt dolgozzon fel.
Az új motor mellett az 1.0-ás kiadásban a támogatott típusok száma körülbelül 100-ról 200-ra bővült; új parancssori kliens került hozzáadásra Rust nyelven; valamint a szöveges formátumok, például konfigurációs fájlok és kódok meghatározásának pontossága javult; a Python és TypeScript modulok újragondolása megkönnyítette integrációjukat más projektekbe. Az új támogatott tartalomtípusok között megtalálhatók a gépi tanulás és AI területén használt formátumok; programozási nyelvek, mint a Swift, Kotlin, TypeScript, Dart, Solidity (solidity), Web Assembly és Zig; DevOps komponensek (Dockerfiles, TOML, HashiCorp, Bazel építési fájlok és YARA szabályok); SQLite adatbázisok; AutoCAD (dwg, dxf), Adobe Photoshop (psd) fájlok és betűtípusok (woff, woff2) támogatottak. Az C++ és C, JavaScript és TypeScript közötti kódmegosztás javult.
Forrás: opennet.ru
