تتبع تجارب Azure Databricks التعلم الآلي من Microsoft Azure باستخدام MLflow والتعلم الآلي من Microsoft Azure

Myflowهي مكتبة مفتوحة المصدر لإدارة دورة حياة تجارب التعلم الآلي. يمكنك استخدام MLflow لدمج Azure Databricks مع Azure التعلم الآلي لضمان حصولك على الأفضل من كلا المنتجين.

في هذه المقالة، سوف تتمكن من:

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

مثال دفاتر الملاحظات

توضح نماذج التدريب في Azure Databricks ونشرها على Azure التعلم الآلي كيفية تدريب النماذج في Azure Databricks ونشرها في Azure التعلم الآلي. كما يتضمن كيفية التعامل مع الحالات التي تريد فيها أيضا تعقب التجارب والنماذج باستخدام مثيل MLflow في Azure Databricks والاستفادة من Azure التعلم الآلي للتوزيع.

تثبيت مكتبة التعليمات البرمجية

لتثبيت مكتبة التعليمات البرمجية على نظام مجموعة، انتقل إلى علامة التبويب Libraries وحدد Install New

mlflow with azure databricks

في حقل الحزمة، اكتب azureml-mlflow ثم حدد install. كرر هذه الخطوة حسب الضرورة لتثبيت حزم إضافية أخرى إلى نظام مجموعة لتجربتك.

Azure DB install mlflow library

تتبع جولات Azure Databricks مع MLflow

يمكن تكوين Azure Databricks لتعقب التجارب باستخدام MLflow بطريقتين:

بشكل افتراضي، يتم تكوين التتبع المزدوج لك عند ربط مساحة عمل Azure Databricks.

التتبع المزدوج على Azure Databricks والتعلم الآلي من Azure

ارتباط مساحة عمل ADB بمساحة عمل التعلم الآلي من Azure والتي تتمكن من تتبع بيانات تجربتك في مساحة عمل التعلم الآلي من Azure ومساحة عمل Azure Databricks في نفس الوقت. يشار إلى هذا باسم التتبع المزدوج.

تحذير

التعقب المزدوج في مساحة عمل التعلم الآلي من Azure ذات الارتباط الخاص الممكن غير مدعومة في الوقت الحالي. قم بتكوين التتبع الحصري باستخدام مساحة عمل التعلم الآلي من Azure بدلًا من ذلك.

تحذير

تتبع مزدوج في غير مدعوم في Microsoft Azure المشغل بواسطة 21Vianet في الوقت الحالي. قم بتكوين التتبع الحصري باستخدام مساحة عمل التعلم الآلي من Azure بدلًا من ذلك.

لارتباط مساحة عمل ADB بمساحة عمل التعلم الآلي من Microsoft Azure الجديدة أو الحالية،

  1. تسجيل الدخول إلى مدخل Azure.
  2. انتقل إلى صفحة Overview على مساحة العمل الخاصة بك ADB.
  3. حدد الزر Link التعلم الآلي من Microsoft Azure workspace أسفل اليسار.

Link Azure DB and Azure Machine Learning workspaces

بعد ربط مساحة عمل Azure Databricks بمساحة عمل التعلم الآلي من Azure، يتم تعيين MLflow Tracking تلقائيًا ليتم تعقبه في جميع الأماكن التالية:

  • مساحة عمل التعلم الآلي من Microsoft Azure في الارتباط.
  • مساحة عمل ADB الأصلية الخاصة بك.

يمكنك استخدام MLflow ثم في Azure Databricks بنفس الطريقة التي اعتدت على استخدامها. يعين المثال التالي اسم التجربة كما هو الحال عادة في Azure Databricks وبدء تسجيل بعض المعلمات:

import mlflow 

experimentName = "/Users/{user_name}/{experiment_folder}/{experiment_name}" 
mlflow.set_experiment(experimentName) 

with mlflow.start_run():
   mlflow.log_param('epochs', 20)
   pass

إشعار

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

التتبع حصريًا على مساحة عمل التعلم الآلي من Azure

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

يجب عليك تكوين عنوان URI لتتبع MLflow للإشارة حصريًا إلى التعلم الآلي من Azure، كما هو موضح في المثال التالي:

تكوين تعقب URI

  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 التعلم الآلي لجميع الجلسات التي تعمل في المجموعة بدلا من القيام بذلك على أساس كل جلسة عمل.

    Configure the environment variables in an Azure Databricks cluster

    بمجرد تكوين متغير البيئة، سيتم تعقب أي تجربة قيد التشغيل في مثل هذه المجموعة في Azure التعلم الآلي.

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

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

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

تحذير

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

بالنسبة إلى السيناريوهات التي يكون فيها التنفيذ غير المراقب مطلوبا، سيتعين عليك تكوين كيان خدمة للاتصال ب 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 أو الرجوع إلى وثائق مماثلة في النظام الأساسي الخاص بك.

أسماء التجربة في التعلم الآلي من Microsoft Azure

عند تكوين MLflow لتتبع التجارب حصريًا في مساحة عمل التعلم الآلي من Azure، يجب أن يتبع اصطلاح تسمية التجربة اصطلاح التسمية الذي يستخدمه التعلم الآلي من Azure. في Azure Databricks، تسمى التجارب بالمسار بموقع حفظ التجربة مثل /Users/alice@contoso.com/iris-classifier. مع ذلك، في التعلم الآلي من Azure، يجب عليك توفير اسم التجربة مباشرة. كما هو الحال في المثال السابق، سيتم تسمية iris-classifier نفس التجربة مباشرة:

mlflow.set_experiment(experiment_name="experiment-name")

تعقب المعلمات والمقاييس والبيانات الاصطناعية

يمكنك استخدام MLflow ثم في Azure Databricks بنفس الطريقة التي اعتدت على استخدامها. للحصول على التفاصيل، راجع السجل وعرض المقاييس وملفات السجل.

نماذج التسجيل باستخدام MLflow

بعد تدريب النموذج الخاص بك، يمكنك تسجيله في خادم التتبعmlflow.<model_flavor>.log_model() بهذه الطريقة. <model_flavor>، يشير إلى إطار العمل المرتبط بالنموذج. تعرَّف على نكهات النموذج المدعومة. في المثال التالي، يتم تسجيل نموذج تم إنشاؤه باستخدام مكتبة Spark MLLib:

mlflow.spark.log_model(model, artifact_path = "model")

من الجدير بالذكر أن النكهة spark لا تتوافق مع حقيقة أننا ندرب نموذجا في مجموعة Spark ولكن بسبب إطار التدريب الذي تم استخدامه (يمكنك تدريب نموذج تماما باستخدام TensorFlow مع Spark وبالتالي فإن نكهة الاستخدام ستكون tensorflow).

يتم تسجيل النماذج داخل التشغيل الذي يتم تعقبه. هذا يعني أن النماذج متوفرة إما في كل من Azure Databricks والتعلم الآلي من Azure (افتراضي) أو حصريًا في التعلم الآلي من Azure إذا قمت بتكوين تعقب URI للإشارة إليه.

هام

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

تسجيل النماذج في السجل باستخدام MLflow

على عكس التتبع، لا يمكن أن تعمل سجلات النموذج في نفس الوقت في Azure Databricks والتعلم الآلي من Azure. يجب استخدام أحدهما أو الآخر. بشكل افتراضي، يتم استخدام مساحة عمل Azure Databricks لسجلات النماذج؛ ما لم تختر تعيين MLflow Tracking للتتبع في مساحة عمل التعلم الآلي من Azureفحسب، فإن سجل النموذج هو مساحة عمل التعلم الآلي من Azure.

بعد ذلك، بالنظر إلى أنك تستخدم التكوين الافتراضي، سيسجل السطر التالي نموذجًا داخل عمليات التشغيل المقابلة لكل من Azure Databricks والتعلم الآلي من Azure، لكنه سيسجله على Azure Databricks فحسب:

mlflow.spark.log_model(model, artifact_path = "model", 
                       registered_model_name = 'model_name')  
  • في حالة عدم وجود نموذج مسجل يحمل الاسم، يقوم الأسلوب بتسجيل نموذج جديد وإنشاء الإصدار 1 وإرجاع عنصر ModelVersion MLflow.

  • إذا وُجد بالفعل نموذج مسجل بالاسم، يقوم الأسلوب بإنشاء إصدار نموذج جديد وإرجاع عنصر الإصدار.

استخدام سجل التعلم الآلي من Azure مع MLflow

إذا كنت ترغب في استخدام سجل نموذج التعلم الآلي من Azure بدلًا من Azure Databricks، نوصيك بتعيين MLflow Tracking للتتبع في مساحة عمل التعلم الآلي من Azure فحسب. سيؤدي ذلك إلى إزالة غموض مكان تسجيل النماذج ويبسط التعقيد.

ومع ذلك، إذا كنت ترغب في الاستمرار في استخدام قدرات التتبع المزدوج ولكن تسجيل النماذج في Azure التعلم الآلي، يمكنك إرشاد MLflow لاستخدام Azure التعلم الآلي لسجلات النماذج عن طريق تكوين MLflow Model Registry URI. يحتوي URI هذا على نفس التنسيق والقيمة بالضبط التي يتعقبها MLflow URI.

mlflow.set_registry_uri(azureml_mlflow_uri)

إشعار

تم الحصول على قيمة azureml_mlflow_uri بنفس الطريقة التي تم بها تحديدها في Set MLflow Tracking للتتبع في مساحة عمل التعلم الآلي من Azure فحسب

للحصول على مثال كامل حول هذا السيناريو، يرجى التحقق من مثال نماذج التدريب في Azure Databricks ونشرها على Azure التعلم الآلي.

نشر النماذج المسجلة في التعلم الآلي من Azure واستهلاكها

يمكن استهلاك النماذج المسجلة في خدمة التعلم الآلي من Azure باستخدام MLflow كما يلي:

  • نقطة نهاية التعلم الآلي من Azure (في الوقت الفعلي والدفعة): يسمح لك هذا النشر للاستفادة من قدرات نشر التعلم الآلي من Azure للاستدلال في الوقت الحقيقي والدفعة في مثيلات حاوية Azure (ACI) أو Azure Kubernetes (AKS) أو نقاط نهاية الاستدلال المدارة.

  • كائنات نموذج MLFlow أو Pandas UDFs، والتي يمكن استخدامها في دفاتر Azure Databricks في النبية التحتية المتدفقة أو الدفعية.

توزيع النماذج إلى نقاط نهاية التعلم الآلي من Microsoft Azure

يمكنك الاستفادة من azureml-mlflowالمكون الإضافي لتوزيع نموذج لمساحة عمل التعلم الآلي من Microsoft Azure. تحقق من كيفية توزيع صفحة نماذج MLflow للحصول على تفاصيل كاملة حول كيفية توزيع النماذج إلى الأهداف المختلفة.

هام

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

نشر النماذج في ADB لتسجيل الدُفعات باستخدام UDFs

يمكنك اختيار نظام مجموعات Azure Databricks لتسجيل الدُفعة. من خلال الاستفادة من Mlflow، يمكنك حل أي نموذج من السجل الذي تتصل به. ستستخدم عادة إحدى الطريقتين التاليتين:

  • إذا تم تدريب النموذج الخاص بك وبنائه باستخدام مكتبات Spark (مثل MLLib)، فاستخدم mlflow.pyfunc.spark_udf لتحميل نموذج واستخدمه ك Spark Pandas UDF لتسجيل بيانات جديدة.
  • إذا لم يتم تدريب النموذج الخاص بك أو إنشاؤه باستخدام مكتبات Spark، فاستخدم mlflow.pyfunc.load_model النموذج أو mlflow.<flavor>.load_model لتحميله في برنامج تشغيل نظام المجموعة. لاحظ أنه بهذه الطريقة، يجب تنسيق أي توازي أو توزيع عمل تريد حدوثه في نظام المجموعة من قبلك. لاحظ أيضا أن MLflow لا يقوم بتثبيت أي مكتبة يتطلبها نموذجك للتشغيل. يجب تثبيت هذه المكتبات في نظام المجموعة قبل تشغيلها.

يوضح المثال التالي كيفية تحميل نموذج من السجل المسمى uci-heart-classifier واستخدامه ك Spark Pandas UDF لتسجيل بيانات جديدة.

from pyspark.sql.types import ArrayType, FloatType 

model_name = "uci-heart-classifier"
model_uri = "models:/"+model_name+"/latest"

#Create a Spark UDF for the MLFlow model 
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri) 

تلميح

تحقق من تحميل النماذج من السجل لمزيد من الطرق للإشارة إلى النماذج من السجل.

بمجرد تحميل النموذج، يمكنك استخدام لتسجيل بيانات جديدة:

#Load Scoring Data into Spark Dataframe 
scoreDf = spark.table({table_name}).where({required_conditions}) 

#Make Prediction 
preds = (scoreDf 
           .withColumn('target_column_name', pyfunc_udf('Input_column1', 'Input_column2', ' Input_column3', …)) 
        ) 

display(preds) 

تنظيف الموارد

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

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

  1. من مدخل Microsoft Azure، حدد Resource groups من أقصى الجانب الأيمن.

    Delete in the Azure portal

  2. من القائمة، حدد مجموعة الموارد التي أنشأتها.

  3. حدد Delete resource group.

  4. أدخل اسم مجموعة الموارد. ثم حدد حذف.

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