Google opublikował Magika 1.0, narzędzie do określania typu zawartości plików

Firma Google zaprezentowała wydanie narzędzia Magika 1.0, które służy do określania rodzaju zawartości na podstawie analizy danych znajdujących się w pliku. Magika potrafi dokładnie identyfikować używane języki programowania, metody kompresji, pakiety instalacyjne, kody wykonywalne, rodzaje znaczników, formaty dźwięku, wideo, dokumentów i obrazów. Powiązane z projektem narzędzie oraz gotowy model uczenia maszynowego są dystrybuowane na licencji Apache 2.0. Opracowano interfejsy dla języków Rust, Python, JavaScript/TypeScript oraz Go.

W przeciwieństwie do podobnych projektów, które określają typ MIME na podstawie zawartości, Magika wyróżnia się zastosowaniem metod uczenia maszynowego, wysoką wydajnością oraz dokładnością identyfikacji. Model został wytrenowany przy użyciu frameworka Keras na podstawie 100 milionów przykładów plików (rozmiar zestawu danych przekracza 3 TB) i wspiera rozpoznawanie 200 typów danych z dokładnością nie mniejszą niż 99%. Model skompilowany jest w formacie ONNX i ma rozmiar zaledwie kilku megabajtów. Zastosowanie metod głębokiego uczenia maszynowego pozwoliło na zwiększenie dokładności identyfikacji o 50% w porównaniu do wcześniej stosowanego przez Google systemu opartego na ręcznie określonych regułach.

W Google system jest wykorzystywany do klasyfikacji plików w usługach Gmail, Drive, Code Insight i Safe Browsing podczas przeprowadzania kontroli bezpieczeństwa i zgodności z zasadami usług. Zapewniono integrację Magika z platformami VirusTotal i abuse.ch jako elementu wstępnej filtracji plików przed wykonaniem specyficznych analizatorów. Rozwinięta w infrastrukturze Google konfiguracja Magika zapewnia skanowanie kilku milionów plików na sekundę i kilku setek miliardów plików tygodniowo. Po załadowaniu modelu czas generowania wyniku wynosi 5 ms przy testach na jednym rdzeniu CPU. Czas identyfikacji prawie nie zależy od rozmiaru pliku.

Aby wykorzystać Magika w swoich projektach, przygotowano narzędzie wiersza poleceń, pakiety dla Python, Rust i Go, a także bibliotekę JavaScript, która może działać w przeglądarce lub w projektach opartych na Node.js. Interfejs wiersza poleceń i API obsługują wykonywanie operacji w trybie wsadowym, tj. pozwalają na sprawdzenie kilku plików w jednym żądaniu. Istnieje tryb rekurencyjnego skanowania całej zawartości folderu oraz trzy tryby prognozowania dla dostosowania odporności na błędy (wysoka pewność, średnia pewność i najlepsza zgadywanka).

Na początku projekt rozwijał się w języku Python, ale podczas przygotowywania wersji 1.0 silnik do wykrywania typów zawartości został przepisany w języku Rust, co pozwoliło osiągnąć wyższą wydajność, zachowując odpowiedni poziom zabezpieczeń kodu. Do realizacji modelu uczenia maszynowego użyto frameworka ONNX Runtime, a do równoległego asynchronicznego przetwarzania żądań - biblioteki Tokio. Na MacBooku Pro (M4) wydajność silnika pozwala na przetwarzanie około 1000 plików na sekundę.

Oprócz nowego silnika, w zmianach w wersji 1.0 zaznacza się zwiększenie liczby obsługiwanych typów z około 100 do 200; dodanie nowego klienta wiersza poleceń, napisanego w Rust; zwiększenie dokładności wykrywania formatów tekstowych, takich jak pliki konfiguracyjne i kod; przerobienie modułów dla Python i TypeScript w celu uproszczenia ich integracji z innymi projektami. Wśród wspieranych nowych typów zawartości znajdują się: formaty stosowane w uczeniu maszynowym i AI; języki programowania Swift, Kotlin, TypeScript, Dart, Solidity (solidity), Web Assembly i Zig; komponenty DevOps (Dockerfiles, TOML, HashiCorp, pliki budowlane Bazel i reguły YARA); bazy danych SQLite; pliki AutoCAD (dwg, dxf), Adobe Photoshop (psd) i czcionki (woff, woff2). Ulepszono podział kodu na C++ i C, JavaScript i TypeScript.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster