ホームへ戻る

GitHub Repo

TransformersがEntroPack統合を提案、重み圧縮で非整数ビットレートを設定可能に

10月21日に提出されたTransformersのプルリクエストは、標準のモデル読み込みインターフェースを通じたEntroPackによる重み圧縮を提案している。パラメーターあたり平均3.5ビットなどの保存目標を設定できるが、まだマージされておらず、推論で得られる効果はデコードコストとワークロードに左右される。

Sarang · Public domain · Image source
zh-Hant

Hugging Face Transformersでは10月21日、EntroPackConfigとfrom_pretrained()を使って線形層の重みを圧縮するEntroPack統合案が提出された。この提案は、元のチェックポイントからのオンザフライ圧縮、事前に量子化された重みの読み込み、保存後の再読み込みを対象としている。確認時点ではプルリクエストは未マージであり、正式リリースでサポート済みとはみなせない。統合提案

技術上の要点は、保存時のビットレートと演算時の数値精度を切り分けることだ。EntroPackは、行ごとに正規化するE8格子量子化、条件付き確率モデル、エントロピー符号化を組み合わせ、活性化値のキャリブレーションデータやファインチューニングなしで、非整数の平均保存ビットレートを設定できる。圧縮後の座標は個別にデコード可能なブロックに分割され、GPU上でシンボルのデコードと重みの再構築が融合実行される。そのため、3.5 bppを設定しても、GPUがネイティブな「3.5ビット」行列乗算を使うわけではない。手法論文

デプロイエンジニアにとっては、固定の4ビットや8ビット形式よりも細かく容量を調整できる。一方で、目標値と実際の保存量は区別する必要がある。プロジェクトはメタデータを含む結果をactual_bppで報告している。公表されたH20でのテストでは、Z-Image-Turboの拡散Transformerの線形層を4 bppに設定したところ、実測値は4.02 bppで、各デノイジングステップの所要時間はBF16より約7.7%長かった。これは特定のモデルに対する著者のテストであり、言語モデルのトークン生成速度にそのまま当てはめることはできない。プロジェクトの説明とテスト

主なコストは、実行時に重みを再構築する処理だ。論文によると、デコード遅延は重みの量に応じて増えるため、拡散モデルのデノイジングやTransformerのプリフィルなど、計算負荷の高い用途に適している。そのため、圧縮率だけではサービングスループットの改善を判断できない。論文 今後は統合レビューの進展、正式リリースへの収録、バッチサイズや入力長の違いを含むエンドツーエンドテストが注目点となる。試用するチームは品質、ピーク時のGPUメモリ使用量、遅延を記録し、インストール元も確認するとよい。プロジェクトは、PyPIパッケージの更新がソースコードより遅れる場合があると明記している。インストール手順

出典

  1. Add EntroPack quantization support — Transformers PR #49822
  2. EntroPack: Fast and Accurate Entropy-Coded Weight Compression at Arbitrary Bitrates
  3. EntroPack 官方儲存庫與效能說明