استخدام الهويات المدارة مع التعلم الآلي من Microsoft Azure

تسمح لك الهويات المدارة بتكوين مساحة العمل الخاصة بك مع الحد الأدنى من الأذونات المطلوبة للوصول إلى الموارد.

عند تكوين مساحة عمل Azure التعلم الآلي بطريقة جديرة بالثقة، من المهم التأكد من أن الخدمات المختلفة المقترنة بمساحة العمل تتمتع بالمستوى الصحيح من الوصول. على سبيل المثال، أثناء سير عمل التعلم الآلي، تحتاج مساحة العمل إلى الوصول إلى سجل حاويات Azure (ACR) لصور Docker، وحسابات التخزين لبيانات التدريب.

علاوة على ذلك، تسمح الهويات المدارة بالتحكم الدقيق في الأذونات، على سبيل المثال، يمكنك منح أو إبطال الوصول من موارد حوسبة محددة إلى ACR معين.

في هذه المقالة، ستتعرف على كيفية استخدام الهويات المدارة من أجل:

  • قم بتكوين ACR واستخدامه لمساحة عمل Azure التعلم الآلي دون الحاجة إلى تمكين وصول المستخدم المسؤول إلى ACR.
  • يمكنك الوصول إلى ACR خاص خارج مساحة العمل الخاصة بك ، لسحب الصور الأساسية للتدريب أو الاستدلال.
  • إنشاء مساحة عمل باستخدام الهوية المدارة المعينة من قبل المستخدم للوصول إلى الموارد المقترنة.

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

تكوين الهويات المدارة

في بعض الحالات، من الضروري عدم السماح لمستخدم المسؤول بالوصول إلى سجل حاويات Azure. على سبيل المثال، قد تتم مشاركة ACR وتحتاج إلى عدم السماح للمستخدمين الآخرين بوصول المشرف. أو إنشاء ACR مع تمكين المستخدم المسؤول غير مسموح به من خلال سياسة مستوى الاشتراك.

هام

عند استخدام Azure التعلم الآلي للاستدلال على مثيل حاوية Azure (ACI)، يلزم وصول المستخدم المسؤول على ACR. لا تقم بتعطيله إذا كنت تخطط لنشر نماذج إلى ACI للاستدلال.

عند إنشاء ACR دون تمكين وصول المستخدم المسؤول، يتم استخدام الهويات المدارة للوصول إلى ACR لإنشاء صور Docker وسحبها.

يمكنك إحضار ACR الخاص بك مع تعطيل مستخدم المسؤول عند إنشاء مساحة العمل. بدلا من ذلك، اسمح ل Azure التعلم الآلي بإنشاء مساحة عمل ACR وتعطيل المستخدم المسؤول بعد ذلك.

أحضر ACR الخاص بك

إذا كان مستخدم مسؤول ACR غير مسموح به بواسطة سياسة الاشتراك، فيجب عليك أولا إنشاء ACR بدون مستخدم مسؤول، ثم إقرانه بمساحة العمل. أيضا، إذا كان لديك ACR موجود مع تعطيل المستخدم المسؤول، يمكنك إرفاقه بمساحة العمل.

قم بإنشاء ACR من Azure CLI بدون وسيطة إعداد --admin-enabled ، أو من مدخل Azure دون تمكين المستخدم المسؤول. ثم، عند إنشاء مساحة عمل Azure التعلم الآلي، حدد معرف مورد Azure الخاص ب ACR. يوضح المثال التالي إنشاء مساحة عمل Azure ML جديدة تستخدم ACR موجودا:

تلميح

للحصول على قيمة المعلمة --container-registry ، استخدم الأمر az acr show لإظهار معلومات ACR الخاص بك. يحتوي الحقل id على معرف المورد الخاص ب ACR الخاص بك.

APPLY TO: Azure CLI ml extensionع1 v2 (معاينة)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

دع Azure التعلم الآلي الخدمة بإنشاء مساحة عمل ACR

إذا لم تقم بإحضار ACR الخاص بك، فستقوم خدمة Azure التعلم الآلي بإنشاء خدمة لك عند تنفيذ عملية تحتاج إلى واحدة. على سبيل المثال، إرسال تشغيل تدريب إلى التعلم الآلي الحوسبة أو إنشاء بيئة أو نشر نقطة نهاية خدمة ويب. سيتم تمكين مستخدم المسؤول في ACR الذي تم إنشاؤه بواسطة مساحة العمل، وستحتاج إلى تعطيل المستخدم المسؤول يدويا.

APPLY TO: Azure CLI ml extensionع1 v2 (معاينة)

  1. إنشاء مساحة عمل جديدة

    az ml workspace show -n <my workspace> -g <my resource group>
    
  2. تنفيذ إجراء يتطلب ACR. على سبيل المثال ، البرنامج التعليمي حول تدريب نموذج.

  3. احصل على اسم ACR الذي تم إنشاؤه بواسطة المجموعة:

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    يرجع هذا الأمر قيمة مشابهة للنص التالي. تريد فقط الجزء الأخير من النص، وهو اسم مثيل ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. قم بتحديث ACR لتعطيل المستخدم المسؤول:

    az acr update --name <ACR instance name> --admin-enabled false
    

إنشاء حوسبة بهوية مدارة للوصول إلى صور Docker للتدريب

للوصول إلى مساحة العمل ACR، قم بإنشاء مجموعة حوسبة التعلم الآلي مع تمكين الهوية المدارة المعينة من قبل النظام. يمكنك تمكين الهوية من مدخل Azure أو Studio عند إنشاء حوسبة، أو من Azure CLI باستخدام ما يلي. لمزيد من المعلومات، راجع استخدام الهوية المدارة مع مجموعات الحوسبة.

عند إنشاء مجموعة حوسبة باستخدام AmlComputeProvisioningConfiguration، استخدم المعلمة identity_type لتعيين نوع الهوية المدارة.

يتم منح الهوية المدارة تلقائيا دور ACRPull على مساحة العمل ACR لتمكين سحب صور Docker للتدريب.

ملاحظة

إذا قمت بإنشاء حساب أولا، قبل إنشاء مساحة عمل ACR، يجب عليك تعيين دور ACRPull يدويا.

الوصول إلى الصور الأساسية من ACR الخاص

بشكل افتراضي، يستخدم Azure التعلم الآلي الصور الأساسية ل Docker التي تأتي من مستودع عام تديره Microsoft. ثم يبني بيئة التدريب أو الاستدلال الخاصة بك على تلك الصور. لمزيد من المعلومات، راجع ما هي بيئات التعلم الآلي؟.

لاستخدام صورة أساسية مخصصة داخلية لمؤسستك، يمكنك استخدام الهويات المدارة للوصول إلى ACR الخاص بك. هناك حالتان للاستخدام:

  • استخدم الصورة الأساسية للتدريب كما هي.
  • قم بإنشاء Azure التعلم الآلي صورة مدارة مع صورة مخصصة كقاعدة.

اسحب صورة قاعدة Docker إلى مجموعة حوسبة التعلم الآلي للتدريب كما هي

قم بإنشاء مجموعة حوسبة للتعلم الآلي مع تمكين الهوية المدارة المعينة من قبل النظام كما هو موضح سابقا. ثم حدد المعرف الرئيسي للهوية المدارة.

APPLY TO: Azure CLI ml extensionع1 v2 (معاينة)

az ml computetarget amlcompute identity show --name <cluster name> -w <workspace> -g <resource group>

اختياريا، يمكنك تحديث مجموعة الحوسبة لتعيين هوية مدارة معينة من قبل المستخدم:

az ml computetarget amlcompute identity assign --name cpucluster \
-w $mlws -g $mlrg --identities <my-identity-id>

للسماح لمجموعة الحوسبة بسحب الصور الأساسية، امنح هوية الخدمة المدارة دور ACRPull على ACR الخاص

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

وأخيرا، عند إرسال تشغيل تدريبي، حدد موقع الصورة الأساسية في تعريف البيئة.

from azureml.core import Environment
env = Environment(name="private-acr")
env.docker.base_image = "<ACR name>.azurecr.io/<base image repository>/<base image version>"
env.python.user_managed_dependencies = True

هام

للتأكد من سحب الصورة الأساسية مباشرة إلى مورد الحوسبة، قم بتعيين user_managed_dependencies = True ملف Dockerfile وعدم تحديده. وإلا ستحاول خدمة Azure التعلم الآلي إنشاء صورة Docker جديدة وتفشل، لأن مجموعة الحوسبة فقط هي التي يمكنها الوصول إلى سحب الصورة الأساسية من ACR.

إنشاء بيئة مدارة التعلم الآلي Azure في صورة أساسية من ACR الخاص للتدريب أو الاستدلال

APPLY TO: Azure CLI ml extensionع1 v2 (معاينة)

في هذا السيناريو، تقوم خدمة Azure التعلم الآلي بإنشاء بيئة التدريب أو الاستدلال أعلى صورة أساسية تقوم بتوفيرها من ACR خاص. نظرا لأن مهمة إنشاء الصورة تحدث على مساحة العمل ACR باستخدام مهام ACR، يجب تنفيذ المزيد من الخطوات للسماح بالوصول.

  1. قم بإنشاء هوية مدارة معينة من قبل المستخدم وامنح ACRPull الهوية حق الوصول إلى ACR الخاص.

  2. منح الهوية المدارة المعينة من قبل نظام مساحة العمل دور مشغل الهوية المدارة على الهوية المدارة المعينة من قبل المستخدممن الخطوة السابقة. يسمح هذا الدور لمساحة العمل بتعيين الهوية المدارة المعينة من قبل المستخدم إلى ACR Task لإنشاء البيئة المدارة.

    1. الحصول على المعرف الرئيسي للهوية المدارة المعينة لنظام مساحة العمل:

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. منح دور مشغل الهوية المدارة:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      معرف مورد الهوية المدارة المعين من قبل المستخدم هو معرف مورد Azure للهوية المعينة للمستخدم، بالتنسيق /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. حدد ACR الخارجي ومعرف العميل للهوية المدارة المعينة من قبل المستخدم في اتصالات مساحة العمل باستخدام الطريقة Workspace.set_connection:

    workspace.set_connection(
        name="privateAcr", 
        category="ACR", 
        target = "<acr url>", 
        authType = "RegistryConnection", 
        value={"ResourceId": "<user-assigned managed identity resource id>", "ClientId": "<user-assigned managed identity client ID>"})
    

بمجرد اكتمال التكوين ، يمكنك استخدام الصور الأساسية من ACR الخاص عند إنشاء بيئات للتدريب أو الاستدلال. يوضح مقتطف التعليمات البرمجية التالي كيفية تحديد الصورة الأساسية ACR واسم الصورة في تعريف بيئة:

from azureml.core import Environment

env = Environment(name="my-env")
env.docker.base_image = "<acr url>/my-repo/my-image:latest"

اختياريا، يمكنك تحديد عنوان URL لمورد الهوية المدارة ومعرف العميل في تعريف البيئة نفسه باستخدام RegistryIdentity. إذا كنت تستخدم هوية التسجيل بشكل صريح، فإنه يتجاوز أي اتصالات مساحة عمل محددة سابقا:

from azureml.core.container_registry import RegistryIdentity

identity = RegistryIdentity()
identity.resource_id= "<user-assigned managed identity resource ID>"
identity.client_id="<user-assigned managed identity client ID>"
env.docker.base_image_registry.registry_identity=identity
env.docker.base_image = "my-acr.azurecr.io/my-repo/my-image:latest"

استخدام صور Docker للاستدلال

بمجرد تكوين ACR بدون مستخدم مسؤول كما هو موضح سابقا، يمكنك الوصول إلى صور Docker للاستدلال بدون مفاتيح المسؤول من خدمة Azure Kubernetes (AKS). عند إنشاء AKS أو إرفاقه بمساحة العمل، يتم تعيين أصل خدمة المجموعة تلقائيا للوصول إلى ACRPull إلى ACR مساحة العمل.

ملاحظة

إذا أحضرت مجموعة AKS الخاصة بك، فيجب أن يكون لدى المجموعة أصل خدمة ممكن بدلا من الهوية المدارة.

إنشاء مساحة عمل باستخدام الهوية المدارة المعينة من قبل المستخدم

عند إنشاء مساحة عمل، يمكنك إحضار هويتك المدارة المعينة من قبل المستخدم والتي سيتم استخدامها للوصول إلى الموارد المقترنة: ACR وKeyVault والتخزين Insights التطبيقات.

هام

عند إنشاء مساحة عمل بهوية مدارة معينة من قبل المستخدم، يجب عليك إنشاء الموارد المقترنة بنفسك، ومنح أدوار الهوية المدارة على هذه الموارد. استخدم قالب ARM لتعيين الدور لإجراء المهام.

استخدم Azure CLI أو Python SDK لإنشاء مساحة العمل. عند استخدام CLI، حدد المعرف باستخدام المعلمة --primary-user-assigned-identity . عند استخدام SDK، استخدم primary_user_assigned_identity. فيما يلي أمثلة على استخدام Azure CLI وPython لإنشاء مساحة عمل جديدة باستخدام هذه المعلمات:

Azure CLI

APPLY TO: Azure CLI ml extensionع1 v2 (معاينة)

az ml workspace create -w <workspace name> -g <resource group> --primary-user-assigned-identity <managed identity ARM ID>

Python

from azureml.core import Workspace

ws = Workspace.create(name="workspace name", 
    subscription_id="subscription id", 
    resource_group="resource group name",
    primary_user_assigned_identity="managed identity ARM ID")

يمكنك أيضا استخدام قالب ARM لإنشاء مساحة عمل بهوية مدارة معينة من قبل المستخدم.

بالنسبة إلى مساحة عمل مزودة بمفاتيح مدارة من قبل العميل للتشفير، يمكنك تمرير هوية مدارة معينة من قبل المستخدم للمصادقة من التخزين إلى Key Vault. استخدم وسيطة الهوية المعينة من قبل المستخدم لتشفير cmk (CLI) أو user_assigned_identity_for_cmk_encryption (SDK) لتمرير الهوية المدارة. يمكن أن تكون هذه الهوية المدارة هي نفسها أو مختلفة مثل الهوية المدارة المعينة للمستخدم الأساسي لمساحة العمل.

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