إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا الدرس، تقوم بنشر مولد صور مدعوم بنظام Stable Diffusion باستخدام وحدات معالجة رسومات بدون خادم في Azure Container Apps. يمكنك نشر هذا الحل إما كتطبيق Azure Functions أو كتطبيق حاوية قياسي، حسب احتياجاتك.
توفر وحدات معالجة الرسوميات بدون خادم وصولا عند الطلب إلى موارد الحوسبة الخاصة بوحدة معالجة الرسوميات دون الحاجة لإدارة البنية التحتية. تدفع فقط مقابل وقت بطاقة الرسوميات الذي تستخدمه، ويتدرج الحل تلقائيا إلى الصفر عند الخمول.
في هذا البرنامج التعليمي، تتعلم كيفية:
- إنشاء بيئة تطبيقات الحاويات مع ملفات تعريف عبء العمل الخاصة بوحدة معالجة الرسومات
- نشر واجهة برمجة تطبيقات توليد صور بالذكاء الاصطناعي باستخدام وحدات معالجة رسومات بدون خادم
- اختبر النشر باستخدام طلبات تحويل النص إلى صورة
- راقب استخدام وحدة معالجة الرسومات وتحسين الأداء
- تنظيف الموارد لتجنب التكاليف غير الضرورية
المتطلبات
| احتياج | وصف |
|---|---|
| اشتراك Azure | في حال لم يكن لديك اشتراك Azure، أنشئ حسابًا مجّانيًّا. |
| حصة وحدة معالجة الرسومات | اطلب الوصول إلى حصة GPU. عادة ما تستغرق الموافقة من يوم إلى يومين عمل. |
| Azure CLI | قم بتثبيت Azure CLI الإصدار 2.62.0 أو أحدث. |
| Azure Developer CLI | قم بتثبيت واجهة برمجة زر Azure Developer لنشر مبسط. |
| دوكر ديسكتوب | مطلوب لتطوير الحاويات المحلية. ثبت Docker Desktop. |
مهم
اطلب الوصول إلى حصة بطاقة الرسوميات قبل بدء هذا الدرس. يمكنك الاستمرار في القراءة أثناء انتظار الموافقة، لكن النشر يتطلب حصة معتمدة.
للتحقق من تثبيت أدواتك بشكل صحيح، قم بتشغيل الأوامر التالية:
az --version
azd version
docker --version
نظرة عامة على البنية
يستخدم هذا الحل خدمات Azure التالية:
| المكون | Purpose |
|---|---|
| تطبيقات حاوية Azure | تستضيف تطبيقك مع دعم GPU بدون خادم |
| ملف عبء عمل وحدة معالجة الرسومات | يوفر حساب NVIDIA T4 GPU للاستدلال بالذكاء الاصطناعي |
| سجل حاويات Azure | يخزن صورة الحاوية المخصصة الخاصة بك |
| تخزين Azure | مطلوب لوقت تشغيل وظائف Azure (نشر الوظائف فقط) |
| Application Insights | يوفر المراقبة والتشخيص |
يتبع التطبيق تدفق طلبات مباشر. عندما يرسل العميل طلبا، يصل أولا إلى نقطة نهاية مداخل تطبيقات الحاوية. بعد ذلك يعالج تطبيقك الطلب ويمرره إلى نموذج الانتشار المستقر الذي يعمل على وحدة معالجة الرسومات. يقوم النموذج بتوليد الصورة المطلوبة بناء على التوجيه ويعيد الصورة المولدة كرد على العميل.
اعتبارات التكلفة
تستخدم وحدات معالجة الرسوميات بدون خادم الفوترة في الثانية. راجع هذه عوامل التكلفة قبل النشر:
| العامل | Impact |
|---|---|
| نوع وحدة معالجة الرسوميات | تكلفة NVIDIA T4 أقل من A100 |
| الحد الأدنى من النسخ المتماثلة | التعيين على 0 للتطوير (يتدرج إلى صفر عند الخمول) |
| وقت الانطلاق البارد | يستغرق الطلب الأول دقيقة إلى دقيقتين (تحميل النموذج) |
| مدة الطلب | عادة ما يستغرق توليد الصور من 5 إلى 15 ثانية |
للحصول على تسعير تفصيلي، انظر Azure Container Apps preciing.
الحصول على التعليمات البرمجية للعينة
قم باستنساخ مستودع العينات الذي يحتوي على تنفيذ Azure Functions:
git clone https://github.com/Azure-Samples/function-on-aca-gpu.git
cd function-on-aca-gpu
يحتوي المستودع على:
| الملف | Purpose |
|---|---|
function_app.py |
دالة HTTP لتوليد الصور |
requirements.txt |
تبعيات بايثون بما في ذلك مكتبة الموزعات |
Dockerfile |
تعريف صورة الحاوية مع دعم وحدة معالجة الرسوميات |
host.json |
Azure Functions configuration |
azure.yaml |
Azure Developer CLI deployment configuration |
النشر باستخدام بوابة Azure
اتبع هذه الخطوات لإنشاء تطبيق حاوية يدعم بطاقة الرسومات ونشر حل توليد الصور باستخدام بوابة Azure.
إنشاء بيئة تطبيقات الحاويات باستخدام وحدة معالجة الرسوميات
في بوابة Azure، ابحث عن تطبيقات الحاويات واخترها.
حدد إنشاء>تطبيق حاوية.
في علامة التبويب Basics ، قم بتكوين الإعدادات التالية:
الإعداد القيمة الاشتراك حدد اشتراكك في Azure. مجموعة الموارد اختر إنشاء جديد وإدخال rg-gpu-image-genاسم تطبيق الحاوية أدخل ca-image-genمصدر النشر اختر صورة الحاوية المنطقة منتخب السويد سنترال تحت بيئة تطبيقات الحاوية، اختر إنشاء جديد.
في لوحة إنشاء تطبيقات الحاويات ، أدخل
cae-gpu-image-genاسم البيئة.حدد إنشاء لإنشاء البيئة.
حدد Next: Container >.
قم بتكوين الحاوية باستخدام بطاقة الرسوميات
في تبويب الحاوية ، قم بتكوين الإعدادات التالية:
الإعداد القيمة الاسم أدخل gpu-image-gen-containerمصدر الصورة حدد Docker Hub أو السجلات الأخرى نوع الصورة حدد Public خادم تسجيل الدخول إلى السجل أدخل mcr.microsoft.comالصورة والعلامة أدخل k8se/gpu-quickstart:latestملف عبء العمل اختيار الاستهلاك - حتى 4 معالجات افتراضية، ذاكرة 8 جيجابايت الجرافيك لتفعيل بطاقة الرسومات، اختر مربع الاختيار نوع وحدة معالجة الرسومات اختر Consumption-GPU-NC8as-T4 واختر الرابط لإضافة الملف الشخصي حدد Next: Ingress >.
تكوين الدخول
في تبويب Ingress ، قم بضبط الإعدادات التالية:
الإعداد القيمة Ingress حدد مُمَكّن. نسبة استخدام الشبكة للدخول اختر قبول حركة المرور من أي مكان المنفذ الهدف أدخل 80حدد "Review + create".
راجع إعداداتك واختر إنشاء (إنشاء).
انتظر حتى يكتمل النشر (حوالي 5 دقائق)، ثم اختر Go to resource.
تحقق من التوزيع
في صفحة نظرة عامة على تطبيق الحاوية، انسخ رابط التطبيق.
افتح رابط URL في المتصفح للوصول إلى واجهة توليد الصور.
Deploy with Azure CLI
يمكنك النشر باستخدام واجهة برمجة Azure Developer (الموصى بها لتطبيق Functions) أو Azure CLI (لمزيد من التحكم في الموارد الفردية).
الخيار أ: نشر كتطبيق Azure Functions مع azd
يوفر واجهة برمجة المطورين Azure أسرع تجربة نشر لتنفيذ Azure Functions.
التنقل إلى المستودع المستنسخ:
cd function-on-aca-gpuتهيئة ونشر التطبيق:
azd upعند الطلب، قدم القيم التالية:
مطالبة القيمة اسم البيئة أدخل اسما فريدا (على سبيل المثال، gpufunc-dev)موقع Azure تحديد swedencentralاشتراك Azure حدد اشتراكك تستغرق عملية النشر حوالي 15-20 دقيقة.
عند اكتمال النشر، لاحظ عنوان URL لنقطة النهاية المعروض في المخرج.
ينشئ الأمر azd up الموارد التالية:
| مورد | Purpose |
|---|---|
| مجموعة الموارد | حاوية لجميع الموارد |
| مجموعة الموارد | حاوية لجميع الموارد |
| بيئة Container Apps | يستضيف التطبيق مع ملف عبء عمل بطاقة الرسوميات |
| سجل الحاوية | يخزن صورة الحاوية المخصصة الخاصة بك |
| حساب التخزين | مطلوب لوقت تشغيل Azure Functions |
| Application Insights | المراقبة والتشخيص |
| تطبيق الدالة | واجهة برمجة تطبيقات توليد الصور |
الخيار ب: النشر كتطبيق حاوية باستخدام Azure CLI
للحصول على تحكم أكبر في النشر، استخدم Azure CLI لإنشاء كل مورد بشكل فردي.
حدد متغيرات البيئة:
RESOURCE_GROUP="rg-gpu-image-gen" ENVIRONMENT_NAME="cae-gpu-image-gen" LOCATION="swedencentral" CONTAINER_APP_NAME="ca-image-gen" CONTAINER_IMAGE="mcr.microsoft.com/k8se/gpu-quickstart:latest" WORKLOAD_PROFILE_NAME="NC8as-T4" WORKLOAD_PROFILE_TYPE="Consumption-GPU-NC8as-T4"يحدد هذا السكربت قيم التكوين المستخدمة طوال فترة النشر. يحدد تكوين
WORKLOAD_PROFILE_TYPEبطاقة NVIDIA T4.أنشئ مجموعة الموارد:
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState" \ --output tsvتقوم هذه الأوامر بإنشاء مجموعة موارد في مركز السويد، تدعم ملفات تعريف عبء عمل وحدات معالجة الرسوميات. يجب أن يظهر
Succeededالإخراج .إنشاء بيئة تطبيقات الحاويات:
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState" \ --output tsvهذا الأمر ينشئ البيئة المدارة التي تستضيف تطبيقات الحاويات الخاصة بك. يجب أن يظهر
Succeededالإخراج .أضف ملف عبء عمل وحدة معالجة الرسومات إلى بيئتك:
az containerapp env workload-profile add \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --workload-profile-name $WORKLOAD_PROFILE_NAME \ --workload-profile-type $WORKLOAD_PROFILE_TYPEهذا الأمر يضيف ملف عبء عمل وحدة معالجة رسومات NVIDIA T4 إلى بيئتك. يتيح الملف الشخصي حساب وحدة معالجة الرسومات للحاويات التي تتطلب ذلك.
أنشئ تطبيق الحاوية مع دعم GPU:
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_IMAGE \ --target-port 80 \ --ingress external \ --cpu 8.0 \ --memory 56.0Gi \ --workload-profile-name $WORKLOAD_PROFILE_NAME \ --query properties.configuration.ingress.fqdn \ --output tsvهذا الأمر ينشئ تطبيق الحاوية ويعينه إلى ملف تعريف عبء العمل الخاص بوحدة معالجة الرسوميات.
--cpuقيم و--memoryتطابق متطلبات ملف T4. يقوم الأمر بإخراج عنوان URL للتطبيق.انسخ رابط الإخراج للاختبار في القسم التالي.
اختبر واجهة برمجة تطبيقات توليد الصور
ملاحظة
يستغرق الطلب الأول دقيقة إلى دقيقتين أثناء تحميل النموذج (حوالي 5 جيجابايت) وتحميله إلى ذاكرة GPU. تكتمل الطلبات التالية خلال 5-15 ثانية.
تحقق من تشغيل التطبيق
افتح رابط التطبيق في المتصفح. يجب أن ترى واجهة توليد الصور.
توليد صورة باستخدام واجهة المستخدم
في حقل النص، أدخل طلبا مثل:
A friendly robot chef cooking pasta in a cozy kitchen, digital art styleاختر إنشاء صورة.
انتظر حتى تظهر الصورة. الجيل الأول يستغرق وقتا أطول بسبب تحميل النموذج.
إنشاء صورة باستخدام واجهة برمجة التطبيقات (نشر الوظائف)
إذا قمت بنشر نسخة Azure Functions، يمكنك استدعاء واجهة برمجة التطبيقات مباشرة:
curl -X POST "https://<YOUR-FUNCTION-URL>/api/generate" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A friendly robot chef cooking pasta in a cozy kitchen",
"num_steps": 25
}'
استبدل <YOUR-FUNCTION-URL> بعنوان URL الفعلي لتطبيق الوظائف. المعامل يتحكم num_steps في جودة الصورة (القيم الأعلى تعطي نتائج أفضل لكنها تستغرق وقتا أطول).
صيغة الرد المتوقعة:
{
"success": true,
"image": "iVBORw0KGgoAAAANSUhEUgAA...(base64 PNG data)..."
}
تحتوي الاستجابة على صورة PNG مشفرة في base64 يمكنك فك ترميزها وحفظها.
مراقبة استخدام وحدة معالجة الرسومات
تساعدك المراقبة على فهم استخدام وحدة معالجة الرسومات وتحسين التكاليف.
عرض حالة بطاقة الرسوميات في الجهاز
في مدخل Microsoft Azure، انتقل إلى تطبيق الحاوية الخاص بك.
تحت المراقبة، اختر وحدة التحكم.
اختر النسخة المقلدة والحاوية.
اختر إعادة الاتصال، ثم اختر /bin/bash كأمر بدء التشغيل.
شغل الأمر التالي لعرض حالة وحدة معالجة الرسومات:
nvidia-smiيظهر المخرج استخدام ذاكرة GPU، ونسبة الاستخدام، والعمليات الجارية.
View metrics in Azure Monitor
في مدخل Microsoft Azure، انتقل إلى تطبيق الحاوية الخاص بك.
ضمن Monitoring، حدد Metrics.
أضف مقاييس ل:
- استخدام وحدة المعالجة المركزية
- استخدام الذاكرة
- عدد النسخ المتماثلة
للحصول على خيارات الملاحظة التفصيلية، راجع Monitor Azure Container Apps.
تحسين أداء التشغيل البارد
لتقليل وقت التشغيل البارد لأعباء العمل الإنتاجية:
تفعيل بث القطع الأثرية لتسريع سحب صور الحاويات.
اضبط الحد الأدنى للنسخ على 1 للحفاظ على دفء النسخة:
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --min-replicas 1هذا الأمر يحافظ على تشغيل نسخة واحدة دائما، مما يلغي تأخيرات التشغيل البارد لكنه يتحمل تكاليف مستمرة.
لمزيد من تقنيات التحسين، راجع تحسين التشغيل البارد لوحدات معالجة الرسومات بدون خادم.
استكشاف الأخطاء وإصلاحها
| مشكلة | السبب | حل |
|---|---|---|
| خطأ "تجاوز حصة GPU" | لا توجد حصة معتمدة لوحدة معالجة الرسوميات | اطلب حصة بطاقة الرسوميات وانتظر الموافقة |
| الحاوية تفشل في التشغيل | مهلة سحب الصورة | تفعيل بث القطع الأثرية أو استخدم صورة قاعدة أصغر |
| ينتهي انتهاء صلاحية الطلب الأول | تحميل النماذج جار | انتظر من 2 إلى 3 دقائق وحاول مرة أخرى. هذا التأخير القصير هو سلوك متوقع. |
| خطأ "CUDA خارج الذاكرة" | النموذج يتجاوز ذاكرة وحدة معالجة الرسوميات | تقليل حجم الدفعة أو استخدام نسخة أصغر من الطراز |
| 502 بوابة غير صالحة | الحاوية غير جاهزة | تحقق من سجلات الحاويات؛ تأكد من تكوين مجسات الصحة |
| توليد الصور البطيء | خطوات الاستدلال غير الكافية | زيادة num_steps المعلمة (قيم أعلى = جودة أفضل، أبطأ) |
لعرض سجلات الحاويات للتصحيح:
az containerapp logs show \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--follow
يقوم هذا الأمر ببث سجلات فورية من الحاوية، مما يساعدك على تحديد مشاكل بدء التشغيل أو أخطاء وقت التشغيل.
تنظيف الموارد
عندما تنتهي من الموارد، قم بحذفها لتجنب الرسوم المستمرة.
في مدخل Azure، ابحث عن "Resource groups".
اختر مجموعة الموارد التي أنشأتها (على سبيل المثال،
rg-gpu-image-gen).حدد Delete resource group.
لتأكيد الحذف، أدخل اسم مجموعة الموارد.
حدد حذف.
إذا قمت بالنشر باستخدام Azure Developer CLI:
azd down
إذا قمت بالنشر باستخدام Azure CLI:
az group delete --name $RESOURCE_GROUP --yes --no-wait
يعود العلم --no-wait فورا بينما يستمر الحذف في الخلفية.