Transformers.js v4 发布说明 / 新功能
Hugging Face 已发布 Transformers.js v4,引入了全新用 C++ 重写的 WebGPU 运行时,使硬件加速的 AI 模型能够在浏览器、Node、Bun 和 Deno 上本地运行。此更新显著提升了性能,扩展了模型架构支持,并对库进行模块化,以实现更好的生产可扩展性。
WebGPU 运行时与性能提升
Transformers.js v4 采用了与 ONNX Runtime 团队合作重新用 C++ 编写的全新 WebGPU 运行时。该运行时使同一代码库能够在多种 JavaScript 环境中运行,包括桌面应用以及 Node、Bun、Deno 等服务器端运行时。
为在资源受限的环境中最大化性能,Hugging Face 通过专用的 ONNX Runtime Contrib Operators 将模型逐操作重新实现。关键优化包括:
- 专用算子: 为大语言模型实现了
com.microsoft.GroupQueryAttention、com.microsoft.MatMulNBits和com.microsoft.QMoE。 - BERT 加速: 使用
com.microsoft.MultiHeadAttention算子,使基于 BERT 的嵌入模型提升约 4 倍。
扩展的模型支持与架构
全新的导出策略以及对 ONNX Runtime 算子的扩展支持,使 Transformers.js v4 能够支持更广泛的模型和高级架构模式,包括:
- 支持的架构: Mamba(状态空间模型)、Multi-head Latent Attention(MLA)和 Mixture of Experts(MoE)。
- 新模型: 支持 GPT-OSS、Chatterbox、GraniteMoeHybrid、LFM2-MoE、HunYuanDenseV1、Apertus、Olmo3、FalconH1 和 Youtu-LLM。
- 大模型能力: 该库现已支持超过 8B 参数的模型;例如,GPT-OSS 20B(q4f16)在 M4 Pro Max 上实现约每秒 60 token 的推理速度。
库基础设施与构建系统
Transformers.js v4 进行了一次重要的结构性重构,以提升可维护性和开发者体验:
- 构建系统迁移: 从 Webpack 迁移到 esbuild,将构建时间从 2 秒降至 200 毫秒(提升 10 倍),并将包体积平均缩小约 10%。
transformers.web.js的默认导出体积现在小了 53%。 - Monorepo 转型: 项目现在使用 pnpm workspaces,能够发布依赖
@huggingface/transformers核心的更小子包。 - 代码重构: 将
models.js拆分为更小、更专注的模块,取代原先 8,000 行的单文件,提升可读性并简化新增模型的流程。 - 示例仓库: 示例项目已迁移至专用的 examples repository。
新的生产就绪特性
为支持稳健的应用部署,新增了多项 API 与设置:
ModelRegistry API
ModelRegistry 在加载前提供对 pipeline 资产的显式可视化。关键功能包括:
- 通过
get_pipeline_files列出所需文件。 - 使用
get_file_metadata检查文件元数据并计算下载大小。 - 使用
is_pipeline_cached检查缓存状态,使用clear_pipeline_cache清除制品。 - 通过
get_available_dtypes查询可用的精度类型。 - 增强的
progress_callback现在包含progress_total事件,用于端到端加载进度。
环境与日志控制
- WASM 缓存:
env.useWasmCache允许缓存 WASM 运行时文件,以实现离线功能。 - 自定义 Fetch:
env.fetch支持自定义 fetch 实现,用于认证模型访问或自定义请求头。 - 日志: ONNX Runtime WebGPU 警告默认被隐藏,开发者现在可以使用
env.logLevel设置显式的详细程度(例如LogLevel.DEBUG、LogLevel.INFO、LogLevel.WARNING、LogLevel.ERROR、LogLevel.NONE)。
独立的 Tokenizers.js 库
Hugging Face 已将分词逻辑抽离为独立、轻量的库:@huggingface/tokenizers。该独立库体积为 8.8kB(gzip 后),零依赖,完全类型安全,并可在浏览器和服务器端运行时使用。