تدريب نماذج scikit-learn على نطاق واسع باستخدام التعلم الآلي من Microsoft Azure (الإصدار 1 من SDK)

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

في هذا المقال، تعرف على كيفية تشغيل نصوص التدريب على scikit-Learn الخاص بك باستخدام التعلم الآلي من Microsoft Azure.

تُستخدم نصوص المثال في هذا المقال لتصنيف صور زهرة iris لبناء نموذج التعلم الآلي معتمداً على قاعدة بيانات iris الخاصة بـ scikit-Learn.

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

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

يمكنك تشغيل هذه البرامج إما في مثيل حساب التعلم الآلي من Microsoft Azure أو Jupyter Notebook الخاص بك:

  • مثيل حساب التعلم الآلي من Azure

    • أكمل Quickstart: بدء استخدام التعلم الآلي من Microsoft Azure لإنشاء مثيل حساب. يتضمن كل مثيل حساب خادم من خوادم Notebook مخصصاً تم تحميله مسبقاً بـSDK ومستودع عينة Notebook.
    • حدد علامة تبويب Notebook في Azure Machine Learning Studio. في مجلد عينات التدريب، ابحث عن دفتر ملاحظات مكتمل وموسع بالانتقال إلى هذا الدليل: مجلد how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn.
    • يمكنك استخدام التعليمة البرمجية التي تم ملؤها مسبقاً في نموذج مجلد التدريب لإكمال هذا البرنامج التعليمي.
  • قم بإنشاء خادم Jupyter Notebook وقم بتشغيل البرنامج في الأقسام التالية.

إعداد التجربة

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

تهيئة مساحة عمل

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

قم بإنشاء عنصر مساحة عمل من ملف config.json المُنشأ في قسم المتطلبات الأساسية.

from azureml.core import Workspace

ws = Workspace.from_config()

تحضير البرامج النصية

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

إشعار

  • يوضح البرنامج النصي للتدريب المقدم كيفية تسجيل بعض المقاييس إلى Azure التعلم الآلي تشغيل باستخدام Run العنصر داخل البرنامج النصي.
  • يستخدم البرنامج النصي التدريبي المقدم بيانات المثال من الوظيفة iris = datasets.load_iris(). لاستخدام بياناتك الخاصة والوصول إليها، راجع كيفية التدريب باستخدام مجموعات البيانات لإتاحة البيانات أثناء التدريب.

حدد بيئتك

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

قم باستخدام بيئة منظمة

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

إذا أردت استخدام بيئة منظمة، فيمكنك تشغيل الأمر التالي بدلاً من ذلك:

from azureml.core import Environment

sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')

إنشاء بيئة مخصصة

يمكنك أيضاً إنشاء بيئتك المُخصصة. تحديد تبعيات conda الخاصة بك في ملف YAML؛ في هذا المثال، تمت تسمية الملف باسم conda_dependencies.yml.

dependencies:
  - python=3.7
  - scikit-learn
  - numpy
  - pip:
    - azureml-defaults

إنشاء بيئة Azure التعلم الآلي من مواصفات بيئة Conda هذه. سيتم حزم البيئة في حاوية Docker أثناء وقت التشغيل.

from azureml.core import Environment

sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')

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

تكوين وإرسال تشغيل التدريب لديك

أنشئ ScriptRunConfig

أنشئ كائن ScriptRunConfig لتحديد تفاصيل تكوين مهمة التدريب، بما في ذلك البرنامج النصي للتدريب، والبيئة المطلوب استخدامها، وهدف الحساب المطلوب التشغيل فيه. سيتم تمرير أي وسيطات إلى البرنامج النصي التدريبي عبر سطر الأوامر إذا تم تحديده في المعلمة arguments.

ستقوم التعليمة البرمجية التالية بتكوين عنصر ScriptRunConfig لإرسال وظيفتك للتنفيذ على جهازك المحلي.

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      environment=sklearn_env)

إذا كنت تريد بدلاً من ذلك تشغيل وظيفتك على نظام مجموعة بعيدة، يمكنك تحديد هدف الحساب المطلوب للمعلمة compute_target من ScriptRunConfig.

from azureml.core import ScriptRunConfig

compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
                      script='train_iris.py',
                      arguments=['--kernel', 'linear', '--penalty', 1.0],
                      compute_target=compute_target,
                      environment=sklearn_env)

أرسل التشغيل

from azureml.core import Experiment

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

تحذير

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

ماذا يحدث أثناء تنفيذ التشغيل

يمر التشغيل بالمراحل التالية أثناء التنفيذ:

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

  • التحجيم: تحاول المجموعة التوسع إذا تطلبت مجموعة Batch AI عدداً أكبر من العقد لتنفيذ التشغيل أكثر مما هو متاح حالياً.

  • التشغيل: يتم تحميل جميع البرامج النصية الموجودة في مجلد البرنامج النصي إلى هدف الحساب، ويتم تحميل مخازن البيانات أو نسخها، ويتم تنفيذ script. تتدفق المخرجات من stdout والمجلد ./logs إلى محفوظات التشغيل ويمكن استخدامها لمراقبة التشغيل.

  • مرحلة ما بعد المعالجة: يتم نسخ مجلد / outputs للتشغيل إلى محفوظات التشغيل.

حفظ وتسجيل النموذج

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

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

import joblib

joblib.dump(svm_model_linear, 'model.joblib')

قم بتسجيل النموذج في مساحة العمل الخاصة بك باستخدام البرنامج التالي. من خلال تحديد المعلمات model_framework وmodel_framework_version وresource_configuration، يصبح توزيع نموذج دون تعليمة برمجية متاحاً. يسمح لك توزيع النموذج دون تعليمة برمجية بتوزيع النموذج الخاص بك مباشرةً كخدمة ويب من النموذج المسجل، ويحدد العنصر ResourceConfiguration مورد الحساب لخدمة الويب.

from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration

model = run.register_model(model_name='sklearn-iris', 
                           model_path='outputs/model.joblib',
                           model_framework=Model.Framework.SCIKITLEARN,
                           model_framework_version='0.19.1',
                           resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))

التوزيع

يمكن نشر النموذج الذي قمت بتسجيله للتو بنفس الطريقة تماما مثل أي نموذج مسجل آخر في Azure التعلم الآلي. تحتوي طريقة التوزيع على قسم خاص بتسجيل النماذج، ولكن يمكنك التخطي مباشرةً إلى [creating a compute targethow-to-deploy-and-where.md#choose-a-compute-target) للتوزيع نظراً لأن لديك نموذجاً مسجلاً بالفعل.

(إصدار أولي) توزيع نموذجًا بدون تعليمة برمجية

هام

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

لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

بدلاً من مسار التوزيع التقليدي، يمكنك أيضاً استخدام ميزة التوزيع دون تعليمة برمجية (إصدار أولي) لـ scikit-Learn. يتم دعم توزيع نموذج دون تعليمة برمجية لجميع أنواع نماذج scikit-Learn المضمنة. بتسجيل نموذجك كما هو موضح أعلاه بالعوامل model_framework وmodel_framework_version وresource_configuration، يمكنك ببساطة استخدام الوظيفة الثابتة deploy() لتوزيع نموذجك.

web_service = Model.deploy(ws, "scikit-learn-service", [model])

إشعار

تُدرج هذه التبعيات في حاوية الاستدلال scikit-learn سابقة الإنشاء.

    - azureml-defaults
    - inference-schema[numpy-support]
    - scikit-learn
    - numpy

تغطي التوزيع الإرشادي الكامل في التعلم الآلي من Microsoft Azure بعمق أكبر.

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

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