找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

937

积分

0

好友

120

主题
发表于 6 天前 | 查看: 23| 回复: 0
本帖最后由 云栈大前端 于 2025-12-18 17:37 编辑

Google 发布了开源文件类型检测系统 Magika 1.0。该版本属于一次大幅重写:在能力上引入 AI 覆盖更广的文件类型,在性能与安全性上以 Rust 作为核心实现,以获得更高吞吐与更强的内存安全保障。

Magika 1.0 有什么变化?

支持类型从 100 提升到 200+

Magika 1.0 将可识别的内容类型扩展到 200+,相比此前的 Python 版本(约 100 种)覆盖范围翻倍。

Google 提到,新增类型里有不少是“专门的文本类文件”,过去难以可靠识别,例如:

  • Dockerfiles、TOML、HCL、Bazel 文件等
  • 多种语言源码:Swift、Kotlin、TypeScript、Dart、WebAssembly、Zig 等
  • 数据科学相关文件:Jupyter Notebooks、Numpy arrays、PyTorch models、ONNX files 等(涉及 Python 生态)

识别粒度更细:相近格式可区分

除了新增类型,Magika 1.0 也提升了“细粒度区分能力”,把之前容易被归为同一类的格式拆分开来,例如:

  • TypeScript vs JavaScript
  • C++ vs C
  • TSV vs CSV

数据与模型:3TB 训练集与合成数据补齐

为了覆盖如此多样的格式,工程团队构建了大规模文件格式样本数据集训练专用 AI 模型。训练数据量本身就带来工程挑战:

未压缩训练集增长到 3TB 以上,需要高效的处理流水线。为此使用 SedPack 数据集库,在训练时将数据流式解压并直接送入内存,绕开潜在 I/O 瓶颈,让训练变得可行。

同时,部分“新式、遗留或强专业性”的格式样本占比过低,Google 通过 Gemini 生成合成训练集:把现有代码及结构化文件从一种格式“翻译”到另一种格式,以获得高质量的补充样本。

Google 表示,Magika 在平均 precision 和 recall 上达到约 99%,尤其在文本内容类型上表现优于已有方案。

性能与架构:Rust 核心 + ONNX Runtime + Tokio 并行

Magika 1.0 的另一项关键变化是核心引擎彻底重写,使用 Rust 提升性能并强化内存安全。Rust 引擎也是 Magika CLI 的核心,使其在单 CPU 上就能达到很高的扫描吞吐:

Magika 在单核上可识别每秒数百个文件;借助高性能 ONNX Runtime 推理与 Tokio 异步并行处理,在现代多核 CPU 上可轻松扩展到每秒数千个。

Magika benchmark

根据 Google 的基准测试,这一方案在 MacBook Pro(M4)上可处理接近 1,000 文件/秒。Reddit 用户 robertknight2 对工作流的拆分做了说明:

Rust 负责从文件中抽取特征向量(只读取少量内容)并用基于 tokio 的循环驱动扫描;真正用于预测文件类型的 ML 推理由 ONNX Runtime 在 C++ 中完成(通过 ort crate 调用)。

需要注意的是:首次加载模型会有一次性开销,但完成加载后,处理可达到 约 5ms/文件,且推理时间基本不随文件大小变化。

为什么这类工具在上传场景很重要?

有观点指出,当文件扩展名缺失、或扩展名不可信(例如文件上传)时,这类“基于内容识别”的工具非常有价值:文件类型更多是约定俗成,但没有统一标准能仅凭外观可靠确定类型,通常只能尝试按某类解码器去读。

安装与使用(CLI)

你可以通过脚本安装 Magika 的命令行工具:

curl -LsSf https://securityresearch.google/magika/install.sh | sh

或安装包含 CLI 的 Python 包:

pipx install magika
来自圈子: 云栈大前端



上一篇:数据探索实战:如何用whoDB激活AI驱动的SQL查询与可视化分析
下一篇:Azure HorizonDB发布:兼容PostgreSQL的存算分离AI数据库
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 19:22 , Processed in 0.314733 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表