TPU (Tensor Processing Unit)
وحدة معالجة الموتر (TPU) شريحة مخصصة من Google لإجراء العمليات الحسابية للشبكات العصبية. تعرّف على آلية عمل مصفوفتها الانقباضية ومقارنتها بوحدات GPU ووحدة Edge TPU.
وحدة معالجة الموترات (TPU) دائرة متكاملة خاصة بالتطبيقات (ASIC) تصممها Google لتسريع تدريب الشبكات العصبية واستدلالها. وتتمحور TPU حول وحدات كبيرة لضرب المصفوفات، لأن ضرب المصفوفات يستحوذ على معظم العمل في التعلّم العميق. وتشغّل Google وحدات TPU في مراكز بياناتها منذ عام 2015، وتدرّب نماذج Gemini عليها، وتؤجرها لشركات أخرى باسم Cloud TPU. وينقسم الجيل الثامن، الذي أُعلن عنه في أبريل 2026، إلى شريحتين: TPU 8t للتدريب وTPU 8i للاستدلال.
آلية عمل TPU#
قلب كل TPU وحدة لضرب المصفوفات (MXU) مرتبة على هيئة مصفوفة انقباضية، وهي شبكة من خلايا الضرب والتجميع التي تمرر البيانات مباشرةً إلى جاراتها. تُحمّل الأوزان في الخلايا مرة واحدة، وتتدفق المدخلات عبر الشبكة خطوةً واحدة كل دورة ساعة، بينما تتدفق المجاميع الجزئية نزولًا عبر الأعمدة، لذا تعيد خلايا كثيرة استخدام كل قيمة تُجلب من الذاكرة. ويستغرق الوصول إلى الذاكرة وقتًا وطاقةً أكثر بكثير من العمليات الحسابية، وهو ما يكسب التصميم كفاءته. في Cloud TPU v2 وv3، كانت كل MXU مصفوفةً بحجم 128×128 تنفذ الضرب بدقة bfloat16 والتجميع بدقة FP32. وتوضح محاكاة قصيرة تدفق البيانات على شبكة 4×4:
import numpy as np
rng = np.random.default_rng(0)
W = rng.integers(-5, 5, (4, 4)) # weights, preloaded one per cell of a 4x4 grid
X = rng.integers(-5, 5, (6, 4)) # six input rows stream through the grid
Y = np.zeros((6, 4), dtype=int)
# Cell (k, j) holds W[k, j]. Input X[i, k] enters row k from the left and reaches
# cell (k, j) at cycle i + k + j, where it is multiplied by the stored weight and
# added to the partial sum for Y[i, j] passing down column j
cycles = 6 + 4 + 4 - 2
for t in range(cycles):
for k in range(4):
for j in range(4):
i = t - k - j
if 0 <= i < 6:
Y[i, j] += X[i, k] * W[k, j]
print(f"{X.size * 4} multiply-adds in {cycles} cycles, equal to X @ W: {np.array_equal(Y, X @ W)}")يطبع 96 multiply-adds in 12 cycles, equal to X @ W: True: إذ تنتج الخلايا الست عشرة حاصل ضرب المصفوفات الدقيق، مع قراءة كل وزن من الذاكرة مرة واحدة وإعادة استخدامه في صفوف المدخلات الستة كلها. ونفذت TPU من الجيل الأول هذا النمط على شبكة 256×256 من الخلايا ذات 8 بت، محققةً 65,536 عملية ضرب وتجميع في الدورة الواحدة، وبأداء ذروة قدره 92 تريليون عملية في الثانية، كما ناسبت طريقة التنفيذ البسيطة والحتمية هدف Google المتمثل في تلبية زمن الاستجابة المستهدف عند النسبة المئوية 99 للاستدلال.
تشغّل وحدات TPU شيفرةً يترجمها XLA، إذ يأخذ الرسم البياني الكامل للحسابات من JAX أو TensorFlow أو PyTorch، ويوزعه على وحدات المصفوفات. وتُربط الشرائح بوصلات بينية مخصصة ضمن مجموعات تضم آلاف الشرائح، وهي الطريقة التي تتيح تدريب أكبر النماذج التأسيسية على العديد من وحدات TPU في آن واحد.
مقارنة TPU وGPU وCPU#
- CPU: يضم عددًا قليلًا من الأنوية القوية للتفرع والشيفرات متعددة الأغراض، ويتولى تحميل البيانات ومعالجتها مسبقًا في معظم مسارات التدريب.
- GPU: تضم آلاف الأنوية القابلة للبرمجة، إضافةً إلى أنوية Tensor لمعالجة المصفوفات. وتشغّل GPU معظم النماذج وأطر العمل، وتبيعها شركات سحابية ومورّدون كثيرون.
- TPU: تضحي ببعض هذه المرونة لتحقق الكفاءة في عمليات المصفوفات الكثيفة الكبيرة. وتعمل أحمال العمل ذات أشكال الموترات الثابتة على أفضل وجه، لأن تغيير الشكل يدفع XLA إلى إعادة الترجمة، فيما لا تناسب TPU العمليات المخصصة أو التفرع الكثيف أو الحسابات عالية الدقة.
- NPU: الاسم العام لمسرّعات الشبكات العصبية في الهواتف والحواسيب المحمولة والشرائح الطرفية، وهي فئة تشمل Edge TPU.
Edge TPU#
إن Edge TPU وحدة TPU صغيرة مخصصة للاستدلال فقط، وهي الشريحة الموجودة في مسرّع Coral USB ووحدات M.2 وPCIe ولوحة Dev Board من Google. وتنفذ 4 تريليونات عملية في الثانية بقدرة 2 واط، ولا تشغّل إلا العمليات الحسابية الصحيحة ذات 8 بت، لذا تُحوّل الشبكات بالكامل إلى INT8 عبر تكميم النموذج، ثم تُترجم باستخدام مترجم Edge TPU من Google، الذي يضع العمليات المدعومة على الشريحة ويترك البقية على CPU المضيف. ويؤتمت Ultralytics YOLO الخطوتين كلتيهما باستخدام format="edgetpu"، الذي يفعّل تكميم INT8 ويشغّل المترجم على جهاز Linux بمعمارية x86-64، منتجًا نموذجًا يعمل على لوحات مثل Raspberry Pi مع مسرّع Coral USB:
from ultralytics import YOLO
# Load the smallest YOLO26 detection model
model = YOLO("yolo26n.pt")
# Quantize to INT8 and compile for the Edge TPU (x86-64 Linux only)
path = model.export(format="edgetpu")
print(f"Edge TPU model: {path}")تتمحور منصة Coral من Google الآن حول Coral NPU، وهو تصميم مسرّع مفتوح المصدر بمعمارية RISC-V أُعلن عنه في أكتوبر 2025 للأجهزة القابلة للارتداء، ويستهدف 512 مليار عملية في الثانية باستهلاك بضعة ملي واط.










