Hugging Face ❤️ TorchTPU: TPUネイティブ対応でPyTorchの新たな地平を拓く
Hugging FaceとGoogleは、PyTorchワークロードをTensor Processing Unit (TPU) でネイティブに実行可能にする「TorchTPU」の統合を発表しました。これは、長らくNvidia GPUとPyTorch、Google TPUとJAXという不文律が存在したAIハードウェア空間において、大きなパラダイムシフトをもたらすものです。開発者は、既存のPyTorchコードベースに最小限の変更を加えるだけで、TPUの並列処理能力と効率を活用できるようになります。
PyTorchモデルのTPUネイティブ実行を簡素化
TorchTPUは、GoogleのTPUにおけるPyTorchのバックエンドとして機能し、DiffusersパイプラインをCloud TPU (v6e, v7x) 上でコードの変更を最小限に抑えて実行することを可能にします。これまで、PyTorchモデルをTPUで実行するには、Lazy Tensorsに依存するPyTorch/XLAなどのラッパーを介した複雑な対応が必要であり、PyTorch開発者が慣れ親しんだEager Modeのインタラクティブなフローが損なわれるという課題がありました。
しかし、TorchTPUでは、Hugging Faceのライブラリにおいて、単にpipe.to("tpu")やdevice_map="tpu"を渡すだけでTPUを選択できるようになりました。これにより、従来のTPU統合が強要していたJAXのようなパラダイムへの大幅なコード変更や、JAXの依存関係の導入は不要となります。TorchTPUの根底には「PyTorch Citizenship」という哲学があり、PyTorchのEager Modeを尊重し、従来のATen演算をOpenXLAコンパイラがTPUハードウェア向けに最適化されたマシンコードを生成するために使用する中間表現であるStableHLOに直接変換します。このアプローチにより、開発者は馴染みのあるPyTorchのインタフェースで、TPUの高速性と効率を享受できます。
高度なアーキテクチャとパフォーマンスの最適化
TorchTPUは、パフォーマンス最適化のために複数の技術を統合しています。デバッグ時に利用できるEager Modeに加え、本番レベルのパフォーマンスを実現するためにtorch.compile(Dynamoを使用)をサポートしています。これにより、最初の実行(ウォームアップ)はコンパイルのために時間がかかりますが、以降の同じ形状での呼び出しはコンパイルされたグラフを再利用するため高速化されます。TorchTPUは静的な形状を必要とするため、dynamic=Falseを渡す必要がありますが、新しい高さや幅が検出された場合は一度コンパイルされ、その後再利用されます。
大規模な生成モデルに対応するため、TorchTPUは単一のチップでモデルが大きすぎる場合や、複数のチップでより低いレイテンシーを求める場合に、モデルをチップ間でシャーディングするテンソル並列処理をサポートしています。例えば、Stable Diffusion 3.5 Medium(bf16で約15GB)は単一のv6eチップに収まります。また、TorchTPUは、分散トレーニングのPyTorchリファレンス実装であるTorchTitanと統合されており、コンパイル、特殊なPallasカーネル、グラフレベルの最適化を組み合わせて利用します。Googleの報告によると、このトレーニングパスはQwen 3 8Bモデルで最大52%のModel Flops Utilization(トレーニング計算利用率)を達成し、最大8,192個のIronwood TPUでほぼ線形のスケーリングと安定性を示しています。
広範なエコシステム統合と開発ワークフローの強化
Hugging FaceとGoogleの協力は、単なるPyTorchバックエンドの提供にとどまりません。Hugging FaceのTransformers v5ライブラリはdevice_map="tpu"を介したTPUデプロイメントをサポートし、DiffusersライブラリもEager Mode、torch.compile、複数のアクセラレーター間でのテンソル並列処理に対応してTPU上でネイティブに動作します。
さらに、GoogleはHugging Face TransformersスイートのTPUインフラストラクチャ上での継続的な夜間テストのために、専用のCI/CDパイプラインを構築しました。モデルの提供とコンピューティングリソースの調整においても広範なツールとの連携が図られています。vLLMとの統合では、Inferactとの共同開発により、TPUバックエンドが連続バッチ処理、量子化、チップ間での並列実行をサポートし、既存のワーカー、スケジューラ、APIサーバーを維持します。SGLangとの連携では、RadixArkと開発され、構造化されたエージェントベースのワークロードをターゲットとし、リクエスト間でキャッシュされたモデルの状態を再利用することで、繰り返しプロンプトの再計算をスキップします。RayとのネイティブなTorchTPUサポートにより、データ処理、トレーニング、強化学習、推論をCPU、GPU、TPU間で単一のワークフロー内で調整することも可能になりました。これらの統合は、AIシステムのさまざまな部分を網羅し、開発ワークフローを大幅に強化します。
開発者・エンジニア視点での考察
-
既存PyTorch資産のTPU活用障壁の劇的な低下:
pipe.to("tpu")やdevice_map="tpu"といった最小限のAPI変更でTPUの恩恵を受けられるようになったことは、既存のPyTorchユーザーがJAXへの移行や大規模なコードリファクタリングなしに、高性能なTPUハードウェアを利用できるという点で極めて重要です。これにより、モデルのトレーニングコスト削減や高速化が容易になり、研究開発サイクルを加速できます。 -
デバッグとプロダクションのシームレスな移行: Eager Modeによるインタラクティブなデバッグと、
torch.compileによる本番環境での最適化されたパフォーマンスを両立できる開発フローは、生産性と実行効率のバランスを求める開発者にとって理想的です。特に、大規模モデルの複雑な挙動を効率的に検証し、その後最大限のTPU利用率でデプロイすることが可能になります。 -
大規模AIモデルのスケーラビリティと効率の向上: テンソル並列処理やモデルシャーディング、そしてTorchTitanを通じた分散学習レシピの提供により、兆単位のパラメータを持つような巨大なLLMや拡散モデルをTPU上で効率的に学習・推論するための道筋が明確になりました。これにより、より大規模で高性能なAIモデルの開発が、Hugging Faceエコシステム内でアクセスしやすくなります。
Source / 元記事
この記事について
この記事は、公開されているニュース、論文、公式発表、RSSフィードなどをもとに、AIが要約・補足調査・考察を行って作成しています。
元記事の完全な翻訳・逐語的な要約ではなく、AIによる背景説明や開発者向けの考察を含みます。
重要な技術仕様・価格・提供状況などは、必ず元記事または公式情報をご確認ください。


