Create a Azure التعلم الآلي compute cluster

تعرف على كيفية إنشاء مجموعة حوسبة وإدارتها في مساحة عمل Azure التعلم الآلي.

يمكنك استخدام Azure التعلم الآلي مجموعة الحوسبة لتوزيع عملية تدريب أو استدلال دفعي عبر مجموعة من عقد حوسبة وحدة المعالجة المركزية أو وحدة معالجة الرسومات في السحابة. لمزيد من المعلومات حول أحجام الأجهزة الظاهرية التي تتضمن وحدات معالجة الرسومات، راجع أحجام الأجهزة الظاهرية المحسنة لوحدة معالجة الرسومات.

في هذا المقال، تعرف على كيفية:

  • إنشاء نظام مجموعة حساب
  • خفض تكلفة مجموعة الحوسبة
  • إعداد هوية مدارة لنظام المجموعة

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

ما هي مجموعة الحوسبة؟

Azure التعلم الآلي compute cluster عبارة عن بنية تحتية مدارة تسمح لك بإنشاء حساب أحادي أو متعدد العقد بسهولة. مجموعة الحوسبة هي مورد يمكن مشاركته مع مستخدمين آخرين في مساحة العمل الخاصة بك. يتم توسيع نطاق الحوسبة تلقائيا عند إرسال مهمة، ويمكن وضعها في شبكة Azure الظاهرية. لا تدعم مجموعة الحوسبة أي نشر IP (معاينة) عام أيضا في الشبكة الظاهرية. يتم تنفيذ الحوسبة في بيئة حاوية وحزم تبعيات النموذج الخاص بك في حاوية Docker.

يمكن لمجموعات الحوسبة تشغيل المهام بأمان في بيئة شبكة افتراضية، دون مطالبة المؤسسات بفتح منافذ SSH. يتم تنفيذ المهمة في بيئة حاوية وحزم تبعيات النموذج الخاص بك في حاوية Docker.

التقييدات

  • يتم وضع علامة على بعض السيناريوهات المسردة في هذا المستند كمعاينة. يتم توفير وظيفة المعاينة بدون اتفاقية مستوى الخدمة، ولا يوصى بها لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

  • يمكن إنشاء مجموعات الحوسبة في منطقة مختلفة عن مساحة العمل الخاصة بك. هذه الوظيفة قيد المعاينة، وهي متوفرة فقط لمجموعات الحوسبة، وليس لمثيلات الحوسبة. لا تتوفر هذه المعاينة إذا كنت تستخدم مساحة عمل خاصة ممكنة لنقطة النهاية.

    تحذير

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

  • نحن ندعم حاليا إنشاء (وليس تحديث) مجموعات فقط من خلال قوالب ARM. لتحديث الحوسبة، نوصي باستخدام SDK أو Azure CLI أو UX في الوقت الحالي.

  • يحتوي Azure التعلم الآلي Compute على حدود افتراضية، مثل عدد النوى التي يمكن تخصيصها. لمزيد من المعلومات، راجع إدارة الحصص النسبية لموارد Azure وطلبها.

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

تلميح

يمكن للمجموعات عموما توسيع نطاق ما يصل إلى 100 عقدة طالما أن لديك حصة كافية لعدد النوى المطلوبة. بشكل افتراضي ، يتم إعداد المجموعات مع تمكين الاتصال بين العقد بين عقد المجموعة لدعم مهام MPI على سبيل المثال. ومع ذلك ، يمكنك توسيع نطاق مجموعاتك إلى 1000s من العقد ببساطة عن طريق رفع تذكرة دعم ، وطلب السماح بإدراج اشتراكك أو مساحة عملك أو مجموعة محددة لتعطيل الاتصال بين العقد.

إنشاء

تقدير الوقت: حوالي 5 دقائق.

يمكن إعادة استخدام Azure التعلم الآلي Compute عبر عمليات التشغيل. يمكن مشاركة الحوسبة مع مستخدمين آخرين في مساحة العمل ويتم الاحتفاظ بها بين عمليات التشغيل، وتغيير حجم العقد تلقائيا لأعلى أو لأسفل استنادا إلى عدد عمليات التشغيل المرسلة، max_nodes تعيينها على مجموعتك. يتحكم إعداد min_nodes في الحد الأدنى من العقد المتاحة.

يتم توحيد النوى المخصصة لكل منطقة لكل حصة تناسبية لعائلة VM وإجمالي الحصة الإقليمية ، والتي تنطبق على إنشاء مجموعة الحوسبة ، ومشاركتها مع Azure التعلم الآلي حصة مثيل الحوسبة التدريبية.

هام

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

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

لإنشاء مورد Azure التعلم الآلي حوسبة مستمر في Python، حدد الخصائص vm_sizeو max_nodes. ثم يستخدم Azure التعلم الآلي الإعدادات الافتراضية الذكية للخصائص الأخرى.

  • vm_size: عائلة VM للعقد التي تم إنشاؤها بواسطة Azure التعلم الآلي Compute.
  • max_nodes: الحد الأقصى لعدد العقد التي يجب قياسها تلقائيا حتى عند تشغيل مهمة على Azure التعلم الآلي Compute.
from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
    cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
    print('Found existing cluster, use it.')
except ComputeTargetException:
    # To use a different region for the compute, add a location='<region>' parameter
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                           max_nodes=4)
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

يمكنك أيضا تكوين العديد من الخصائص المتقدمة عند إنشاء Azure التعلم الآلي Compute. تسمح لك الخصائص بإنشاء مجموعة ثابتة ذات حجم ثابت، أو داخل شبكة Azure Virtual Network موجودة في اشتراكك. راجع فئة AmlCompute للحصول على التفاصيل.

تحذير

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

خفض تكلفة مجموعة الحوسبة

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

استخدم أي من هذه الطرق لتحديد جهاز ظاهري منخفض الأولوية:

compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                            vm_priority='lowpriority',
                                                            max_nodes=4)

إعداد الهوية المدارة

تدعم مجموعات Azure التعلم الآلي compute أيضا الهويات المدارة لمصادقة الوصول إلى موارد Azure دون تضمين بيانات الاعتماد في التعليمات البرمجية الخاصة بك. يوجد نوعان من الهويات المدارة:

  • يتم تمكين هوية مدارة تم تعيينها بواسطة النظام مباشرة على مجموعة الحوسبة Azure التعلم الآلي. ترتبط دورة حياة الهوية المعينة من قبل النظام ارتباطا مباشرا بمجموعة الحوسبة. إذا تم حذف مجموعة الحوسبة، يقوم Azure تلقائيا بتنظيف بيانات الاعتماد والهوية في Azure AD.
  • الهوية المدارة المعينة من قبل المستخدم هي مورد Azure مستقل يتم توفيره من خلال خدمة الهوية المدارة من Azure. يمكنك تعيين هوية مدارة معينة من قبل المستخدم لموارد متعددة، وتستمر للمدة التي تريدها. يجب إنشاء هذه الهوية المدارة مسبقا ثم تمريرها كمعلمة مطلوبة identity_id.
  • تهيئة الهوية المدارة في تهيئة إدارة الحسابات:

    • تعيين هوية مدارة للنظام تم إنشاؤها في مساحة عمل باسم ws

      # configure cluster with a system-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="SystemAssigned",
                                                              )
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
    • الهوية المدارة المعينة من قبل المستخدم والتي تم إنشاؤها في مساحة عمل باسم ws

      # configure cluster with a user-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="UserAssigned",
                                                              identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
  • إضافة هوية مدارة إلى مجموعة حوسبة موجودة باسم cpu_cluster

    • الهوية المدارة المعينة من قبل النظام:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • الهوية المدارة المعينة من قبل المستخدم:

      # add a user-assigned managed identity
      cpu_cluster.add_identity(identity_type="UserAssigned", 
                                  identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      

ملاحظة

تدعم مجموعات الحوسبة Azure التعلم الآلي هوية واحدة فقط تم تعيينها بواسطة النظام أو هويات متعددة معينة من قبل المستخدم، وليس كليهما في وقت واحد.

استخدام الهوية المدارة

الهوية المدارة الافتراضية هي الهوية المدارة المعينة من قبل النظام أو الهوية المدارة الأولى المعينة من قبل المستخدم.

أثناء الجري ، هناك تطبيقان للهوية:

  1. يستخدم النظام هوية لإعداد حوامل التخزين الخاصة بالمستخدم وسجل الحاويات ومخازن البيانات.

    • في هذه الحالة، سيستخدم النظام الهوية المدارة افتراضيا.
  2. يطبق المستخدم هوية للوصول إلى الموارد من داخل التعليمات البرمجية لتشغيل تم إرساله

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

    على سبيل المثال، لاسترداد رمز مميز لمخزن بيانات بالهوية المدارة افتراضيا:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

استكشاف الأخطاء وإصلاحها

هناك احتمال أن بعض المستخدمين الذين قاموا بإنشاء مساحة عمل Azure التعلم الآلي من مدخل Azure قبل إصدار GA قد لا يتمكنوا من إنشاء AmlCompute في مساحة العمل هذه. يمكنك إما رفع طلب دعم مقابل الخدمة أو إنشاء مساحة عمل جديدة من خلال البوابة الإلكترونية أو SDK لإلغاء حظر نفسك على الفور.

عالق في تغيير الحجم

إذا ظهرت مجموعة الحوسبة Azure التعلم الآلي عالقة عند تغيير الحجم (0 -> 0) لحالة العقدة، فقد يكون سبب ذلك هو تأمين موارد Azure.

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

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

هام

لا تقم بتطبيق القفل على الموارد التالية:

اسم المورد نوع المورد
<GUID>-azurebatch-cloudservicenetworksecurityggroup مجموعة أمان الشبكة
<GUID>-azurebatch-cloudservicepublicip عنوان IP العام
<GUID>-azurebatch-cloudserviceloadbalancer موازن التحميل

يتم استخدام هذه الموارد للتواصل مع مجموعة الحوسبة وتنفيذ عمليات مثل تغيير الحجم عليها. يجب أن تسمح إزالة تأمين الموارد من هذه الموارد بالقياس التلقائي لمجموعات الحوسبة الخاصة بك.

لمزيد من المعلومات حول تأمين الموارد، راجع تأمين الموارد لمنع التغييرات غير المتوقعة.

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

استخدم مجموعة الحوسبة الخاصة بك من أجل: