معرفی Magika 1.0: تشخیص هوشمند و سریع‌تر فایل‌ها با Rust

معرفی Magika 1.0: تشخیص هوشمند و سریع‌تر فایل‌ها با Rust

گوگل به تازگی نسخه ۱.۰ از Magika را منتشر کرده است؛ بازنویسی اساسی سیستم تشخیص نوع فایل منبع باز گوگل. این نسخه جدید با بهره‌گیری از هوش مصنوعی، پشتیبانی از طیف گسترده‌ای از انواع فایل را فراهم می‌کند و در زبان Rust توسعه یافته تا حداکثر سرعت و امنیت را تضمین کند.

Magika 1.0 تعداد پشتیبانی شده از انواع فایل‌ها را به بیش از ۲۰۰ نوع رسانده است که نسبت به نسخه قبلی پایتونی، افزایش قابل توجهی داشته است.

گوگل بر این نکته تاکید دارد که بسیاری از انواع فایل‌های جدید اضافه شده، فرمت‌های متنی تخصصی هستند که پیش‌تر تشخیص آن‌ها دشوار بود. این شامل Dockerfileها، TOML، HCL، فایل‌های Bazel و بسیاری موارد دیگر است. Magika 1.0 قادر به تمایز بین فایل‌های کد منبع نوشته‌شده با Swift، Kotlin، TypeScript، Dart، WebAssembly و Zig (zig) نیز می‌باشد. علاوه بر این، از انواع فایل‌هایی که معمولاً در علم داده استفاده می‌شوند مانند Jupyter Notebookها، آرایه‌های Numpy، مدل‌های PyTorch و فرمت ONNX پشتیبانی می‌کند.

علاوه بر پشتیبانی از طیف وسیع‌تری از انواع فایل‌ها، Magika 1.0 دقت بالاتری را در تشخیص ارائه می‌دهد؛ به گونه‌ای که فرمت‌های مشابهی که قبلاً با یکدیگر گروه‌بندی می‌شدند، اکنون به‌طور مجزا شناسایی می‌شوند (مانند TypeScript و JavaScript، C++ و C، TSV و CSV).

برای دستیابی به این سطح از دقت در تشخیص انواع مختلف فرمت‌ها، مهندسان گوگل مجموعه‌داده وسیعی را برای آموزش یک مدل هوش مصنوعی تخصصی ایجاد کردند. حجم عظیم داده‌ها خود چالشی بود: مجموعه داده آموزشی ما  پس از فشرده‌سازی به بیش از ۳ ترابایت رسید که نیازمند یک خط لوله پردازش کارآمد بود.

برای رفع این چالش، گوگل از کتابخانه SedPack Dataset استفاده کرد. این ابزار امکان استریم و غیرفشردگی مجموعه داده بزرگ را مستقیماً به حافظه در طول آموزش فراهم می‌کند و از ایجاد گلوگاه‌های ورودی/خروجی جلوگیری کرده و فرآیند را امکان‌پذیر می‌سازد.

از سوی دیگر، برخی از فرمت‌ها، به‌ویژه قالب‌های جدید، قدیمی و تخصصی، کمبود داشتند. گوگل این مشکل را با استفاده از Gemini برای «ایجاد یک مجموعه داده آموزشی مصنوعی با کیفیت بالا با ترجمه کد و سایر فایل‌های ساختاریافته از یک فرمت به فرمت دیگر» حل کرد.

گوگل اعلام کرده است که Magika دقت و فراخوانی متوسط ۹۹٪ را به دست می‌آورد و در مقایسه با روش‌های موجود، به‌ویژه برای محتوای متنی، عملکرد بهتری دارد.

یکی دیگر از مزایای قابل توجه Magika 1.0، بازنویسی کامل هسته آن است که با استفاده از Rust امنیت حافظه و کارایی را افزایش می‌دهد. موتور مبتنی بر Rust جدید در قلب ابزار خط فرمان Magika قرار دارد که می‌تواند صدها فایل در ثانیه را روی یک CPU اسکن کند:

  • Magika قادر به شناسایی صدها فایل در هر ثانیه با استفاده از یک هسته و به راحتی مقیاس‌پذیری تا هزاران فایل در ثانیه با CPUهای چند هسته‌ای مدرن است، این امر با استفاده از ONNX Runtime با کارایی بالا برای استنتاج مدل و Tokio برای پردازش موازی ناهمزمان امکان‌پذیر شده است.

بر اساس ارزیابی‌های گوگل، این رویکرد امکان پردازش تقریباً ۱۰۰۰ فایل در ثانیه را روی یک MacBook Pro (M4) فراهم می‌کند. همانطور که کاربر Reddit robertknight2 توضیح داده است:

Rust برای استخراج بردار ویژگی از فایل‌ها با استفاده از زیرمجموعه‌ای کوچک از محتوا و هدایت فرآیند اسکن از طریق یک حلقه مبتنی بر Tokio به کار رفته است. در حالی‌که استنتاج مدل ML که نوع فایل را بر اساس ویژگی‌های استخراج‌شده پیش‌بینی می‌کند، توسط ONNX Runtime (از طریق crate ort) در C++ انجام می‌شود.

ابزار هزینه‌ای یکباره برای بارگیری اولیه مدل متحمل می‌شود، اما پس از آن به طور متوسط ​​۵ میلی‌ثانیه طول می‌کشد تا هر فایل پردازش شود و زمان استنتاج تقریباً ثابت و مستقل از اندازه فایل است.

اگرچه برخی ممکن است پذیرش Rust را با دیدگاه منفی تلقی کنند، کاربر X Caleb Maclennan خاطرنشان کرد که «استفاده از Rust به دلیل ملاحظات امنیتی ناشی از حدس زدن روش‌های مدیریت ورودی‌ها انتخاب خوبی است». کاربر Mazzarito نیز اضافه کرد:

می‌توانید ابزار خط فرمان Magika را با اجرای دستور زیر نصب کنید: or getting the Python package, which includes the CLI tool, running pipx install magika

📌 توجه: این مطلب از منابع بین‌المللی ترجمه و بازنویسی شده است.