تكوين MLflow ل Azure التعلم الآلي

توضح هذه المقالة كيفية تكوين MLflow للاتصال بمساحة عمل Azure التعلم الآلي للتعقب والسجلات والنشر.

مساحات عمل Azure التعلم الآلي متوافقة مع MLflow، ما يعني أنها يمكن أن تعمل كخادم MLflow دون أي تكوين إضافي. تحتوي كل مساحة عمل على عنوان URI لتتبع MLflow يمكن ل MLflow استخدامه للاتصال بمساحة العمل. تم تكوين مساحات عمل Azure التعلم الآلي بالفعل للعمل مع MLflow لذلك لا يلزم تكوين إضافي.

ومع ذلك، إذا كنت تعمل خارج Azure التعلم الآلي (مثل جهازك المحلي أو Azure Synapse Analytics أو Azure Databricks)، فستحتاج إلى تكوين MLflow للإشارة إلى مساحة العمل.

هام

عند التشغيل على Azure Compute (دفاتر ملاحظات Azure التعلم الآلي أو دفاتر ملاحظات Jupyter المستضافة على مثيلات حساب Azure التعلم الآلي أو المهام التي تعمل على مجموعات حساب Azure التعلم الآلي)، لا يتعين عليك تكوين URI للتعقب. يتم تكوينه تلقائيا لك.

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

تحتاج إلى المتطلبات الأساسية التالية لمتابعة هذا البرنامج التعليمي:

  • قم بتثبيت حزمة mlflow MLflow SDK والمكون الإضافي Azure التعلم الآلي ل MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    تلميح

    يمكنك استخدام الحزمة mlflow-skinny ، وهي حزمة MLflow خفيفة الوزن دون تخزين SQL أو الخادم أو واجهة المستخدم أو تبعيات علم البيانات. mlflow-skinny يوصى به للمستخدمين الذين يحتاجون في المقام الأول إلى قدرات تتبع وتسجيل MLflow دون استيراد مجموعة كاملة من الميزات بما في ذلك عمليات النشر.

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

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

تكوين URI لتتبع MLflow

لتوصيل MLflow بمساحة عمل Azure التعلم الآلي، تحتاج إلى تعقب URI لمساحة العمل. كل مساحة عمل لها عنوان URI للتتبع الخاص بها ولها البروتوكول azureml://.

  1. احصل على عنوان URI للتعقب لمساحة العمل الخاصة بك:

    ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

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

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. يمكنك الحصول على تعقب URI باستخدام az ml workspace الأمر :

      az ml workspace show --query mlflow_tracking_uri
      
  2. تكوين تعقب URI:

    ثم يشير الأسلوب set_tracking_uri() إلى عنوان URI لتعقب MLflow إلى عنوان URI هذا.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    تلميح

    عند العمل على بيئات مشتركة، مثل مجموعة Azure Databricks أو مجموعة Azure Synapse Analytics أو ما شابه ذلك، من المفيد تعيين متغير MLFLOW_TRACKING_URI البيئة على مستوى نظام المجموعة لتكوين URI تعقب MLflow تلقائيا للإشارة إلى Azure التعلم الآلي لجميع الجلسات التي تعمل في المجموعة بدلا من القيام بذلك على أساس كل جلسة عمل.

تكوين المصادقة

بمجرد تعيين التتبع، تحتاج أيضا إلى تكوين أسلوب المصادقة لمساحة العمل المقترنة. بشكل افتراضي، يقوم المكون الإضافي Azure التعلم الآلي ل MLflow بإجراء مصادقة تفاعلية عن طريق فتح المستعرض الافتراضي للمطالبة ببيانات الاعتماد.

يدعم المكون الإضافي Azure التعلم الآلي ل MLflow العديد من آليات المصادقة من خلال الحزمة azure-identity، والتي تم تثبيتها كتبعية للمكون الإضافي azureml-mlflow. يتم تجربة أساليب المصادقة التالية واحدا تلو الآخر حتى تنجح إحداها:

  1. البيئة: يقرأ معلومات الحساب المحددة عبر متغيرات البيئة ويستخدمها للمصادقة.
  2. الهوية المدارة: إذا تم نشر التطبيق إلى مضيف Azure مع تمكين الهوية المدارة، فإنه يصادق معه.
  3. Azure CLI: إذا سجل مستخدم الدخول عبر أمر Azure CLI az login ، فإنه يصادق على أنه هذا المستخدم.
  4. Azure PowerShell: إذا سجل مستخدم الدخول عبر أمر Azure PowerShell Connect-AzAccount ، فإنه يصادق على أنه هذا المستخدم.
  5. المتصفح التفاعلي: يصادق مستخدما بشكل تفاعلي عبر المستعرض الافتراضي.

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

تحذير

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

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

import os

os.environ["AZURE_TENANT_ID"] = "<AZURE_TENANT_ID>"
os.environ["AZURE_CLIENT_ID"] = "<AZURE_CLIENT_ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<AZURE_CLIENT_SECRET>"

تلميح

عند العمل على البيئات المشتركة، ينصح بتكوين متغيرات البيئة هذه في الحساب. كأفضل ممارسة، قم بإدارتها كأسرار في مثيل Azure Key Vault كلما أمكن ذلك. على سبيل المثال، في Azure Databricks يمكنك استخدام الأسرار في متغيرات البيئة كما يلي في تكوين نظام المجموعة: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. راجع الرجوع إلى سر في متغير بيئة لمعرفة كيفية القيام بذلك في Azure Databricks أو الرجوع إلى وثائق مماثلة في النظام الأساسي الخاص بك.

إذا كنت تفضل استخدام شهادة بدلا من سر، يمكنك تكوين متغيرات AZURE_CLIENT_CERTIFICATE_PATH البيئة إلى المسار إلى PEM ملف شهادة أو PKCS12 (بما في ذلك المفتاح الخاص) ومع AZURE_CLIENT_CERTIFICATE_PASSWORD كلمة مرور ملف الشهادة، إن وجدت.

تكوين مستويات التخويل والأذونات

تم بالفعل تكوين بعض الأدوار الافتراضية مثل AzureML Data Scientist أو Contributor لتنفيذ عمليات MLflow في مساحة عمل Azure التعلم الآلي. إذا كنت تستخدم دورا مخصصا، فأنت بحاجة إلى الأذونات التالية:

  • لاستخدام تتبع MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • لاستخدام سجل نموذج MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

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

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

يحاول MLflow المصادقة على Azure التعلم الآلي على العملية الأولى التي تتفاعل مع الخدمة، مثل mlflow.set_experiment() أو mlflow.start_run(). إذا وجدت مشكلات أو مطالبات مصادقة غير متوقعة أثناء العملية، يمكنك زيادة مستوى التسجيل للحصول على مزيد من التفاصيل حول الخطأ:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

تعيين اسم التجربة (اختياري)

جميع عمليات تشغيل MLflow مسجلة في التجربة النشطة. بشكل افتراضي، يتم تسجيل عمليات التشغيل في تجربة مسماة Default يتم إنشاؤها تلقائيًا لك. يمكنك تكوين التجربة حيث يحدث التعقب.

تلميح

عند إرسال المهام باستخدام Azure التعلم الآلي CLI v2، يمكنك تعيين اسم التجربة باستخدام الخاصية experiment_name في تعريف YAML للوظيفة. ليس عليك تكوينه في البرنامج النصي للتدريب الخاص بك. راجع YAML: الاسم المعروض، واسم التجربة، والوصف، والعلامات لمزيد من التفاصيل.

قم بتكوين تجربتك باستخدام أمر mlflow.set_experiment()MLflow .

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

دعم Azure Clouds غير العام

يتم تكوين المكون الإضافي Azure التعلم الآلي ل MLflow بشكل افتراضي للعمل مع سحابة Azure العالمية. ومع ذلك، يمكنك تكوين سحابة Azure التي تستخدمها عن طريق تعيين متغير AZUREML_CURRENT_CLOUDالبيئة .

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

يمكنك تحديد السحابة التي تستخدمها باستخدام أمر Azure CLI التالي:

az cloud list

تحتوي السحابة الحالية على القيمة IsActive المعينة إلى True.

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

الآن بعد أن أصبحت بيئتك متصلة بمساحة العمل الخاصة بك في Azure التعلم الآلي، يمكنك البدء في العمل معها.