إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا المقال، تقدم RayJob الذي يضبط Qwen2.5-7B-Instruct على مجموعة بيانات viggo NLG باستخدام LLaMA-Factory وRay Train الموزع. تستخدم المهمة أربعة عمال مع بطاقة رسومات واحدة لكل منهم، وتقرأ بيانات التدريب من مساحة تخزين Azure Blob، وترفع محول LoRA المدرب للاستنتاج في المراحل النهائية.
هام
يتم ذكر البرامج مفتوحة المصدر في جميع وثائق وعينات AKS. يتم استبعاد البرامج التي تنشرها من اتفاقيات مستوى خدمة AKS والضمان المحدود ودعم Azure. أثناء استخدامك للتكنولوجيا مفتوحة المصدر جنبا إلى جنب مع AKS، راجع خيارات الدعم المتوفرة من المجتمعات المحلية المعنية ومشرفي المشاريع لوضع خطة.
تتحمل Microsoft مسؤولية بناء الحزم مفتوحة المصدر التي ننشرها على AKS. تتضمن هذه المسؤولية امتلاك ملكية كاملة لعملية البناء والمسح الضوئي والتوقيع والتحقق من الصحة وإصلاحها، بالإضافة إلى التحكم في الثنائيات في صور الحاوية. لمزيد من المعلومات، راجع إدارة الثغرات الأمنية لتغطية دعم AKSوAKS.
المتطلبات الأساسية
- تم نشر البنية التحتية بعد بنية النشر لبنية راي وكوي على نظام AKS.
- Kueue queues التي تم تهيئة Configure Kueue queues for Ray workloads على AKS.
- تتوفر على الأقل أربع وحدات معالجة رسومات A100 في المجموعة (يستخدم هذا المثال أربعة عمال لكل وحدة معالجة رسومات واحدة).
- يتم رفع مجموعة بيانات Viggo إلى تخزين blob في
llm-pipeline/data/(يتم ذلك تلقائيا بواسطة وحدة Terraform في البنية التحتية). -
envsubstتم تثبيت (gettextالحزمة على لينكس،brew install gettextعلى macOS).
تعيين متغيرات البيئة
انتقل إلى مثال تدريب نموذج اللغة الكبيرة في المستودع المستنسخ وقم بتكوين المتغيرات الضرورية في البيئة:
cd <path-to-cloned-repo>/AKS/examples/kueue-and-ray-on-aks/3-workloads/llm-training
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، ويطبقه. يعترف Kuuee بالمهمة عندما تتوفر أربع وحدات معالجة رسومات في قائمة الانتظار المكونة.
نصيحة
قم بتشغيل ./submit.sh --dry-run التحقق من صحة البيان المعروض دون تطبيقه على العنقود.
مراقبة التقدم
ابحث عن اسم الوظيفة وصدر إذا كنت في هيكل جديد:
export JOB_NAME=$(kubectl -n ray get rayjob --no-headers -o custom-columns=":metadata.name" | grep llm-training)
شاهد حالة راي جوب وقبول كوي:
kubectl -n ray get rayjob ${JOB_NAME} -w
kubectl -n ray get workload -w
الإنتاج المتوقع عند اكتمال المهمة:
NAME JOB STATUS DEPLOYMENT STATUS START TIME END TIME AGE
llm-training-xxxxxxxxxx SUCCEEDED Complete 2026-01-01T00:00:00Z 2026-01-01T00:19:00Z 19m
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE
rayjob-llm-training-xxxxxxxxxx-xxxxx default cluster-queue True True 19m
تتبع جذوع رأس الكبسولة:
kubectl -n ray logs -f -l ray.io/cluster=$(kubectl -n ray get rayjob ${JOB_NAME} -o jsonpath='{.status.rayClusterName}') -c ray-head
التحقق من النتائج
تحقق من تحميل محول LoRA:
az storage blob list -c llm-pipeline --prefix lora/ \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login -o table
الإخراج المتوقع:
Name Blob Type Blob Tier Length Content Type
----------------------------------------- ----------- ----------- -------- ------------------------
lora/latest.txt BlockBlob Hot 86 application/octet-stream
lora/<job-name>/rng_state_3.pth BlockBlob Hot 14725 application/octet-stream
تحقق من كتابة latest.txt المؤشر (يستخدم في مثال الاستدلال الدفعي للاكتشاف التلقائي):
az storage blob download -c llm-pipeline -n lora/latest.txt \
--account-name ${AZURE_STORAGE_ACCOUNT_NAME} --auth-mode login
الإخراج المتوقع:
azure://llm-pipeline@<storage-account>.blob.core.windows.net/lora/<job-name>
مرجع التكوين
| المتغير | افتراضي | الوصف |
|---|---|---|
AZURE_STORAGE_ACCOUNT_NAME |
(مطلوب) | حساب التخزين من الوحدة 1 |
NUM_WORKERS |
4 |
نسخ عامل GPU (4 × 1 GPU لكل واحد) |
QUEUE_NAME |
default |
اسم Kueue LocalQueue |
LLM_DATA_CONTAINER |
llm-pipeline |
حاوية Blob لبيانات الإدخال |
LLM_LORA_CONTAINER |
llm-pipeline |
حاوية Blob لرفع LoRA |
CONFIGMAP_NAME |
llm-training-scripts |
اسم لخريطة التهيئة التي تحمل سكريبت التدريب |
تنظيف الموارد
حذف RayJob وخريطة الإعدادات الخاصة به:
kubectl -n ray delete rayjob ${JOB_NAME}
kubectl -n ray delete configmap ${CONFIGMAP_NAME}