Transformers.js v4 發行說明 / 新功能

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.GroupQueryAttentioncom.microsoft.MatMulNBitscom.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。
  • 大型模型能力: 函式庫現在支援超過 80 億參數的模型;例如,GPT-OSS 20B(q4f16)在 M4 Pro Max 上每秒約產生 60 個 token。

函式庫基礎設施與建置系統

Transformers.js v4 進行了重大結構重整,以提升可維護性與開發者體驗:

  • 建置系統遷移: 從 Webpack 轉換至 esbuild,使建置時間從 2 秒縮短至 200 毫秒(提升 10 倍),且平均減少 10% 的 bundle 大小。transformers.web.js 的預設匯出現在縮小了 53%。
  • 單儲存庫遷移: 專案現在使用 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.DEBUGLogLevel.INFOLogLevel.WARNINGLogLevel.ERRORLogLevel.NONE)。

獨立的 Tokenizers.js 函式庫

Hugging Face 已將分詞邏輯抽離為獨立、輕量的函式庫:@huggingface/tokenizers。此獨立函式庫大小為 8.8kB(gzip 後),無任何相依性,具完整型別安全,且可在瀏覽器與伺服器端執行環境中使用。

Sources