نشر نموذج الذكاء الاصطناعي على خدمة Azure Kubernetes (AKS) باستخدام عامل تشغيل سلسلة الأدوات الذكاء الاصطناعي (معاينة)

عامل تشغيل سلسلة الأدوات الذكاء الاصطناعي (KAITO) هو وظيفة إضافية مدارة ل AKS تبسط تجربة تشغيل نماذج الذكاء الاصطناعي OSS على مجموعات AKS الخاصة بك. يقوم عامل تشغيل سلسلة الأدوات الذكاء الاصطناعي تلقائيا بتوفير عقد GPU الضرورية وإعداد خادم الاستدلال المقترن كخادم نقطة نهاية لنماذج الذكاء الاصطناعي. يؤدي استخدام هذه الوظيفة الإضافية إلى تقليل وقت الإعداد الخاص بك ويتيح لك التركيز على الذكاء الاصطناعي استخدام النموذج وتطويره بدلا من إعداد البنية الأساسية.

توضح هذه المقالة كيفية تمكين الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي ونشر نموذج الذكاء الاصطناعي على AKS.

هام

تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:

قبل البدء

  • تفترض هذه المقالة مفاهيم أساسية من مفاهيم Kubernetes. لمزيد من المعلومات، راجع مفاهيم Kubernetes الأساسية ل AKS.
  • لجميع صور استدلال النموذج المستضاف وإعداد البنية الأساسية الموصى بها، راجع مستودع KAITO GitHub.
  • تدعم الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي حاليا إصدار KAITO v0.1.0، يرجى تدوين ملاحظة عن ذلك في النظر في اختيارك للنموذج من مستودع نموذج KAITO.

المتطلبات الأساسية

  • في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

    • إذا كان لديك العديد من اشتراكات Azure، فتأكد من تحديد الاشتراك الصحيح الذي سيتم فيه إنشاء الموارد وشحنها باستخدام الأمر az account set .

      إشعار

      يجب أن يكون للاشتراك الذي تستخدمه حصة GPU VM.

  • تم تثبيت الإصدار 2.47.0 من Azure CLI أو إصدار أحدث وتكوينه. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

  • عميل سطر أوامر Kubernetes، kubectl، مثبت ومكون. لمزيد من المعلومات، راجع تثبيت kubectl.

  • تثبيت ملحق معاينة Azure CLI AKS.

  • سجل علامة ميزة الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي.

تثبيت ملحق معاينة Azure CLI

  1. قم بتثبيت ملحق معاينة Azure CLI باستخدام الأمر az extension add .

    az extension add --name aks-preview
    
  2. قم بتحديث الملحق للتأكد من أن لديك أحدث إصدار باستخدام الأمر az extension update .

    az extension update --name aks-preview
    

تسجيل علامة ميزة الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي

  1. سجل علامة ميزة AIToolchainOperatorPreview باستخدام الأمر az feature register .

    az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

    يستغرق التسجيل بضع دقائق حتى يكتمل.

  2. تحقق من التسجيل باستخدام الأمر az feature show .

    az feature show --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

تصدير متغيرات البيئة

  • لتبسيط خطوات التكوين في هذه المقالة، يمكنك تعريف متغيرات البيئة باستخدام الأوامر التالية. تأكد من استبدال قيم العنصر النائب بقيمك الخاصة.

    export AZURE_SUBSCRIPTION_ID="mySubscriptionID"
    export AZURE_RESOURCE_GROUP="myResourceGroup"
    export AZURE_LOCATION="myLocation"
    export CLUSTER_NAME="myClusterName"
    

تمكين الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي على نظام مجموعة AKS

تصف الأقسام التالية كيفية إنشاء نظام مجموعة AKS مع تمكين الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي ونشر نموذج الذكاء الاصطناعي مستضاف افتراضي.

إنشاء نظام مجموعة AKS مع تمكين الوظيفة الإضافية لعامل تشغيل سلسلة الأدوات الذكاء الاصطناعي

  1. إنشاء مجموعة موارد Azure باستخدام الأمر az group create .

    az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
    
  2. قم بإنشاء نظام مجموعة AKS مع تمكين الوظيفة الإضافية لعامل تشغيل سلسلة الأدوات الذكاء الاصطناعي باستخدام الأمر az aks create مع --enable-ai-toolchain-operator علامات و --enable-oidc-issuer .

    az aks create --location ${AZURE_LOCATION} \
        --resource-group ${AZURE_RESOURCE_GROUP} \
        --name ${CLUSTER_NAME} \
        --enable-oidc-issuer \
        --enable-ai-toolchain-operator
    

    إشعار

    تنشئ AKS هوية مدارة بمجرد تمكين الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي. يتم استخدام الهوية المدارة لإنشاء تجمعات عقدة GPU في مجموعة AKS المدارة. يجب تعيين الأذونات المناسبة له يدويا باتباع الخطوات المقدمة في الأقسام التالية.

    يتطلب تمكين عامل تشغيل سلسلة الأدوات الذكاء الاصطناعي تمكين مصدر OIDC.

  3. في نظام مجموعة AKS موجود، يمكنك تمكين الوظيفة الإضافية لمشغل سلسلة الأدوات الذكاء الاصطناعي باستخدام الأمر az aks update .

    az aks update --name ${CLUSTER_NAME} \
            --resource-group ${AZURE_RESOURCE_GROUP} \
            --enable-oidc-issuer \
            --enable-ai-toolchain-operator
    

تواصل مع مجموعتك

  1. قم بتكوين kubectl للاتصال بالمجموعة باستخدام الأمر az aks get-credentials .

    az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
    
  2. تحقق من الاتصال بالمجموعة باستخدام kubectl get الأمر .

    kubectl get nodes
    

تصدير متغيرات البيئة

  • تصدير متغيرات البيئة لمجموعة موارد MC وهوية المعرف الأساسي وهوية KAITO باستخدام الأوامر التالية:

    export MC_RESOURCE_GROUP=$(az aks show --resource-group ${AZURE_RESOURCE_GROUP} \
        --name ${CLUSTER_NAME} \
        --query nodeResourceGroup \
        -o tsv)
    export PRINCIPAL_ID=$(az identity show --name "ai-toolchain-operator-${CLUSTER_NAME}" \
        --resource-group "${MC_RESOURCE_GROUP}" \
        --query 'principalId' \
        -o tsv)
    export KAITO_IDENTITY_NAME="ai-toolchain-operator-${CLUSTER_NAME}"
    

الحصول على مصدر الاتصال AKS OpenID (OIDC)

  • احصل على عنوان URL لمصدر AKS OIDC وقم بتصديره كمتغير بيئة:

    export AKS_OIDC_ISSUER=$(az aks show --resource-group "${AZURE_RESOURCE_GROUP}" \
        --name "${CLUSTER_NAME}" \
        --query "oidcIssuerProfile.issuerUrl" \
        -o tsv)
    

إنشاء تعيين دور لمدير الخدمة

  • إنشاء تعيين دور جديد لمدير الخدمة باستخدام الأمر az role assignment create .

    az role assignment create --role "Contributor" \
        --assignee "${PRINCIPAL_ID}" \
        --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourcegroups/${AZURE_RESOURCE_GROUP}"
    

إنشاء بيانات اعتماد هوية موحدة

  • إنشاء بيانات اعتماد الهوية الموحدة بين الهوية المدارة ومصدر AKS OIDC والموضوع باستخدام الأمر az identity federated-credential create .

    az identity federated-credential create --name "kaito-federated-identity" \
        --identity-name "${KAITO_IDENTITY_NAME}" \
        -g "${MC_RESOURCE_GROUP}" \
        --issuer "${AKS_OIDC_ISSUER}" \
        --subject system:serviceaccount:"kube-system:kaito-gpu-provisioner" \
        --audience api://AzureADTokenExchange
    

تحقق من أن التوزيع قيد التشغيل

  1. أعد تشغيل نشر توفير KAITO GPU على pods باستخدام kubectl rollout restart الأمر :

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. تحقق من أن النشر قيد التشغيل باستخدام kubectl get الأمر :

    kubectl get deployment -n kube-system | grep kaito
    

توزيع نموذج الذكاء الاصطناعي مستضاف افتراضي

  1. انشر نموذج Falcon 7B-instruct من مستودع نموذج KAITO باستخدام kubectl apply الأمر .

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. تعقب تغييرات الموارد المباشرة في مساحة العمل باستخدام kubectl get الأمر .

    kubectl get workspace workspace-falcon-7b-instruct -w
    

    إشعار

    أثناء تعقب تغييرات الموارد المباشرة في مساحة العمل الخاصة بك، لاحظ أن استعداد الجهاز قد يستغرق ما يصل إلى 10 دقائق، واستعداد مساحة العمل حتى 20 دقيقة.

  3. تحقق من الخدمة والحصول على عنوان IP للخدمة kubectl get svc باستخدام الأمر .

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. قم بتشغيل نموذج Falcon 7B-instruct مع إدخال عينة من اختيارك باستخدام الأمر التالي curl :

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/chat -H "accept: application/json" -H "Content-Type: application/json" -d "{\"prompt\":\"YOUR QUESTION HERE\"}"
    

تنظيف الموارد

إذا لم تعد بحاجة إلى هذه الموارد، يمكنك حذفها لتجنب تكبد رسوم Azure إضافية.

  • احذف مجموعة الموارد والموارد المقترنة بها باستخدام الأمر az group delete .

    az group delete --name "${AZURE_RESOURCE_GROUP}" --yes --no-wait
    

الخطوات التالية

لمزيد من خيارات نموذج الاستدلال، راجع مستودع KAITO GitHub.