Transformers documentation
カーネル
はじめに
ベースクラス
モデル
プリプロセッサ
推論
Pipeline API
Generate API
最適化
概要アテンションのバックエンドExperts バックエンド連続バッチ処理連続バッチ処理アーキテクチャページド・アテンション 推論のためのtorch.compileエクスポートエクスポートの量子化エクスポート機能の拡張推論のためのテンソル並列エキスパート並列キャッシュの仕組みキャッシュ戦略支援デコーディングLLM の最大限の活用
推論用カーネル
モデルとチャットする
サービング
トレーニング
ハードウェア
量子化
エコシステム統合
リソース
API
カーネル
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の決定論的フラグを設定します。
リソース
- Loading kernelsガイドで始めましょう
- Kernels GitHub リポジトリ
- Hugging Face Kernel Hubで5分以内にモデルを強化するブログ記事