Workstation الموجز الفني: كيفية تعزيز خدمة LLM والوكلاء بها PagedAttention, vLLM, Self-Debugging, PowerInfer، و EG-MLA. رفيق: مدونة · التمهيدي: LLMs على مقالة Kubernetes · المعمل: مختبر الذكاء الاصطناعي للمؤسسات.
- عنق الزجاجة: نمو وتجزئة ذاكرة التخزين المؤقت KV، وليس "النموذج بطيء" في الملخص.
- PagedAttention: الترحيل على نمط نظام التشغيل لكتل KV؛ ضبط حجم الكتلة والتسلسل الهرمي لذاكرة التخزين المؤقت.
- vLLM: خدمة المحرك مع نفايات KV قريبة من الصفر + الخلط المستمر؛ شاهد TTFT مقابل الرموز/الرموز.
- Self-Debugging: إصلاح البرنامج ذو اللقطات القليلة يتفوق على المجموعات المرشحة الضخمة؛ جولات الغطاء في همز.
- PowerInfer: انقسام ساخن/بارد؛ 13.20 توك/ثانية في المتوسط / 29.08 ذروة على RTX 4090 (أرقام الورق/الريبو).
- EG-MLA: ضغط KV على مستوى الهندسة المعمارية (~91.6% مقابل MHA)؛ إعادة التقييم قبل المبادلة.
1. لماذا الخدمة، وليس التدريب، هي الأزمة؟
لقد غيرت نماذج اللغات الكبيرة البرمجة اللغوية العصبية: الدردشة والتوليد والأدوات. التدريب مكلف مرة واحدة؛ الخدمة باهظة الثمن في كل ثانية. فك التشفير هو الانحدار الذاتي. يحتاج كل رمز جديد إلى المفاتيح والقيم السابقة. تتناسب الذاكرة الخاصة بذاكرة التخزين المؤقت KV مع الطبقات × الرؤوس × المخفية × التسلسل × الدُفعة. تعتبر عملية التعبئة المسبقة عملية حسابية ثقيلة؛ فك التشفير ثقيل النطاق الترددي للذاكرة. إذا قمت بتخصيص موتر KV متجاور بحد أقصى لكل طلب، فإن معظمه يكون فارغًا حتى ينمو التسلسل فعليًا - التجزئة الداخلية الكلاسيكية. لا يمكن للطلبات المتزامنة سرقة تلك الثغرات. ينخفض حجم الدفعة. الرموز لكل قطرة ثانية. تبدو GPUs مشغولة ولا تزال خاملة.
هذه هي المشكلة التي تمت مهاجمة PagedAttention وvLLM في عام 2023، ولا تزال مشكلة PowerInfer ومتغيرات الاهتمام الأحدث تهاجم من زوايا مختلفة.
شاهد: النموذج العقلي LLM
فيديو السياق: مقدمة إلى نماذج اللغات الكبيرة. شرح Workstation : كيف تعمل LLMs وكيفية تشغيلها على Kubernetes.
2.PagedAttention: الترحيل لذاكرة التخزين المؤقت KV
قدم كل من Kwon وLi وZhuang وSheng وZheng وYu وGonzalez وZhang وStoica PagedAttention كخوارزمية انتباه مستوحاة من الذاكرة الافتراضية وترحيل صفحات نظام التشغيل، وقاموا ببناء vLLM فوقها. [أرخايف:2309.06180]. الفكرة:
- تقسيم KV إلى كتل ذات حجم ثابت (عدد صغير من الرموز لكل كتلة).
- احتفظ ب جدول الكتلة من مواضع الرمز المنطقي إلى كتل GPU الفعلية (ربما غير متجاورة).
- قم بتخصيص/تحرير الكتل مع نمو التسلسل أو نهايته - مثل تخصيص الصفحة، وليس مثل malloc لمصفوفة عملاقة واحدة.
- مشاركة الكتل (النسخ عند الكتابة) لإعادة استخدام البادئة، والبحث عن الشعاع، وأخذ العينات المتوازية حتى لا تقوم بتكرار البادئات المتطابقة.
التنفيذ ليس "وضع علامة على BERT". يجب أن تجمع نواة الانتباه الكتل المتناثرة. يجب أن يعرف المجدول أي الكتل مجانية. التسلسل الهرمي لذاكرة التخزين المؤقت مهم: كتل HBM المقيمة مقابل إلغاء تحميل CPU مقابل أقران NVLink. حجم المخزن المؤقت (الكتلة) هو مقبض حقيقي. صغير جدًا: مزيد من عمليات البحث في الجدول ونفقات النواة. كبيرة جدًا: فتحات ضائعة داخل الكتلة الجزئية الأخيرة. إقران حجم الكتلة مع max_model_len والمزيج الفعلي للموجه/الإكمال لحركة المرور الخاصة بك.
يمارس: تجزئة الملف الشخصي (بايتات KV غير المستخدمة / بايتات KV المحجوزة) والرموز المميزة معًا. الرسوم البيانية للذاكرة دون الإنتاجية هي الغرور.
3.vLLM: نظام التقديم حول جهاز النداء
مطالبة vLLM هي إهدار قريب من الصفر في ذاكرة التخزين المؤقت KV بالإضافة إلى المشاركة المرنة داخل الطلبات وعبرها. أظهرت التقييمات في الورقة تقريبًا 2-4 × الإنتاجية مقابل أنظمة SOTA آنذاك (FasterTransformer، Orca) في زمن انتقال مماثل، مع مكاسب أكبر في التسلسلات الطويلة وفك التشفير الأكثر روعة. اليوم، يقوم المحرك أيضًا بشحن الدفعات المستمرة، والتعبئة المسبقة المقسمة، والتخزين المؤقت للبادئة، والموتر/خط الأنابيب الموازي لـ multi-GPU.
قائمة المراجعة التشغيلية:
- تعيين
gpu_memory_utilizationعالية بما يكفي لتحمل الأوزان + KV، ومنخفضة بما يكفي لمغادرة مساحة عمل CUDA. - قم بتمكين التخزين المؤقت للبادئة فقط بعد تأكيد درجات التقييم وتشغيل p95 TTFT لك يطالب.
- تجمعات منفصلة ذات تعبئة مسبقة ثقيلة وثقيلة فك التشفير إذا كانت حركة المرور المختلطة تؤدي إلى تدمير SLO (الخدمة المفصلة).
- اكشف عن نقاط النهاية المتوافقة مع OpenAI خلف بوابتك (غالبًا ما تضع عقارات Workstation هذا خلفها بوابة WSL Proxy/API أنماط).
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3.1-8B-Instruct",
gpu_memory_utilization=0.90,
max_model_len=8192,
enable_prefix_caching=True,
)
params = SamplingParams(temperature=0.2, max_tokens=256)
outs = llm.generate(["Summarise PagedAttention for a platform engineer."], params)
print(outs[0].outputs[0].text)
مكافحة النمط (هذا هو لا PagedAttention):
# Classifier forward pass — logits, not paged KV serving
import torch
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
out = model(torch.tensor([[1, 2, 3]]), attention_mask=torch.tensor([[1, 1, 1]]))
print(out.logits)
شاهد: أنظمة الخدمة في البرية
الحديث عن الخدمة السياقية. الكتابة الكنسية: مدونة vLLM (PagedAttention) · محرك: vllm-project/vllm.
4. Self-Debugging: جودة أكبر لكل مرشح، وليس المزيد من المرشحين
تشين، لين، كلاين، وآخرون. أظهر أن تعليم LLM لتصحيح أخطاء برنامجه المتوقع من خلال عروض توضيحية قليلة اللقطات يمكن أن يطابق أو يتفوق على خطوط الأساس التي تولد أكثر من 10x مثل العديد من المرشحين [أرخايف:2304.05128]. الحلقة هي: إنشاء ← تنفيذ أو اختبار الوحدة ← تغذية التتبع ← إصلاح.
مقايضة الإنتاج: كل رسالة تعليقات عبارة عن تعبئة مسبقة + فك تشفير (أو إلحاق سياق طويل). غالبًا ما ترتفع الدقة مع المزيد من الجولات؛ وكذلك الكمون والتكلفة. إرشادات Workstation للوكلاء (انظر أيضًا Muse Glimmer / الوكلاء المحليين):
- الحد الأقصى لجولات تصحيح الأخطاء (على سبيل المثال 2-4) لكل استدعاء أداة.
- رموز الميزانية بشكل منفصل عن الدردشة المرئية للمستخدم.
- قم بالتصعيد إلى نموذج بشري أو متخصص بدلاً من إعادة المحاولة اللانهائية.
- سجل آثار التقييم - Self-Debugging بدون القياس عن بعد هو فولكلور.
5.PowerInfer: إنشاء الرموز المميزة حسب المنطقة
PowerInfer (SJTU IPADS / مستودعات ذات صلة) هو نظام توليد رمزي يستغل منطقة التنشيط: خلية عصبية صغيرة "ساخنة" مثبتة على GPU، أو أوزان أكثر برودة يتم بثها أو تنفيذها على CPU. تشمل نقاط التشغيل المنشورة متوسط 13.20 رمز/ثانية و 29.08 رمز/ثانية الذروة على NVIDIA RTX 4090 واحد، وما يصل إلى 11.69× مقابل llama.cpp مع الاحتفاظ بالدقة [PowerInfer جيثب]. (تتبع الشوكات التي تواجه المستخدم مثل Tiiny-AI/PowerInfer نفس خط العمل.)
التوسع هو الجزء الصعب. لا يصبح ملف تعريف محلي 4090 واحدًا تلقائيًا بمثابة نشر Kubernetes سليم. أنت بحاجة إلى:
- طلبات/حدود GPU الصادقة وتثبيت CPU المدرك لـ NUMA في حالة تشغيل خبراء CPU.
- خطة موزعة إذا لم يعد النموذج مناسبًا: موتر متوازي مقابل خط أنابيب مقابل متوازي خبير.
- تقسيم SLO: الدردشة التفاعلية مقابل إكمال الدُفعات مقابل حلقات أدوات الوكيل.
استخدم PowerInfer (أو llama.cpp، أو MLX) على محطات العمل والصناديق الطرفية؛ استخدم vLLM (أو TensorRT-LLM، أو SGLang) عندما تقوم بملء مراكز البيانات GPU بحركة مرور متزامنة على نمط OpenAI. قياس على حد سواء. ملكنا مختبر الذكاء الاصطناعي للمؤسسات الموقف هو نفس Polyglot Benchmarks: الأدلة، ثم ADR.
6.EG-MLA: ضغط الانتباه على البنية
لا يمكن لحيل التقديم إصلاح النموذج الذي تكون قيمة KV فيه ضخمة في جوهره. تقارير EG-MLA (الانتباه الكامن متعدد الرؤوس المضمن). تقليل حجم ذاكرة التخزين المؤقت بنسبة تزيد عن 91.6% كيلو فولت مقابل الاهتمام متعدد الرؤوس (MHA) مع تدهور لا يُذكر، وتوفير إضافي مقابل MLA (يصل إلى 59.9%)، وتحسين دقة قياس الاستدلال. يجادل المؤلفون بأن تضمين البوابات يؤدي إلى تفاعلات ضمنية عالية الترتيب ويظهر قياسًا يتجاوز معلمات 1B [EG-MLA، أرخايف].
الآثار الهندسية: هذا هو التدريب / الهندسة المعمارية قرار. لا يمكنك قلب EG-MLA على vLLM عشوائيًا كل ليلة لـ Llama-3 وتوقع النسب المئوية للورقة. إذا كنت تتحكم في التدريب المسبق أو التدريب المسبق المستمر، فإن EG-MLA هو المرشح لقطع HBM قبل شراء GPU آخر. إذا كنت تخدم الأوزان العامة فقط، فابق على متغيرات PagedAttention + التكميم + MLA التي يدعمها المحرك بالفعل، وتتبع نقاط تفتيش EG-MLA عند هبوطها.
7. الجمع بين المكدس دون زراعة البضائع
| طبقة | استخدم متى | احترس |
|---|---|---|
| PagedAttention/vLLM | خدمة API المتزامنة، سياق طويل، بادئات مشتركة | ذاكرة التخزين المؤقت للبادئة مقابل الصحة؛ OOM في الاستخدام العالي |
| PowerInfer | معدل الرمز المميز لمحطة العمل GPU للدهون الواحدة | عدم تطابق المنطقة؛ نطاق فوضوي |
| Self-Debugging | حلقات التعليمات البرمجية/الوكيل التي يمكنها تنفيذ الاختبارات | جولات لا حدود لها. تكلفة التعبئة المسبقة الإضافية |
| EG-MLA | يمكنك تدريب أو صقل العمود الفقري | ليس علم خدمة؛ إعادة تشغيل التقييم الكامل |
8. قابلية التوسع على Kubernetes
تعمل البنية الموزعة المصممة جيدًا على زيادة الإنتاجية وكذلك زيادة أوضاع الفشل: المتطرفون، ونقل ذاكرة التخزين المؤقت KV، وانحراف الرمز المميز، والمقياس التلقائي الذي يقتل البادئات الدافئة. النمط العملي (يتماشى مع Ollama / vLLM على Kubernetes الكتابة):
- تجمعات عقدة GPU مخصصة؛ لا تقم أبدًا بتعبئة كبسولات فك التشفير بمهام CPU العشوائية.
- قم بفصل التعبئة المسبقة وفك التشفير في حالة تعارض TTFT SLOs والرموز/s SLOs.
- HPA على عمق قائمة الانتظار أو إشغال GPU KV، وليس فقط CPU.
- تعزيز أكوام التقديم من خلال الحلقات (Ring Promoter) لذلك لا يمكن لبناء المحرك السيئ تخطي الاختبار.
9. الاستنتاج
الشحن التوربيني LLMs ليس خوارزمية واحدة. إنه ترحيل ذاكرة التخزين المؤقت KV (PagedAttention)، وهو محرك تقديم لا يضيع تلك الصفحات (vLLM)، والتوليد المدرك للمنطقة عندما يكون الجهاز عبارة عن محطة عمل GPU (PowerInfer)، وحلقات الوكيل التي تقوم بتصحيح الأخطاء بدلاً من رش المرشحين (Self-Debugging)، و- عندما تمتلك الأوزان - الاهتمام الذي يخزن ببساطة أقل (EG-MLA). تتاجر كل طبقة بالذاكرة وزمن الوصول والدقة. قياس حركة المرور الخاصة بك. نشر ADR. سفينة.
مراجع
- كوون وآخرون. — إدارة فعالة للذاكرة لنماذج اللغات الكبيرة التي تعمل مع PagedAttention (arXiv:2309.06180، 14 سبتمبر 2023).
- تشن وآخرون. — تدريس نماذج اللغات الكبيرة للتصحيح الذاتي (arXiv:2304.05128، 12 أبريل 2023).
- زبر0X — SJTU-آيباد/PowerInfer (وشوكات Tiiny-AI ذات الصلة).
- زبر0X — تضمين بوابات متعددة رئيس الاهتمام الكامن (ارشيف، 20 سبتمبر 2025).
- مدونة vLLM — خدمة LLM سهلة وسريعة ورخيصة مع PagedAttention.
نشرت من قبل Workstation. الأرقام الورقية المذكورة كما نشرها المؤلفون الأصليون؛ ستختلف أرقام الإنتاج في مجموعتك.