NVIDIA/TransformerEngine
A library for accelerating Transformer models on NVIDIA GPUs, including using 8-bit and 4-bit floating point (FP8 and FP4) precision on Hopper, Ada and Blackwell GPUs, to provide better performance with lower memory utilization in both training and inference.
NVIDIA Transformer Engine – 大規模Transformer向け高速低精度学習
何であるか – NVIDIA GPU上でTransformer型モデルの学習に最適化されたC++/CUDAライブラリ(Pythonバインディング付き)。PyTorchおよびJAX向けに、FP8、MXFP8、NVFP4、BF16、FP16の混合精度学習を可能にする融合カーネルと自動混合精度APIを提供。スケーリング係数の管理、量子化メタデータ、分散通信を処理し、コードを変更せずに低精度学習を採用できる。
なぜ重要か – 現代のLLMやその他の大規模モデルは、学習に必要な計算量とメモリ量によって制限されている。Hopper/Blackwell/Rubin GPUでサポートされる新しい低精度形式(特にFP8)に大部分の演算を移行し、複数の演算(アテンション、GEMM、正規化、MoEルーティングなど)を融合することで、モデル品質を維持しつつ、処理速度を大幅に向上できる。また、低精度の詳細を抽象化しており、既存の学習コードをそのまま利用できる。
主な機能
- NVIDIA Hopper、Ada、Blackwell、Rubin GPUでのFP8/MXFP8/NVFP4学習(これらのフォーマットをサポートする最新のハードウェア)。
- アテンション、線形層、レイヤーノルム、MoEルーティング、通信(テンソル・シーケンス・コンテキスト・エキスパート並列)向けの最適化された融合カーネル。
- 自動スケーリング係数管理 – amax履歴と量子化メタデータを追跡し、PyTorchのネイティブAMPと同様の
autocastスタイルコンテキストを提供。 - フレームワーク対応 – PyTorch(
torch.nn.Moduleラッパー)およびJAX(Flax互換レイヤー)向けの軽量で自然なAPI。 - 分散学習対応 – NCCLと統合、通信のオーバーラップ、ゼロコピーエキスパート並列、CUDAグラフ加速をサポート。
- 広範なエコシステム統合 – Hugging Face Accelerate、PyTorch Lightning、NVIDIA Megatron‑LM、NVIDIA NeMo、Amazon SageMaker Model Parallel Libraryなど、即時利用可能。
一般的なワークフロー
- フレームワーク用パッケージをインストール:
pip install "transformer_engine[pytorch]" # または [jax] - モデルのレイヤーをTEの同等物でラップ(例:
te.Linear、te.LayerNorm、te.MultiHeadAttention)。 - 前方伝播を
autocastコンテキストで囲み、FP8/FP16/BF16を自動で有効化:with transformer_engine.autocast(dtype=torch.float8): output = model(input) - 通常の学習ループを実行;TEがスケーリング、量子化、通信を内部で処理。
導入とリソース
- クイックスタートドキュメント – https://docs.nvidia.com/deeplearning/transformer-engine/getting_started/index.html
- APIリファレンス – PyTorch: https://docs.nvidia.com/deeplearning/transformer-engine/api/pytorch.html ; JAX: https://docs.nvidia.com/deeplearning/transformer-engine/api/jax.html
- 例 – リポジトリの
examples/フォルダ内の実行可能なノートブックとスクリプトのコレクション。 - ディープダイブガイド – 低精度学習ガイド、FP8入門、オリジナルのFP8論文(arXiv:2209.05433)。
- リリースノート – 最新のv2.19ではRubin GPU対応、ハイブリッド量子化、拡張FP8アテンションが追加。
誰が使うべきか
- 最新のNVIDIA GPUを保有し、大規模言語モデル、ビジョンTransformer、MoEモデルを学習する研究者やエンジニア。
- PyTorch/JAXコードベースを再書き換えせずに、学習時間とGPUメモリ使用量を削減したいチーム。
- Megatron‑LM、Hugging Face、NeMoなどの人気LLMスタック上で構築し、FP8加速を活用したい人。
ライセンス – Apache 2.0(オープンソース)。
関連
- Dispatch
- Dispatch
- Dispatch
- プロジェクト
- プロジェクト