Procesor tensorowy

Specjalizowany układ scalony Google przyspieszający obliczenia uczenia maszynowego. Zoptymalizowany pod operacje na tensorach w sieciach neuronowych.

Procesor tensorowy (Tensor Processing Unit, TPU) to specjalizowany układ scalony (ASIC) zaprojektowany przez Google wyłącznie do jednego zadania: szybkiego liczenia operacji, które dominują w uczeniu maszynowym. W przeciwieństwie do CPU (uniwersalnego) i GPU (równoległego, ale wciąż dość ogólnego), TPU jest skrojony pod tensory — wielowymiarowe tablice liczb, na których pracują sieci neuronowe. Pierwsza generacja trafiła do data center Google w 2015 roku, a od tamtej pory doczekaliśmy się m.in. Trillium (6. generacja) i Ironwood (7. generacja, dostępna w Google Cloud).

Jak to działa i do czego służy

Serce TPU to MXU (Matrix Multiply Unit) — tzw. systolic array, czyli siatka tysięcy jednostek mnożąco-dodających, przez które dane przepływają jak woda przez rury. Zamiast ciągle latać po danych do pamięci (co dławi CPU/GPU), TPU przepuszcza liczby bezpośrednio między sąsiednimi komórkami. Efekt: mnożenie macierzy — fundament każdej warstwy sieci neuronowej — leci tu wyjątkowo tanio energetycznie.

TPU używa się do dwóch rzeczy: treningu dużych modeli (np. LLM-ów) oraz inference, czyli serwowania gotowego modelu produkcyjnie. Pojedyncze chipy łączy się w wielkie pody liczące tysiące układów, żeby trenować modele, których jeden akcelerator by nie udźwignął.

Przykład z praktyki

TPU najłatwiej dotkniesz przez Google Cloud albo za darmo w Google Colab (w menu Runtime → Change runtime type → TPU). W TensorFlow czy JAX nie przepisujesz całego kodu — owijasz go strategią dystrybucji:

  • resolver = tf.distribute.cluster_resolver.TPUClusterResolver()
  • strategy = tf.distribute.TPUStrategy(resolver)
  • model budujesz wewnątrz with strategy.scope(): i trenujesz normalnie.

Częste błędy i mity

„TPU zawsze jest szybsze niż GPU” — nieprawda. TPU błyszczy przy dużych, regularnych operacjach macierzowych i dużych batchach. Małe modele, nietypowe operacje albo dynamiczne kształty tensorów potrafią je zagłodzić, bo MXU stoi bezczynnie. Druga pułapka: TPU lubi bfloat16 i operacje, które ładnie się kompilują w XLA — kod pełen pętli Pythonowych i warunków nie przyspieszy. I pamiętaj: TPU to sprzęt Google, w praktyce dostępny tylko w ich chmurze, a nie karta, którą wsadzisz do peceta jak GeForce.

Pojęcia powiązane

GPU, CUDA, ASIC, sieć neuronowa, tensor, TensorFlow, JAX, XLA, bfloat16, inference, uczenie maszynowe, Google Cloud.