🤗 Kernels:重大更新
Hugging Face 的 Kernels 项目旨在标准化自定义内核的打包、分发和使用方式。本文总结了近期重大更新:引入新的“内核”仓库类型以提升可发现性;通过受信任的发布者和代码签名增强安全性;重构 CLI 以明确职责划分;扩展对 Torch Stable ABI 和 Apache TVM FFI 等框架的支持;为 AI 代理开发内核奠定基础;以及改进环境配置和兼容性检查工具。
Hugging Face 的 Kernels 项目自发布以来,一直致力于为自定义内核的打包、分发和使用提供标准化方案。在最近几个月里,团队对项目进行了近乎完全的重构,并推出了一系列重大更新。
新的仓库类型 最显著的变化是 Hub 上新增了“kernel”仓库类型。这使得用户能够更直观地了解某个内核支持的加速器、操作系统和后端版本。所有内核现在都集中展示在 https://huggingface.co/kernels,大大提高了可发现性。
安全性强化
由于内核以与 Python 进程相同的权限运行原生代码,恶意内核可能造成严重破坏。为此,项目早期就通过 Nix 实现了可重复构建,确保用户能自行编译验证。最近又增加了两层防御:受信任的发布者和代码签名。默认情况下,kernels 包只加载来自受信任组织的内核。要加载其他来源,需显式设置 trust_remote_code=True。此外,代码签名使用 Sigstore 的 cosign 和临时私钥,即使 Hub 凭证泄露,攻击者也无法为恶意内核签名。目前签名验证尚在测试阶段,但内核构建工具已支持。
CLI 重构 之前 kernels 和 kernel-builder 的功能有些混杂。现在明确了分工:kernels 专注于加载和准备内核;kernel-builder 专注于构建。两者 CLI 更加精简和专用。
框架与后端扩展 新支持 Torch Stable ABI,使内核可兼容 Torch >=2.9 版本约两年。同时,Apache TVM FFI 成为继 Torch 之后第二个支持的框架,它提供标准化的 ABI,使内核能在 PyTorch、Jax、CuPy 等框架间互操作。
代理式内核开发基础 kernel-builder 和 kernels 为 AI 代理开发内核提供了完整工作流:代理可以自动搭建项目结构、进行可重复构建、基准测试并迭代优化。与 HF Jobs 的紧密集成让跨硬件评估变得简单。
其他改进
环境配置方面,提供了一键安装脚本和 Terraform 设置指南。内核构建后会自动生成系统卡片,展示接口和使用方法。新增 has_kernel() 和 get_kernel_variants() 方法,方便用户检查内核兼容性并获取拒绝原因。最后,改进了 manylinux_2_28 支持,动态链接 libstdc++ 以避免全局初始化导致的问题。
这些更新使 Kernels 项目更加成熟,既服务于内核开发者,也方便了终端用户。社区反馈将持续推动项目改进。