Google TorchTPU: Tensor Processing Units向けのネイティブPyTorchバックエンド

TorchTPUの概要

TorchTPUは、GoogleのTensor Processing Units(TPU)向けにネイティブなPyTorchバックエンドを提供するプロジェクトです。このオープンソース実装により、開発者は標準的なPyTorchモデルと操作をTPUハードウェア上で実行でき、PyTorchワークロードをGoogleの専用アクセラレータに展開するプロセスを大幅に効率化できます。

主要な技術的特徴

このプロジェクトは、PyTorchエコシステムとTPUの専用アーキテクチャの間のギャップを、以下の主要な機能を通じて埋めるように設計されています。

PyTorch統合と最適化

  • ATenカーネル実装: TorchTPUには、TPUデバイス向けに特別に実装されたカスタムATenカーネルが含まれており、基本的なPyTorch操作をハードウェア上でネイティブに実行できます。
  • コンパイルキャッシュ: このシステムは、XLA計算の実行を最適化するためにコンパイルキャッシュを利用し、実行時パフォーマンスを向上させます。
  • グラフモード実行: TorchTPUはtorch.compile()と統合し、PyTorchモデルの効率的なグラフモード実行を可能にします。

分散トレーニングサポート

このフレームワークは、データ並列処理やテンソル並列処理を含む高度な分散トレーニングパラダイムをサポートし、複数のTPUデバイスにわたるモデルのスケーリングを可能にします。

モデルとユーティリティのサポート

TorchTPUは、Llama、Qwen、ResNet、DLRM、minGPT、UNetなど、さまざまなディープラーニングモデルの例を提供しています。さらに、このプロジェクトには、TPUハードウェア上でのデバッグとベンチマークに特化したユーティリティも含まれています。

インストールと依存関係

TorchTPUはPython 3.11以降をサポートしています。インストールはpipを使用するか、Bazelを使用してソースからビルドすることで行えます。

pipによるインストール

ユーザーは、以下のコマンドを使用して最新の公開リリース(バージョン0.2.0)をインストールできます。

pip install torch_tpu==0.2.0 --extra-index-url https://download.pytorch.org/whl/cpu

Bazelを使用したソースからのビルド

ソースからビルドするには、依存関係管理のためにBazel(またはBazelisk)が必要です。標準の最適化ビルドコマンドは以下のとおりです。

bazel build --config=wheel_common //ci/wheel:torch_tpu_wheel

このコマンドは--config=wheel_commonを使用して、共有XLA/MLIRバックエンドをtorch_versionリセット遷移経由でルーティングし、生成されたwheelがPyTorchと正しく統合されるようにします。Remote Build Execution(RBE)の認証情報が利用できない場合は、--config=wheel_commonの後に--config=no_rbeを含めてビルドする必要があります。

業界およびエコシステムへの影響

TorchTPUのリリースは、AIハードウェアとフレームワークの競争環境に関する議論を引き起こしています。

ハードウェアの堀と競争

TPU向けのネイティブPyTorchサポートの提供は、AI業界における潜在的な競争上の堀としての専用ハードウェアの役割を強化します。この動きは、クラウドベースの機械学習ワークロードに同様の高速化機能を提供するAmazonのAWS Trainiumの開発など、他の主要プレーヤーの取り組みを反映しています。

フレームワークの状況

XLAとTorchTPUの統合は、AIワークロード向けのコンパイラインフラストラクチャを改善するための重要なステップとして注目されています。これにより、PyTorchとJAXなどの競合フレームワークとの関係の進化に関する議論が生まれ、一部の観察者は、主な違いがフレームワークの機能からユーザーのスタイルの好みに移る可能性があると示唆しています。

可用性とアクセシビリティ

コアプロジェクトはオープンソース化されていますが、Google Cloudサービス以外でのTPUの商用利用可能性については疑問が残っており、外部ユーザーにとって基盤となるハードウェアへのアクセスが依然として重要な要素であることを示しています。

Sources

関連

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