AIREITER

TorchTPU PyTorch TPU Rehberi: 2026’da Kurulum ve Geçiş

Son Güncelleme: 2026-10-21 00:42:07

TorchTPU ile PyTorch kodunu cuda’dan tpu’ya taşımak genellikle büyük bir yeniden yazım gerektirmiyor. Ancak işin sorunsuz çalışması; TPU erişimine, doğru paket seçimine, derleme sürecine ve tensör şekillerine bağlı.

TorchTPU gerçekte ne vadediyor?

TorchTPU, Google TPU’ları için geliştirilmiş yerel bir PyTorch arka ucu. Barındırılan bir model API’si değil ve TPU VM’in yerini de tutmuyor. PyTorch duyurusunda eager yürütme, torch.compile, dağıtık çalışma yapıtaşları ve yaklaşık 450 ATen işlemi desteğinden söz ediliyor. Herkese açık depoda ise ATen kernel’ları, derleme önbelleği, dağıtık örnekler ve torch.compile entegrasyonu listeleniyor.

Geçiş modeli bilerek tanıdık tutulmuş:

# Before
model.to("cuda")

# First TPU port
model.to("tpu")

Bu, taşınabilirlik açısından bir testtir; performans garantisi değildir. PyTorch’un duyurusunda da en yüksek TPU performansının model şekillerine, shard yapılandırmasına ve donanıma uygun işlemlere bağlı olduğu belirtiliyor.

Kuruluma başlamadan önce gerekenler

TorchTPU yalnızca Google TPU tahsis edilmiş ortamlarda anlamlı. Depo, notebook’ların TPU VM üzerinde çalıştırılmasını öneriyor ve v6e Google Compute Engine örneğini başlangıç için en kolay seçenek olarak gösteriyor. Yalnızca CPU kullanan bir dizüstü bilgisayara paketleri kurabilirsiniz; ancak TPU üzerinde yürütmeyi doğrulayamazsınız.

Herkese açık README dosyası Python 3.11+ desteğini ve torch_tpu==0.2.0 sürümünü belirtiyor. Denemelerin CUDA derlemesinden veya ilgisiz bağımlılıklardan etkilenmemesi için izole bir ortam kullanın.

torch_tpu paketini CUDA çekmeden kurun

Önce bir sanal ortam oluşturun, ardından sabitlenmiş TorchTPU paketiyle CPU PyTorch wheel’ini kurun:

python -m venv .venv
source .venv/bin/activate

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

README’de belirtildiği üzere ek indeks belirtilmezse CUDA PyTorch wheel’i kurulabilir. Bu da TPU VM için yanlış bağımlılık anlamına gelir.

İlk geçiş denemesinde yayımlanmış wheel’i kullanın. Kaynaktan derleme için Bazel veya Bazelisk ile birlikte deponun dokümante ettiği --config=wheel_common ve gerektiğinde --config=no_rbe bayrakları gerekiyor.

Basit bir PyTorch programıyla arka ucu doğrulayın

Aşağıdaki kodu TPU VM üzerinde çalıştırın:

import torch

x = torch.randn(2, 2, device="tpu")
y = torch.randn(2, 2, device="tpu")
z = x @ y

print(z)
print(z.device)

Sonuç başarılı şekilde dönüyor ve cihaz bilgisi tpu olarak görünüyorsa tensör tahsisiyle matris çarpımının TPU arka ucuna ulaştığını doğrulamış olursunuz. Cihaz kullanılamıyorsa model kodunu değiştirmeden önce VM çalışma zamanını ve paket kurulumunu kontrol edin.

TorchTPU hata ayıklama için eager yürütmeyi, derlenmiş çalışma içinse torch.compile’ı destekliyor. PyTorch duyurusuna göre DeferAndFuse modu, proje testlerinde katı eager moduna kıyasla %50 veya daha fazla hızlanma sağlayabiliyor. Ancak bunu evrensel bir benchmark sonucu değil, projeye ait bir iddia olarak değerlendirin.

Gerçek bir PyTorch iş yükünü taşıyın

Önce çalışan en küçük değişikliği yapın. Tek cihazlı akış doğrulandıktan sonra TPU’ya özel dağıtık yapılandırmayı ekleyin.

  1. Cihaz seçimini torch.device("tpu") kullanacak şekilde değiştirin veya desteklenen ortamlarda torch.accelerator.current_accelerator() kullanın.
  2. Modeli ve girdi tensörlerini aynı cihaza taşıyın.
  3. Derleme ya da dağıtık çalışmayı etkinleştirmeden önce kısa bir batch çalıştırın.
  4. Ölçüm sırasında batch boyutlarını ve tensör şekillerini sabit tutun; şekil değişiklikleri yeniden derlemeyi tetikleyebilir.
  5. Daha büyük bir geçişe karar vermeden önce gerçek modeli ve kullandığınız dağıtık çalışma biçimini test edin.

Dağıtık CUDA kodlarında genellikle NCCL kullanılır. TorchTPU’nun yayımladığı örnekte ise TPU işlem grubu arka ucu tercih ediliyor:

import torch
import torch.distributed as dist

device = torch.device("tpu")
dist.init_process_group(backend="tpu_dist")
model = model.to(device)

Kullanılacak dağıtık başlatma komutu, TPU ortamına ve iş yüküne göre değişir. Cihaz dizesini değiştirmek; shard yapılandırmasını, işlemci yerleşimini veya girdi pipeline’larını kendiliğinden ayarlamaz.

İlk çalıştırmanın sonraki çalıştırmalardan farklı davranmasını bekleyin. TorchTPU’nun dokümante edilen derleme önbelleği, tekrarlanan grafikleri yeniden kullanabiliyor. Bu nedenle ısınma süresini kararlı durumdaki throughput’tan ayrı ölçün.

TorchTPU nerede hazır, nerede hâlâ ham?

Google, TorchTPU’nun vLLM, SGLang, TorchTitan ve Hugging Face araçlarıyla entegrasyonlarını belgeliyor. Çıkarım duyurusunda KV önbelleğinin taşınması ve sunum özellikleri de dahil olmak üzere vLLM ile SGLang için yerel TPU yolları anlatılıyor. Google’ın Cloud duyurusunda ise TorchTitan üzerinde Qwen 3 8B için %52 MFU sonucu ve üretim kullanımı iddiaları paylaşılıyor.

Pratikteki sınırlar, duyuru başlıklarının gösterdiğinden daha az olgun:

AlanKaynakların ortaya koyduğuSizin doğrulamanız gerekenler
KurulumPython 3.11+, torch_tpu==0.2.0, CPU PyTorch indeksiVM imajınızın ve wheel’in sorunsuz şekilde çözümlenip çözümlenmediği
TaşınabilirlikEager modu, torch.compile, tpu cihazı, dağıtık çalışma desteğiDesteklenmeyen operatörler ve modele özel geri dönüşler
PerformansYaklaşık 450 ATen işlemi ve TorchTitan’da Qwen 3 8B için proje tarafından bildirilen %52 MFU sonucuModelinizin ısınma süresi, şekilleri, batch boyutları ve maliyeti
Geliştirici deneyimiHerkese açık örnekler, notebook’lar, hata ayıklama ve benchmark araçlarıTPU erişimi, Bazel karmaşıklığı ve kullanılabilir gözlemlenebilirlik seçenekleri
Mevcut eksiklerÖzellik kapsamı hâlâ gelişiyorEğitim stack’inizin, iş yükünüz için henüz dokümante edilmemiş özelliklere bağımlı olup olmadığı

TorchTPU’yu benimseme kararı nasıl verilmeli?

Google TPU erişiminiz varsa, PyTorch modelleri çalıştırıyorsanız ve eğitim ya da çıkarımda ortak bir framework yolu arıyorsanız TorchTPU’yu bugün test etmeye değer. İlk aşamadaki en güçlü kullanım senaryosu, tek satırlık bir portun GPU’ya eşdeğer verim getirmesini beklemek yerine şekilleri profillemeye ve ayarlamaya hazır ekipler için geçerli.

Olgun bir uyumluluk matrisi, öngörülebilir ilk başlatma davranışı veya stack’inizin ihtiyaç duyduğu ancak TorchTPU’nun henüz sunmadığı bir özellik gerekiyorsa kritik iş yükünüzü taşımak için bekleyin. Değişikliği tek model, tek TPU dilimi ve tek bir sabit değerlendirme setiyle kademeli başlatın. Kurulum süresini, ilk derlemeyi, kararlı durum throughput’unu ve çıktı doğruluğunu ayrı ayrı ölçün.

TorchTPU SSS

TorchTPU, PyTorch/XLA ile aynı şey mi?

Hayır. TorchTPU, eager yürütme ve torch.compile etrafında tasarlanmış daha yeni bir yerel PyTorch arka ucu. PyTorch/XLA ise eski TPU entegrasyon yolu. Mevcut XLA kodu için ayrıca bir geçiş değerlendirmesi yapmanız gerekebilir.

TPU olmadan TorchTPU’yu dizüstü bilgisayara kurabilir miyim?

Paketleri kurabilirsiniz; ancak uyumlu Google TPU altyapısı olmadan TPU üzerinde çalışmayı doğrulayamazsınız. Resmî deponun pratik kurulum varsayımı TPU VM üzerine kurulu.

İlk TorchTPU adımım neden yavaş çalıştı?

İlk çalıştırmada grafik derlenebilir ve önbellekler doldurulabilir. Sorunu incelerken sonraki iterasyonları ayrı ölçün ve yeniden derlemeyi teşhis etmek için şekilleri sabit tutun.

cuda yerine tpu yazmak aynı performansı garanti eder mi?

Hayır. Cihazı değiştirmek yalnızca doğruluk açısından bir geçiştir. Performans karşılaştırması yapmadan önce şekilleri, shard yapısını, operatör kapsamını ve ısınma süresini profilleyin.

TorchTPU üretim kullanımı için hazır mı?

Google, üretimde çıkarım ve eğitim kullanımını anlatıyor; ancak herkese açık ekosistemdeki bileşenlerin ve özelliklerin olgunluk seviyeleri farklı. Karar vermeden önce kullandığınız model, sunum motoru ve dağıtık çalışma biçimiyle test yapın.

Sabitlenmiş wheel’i bir TPU VM üzerine kurun, 2×2 doğrulamasını çalıştırın ve ısınmış tek bir iş yükünü mevcut GPU yolunuzla karşılaştırın. Böylece kod taşınabilirliğini, derleyici ısınmasını, operatör kapsamını ve donanım maliyetini birbirinden ayırabilirsiniz.