Transformers.js v4 リリースノート / 新機能

Hugging Face は Transformers.js v4 をリリースしました。このバージョンでは、C++ で完全に書き直された WebGPU ランタイムを導入し、ブラウザ、Node、Bun、Deno 上でハードウェアアクセラレーションされた AI モデルをローカルで実行できるようにしました。このアップデートにより、パフォーマンスが大幅に向上し、モデルアーキテクチャのサポートが拡充され、ライブラリがモジュール化されて本番環境でのスケーラビリティが向上しました。

WebGPU ランタイムとパフォーマンス向上

Transformers.js v4 は、ONNX Runtime チームと協力して C++ で書き直された新しい WebGPU ランタイムを採用しています。このランタイムにより、デスクトップアプリケーションや Node、Bun、Deno などのサーバーサイドランタイムを含むさまざまな JavaScript 環境で同一のコードベースが動作します。

リソースが限られた環境でのパフォーマンスを最大化するため、Hugging Face はモデルを演算単位で専門的な ONNX Runtime Contrib Operators を使用して再実装しました。主な最適化は以下の通りです:

  • Specialized Operators: 大規模言語モデル向けに com.microsoft.GroupQueryAttentioncom.microsoft.MatMulNBitscom.microsoft.QMoE の実装を行いました。
  • BERT Speedups: com.microsoft.MultiHeadAttention 演算子の採用により、BERT ベースの埋め込みモデルで約 4 倍の速度向上が実現しました。

拡張されたモデルサポートとアーキテクチャ

新しいエクスポート戦略と拡張された ONNX Runtime 演算子のサポートにより、Transformers.js v4 は、より多様なモデルと高度なアーキテクチャパターンをサポートできるようになりました。具体例は以下の通りです:

  • Supported Architectures: Mamba(状態空間モデル)、Multi-head Latent Attention(MLA)、Mixture of Experts(MoE)をサポート。
  • New Models: GPT-OSS、Chatterbox、GraniteMoeHybrid、LFM2-MoE、HunYuanDenseV1、Apertus、Olmo3、FalconH1、Youtu-LLM をサポート。
  • Large Model Capability: ライブラリは 8 億パラメータを超えるモデルも扱えるようになり、例として GPT-OSS 20B(q4f16)は M4 Pro Max 上で約 60 トークン/秒を達成しました。

ライブラリインフラストラクチャとビルドシステム

Transformers.js v4 は、保守性と開発者体験を向上させるために大幅な構造改革が行われました:

  • Build System Migration: Webpack から esbuild への移行により、ビルド時間が 2 秒から 200 ミリ秒へ(10 倍の改善)短縮され、バンドルサイズは平均で 10% 減少しました。transformers.web.js のデフォルトエクスポートは 53% 小さくなっています。
  • Monorepo Transition: プロジェクトは pnpm ワークスペースを使用するようになり、@huggingface/transformers コアに依存する小規模サブパッケージを配布できるようになりました。
  • Code Refactoring: models.js ファイルは 8,000 行の単一ファイルから、より小さく焦点を絞ったモジュールに分割され、可読性と新規モデル追加のプロセスが改善されました。
  • Examples Repository: サンプルプロジェクトは専用の examples repository に移動しました。

新しい本番向け機能

堅牢なアプリケーション展開を支援するために、いくつかの新しい API と設定が追加されました:

ModelRegistry API

ModelRegistry は、ロード前にパイプライン資産の明示的な可視性を提供します。主な機能は以下の通りです:

  • get_pipeline_files による必須ファイルの一覧取得。
  • get_file_metadata によるファイルメタデータの検査とダウンロードサイズの計算。
  • is_pipeline_cached でキャッシュ状態を確認し、clear_pipeline_cache でアーティファクトをクリア。
  • get_available_dtypes で利用可能な精度タイプを照会。
  • 強化された progress_callback は、エンドツーエンドのロード進捗を示す progress_total イベントを含むようになりました。

環境とロギング制御

  • WASM Caching: env.useWasmCache により、オフライン機能のために WASM ランタイムファイルをキャッシュできます。
  • Custom Fetch: env.fetch で認証が必要なモデルアクセスやカスタムヘッダー用の独自 fetch 実装を使用できます。
  • Logging: ONNX Runtime WebGPU の警告はデフォルトで非表示となっており、開発者は env.logLevel(例:LogLevel.DEBUGLogLevel.INFOLogLevel.WARNINGLogLevel.ERRORLogLevel.NONE)を使用して明示的に冗長度を設定できます。

スタンドアロン Tokenizers.js ライブラリ

Hugging Face はトークナイゼーションロジックを別の軽量ライブラリ @huggingface/tokenizers として抽出しました。このスタンドアロンライブラリは gzipped で 8.8kB、依存関係はゼロ、完全に型安全で、ブラウザとサーバーサイドランタイムの両方で動作します。

Sources