facebookincubator/AITemplate

AITemplate is a Python framework which renders neural network into high performance CUDA/HIP C++ code. Specialized for FP16 TensorCore (NVIDIA GPU) and MatrixCore (AMD GPU) inference.

何を解決するか

AITemplateは、NVIDIAおよびAMD GPU上の深層ニューラルネットワークの推論速度を最大化することを目的としています。汎用ランタイムの性能ボトルネックを克服するために、モデルを高度に最適化された自己完結型C++コードに変換し、ハードウェアの理論的最大性能(ルーフライン)に近い推論サービングを実現します。

動作方法

フレームワークはニューラルネットワークグラフをCUDAまたはHIP C++コードに変換します。メモリオーバーヘッドを削減し、GPUの利用効率を向上させるために、いくつかの高度な融合技術を採用しています:

  • 水平融合:異なる入力形状を持つ並列演算子(GEMMやLayerNormなど)を1つのカーネルに統合します。
  • 垂直融合:要素演算や還元演算などの範囲の演算を、TensorCoreまたはMatrixCore操作に直接統合します。
  • メモリ融合:連結、分割、スライスなどのメモリ操作を、それらに先行する演算子に統合します。

FX2AIT と呼ばれるツールを含んでおり、PyTorchモデルをAITemplateエンジンに変換できます。モデルにAITemplateでまだサポートされていない演算子が含まれる場合、FX2AITはモデルを分割して部分的な高速化を実現できます。

対象ユーザー

Ampere世代のNVIDIA GPU(SM80+)またはCDNA2 AMD GPU(MI-210/250)上で極めて高い推論性能を必要とする開発者やエンジニア。特にBERT、Stable Diffusion、Vision Transformersなどのモデルに適しています。

特徴

  • ハードウェア非依存:NVIDIAおよびAMD GPUプラットフォームの両方で動作します。
  • 依存なし:コンパイル済みモデルは自己完結型バイナリであり、実行時にcuBLAS、cuDNN、TensorRTなどのサードパーティライブラリを必要としません。
  • PyTorch統合:PyTorchテンソルを入出力として使用でき、追加のメモリコピーが不要ですが、PyTorchが完全に存在しない環境でも実行可能です。
  • 拡張可能:Pythonでグラフノードとバックエンドコード生成を定義することで、新しい演算子や融合カーネルを追加できます。

関連

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