إعداد أهداف الحوسبة للتدريب على النماذج ونشرها

تعرف على كيفية إرفاق موارد Azure compute بمساحة عمل Azure التعلم الآلي. ثم يمكنك استخدام هذه الموارد كأهداف لحساب التدريب والاستدلال في مهام التعلم الآلي الخاصة بك.

في هذه المقالة، تعرف على كيفية إعداد مساحة العمل لاستخدام موارد الحوسبة هذه:

  • الكمبيوتر المحلي
  • الأجهزة الظاهرية عن بعد
  • تجمعات Apache Spark (مدعومة من Azure Synapse Analytics)
  • "Azure HDInsight"
  • Azure Batch
  • Azure Databricks - يستخدم كهدف حوسبة للتدريب فقط في خطوط أنابيب التعلم الآلي
  • Azure Data Lake Analytics
  • مثيل حاوية Azure
  • Azure Kubernetes Service & Azure Arc-enabled Kubernetes (preview)

لاستخدام أهداف الحوسبة المدارة بواسطة Azure التعلم الآلي، راجع:

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

التقييدات

  • لا تقم بإنشاء مرفقات متعددة ومتزامنة لنفس الحوسبة من مساحة العمل الخاصة بك. على سبيل المثال، إرفاق مجموعة Azure Kubernetes Service واحدة بمساحة عمل باستخدام اسمين مختلفين. سيقوم كل مرفق جديد بكسر المرفق (المرفقات) الموجودة السابقة.

    إذا كنت تريد إعادة إرفاق هدف حوسبة، على سبيل المثال لتغيير TLS أو إعداد تكوين نظام مجموعة آخر، فيجب عليك أولا إزالة المرفق الموجود.

ما هو هدف الحوسبة؟

باستخدام Azure التعلم الآلي، يمكنك تدريب نموذجك على موارد أو بيئات مختلفة، يشار إليها مجتمعة باسم أهداف الحوسبة. يمكن أن يكون هدف الحوسبة جهازا محليا أو موردا سحابيا، مثل Azure التعلم الآلي Compate أو Azure HDInsight أو جهاز ظاهري بعيد. يمكنك أيضا استخدام أهداف الحوسبة لنشر النموذج كما هو موضح في "مكان وكيفية نشر النماذج الخاصة بك".

الكمبيوتر المحلي

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

عند استخدام الكمبيوتر المحلي للاستدلال، يجب أن يكون لديك Docker مثبتا. لتنفيذ النشر، استخدم LocalWebservice.deploy_configuration() لتحديد المنفذ الذي ستستخدمه خدمة الويب. ثم استخدم عملية النشر العادية كما هو موضح في نشر النماذج باستخدام Azure التعلم الآلي.

الأجهزة الظاهرية عن بعد

يدعم Azure التعلم الآلي أيضا إرفاق جهاز Azure الظاهري. يجب أن يكون الجهاز الظاهري لجهاز Azure Data Science الظاهري (DSVM). يوفر VM مجموعة منسقة من الأدوات والأطر لتطوير التعلم الآلي الكامل لدورة الحياة. لمزيد من المعلومات حول كيفية استخدام DSVM مع Azure التعلم الآلي، راجع تكوين بيئة تطوير.

تلميح

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

  1. إنشاء: يتعذر على Azure التعلم الآلي إنشاء جهاز ظاهري بعيد لك. بدلا من ذلك، يجب إنشاء الجهاز الظاهري ثم إرفاقه بمساحة عمل Azure التعلم الآلي. للحصول على معلومات حول إنشاء DSVM، راجع توفير الجهاز الظاهري لعلوم البيانات لنظام التشغيل Linux (Ubuntu).

    تحذير

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

    يتطلب Azure التعلم الآلي أيضا أن يكون للجهاز الظاهري عنوان IP عام.

  2. إرفاق: لإرفاق جهاز ظاهري موجود كهدف حوسبة، يجب توفير معرف المورد واسم المستخدم وكلمة المرور للجهاز الظاهري. يمكن إنشاء معرف المورد الخاص بالجهاز الظاهري باستخدام معرف الاشتراك واسم مجموعة الموارد واسم الجهاز الظاهري باستخدام تنسيق السلسلة التالي: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Compute/virtualMachines/<vm_name>

    from azureml.core.compute import RemoteCompute, ComputeTarget
    
    # Create the compute config 
    compute_target_name = "attach-dsvm"
    
    attach_config = RemoteCompute.attach_configuration(resource_id='<resource_id>',
                                                    ssh_port=22,
                                                    username='<username>',
                                                    password="<password>")
    
    # Attach the compute
    compute = ComputeTarget.attach(ws, compute_target_name, attach_config)
    
    compute.wait_for_completion(show_output=True)
    

    أو يمكنك إرفاق DSVM بمساحة العمل الخاصة بك باستخدام Azure التعلم الآلي studio.

    تحذير

    لا تقم بإنشاء مرفقات متعددة ومتزامنة بنفس DSVM من مساحة العمل الخاصة بك. سيقوم كل مرفق جديد بكسر المرفق (المرفقات) الموجودة السابقة.

  3. تكوين: إنشاء تكوين تشغيل لهدف حساب DSVM. يتم استخدام Docker و conda لإنشاء بيئة التدريب وتكوينها على DSVM.

    from azureml.core import ScriptRunConfig
    from azureml.core.environment import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    # Create environment
    myenv = Environment(name="myenv")
    
    # Specify the conda dependencies
    myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    
    # If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used
    # To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image:
    # myenv.docker.enabled = True
    # myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE
    
    # Configure the run configuration with the Linux DSVM as the compute target and the environment defined above
    src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv) 
    

تلميح

إذا كنت تريد إزالة (فصل) جهاز ظاهري من مساحة العمل الخاصة بك، استخدم الأسلوب RemoteCompute.detach() .

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

تجمعات Apache Spark

يتيح لك تكامل Azure Synapse Analytics مع Azure التعلم الآلي (معاينة) إرفاق تجمع Apache Spark مدعوم من Azure Synapse لاستكشاف البيانات التفاعلية وإعدادها. باستخدام هذا التكامل ، يمكنك الحصول على حساب مخصص لمشاحنات البيانات على نطاق واسع. لمزيد من المعلومات، راجع كيفية إرفاق تجمعات Apache Spark المدعومة بواسطة Azure Synapse Analytics.

Azure HDInsight

Azure HDInsight هو نظام أساسي شائع لتحليلات البيانات الكبيرة. توفر المنصة Apache Spark ، والتي يمكن استخدامها لتدريب نموذجك.

  1. إنشاء: يتعذر على Azure التعلم الآلي إنشاء مجموعة HDInsight لك. بدلا من ذلك، يجب إنشاء المجموعة ثم إرفاقها بمساحة عمل Azure التعلم الآلي. لمزيد من المعلومات، راجع إنشاء مجموعة شرارة في HDInsight.

    تحذير

    يتطلب Azure التعلم الآلي أن يكون لمجموعة HDInsight عنوان IP عام.

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

    بعد إنشاء نظام المجموعة، اتصل به باستخدام اسم نظام المجموعة ssh.azurehdinsight.net اسم <>المضيف، حيث <يكون اسم> الكتلة هو الاسم الذي قمت بتوفيره لنظام المجموعة.

  2. إرفاق: لإرفاق مجموعة HDInsight كهدف حوسبة، يجب توفير معرف المورد واسم المستخدم وكلمة المرور لمجموعة HDInsight. يمكن إنشاء معرف المورد الخاص بمجموعة HDInsight باستخدام معرف الاشتراك واسم مجموعة الموارد واسم مجموعة HDInsight باستخدام تنسيق السلسلة التالي: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.HDInsight/clusters/<cluster_name>

    from azureml.core.compute import ComputeTarget, HDInsightCompute
    from azureml.exceptions import ComputeTargetException
    
    try:
    # if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase
    
    attach_config = HDInsightCompute.attach_configuration(resource_id='<resource_id>',
                                                          ssh_port=22, 
                                                          username='<ssh-username>', 
                                                          password='<ssh-pwd>')
    hdi_compute = ComputeTarget.attach(workspace=ws, 
                                       name='myhdi', 
                                       attach_configuration=attach_config)
    
    except ComputeTargetException as e:
    print("Caught = {}".format(e.message))
    
    hdi_compute.wait_for_completion(show_output=True)
    

    أو يمكنك إرفاق مجموعة HDInsight بمساحة العمل الخاصة بك باستخدام استوديو Azure التعلم الآلي.

    تحذير

    لا تقم بإنشاء مرفقات متعددة ومتزامنة بنفس HDInsight من مساحة العمل الخاصة بك. سيقوم كل مرفق جديد بكسر المرفق (المرفقات) الموجودة السابقة.

  3. تكوين: إنشاء تكوين تشغيل لهدف حساب HDI.

    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    
    
    # use pyspark framework
    run_hdi = RunConfiguration(framework="pyspark")
    
    # Set compute target to the HDI cluster
    run_hdi.target = hdi_compute.name
    
    # specify CondaDependencies object to ask system installing numpy
    cd = CondaDependencies()
    cd.add_conda_package('numpy')
    run_hdi.environment.python.conda_dependencies = cd
    

تلميح

إذا كنت تريد إزالة (فصل) مجموعة HDInsight من مساحة العمل، استخدم الأسلوب HDInsightCompute.detach() .

لا يقوم Azure التعلم الآلي بحذف مجموعة HDInsight نيابة عنك. يجب حذفه يدويا باستخدام مدخل Azure أو CLI أو SDK ل Azure HDInsight.

Azure Batch

يستخدم Azure Batch لتشغيل تطبيقات الحوسبة المتوازية وعالية الأداء (HPC) واسعة النطاق بكفاءة في السحابة. يمكن استخدام AzureBatchStep في خط أنابيب Azure التعلم الآلي لإرسال المهام إلى مجموعة من أجهزة Azure Batch .

لإرفاق Azure Batch كهدف حوسبة، يجب عليك استخدام Azure التعلم الآلي SDK وتوفير المعلومات التالية:

  • Azure Batch compute name: اسم مألوف ليتم استخدامه للحوسبة داخل مساحة العمل
  • اسم حساب Azure Batch : اسم حساب Azure Batch
  • مجموعة الموارد: مجموعة الموارد التي تحتوي على حساب Azure Batch .

توضح التعليمة البرمجية التالية كيفية إرفاق Azure Batch كهدف حوسبة:

from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException

# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'

# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>"  # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"

try:
    # check if the compute is already attached
    batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
    print('Attaching Batch compute...')
    provisioning_config = BatchCompute.attach_configuration(
        resource_group=batch_resource_group, account_name=batch_account_name)
    batch_compute = ComputeTarget.attach(
        ws, batch_compute_name, provisioning_config)
    batch_compute.wait_for_completion()
    print("Provisioning state:{}".format(batch_compute.provisioning_state))
    print("Provisioning errors:{}".format(batch_compute.provisioning_errors))

print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))

تحذير

لا تقم بإنشاء مرفقات متعددة ومتزامنة لنفس Azure Batch من مساحة العمل الخاصة بك. سيقوم كل مرفق جديد بكسر المرفق (المرفقات) الموجودة السابقة.

Azure Databricks

Azure Databricks هي بيئة تستند إلى Apache Spark في سحابة Azure. يمكن استخدامه كهدف حساب مع خط أنابيب Azure التعلم الآلي.

هام

Azure التعلم الآلي لا يمكن إنشاء هدف Azure Databricks compute. بدلا من ذلك، يجب إنشاء مساحة عمل Azure Databricks، ثم إرفاقها بمساحة عمل Azure التعلم الآلي. لإنشاء مورد مساحة عمل، راجع مستند تشغيل مهمة Spark على Azure Databricks .

لإرفاق مساحة عمل Azure Databricks من اشتراك Azure مختلف، يجب منحك (حساب Azure AD الخاص بك) دور المساهم في مساحة عمل Azure Databricks. تحقق من وصولك في مدخل Azure.

لإرفاق Azure Databricks كهدف حوسبة، قم بتوفير المعلومات التالية:

  • اسم حساب Databricks: الاسم الذي تريد تعيينه لمورد الحوسبة هذا.
  • اسم مساحة عمل Databricks: اسم مساحة عمل Azure Databricks.
  • الرمز المميز للوصول إلى Databricks: رمز الوصول المميز المستخدم للمصادقة على Azure Databricks. لإنشاء رمز مميز للوصول، راجع مستند المصادقة .

توضح التعليمة البرمجية التالية كيفية إرفاق Azure Databricks كهدف حساب باستخدام Azure التعلم الآلي SDK:

import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException

databricks_compute_name = os.environ.get(
    "AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
    "AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
    "AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
    "AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")

try:
    databricks_compute = ComputeTarget(
        workspace=ws, name=databricks_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('databricks_compute_name {}'.format(databricks_compute_name))
    print('databricks_workspace_name {}'.format(databricks_workspace_name))
    print('databricks_access_token {}'.format(databricks_access_token))

    # Create attach config
    attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
                                                           workspace_name=databricks_workspace_name,
                                                           access_token=databricks_access_token)
    databricks_compute = ComputeTarget.attach(
        ws,
        databricks_compute_name,
        attach_config
    )

    databricks_compute.wait_for_completion(True)

للحصول على مثال أكثر تفصيلا، راجع مثال دفتر ملاحظات على GitHub.

تحذير

لا تقم بإنشاء مرفقات متعددة ومتزامنة لنفس Azure Databricks من مساحة العمل الخاصة بك. سيقوم كل مرفق جديد بكسر المرفق (المرفقات) الموجودة السابقة.

Azure Data Lake Analytics

Azure Data Lake Analytics عبارة عن نظام أساسي لتحليلات البيانات الكبيرة في سحابة Azure. يمكن استخدامه كهدف حساب مع خط أنابيب Azure التعلم الآلي.

أنشئ حساب Azure Data Lake Analytics قبل استخدامه. لإنشاء هذا المورد، راجع مستند بدء استخدام Azure Data Lake Analytics .

لإرفاق Data Lake Analytics كهدف حوسبة، يجب عليك استخدام Azure التعلم الآلي SDK وتوفير المعلومات التالية:

  • اسم الحساب: الاسم الذي تريد تعيينه لمورد الحوسبة هذا.
  • مجموعة الموارد: مجموعة الموارد التي تحتوي على حساب Data Lake Analytics.
  • اسم الحساب: اسم حساب Data Lake Analytics.

توضح التعليمة البرمجية التالية كيفية إرفاق Data Lake Analytics كهدف حساب:

import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException


adla_compute_name = os.environ.get(
    "AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
    "AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
    "AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")

try:
    adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('adla_compute_name {}'.format(adla_compute_name))
    print('adla_resource_id {}'.format(adla_resource_group))
    print('adla_account_name {}'.format(adla_account_name))
    # create attach config
    attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
                                                     account_name=adla_account_name)
    # Attach ADLA
    adla_compute = ComputeTarget.attach(
        ws,
        adla_compute_name,
        attach_config
    )

    adla_compute.wait_for_completion(True)

للحصول على مثال أكثر تفصيلا، راجع مثال دفتر ملاحظات على GitHub.

تحذير

لا تقم بإنشاء مرفقات متعددة ومتزامنة بنفس ADLA من مساحة العمل الخاصة بك. سيقوم كل مرفق جديد بكسر المرفق (المرفقات) الموجودة السابقة.

تلميح

يمكن لخطوط أنابيب Azure التعلم الآلي العمل فقط مع البيانات المخزنة في مخزن البيانات الافتراضي لحساب Data Lake Analytics. إذا كانت البيانات التي تحتاج إلى العمل معها موجودة في مخزن غير افتراضي، فيمكنك استخدام a DataTransferStep لنسخ البيانات قبل التدريب.

مثيل حاوية Azure

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

Kubernetes (معاينة)

يوفر لك Azure التعلم الآلي الخيارات التالية لإرفاق مجموعات Kubernetes الخاصة بك للتدريب والاستدلال:

  • Azure Kubernetes Service. يوفر Azure Kubernetes Service مجموعة مدارة في Azure.
  • Azure arc kubernetes. استخدم مجموعات Kubernetes التي تدعم Azure Arc إذا كانت مجموعتك مستضافة خارج Azure.

ملاحظة

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

لفصل مجموعة Kubernetes عن مساحة العمل الخاصة بك، استخدم الطريقة التالية:

compute_target.detach()

تحذير

لا يؤدي فصل مجموعة إلى حذف المجموعة. لحذف مجموعة خدمة Azure Kubernetes، راجع استخدام Azure CLI مع AKS. لحذف مجموعة Kubernetes ممكنة بواسطة Azure Arc، راجع Azure Arc quickstart.

أمثلة على دفاتر الملاحظات

راجع دفاتر الملاحظات هذه للحصول على أمثلة للتدريب على أهداف الحوسبة المختلفة:

تعرف على كيفية تشغيل دفاتر الملاحظات باتباع المقالة استخدام دفاتر ملاحظات Jupyter لاستكشاف هذه الخدمة.

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