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.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。
- 大型模型能力: 函式庫現在支援超過 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.DEBUG、LogLevel.INFO、LogLevel.WARNING、LogLevel.ERROR、LogLevel.NONE)。
獨立的 Tokenizers.js 函式庫
Hugging Face 已將分詞邏輯抽離為獨立、輕量的函式庫:@huggingface/tokenizers。此獨立函式庫大小為 8.8kB(gzip 後),無任何相依性,具完整型別安全,且可在瀏覽器與伺服器端執行環境中使用。