Hugging Face、PyTorchのネイティブTPUバックエンド「TorchTPU」に対応 設定変更のみでモデル実行が可能に
要点
-
Hugging Faceは2026年10月20日、PyTorchの新たなネイティブバックエンド「TorchTPU」による自社ライブラリのTPU対応を発表した。
-
従来のPyTorch/XLAや専用ライブラリ「Optimum TPU」を介さず、通常のPyTorchコードと同じ記法でTPUを利用できるようになった。
-
Transformers v5では「device_map="tpu"」を指定するだけでモデルが直接ロードされ、Diffusersでも「pipe.to("tpu")」による実行に対応する。
-
複数チップへのモデル分散配置(テンソル並列)をサポートし、Cloud TPU v6e環境下で画像や動画の生成モデルの動作が確認されている。
-
AIモデル共有プラットフォームを運営するHugging Faceは2026年10月20日、GoogleのAI特化型プロセッサ「TPU」をPyTorchから直接制御できるネイティブバックエンド「TorchTPU」との統合を発表した。これにより、同社の主要ライブラリであるTransformersやDiffusersにおいて、デバイス指定に「tpu」を渡すだけでTPU上でのモデル読み込みや推論が可能になる。これまでTPU上でPyTorchを動作させる際に障壁となっていた複雑な環境設定や追加ツールへの依存が解消されるという。
従来のTPU環境における課題と「Optimum TPU」の不要化
TPU(Tensor Processing Unit)は、ニューラルネットワークの行列演算に特化してGoogleが約10年にわたり独自開発を続けているAI専用アクセラレーターである。同社の最新モデル「Gemini」の学習や推論配信の基盤として活用されているほか、Google Cloud上で単一チップから数千チップ規模のポッドまで提供されている。
しかし、TPU向けソフトウェア環境は歴史的にTensorFlowやJAXを中心に発展してきたため、PyTorchを利用するエンジニアにとっては導入の難易度が高かった。従来、PyTorchをTPU上で動作させるには「PyTorch/XLA(torch_xla)」を利用するか、JAXを新たに習得する必要があった。PyTorch/XLAでは、演算を遅延評価する仕組みによって実行タイミングの把握が難しく、コードのわずかな変更で計算グラフの再コンパイルが走るなど、デバッグや運用の難しさが指摘されていた。
Hugging Faceはこれらの課題を緩和するため、TPU向けツール「Optimum TPU」を提供してきた。だが、今回のTorchTPUによるネイティブ対応に伴い、TransformersやDiffusersでモデルを実行する上でOptimum TPUの導入は不要になったと説明している。
ネイティブバックエンド「TorchTPU」の特徴と導入手順
「TorchTPU」は、PyTorchの公式エコシステム(google-pytorch/torch_tpu)においてTPUを新しいデバイスバックエンドとして追加する仕組みである。開発者は標準的なPyTorchコードを書き換えることなく、TPU向けに最適化された演算処理を実行できる。
本バックエンドには、TPU専用に最適化された高性能な演算処理コードである「Pallasカーネル」が同梱されているほか、分散学習のサポートや、高速化を実現するコンパイラ機能「torch.compile」との連携が組み込まれている。
TPU仮想マシン(TPU VM)へのインストールは、以下の単一コマンドで実行できる。
pip install torch-tpu --extra-index-url https://download.pytorch.org/whl/cpu
このコマンドでPyTorchのCPU向けビルドを指定しているのは、追加指定がない場合に容量の大きいCUDA向けビルドが取得されてしまうのを防ぎ、TPU環境に不要なダウンロードを避けるためだとされている。
TransformersおよびDiffusersにおける実装と動作モード
TorchTPUの統合によって、Hugging Faceの主要ライブラリにおけるTPUの利用手順は大幅に簡略化された。
Transformersでのテキスト生成
モデル定義の共通化を進めるTransformers v5では、モデル読み込み時に引数 device_map="tpu" を指定するだけで、モデルがTPU上に直接ロードされる。
公開されたサンプルコードでは、言語モデル「Qwen/Qwen3.5-9B」を読み込む際に device_map="tpu" を付与し、入力テンソルを .to("tpu") で渡すことでテキスト生成を行っている。処理は標準で逐次実行されるeagerモードで動作するが、処理速度を高めるための torch.compile や分散環境での実行にも対応している。
Diffusersでの画像・動画生成
Diffusersにおいても、TPUが第一級のサポートデバイスとして位置づけられた。プロトタイピングや検証段階では、パイプラインに対して pipe.to("tpu") を実行するだけでeagerモードでの稼働が可能である。
本番運用などのデプロイに向けては、pipe.transformer.compile(backend="tpu", fullgraph=True, dynamic=False) を呼び出すコンパイルモードが用意されている。初回実行時に計算グラフがコンパイルされ、以降は同一の画像サイズであればグラフが再利用される。専用のフォーク版コードを用意・保守する必要はなく、既存のコード資産をそのまま運用できるとしている。
大規模モデル向けのマルチチップ分散と動作検証
単一チップのメモリに収まらない巨大モデルを扱うケースに対応するため、Diffusersでは複数チップへの分散配置を可能にするテンソル並列(モデルの構成要素を行列単位で複数チップに分割して並列実行する技術)がサポートされている。
モデル読み込み関数 from_pretrained に TensorParallelConfig を渡すことで、モデルの展開時に各チップへ自動的に分割(シャーディング)される。これにより、モデル全体を単一チップに配置することなくロード可能となる。多くの主要パイプラインで本機能が標準サポートされているほか、未対応のモデルでも tp_plan を定義することで対応できると案内されている。
元記事では、Google Cloudの「Cloud TPU v6e-4」(4チップ構成)を用いた具体的な動作検証結果も公表された。4基のチップにモデルを分散するテンソル並列数4(TP=4)、bfloat16精度、バッチサイズ1の条件下において、動画・音声生成モデル「MiniMax-H3」や画像生成モデル「Qwen-Image-2.1」の動作が確認されたという。
補足
TPUはGoogle Cloud上で提供されている計算インフラであり、1チップ単位の小規模な構成から数千チップ規模の大規模な計算ポッドまで柔軟にスケールできる特徴を持っている。