نُصدر اليوم vLLM TorchTPU (vllm-torchtpu)، وهي خلفية جديدة لتشغيل vLLM على معالجات Google Cloud TPUs. وهي مبنية على TorchTPU من Google وتشغّل تعريفات النماذج الموجودة أصلاً في vLLM، لذا يمكن خدمة معظم النماذج التي تعمل في vLLM حالياً على TPU دون تغييرات في كود النموذج.
هذا العمل نتيجة للشراكة الهندسية بين Inferact وGoogle التي أعلنّاها الشهر الماضي. أهدافنا للمشروع هي:
- تسهيل نقل النماذج الجديدة إلى TPU عبر إعادة استخدام كود النماذج الحالي في vLLM.
- دفع أداء الاستدلال على TPU في المصادر المفتوحة، مع نوى Pallas لآلية الانتباه وMixture-of-Experts وضرب المصفوفات المكمّم.
- الحفاظ على تجربة vLLM كما هي: نفس واجهة الأوامر، وخادم المتوافق مع OpenAI، والمجدول، ومدير KV cache الذي تستخدمه على العتاد الآخر.
كيف تعمل
vllm-torchtpu هي إضافة منصة لـ vLLM خارج الشجرة. بمجرد تثبيتها، يلتقطها vLLM تلقائياً من خلال vllm.platform_plugins نقطة الدخول.
تشغَّل النماذج عبر مشغّل النماذج القياسي في vLLM وتُجمَّع باستخدام torch.compile(backend="tpu")، والتي تُخفَّض إلى XLA. تحصل كل وحدة TPU على عملية عامل خاصة بها، بنفس الطريقة التي يعمل بها vLLM على وحدات معالجة الرسومات، ويتم الاتصال بين الوحدات عبر torch.distributed. وهذا يعني أن المجدول والعمال ومدير KV cache وخادم API كلها إصدارات فعلية غير معدّلة من vLLM. العمل الخاص بـ TPU يقع تحتها، ومعظمه في مجموعة نوى JAX/Pallas مسجَّلة كعمليات مخصصة وتُستدعى من داخل الرسم البياني المجمَّع.
البدء
-
التثبيت
pip install vllm-torchtpuيتطلب ذلك Python 3.12 على جهاز Cloud TPU VM، ويقوم بتثبيت إصدار vLLM مطابق،
torch,torch_tpuوlibtpuبجانب الإضافة. يغطي دليل التثبيت أيضاًuvوالبناء من المصدر و Docker. -
خدمة نموذج
vllm serve Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8 \ --tensor-parallel-size 8 \ --enable-expert-parallel \ --kv-cache-dtype fp8 \ --max-model-len 16384 \ --async-schedulingتقوم عملية التشغيل الأولى بتجميع رسوم TPU البيانية للأشكال المهيأة، مما قد يستغرق بضع دقائق. اضبط
VLLM_XLA_CACHE_PATHلإعادة استخدام المخرجات المجمَّعة عبر عمليات إعادة التشغيل (انظر التجميع وذاكرة التسخين المؤقت (Compilation & Warmup Cache)).
فك الترميز التخميني، والتخزين المؤقت للبادئات، وتعدد LoRA، والمخرجات المهيكلة، والمدخلات متعددة الوسائط — كلها مُفعّلة مع خيارات vLLM المعتادة. انظر الدليل السريع لمزيد من الأمثلة، بما في ذلك الاستدلال الدفعي دون اتصال، والنماذج متعددة الوسائط، وتعدد LoRA.
النوى (Kernels)
vllm-torchtpu يستخدم نوى Pallas مخصّصة للعمليات المعقدة التي تستفيد من الضبط اليدوي على TPU. بعض الأمثلة:
- Ragged Paged Attention v3 لنماذج MHA/GQA
- انتباه الرأس الكامن متعدد الرؤوس الكثيف والمتناثر (MLA) لـ DeepSeek وKimi وGLM
- Gated DeltaNet وKimi Delta Attention لنماذج الانتباه الخطي الهجين
- خليط الخبراء المدمج (Fused Mixture-of-Experts) مع توازي الخبراء
- ضربات مصفوفات مكمّمة بـ FP8 وINT8 وMXFP4 وNVFP4
التوسّع الأفقي
ركّزنا بشكل كبير على أعباء العمل التي تُلقي أكبر ضغط على أنظمة التقديم اليوم، وخاصة حركة الوكلاء متعددة الأدوار والبيانات متعددة الوسائط، حيث تستمر السياقات في النمو ويمكن أن تكون مخرجات الأدوات طويلة.
التوازي
جميع أبعاد التوازي الستة في vLLM مدعومة، على شرائح TPU المضيفة الواحدة والمتعددة المضيفين، ويمكن دمجها:
| البعد | الخيار |
|---|---|
| توازي الموتر (TP) | --tensor-parallel-size |
| توازي البيانات (Data Parallelism - DP) | --data-parallel-size |
| توازي خط الأنابيب (Pipeline Parallelism - PP) | --pipeline-parallel-size |
| توازي الخبراء (Expert Parallelism - EP) | --enable-expert-parallel |
| توازي سياق التعبئة المسبقة (Prefill Context Parallelism - PCP) | --prefill-context-parallel-size |
| توازي سياق فك التشفير (Decode Context Parallelism - DCP) | --decode-context-parallel-size |
بالنسبة لنماذج MoE الكبيرة، نحصل عادةً على أفضل إنتاجية من انتباه متوازي البيانات مع توازي الخبراء (على سبيل المثال، DP=8, TP=1 مع EP على مضيف v7x واحد). يحافظ هذا على انتباه محلي لكل جهاز ويوزع الخبراء عبر الشريحة بأكملها. للسياقات الطويلة، يقوم PCP وDCP بتقسيم التعبئة المسبقة وذاكرة التخزين المؤقت لـ KV عبر الأجهزة. إن دليل التوازي يحتوي على مزيد من التفاصيل وأمثلة للتكوينات.
تفريغ ذاكرة KV المؤقتة والخدمة غير المجمعة
vllm-torchtpu يستخدم TPU Sync، وهي مكتبة C++ مفتوحة المصدر يمكنها قراءة مخازن أجهزة TPU المؤقتة مباشرةً خارج بيئة تشغيل Python. ومن خلال واجهة موصل KV في vLLM، يوفر لنا هذا:
- تفريغ ذاكرة KV المؤقتة بنسخ صفري إلى ذاكرة DRAM للمضيف، بحيث لا تكون ذاكرة التخزين المؤقت للبادئة للجلسات الطويلة متعددة الأدوار محدودة بـ HBM.
- خدمة تفكيك التعبئة المسبقة وفك التشفير عبر مضيفات TPU مع تكلفة نقل منخفضة لـ KV. يمكن للتعبئة المسبقة وفك التشفير استخدام تخطيطات مختلفة، على سبيل المثال التعبئة المسبقة على
PCP=4, TP=2وفك التشفير علىDP=8, TP=1، وتُعاد تجزئة ذاكرة KV المؤقتة أثناء النقل.
انظر دليل الخدمة غير المجمعة لإعداده.
فك التشفير التخميني والتخزين المؤقت للبادئات
يدعم فك التشفير التخميني MTP وEAGLE-3 وDFlash وDSpark وn-gram وفك التشفير باللاحقة (الدليل). كما يعمل التخزين المؤقت التلقائي للبادئات مع النماذج الهجينة مثل Qwen3.5 وKimi K3، حيث تُخزَّن حالة الانتباه الخطي إلى جانب ذاكرة KV المؤقتة.
النماذج والميزات وما هو قادم
vllm-torchtpu يمكنه خدمة معظم النماذج المدعومة من vLLM، مع أعمال خاصة بـ TPU على النوى والتكميم والتوازي لعائلات Qwen وDeepSeek وKimi وGLM وLlama وGPT-OSS وGemma. يُعد TPU v7x (Ironwood) هو العتاد الموصى به ويُختبر في CI عند كل طلب سحب؛ بينما v6e وv5e وv5p تجريبية.
إن صفحة النماذج والميزات المدعومة تحتوي على القائمة الكاملة لنقاط التحقق والميزات المعتمدة، مع كيفية تمكين كل منها. كما تتتبع مصفوفات الدعم الليلية نتائج الصحة والأداء القياسي لـ TPU v7x من CI.
ما هو القادم؟
نريد أن تعمل النماذج المفتوحة الجديدة من العائلات الكبرى (Qwen وDeepSeek وGLM وKimi وGemma وGPT-OSS) على TPU في يوم إصدارها. بعض ما هو قادم، من خارطة الطريق العامة:
- خط أنابيب CI آلي يتيح تهيئة النماذج الجديدة ذات الأوزان المفتوحة واختبار أدائها ونشر مصفوفات الدعم لها خلال 24 ساعة من إصدارها.
- التوجيه المدرك للبادئة والتخزين المؤقت والجلسات، وتوجيه الطبقات الذاكرية لـ llm-d على TPU.
- واجهات PyTorch لنوى Tokamax المشتركة مع المشاريع الأخرى في منظومة TorchTPU.
- خدمة نماذج الانتشار من خلال
vllm-omni.
سعة TPU للمساهمين
نفتح أيضاً تجمع سعة TPU للمساهمات المجتمعية. إذا كنت تبني على vllm-torchtpu، يمكنك التقديم للحصول على وقت TPU مجاني، وسيساعدك صانعو vLLM الأساسيون في Inferact في التصميم ومراجعة طلبات السحب.
قدّم طلبك للوصول إلى TPU كمساهم من هنا.
جرّبها بنفسك
- البداية السريعة
- إعداد Cloud TPU
- وصفات تقديم الخدمة لـ TPU v7x (Ironwood)
- وصفات vLLM TorchTPU على Ironwood
- نشر Kubernetes
- دليل المساهمة
إذا كانت لديك أسئلة أو أردت المشاركة، تجدنا في #sig-tpu على vLLM Developer Slack.