إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا المقال، تقدم وظيفة RayJob التي تشغل استنتاج دفعات vLLM غير المتصلة باستخدام محول LoRA الذي ينتج بواسطة مثال تدريب نموذج اللغة الكبيرة. تقرأ الوظيفة تقسيم اختبار viggo ومحول LoRA من مساحة تخزين Azure Blob، وتولد توقعات على وحدة معالجة رسومات واحدة، وترفع النتائج.
هام
يتم ذكر البرامج مفتوحة المصدر في جميع وثائق وعينات AKS. يتم استبعاد البرامج التي تنشرها من اتفاقيات مستوى خدمة AKS والضمان المحدود ودعم Azure. أثناء استخدامك للتكنولوجيا مفتوحة المصدر جنبا إلى جنب مع AKS، راجع خيارات الدعم المتوفرة من المجتمعات المحلية المعنية ومشرفي المشاريع لوضع خطة.
تتحمل Microsoft مسؤولية بناء الحزم مفتوحة المصدر التي ننشرها على AKS. تتضمن هذه المسؤولية امتلاك ملكية كاملة لعملية البناء والمسح الضوئي والتوقيع والتحقق من الصحة وإصلاحها، بالإضافة إلى التحكم في الثنائيات في صور الحاوية. لمزيد من المعلومات، راجع إدارة الثغرات الأمنية لتغطية دعم AKSوAKS.
المتطلبات الأساسية
- تم نشر البنية التحتية بعد بنية النشر لبنية راي وكوي على نظام AKS.
- Kueue queues التي تم تهيئة Configure Kueue queues for Ray workloads على AKS.
- على الأقل بطاقة رسومات واحدة من نوع A100 متوفرة في العنقود.
- تم إكمال تدريب LLM بعد تدريب نموذج LLM مع Ray على AKS — حيث يجب أن يوجد محول LoRA في
llm-pipeline/lora/مخزن الكتل. -
envsubstتم تثبيت (gettextالحزمة على لينكس،brew install gettextعلى macOS).
تعيين متغيرات البيئة
انتقل إلى مثال الاستدلال الدفعي في المستودع المستنسخ وقم بتكوين المتغيرات الضرورية في البيئة:
cd <path-to-cloned-repo>/AKS/examples/kueue-and-ray-on-aks/3-workloads/batch-inference
export AZURE_STORAGE_ACCOUNT_NAME=$(terraform -chdir=../../1-infrastructure/terraform output -raw storage_account_name)
source env.example
Note
إذا قمت بتكوين طوابير الفرق (الخيار B)، قم بتعيين export QUEUE_NAME=team-a أو export QUEUE_NAME=team-b قبل تشغيل source env.example. الإعداد الافتراضي QUEUE_NAME=default يعمل فقط مع تكوين الطابور الواحد (الخيار A).
قدم عبء العمل
قدم استنتاج الدفعة RayJob:
./submit.sh
يقوم السكربت بإنشاء خريطة إعداد من سكريبت الاستدلال، ويعرض قالب البيان عبر envsubst، ويطبقه. يقوم Kueue بتنفيذ المهمة عندما تتوفر بطاقة رسومات واحدة في قائمة الانتظار المجهزة.
نصيحة
قم بتشغيل ./submit.sh --dry-run التحقق من صحة البيان المعروض دون تطبيقه على العنقود.
مراقبة التقدم
ابحث عن اسم الوظيفة وصدر إذا كنت في هيكل جديد:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep batch-inference)
شاهد حالة راي جوب وقبول كوي:
kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w
الإنتاج المتوقع عند اكتمال المهمة:
NAME JOB STATUS DEPLOYMENT STATUS START TIME END TIME AGE
batch-inference-xxxxxxxxxx SUCCEEDED Complete 2026-01-01T00:00:00Z 2026-01-01T00:09:00Z 9m
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE
rayjob-batch-inference-xxxxxxxxxx-xxxxx default cluster-queue True True 9m
تتبع سجلات العامل:
kubectl -n ray logs -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -f --tail=100
التحقق من النتائج
قائمة ملفات التنبؤ في تخزين الكتل:
az storage blob list -c llm-pipeline --prefix "inference/${JOB_NAME}/" \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
الإخراج المتوقع:
Name Blob Type Blob Tier Length Content Type
--------------------------------------------------- ----------- ----------- -------- ------------------------
inference/<job-name>/metrics.json BlockBlob Hot 128 application/octet-stream
inference/<job-name>/predictions.jsonl BlockBlob Hot 411777 application/octet-stream
قم بتحميل وفحص التوقعات:
az storage blob download -c llm-pipeline \
-n "inference/${JOB_NAME}/predictions.jsonl" \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login \
--file /tmp/predictions.jsonl
head -1 /tmp/predictions.jsonl | python3 -m json.tool
الإخراج المتوقع:
{
"input": "I'm wondering, have you played any games you found genuinely shocking?",
"expected": "request(specifier[shocking])",
"generated": "request_explanation"
}
مرجع التكوين
| المتغير | افتراضي | الوصف |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(مطلوب) | حساب التخزين من الوحدة 1 |
JOB_NAME |
batch-inference-<timestamp> |
اسم فريد لوظيفة راي |
QUEUE_NAME |
default |
اسم Kueue LocalQueue |
LLM_DATA_CONTAINER |
llm-pipeline |
حاوية blob مع بيانات اختبار viggo |
LLM_LORA_CONTAINER |
llm-pipeline |
حاوية Blob مع محولات LoRA |
CONFIGMAP_NAME |
batch-inference-scripts |
اسم خريطة التهيئة التي تحمل سكريبت الاستدلال |
تنظيف الموارد
حذف RayJob وخريطة الإعدادات الخاصة به:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}
لإزالة جميع البنية التحتية، انظر نشر البنية التحتية — تنظيف الموارد.