Hugging Face、PyTorch(パイトーチ)のネイティブTPUバックエンド「TorchTPU(トーチTPU)」に対応Transformers・Diffusers・KernelsがTPUで直接動く
日刊AIニュース10月20日(火)号:前日のAIのニュース12本を短くまとめました(約8分)›
Hugging Faceは2026年10月20日、PyTorchのネイティブTPUバックエンドTorchTPUにより、Transformers・Diffusers・KernelsがTPU上で直接動くと発表した。Hubのカーネルを使うとバッチサイズ64でMoEモデルのデコードが既定の実装の21.5倍、TPU上で走るテストの96.5%が合格と同社は書いている。

目次
Hugging Faceは2026年10月20日(掲載日)、公式ブログで「TorchTPU(トーチTPU)」への対応を発表した。TorchTPUはPyTorch(パイトーチ)にTPUを新しいバックエンドとして加えるもので、同社は「Transformers(トランスフォーマーズ)、Diffusers(ディフューザーズ)、Kernels(カーネルズ)がTPU上でネイティブに動く」と書いている。Hubからモデルを選び、"tpu" に送れば終わり、というのが同社の説明だ。
3行まとめ
- Hugging Faceは10月20日、TorchTPU対応を発表。
device_map="tpu"でTransformersのモデルを直接TPUに読み込め、Diffusersではpipe.to("tpu")が使える- Hubのカーネルを使うと、バッチサイズ64のデコードがQwen3-30B-A3Bで21.5倍、Gemma 4 26B-A4Bで12.8倍(TPU v6e-8・同社測定)
- TPU上で走るテストの96.5%が合格、報告した34件の問題のうち19件は修正済みと同社。Optimum TPUはTransformersとDiffusersでは不要になったとも書いている
本記事の内容は、日本時間10月21日0時台に公式ページで確認したものです。数字はすべてHugging Face自身の記述で、こちらで再現したものではありません。
TorchTPUで何が変わるのか
ブログによると、これまでPyTorchをTPUで動かすには、PyTorch/XLA(torch_xla)を通すか、JAXを学ぶ必要があった。同社は旧来の方法の癖として、テンソルが遅延評価(lazy)で、コードが思った時点で実行されないこと、小さな変更でグラフの再コンパイルが起きること、デバッグが難しいことを挙げている。
TorchTPUでは、TPUが「ただのもう一つのデバイス」になる、というのが同社の言い方だ。通常のPyTorchのコードを書き、TPU向けに調整したPallasカーネル、分散学習のサポート、速度が欲しいとき用の torch.compile 統合が付く。TPU VMへの導入は次の1コマンドと書かれている。
pip install torch-tpu --extra-index-url https://download.pytorch.org/whl/cpu
追加のindexを付けるのは、torch のCPU版を入れるためだ。付けないとpipがずっと大きいCUDA版を取りに行く、とブログは注意している。
Transformers・Diffusers・Kernelsはどう使うのか
| ライブラリ | TPUでの使い方(ブログの記述) | 補足 |
|---|---|---|
| Transformers | from_pretrained(..., device_map="tpu")、入力は .to("tpu") |
既定はeagerモード。torch.compileや分散構成も可 |
| Diffusers | eagerなら pipe.to("tpu")、デプロイ向けのcompiledモードは compile 呼び出しを1つ足す |
同じ画像サイズなら、2回目以降は最初に作ったグラフを再利用 |
| Kernels | Kernelsライブラリの get_kernel で、Kernels HubにあるTPU用カーネルを読み込む |
カーネルはPallasで記述。Tokamaxのカーネルも組み込める |
Transformersの例では Qwen/Qwen3.5-9B を device_map="tpu" で読み込み、generate で文章を生成している。Transformers v5は「モデル定義の正本(source of truth)になり、どこでも動くようにする」という考えで作られたもので、その「どこでも」にTPUが入った、と同社は書く。
DiffusersではTPUが「first-class device(第一級のデバイス)」になったという。例は stabilityai/stable-diffusion-3.5-medium を bfloat16 で読み込み、pipe.to("tpu") に送る形だ。パイプラインやコードは同じままで、TPU用のforkを維持する必要はない、と書かれている。1チップに収まらない大きなモデルは、from_pretrained に TensorParallelConfig を渡すと、読み込みながらチップ間で分割される。
速度の数字は何と何の比較か
ブログで具体的な倍率が出ているのはKernelsの節だ。Tokamaxライブラリのragged-dotカーネルを、Mixture-of-Experts(MoE)モデルに差し込む例が載っている。
| モデル | バッチサイズ64のデコード | 比較の基準 |
|---|---|---|
| Qwen3-30B-A3B | 21.5倍速 | 既定の実装 |
| Gemma 4 26B-A4B | 12.8倍速 | 既定の実装 |
条件は「TPU v6e-8」で、Hubのカーネルと既定の実装を比べたものとされる。ブログは「バッチが大きいほど効果が大きい」と書いており、この倍率は大きなバッチでの数字だ。ページには「Decode throughput on a TPU v6e-8, Hub kernel vs. the default implementation.」という図の説明文があり、グラフが載っているとみられるが、今回取得した文字情報からは、バッチサイズが小さい場合の数字は読み取れなかった。
Diffusersの節には、Cloud TPU v6e-4(TP=4、bf16、バッチ1)での生成例として、MiniMax-H3(動画+音声)とQwen-Image-2.1が並ぶ。取得したテキストでは表の形は崩れていたが、各行のプロンプトと条件は読める。波の音や船材のきしむ音まで指定した1344×768・5.2秒・49ステップの動画の行に「188秒(compiled)、262秒(eager)」、カピバラの油絵を描く1024×1024・40ステップの画像の行に「3.5秒(compiled)、8.0秒(eager)」と書かれている。2048×2048のネオン看板の画像の行には、秒数は見当たらなかった。
動作の確からしさ:テストと不具合の数
TPU対応の品質について、Hugging Faceは次のように書いている。
- Transformersのテストスイートを回して、TPU対応を継続的に改善している
- TPU上の夜間CI(nightly CI)の追加に取り組んでおり、結果はTransformersのCIダッシュボードに載せる予定
- 「まだ全部が緑ではない」。TPUで走るテストのうち96.5%が合格
- 見つけた失敗は小さな再現スクリプトにしてTorchTPUのリポジトリにissueとして報告し、これまでに34件、うち19件は修正済み
- TPUで動かしたことで、TransformersのStaticCacheやQwen3のテンソル並列プランのバグも見つかり、上流で修正した
「96.5%」の分母は「TPUで走るテスト」で、スイート全体ではない。走らないテストが何件あるかは、今回確認したページには書かれていない。
誰が、いつから、いくらで使えるのか
TorchTPUのGitHubリポジトリ、TPU用カーネルのHubページ、Cloud TPUのドキュメントがブログから案内されている。TPUはGoogle Cloudで、1チップからチップ数千個のポッドまで使える、と説明されている。
今回確認した公式ページには、TPUの利用料金、対応リージョン、日本からの利用可否に関する記載は見当たらなかった。TPU自体の料金はGoogle Cloud側の話なので、使う場合はGoogle Cloudのドキュメントで確認が必要だ。
前と何が違うのか:Optimum TPUとの関係
Hugging Faceはこれまで、Hugging FaceのモデルにTPU上の推論と学習を提供するため、Optimum TPUを作ってきた。ブログは「TorchTPUがネイティブ対応を持つので、TransformersとDiffusersでHugging Faceのモデルを動かすのにOptimum TPUはもう必須ではない」と書く。Optimum TPUをいつまで保守するかは、今回のページには書かれていない。
TorchTPUをめぐっては、Googleの側からも関連の発表が出ており、当サイトで記事にしている。推論エンジンはvLLM-TorchTPUとSGLang-TorchTPUの記事、学習はMetaのTorchTitanをCloud TPUで動かすTorchTitan on TPUの記事にまとめてある。今回のHugging Faceの発表は、Transformers・Diffusers・Kernelsというライブラリ側からの対応だ。
公式ページを読んでいて気づいたこと
日本時間10月21日0時台に公式ページを取得して読んだところ、本文は英語のみで、日本語の案内は見当たらなかった。もう一つ、CIダッシュボードへのリンクが、本文中で (transformers dashboard)[ https://… ] と、Markdownの括弧の順序が逆になった書き方のままだった。リンクの取得結果にも末尾に ] が付いた形で入っており、そのままだとダッシュボードのURLを開けない可能性がある。ダッシュボードはHugging Faceのspaces内の transformers-community/transformers-ci-dashboard と書かれているので、検索で探すほうが確実だ。なお、筆者はTorchTPUを自分では試していない。
発表からは確認できないこと
- 速度の倍率は、Hugging Faceが自社の環境(TPU v6e-8)で測った数字で、本記事では第三者による検証を確認していない
- 倍率の基準は「既定の実装」で、GPUなど他のハードウェアとの比較ではない
- 96.5%の合格率は「TPUで走るテスト」だけが対象。夜間CIはまだ「追加に取り組んでいる」段階と書かれている
- 日本での提供や料金、対応するTPUの世代(例に出るのはv6eのみ)の一覧は、今回確認したページには書かれていない
- Googleが出した関連発表の数字は、本記事では扱っていない
出典と確認時刻
確認時刻は日本時間2026年10月21日0時43分です。本記事は続報があり次第更新します。
この記事でよく聞かれること
- TorchTPUとは何ですか?
- Hugging Faceの公式ブログによると、PyTorch(パイトーチ)にTPUを新しいバックエンドとして加えるものです。通常のPyTorchのコードを書けばよく、TPU用に調整したPallasカーネル、分散学習のサポート、torch.compileとの統合が付くと説明されています。
- Transformersのモデルをtpuで読み込むにはどう書きますか?
- ブログの例では、from_pretrained に device_map=tpu を渡します(値は文字列のtpu)。入力テンソルは .to(tpu) の形で送ります。モデルは既定ではeagerモードで動き、torch.compile や分散構成も使えると書かれています。
- TorchTPUが入ると、Optimum TPUはもう要りませんか?
- ブログは「TorchTPUがネイティブ対応を提供したので、TransformersとDiffusersでHugging Faceのモデルを動かすのにOptimum TPUは不要になった」と書いています。Optimum TPUはこれまで、TPU上の推論と学習を支えてきた同社のライブラリです。
- インストール方法と速度の数字は?
- TPU VM上で pip install torch-tpu --extra-index-url https://download.pytorch.org/whl/cpu の1コマンドです。速度は、バッチサイズ64のデコードでHubのカーネルを使うとQwen3-30B-A3Bが21.5倍、Gemma 4 26B-A4Bが12.8倍と同社が書いています(TPU v6e-8、既定の実装との比較)。
出典・参照資料
大きいニュースはYouTubeでも解説しています。Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →