Transformers documentation

カーネル

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

カーネル

PyTorch のオペレーションは汎用的です。ハードウェアベンダーやコミュニティは、特定のプラットフォーム上でより高速に実行されるよう、専用の実装を作成しています。これらの最適化されたカーネルをインストールするには、コンパイラバージョン、CUDA ツールキット、プラットフォーム固有のビルドを一致させる必要があるため、課題となります。

プラットフォーム対応デバイス
NVIDIA GPU (CUDA)計算能力 7.0 以上の最新アーキテクチャ(Volta、Turing、Ampere、Hopper、Blackwell)
AMD GPU(ROCm)ROCm対応デバイスと互換性あり
Apple Silicon (Metal)Mシリーズチップ(M1、M2、M3、M4およびそれ以降)
Intel GPU(XPU)Intel Data Center GPU Max Series および互換デバイス

Kernels は、Hub 経由で事前コンパイル済みバイナリを配布することで、この問題を解決します。実行時にプラットフォームを検出し、適切なバイナリを自動的に読み込みます。

use_kernels=True の場合、Transformers は最適化されたカーネル実装が利用可能なレイヤーを特定します。起動時間を短縮するため、必要に応じて Hub からカーネルをダウンロードし、キャッシュします。カーネルは、アテンション、正規化、融合演算などの計算集約型操作を高速化します。

すべての操作にカーネル実装があるわけではありません。カーネルが利用できない場合、ライブラリは標準のPyTorchにフォールバックします。

決定論

一部のカーネルは、演算の順序変更や累積戦略により、PyTorch とわずかに異なる結果を生成します。これらの違いは機能的には同等ですが、再現性に影響を与えます。

決定論的な動作を得るには、以下の方法をお試しください。

  • カーネルのリポジトリのドキュメントで、決定論的な保証を確認してください。例えば、gpt-oss-metal-kernelsのSDPAカーネルは、PyTorchの実装と97%の頻度で一致します。
  • ユースケースに影響を与える特定のカーネルを無効にします。
  • ランダムシードとPyTorchの決定論的フラグを設定します。

リソース

Update on GitHub