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など、即時利用可能。

一般的なワークフロー

  1. フレームワーク用パッケージをインストール:
    pip install "transformer_engine[pytorch]"   # または [jax]
    
  2. モデルのレイヤーをTEの同等物でラップ(例:te.Linear、te.LayerNorm、te.MultiHeadAttention)。
  3. 前方伝播をautocastコンテキストで囲み、FP8/FP16/BF16を自動で有効化:
    with transformer_engine.autocast(dtype=torch.float8):
        output = model(input)
    
  4. 通常の学習ループを実行;TEがスケーリング、量子化、通信を内部で処理。

導入とリソース

誰が使うべきか

  • 最新のNVIDIA GPUを保有し、大規模言語モデル、ビジョンTransformer、MoEモデルを学習する研究者やエンジニア。
  • PyTorch/JAXコードベースを再書き換えせずに、学習時間とGPUメモリ使用量を削減したいチーム。
  • Megatron‑LM、Hugging Face、NeMoなどの人気LLMスタック上で構築し、FP8加速を活用したい人。

ライセンス – Apache 2.0(オープンソース)。

関連

  • Dispatch
  • Dispatch
  • Dispatch
  • プロジェクト
  • プロジェクト