تدريب نموذج بواسطة صورة Docker مخصصة

ينطبق على:Python SDK azureml v1

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

يوفر التعلم الآلي من Microsoft Azure صورة قاعدة Docker افتراضية. يمكنك أيضًا استخدام بيئات التعلم الآلي من Microsoft Azure لتحديد صورة أساسية مختلفة، مثل إحدى صور التعلم الآلي الأساسية من Microsoft Azure أو صورتك المخصصة. تمكنك الصور الأساسية المخصصة بإدارة تبعياتك عن كثب والحفاظ على تحكم أكثر إحكامًا في إصدارات المكونات عند تشغيل مهام التدريب.

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

شغّل هذا التعليمة البرمجية في أي من هذه البيئات:

إنشاء تجربة تدريبية

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

تكوين مساحة عمل

تعتبر مساحة عمل التعلم الآلي من Microsoft Azure مورد المستوى الأعلى للخدمة. فهي توفر لك مكاناً مركزياً للعمل مع جميع القطع الأثرية التي تقوم بإنشائها. في عدة تطوير البرامج لـPython، يمكنك الوصول إلى عناصر مساحة العمل عن طريق إنشاء عنصرWorkspace.

أنشئ عنصر Workspace من ملف config.json الذي قمت بإنشائه كـ أساسي.

from azureml.core import Workspace

ws = Workspace.from_config()

حدد البيئة الخاصة بك

أنشئ عنصر Environment.

from azureml.core import Environment

fastai_env = Environment("fastai2")

تدعم الصورة الأساسية المحددة في التعليمات البرمجية التالية مكتبة fast.ai، وهي تسمح بقدرات التعلم العميق الموزعة. للحصول علي مزيد من المعلومات، راجع مستودع fast.ai Docker Hub.

عند استخدام صورة Docker المخصصة، قد تكون بالفعل بيئة Python الخاصة بك معدة بشكل صحيح. وفي هذه الحالة، عيّن العلامة user_managed_dependencies إلي True لاستخدام بيئة Python المضمنة في صورتك المخصصة. بشكل افتراضي، يقوم التعلم الآلي من Microsoft Azure بإنشاء بيئة Conda مع التبعيات التي حددتها. تقوم الخدمة بتشغيل البرنامج النصي في تلك البيئة بدلًا من استخدام أي مكتبات Python قمت بتثبيتها على الصورة الأساسية.

fastai_env.docker.base_image = "fastdotai/fastai2:latest"
fastai_env.python.user_managed_dependencies = True

إنشاء سجل حاوية خاص (اختياري)

لكي تستخدم صورة من سجل حاوية خاص غير موجود في مساحة العمل الخاصة بك، استخدم docker.base_image_registry لتحديد عنوان المستودع واسم المستخدم وكلمة المرور:

# Set the container registry information.
fastai_env.docker.base_image_registry.address = "myregistry.azurecr.io"
fastai_env.docker.base_image_registry.username = "username"
fastai_env.docker.base_image_registry.password = "password"

استعمال Dockerfile مخصص (اختياري)

من الممكن أيضًا استخدام Dockerfile مخصص. قم باستخدام هذا النهج إذا كنت بحاجة إلى تثبيت حزم غير Python كتبعيات. تذكر تعيين الصورة الأساسية إلي None.

# Specify Docker steps as a string. 
dockerfile = r"""
FROM mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210615.v1
RUN echo "Hello from custom container!"
"""

# Set the base image to None, because the image is defined by Dockerfile.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = dockerfile

# Alternatively, load the string from a file.
fastai_env.docker.base_image = None
fastai_env.docker.base_dockerfile = "./Dockerfile"

هام

لا يدعم التعلم الآلي من Microsoft Azure إلا صور Docker التي توفر البرنامج التالي:

  • Ubuntu 18.04 أو إصدار أحدث.
  • Conda 4.7.# أو إصدار أحدث.
  • Python 3.7+.
  • كما يلزم توفر واجهة متوافقة مع POSIX في /bin/sh في أي صورة حاوية تستخدم للتدريب.

ولمزيد من المعلومات حول إنشاء البيئات واستخدامها، راجع إنشاء بيئات البرامج واستخدامها في التعلم الآلي من Microsoft Azure.

إنشاء أو إرفاق هدف حساب موجود

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

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

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

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your cluster.
cluster_name = "gpu-cluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target.')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6',
                                                           max_nodes=4)

    # Create the cluster.
    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True)

# Use get_status() to get a detailed status for the current AmlCompute.
print(compute_target.get_status().serialize())

هام

قم باستخدام وحدات حفظ المخزون لوحدة CPU لأي بناء صورة على الحوسبة.

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

لهذا البرنامج التعليمي، قم باستخدام البرنامج النصي للتدريب train.py على GitHub. في الممارسة العملية، بإمكانك أخذ أي برنامج نصي مخصص للتدريب، كما هو، وتشغيله باستخدام التعلم الآلي من Microsoft Azure.

ScriptRunConfig إنشاء مورد لتكوين وظيفتك للتشغيل على هدف الحساب المطلوب.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='fastai-example',
                      script='train.py',
                      compute_target=compute_target,
                      environment=fastai_env)

إرسال مهمة التدريب الخاصة بك

عند إرسال تشغيل تدريب باستخدام عنصر ScriptRunConfig، يقوم الأسلوب submitبإرجاع عنصر من النوع ScriptRun. يمنحك العنصر ScriptRun الذي تم إرجاعه وصولًا برمجيًا إلى معلومات حول تشغيل التدريب.

from azureml.core import Experiment

run = Experiment(ws,'Tutorial-fastai').submit(src)
run.wait_for_completion(show_output=True)

تحذير

يقوم التعلم الآلي من Microsoft Azure بتشغيل برامج نصية تدريبية من خلال نسخ دليل المصدر بالكامل. في حال كانت لديك بيانات حساسة لا تريد تحميلها، فاستخدم ملف .ignore أو لا تقم بتضمينها في دليل المصدر. بدلاً من ذلك، قم بالوصول إلى بياناتك باستخدام مخزن بيانات.

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

في هذه المقالة، قمت بالتدرب علي نموذج باستخدام صورة Docker مخصصة. راجع هذه المقالات الأخرى لمعرفة المزيد حول التعلم الآلي من Microsoft Azure: