تشغيل مشاريع MLflow على ستريكات البيانات Azure

Project MLflow هو شكل لرمز علم بيانات التعبئة والتغليف بطريقة قابلة لإعادة الاستخدام والتكرار. يتضمن مكون مشاريع MLflow API وأدوات سطر الأوامر لتشغيل المشاريع، والتي تتكامل أيضا مع مكون التتبع لتسجيل المعلمات تلقائيا والالتزام git من التعليمات البرمجية المصدر الخاصة بك لإعادة الإنتاج.

توضح هذه المقالة تنسيق Project MLflow وكيفية تشغيل مشروع MLflow عن بعد على مجموعات Azure Databricks باستخدام MLflow CLI، مما يجعل من السهل توسيع نطاق رمز علم البيانات عموديا.

تنسيق مشروع MLflow

يمكن التعامل مع أي دليل محلي أو مستودع Git كمشروع تدفق MLflow. تعرف الاتفاقيات التالية المشروع:

  • اسم المشروع ’ هو اسم الدليل.
  • يتم تحديد بيئة Conda في conda.yaml ، إذا كانت موجودة. إذا لم conda.yaml يكن هناك ملف، يستخدم MLflow بيئة كوندا تحتوي على بيثون فقط (على وجه التحديد، أحدث بيثون المتاحة لConda) عند تشغيل المشروع.
  • يمكن أن يكون أي .py أو ملف في المشروع نقطة .sh إدخال، مع عدم وجود معلمات تم تعريفها بشكل صريح. عند تشغيل مثل هذا الأمر مع مجموعة من المعلمات، MLflow يمر كل معلمة على سطر الأوامر باستخدام --key <value> بناء الجملة.

يمكنك تحديد المزيد من الخيارات عن طريق إضافة ملف MLproject وهو ملف نصي في بناء جملة YAML. مثال ملف MLproject يبدو كما يلي:

name: My Project

conda_env: my_env.yaml

entry_points:
  main:
    parameters:
      data_file: path
      regularization: {type: float, default: 0.1}
    command: "python train.py -r {regularization} {data_file}"
  validate:
    parameters:
      data_file: path
    command: "python validate.py {data_file}"

تشغيل مشروع تدفق MLflow

لتشغيل مشروع MLflow على كتلة Azure Databricks في مساحة العمل الافتراضية، استخدم الأمر:

mlflow run <uri> -b databricks --backend-config <json-new-cluster-spec>

حيث <uri> هو مستودع Git URI أو مجلد يحتوي على مشروع MLflow وهو مستند <json-new-cluster-spec> JSON يحتوي على <uri>. يجب أن يكون Git URI من النموذج: https://github.com/<repo>#<project-folder> .

مثال مواصفات الكتلة:

{
  "spark_version": "7.3.x-scala2.12",
  "num_workers": 1,
  "node_type_id": "Standard_DS3_v2"
}

إذا كنت بحاجة إلى تثبيت المكتبات على العامل، استخدم “ تنسيق مواصفات نظام ” المجموعة. لاحظ أنه يجب تحميل العجلات إلى DBFS و المحدد ك pypi تبعيات. على سبيل المثال:

{
  "new_cluster": {
    "spark_version": "7.3.x-scala2.12",
    "num_workers": 1,
    "node_type_id": "Standard_DS3_v2"
  },
  "libraries": [
    {
      "pypi": {
        "package": "tensorflow"
      }
    },
    {
      "pypi": {
         "package": "/dbfs/path_to_my_lib.whl"
      }
    }
  ]
}

هام

  • .egg.jarوالتبعيات غير معتمدة لمشاريع تدفق MLflow.
  • تنفيذ مشاريع MLflow مع بيئات Docker غير معتمد.
  • يجب استخدام مواصفات نظام مجموعة جديدة عند تشغيل Project MLflow على Databricks. تشغيل المشاريع مقابل الكتل الموجودة غير معتمد.

استخدام سباركر

لاستخدام SparkR في Project تشغيل MLflow، يجب أولا تثبيت رمز المشروع واستيراد SparkR كما يلي:

if (file.exists("/databricks/spark/R/pkg")) {
    install.packages("/databricks/spark/R/pkg", repos = NULL)
} else {
    install.packages("SparkR")
}

library(SparkR)

يمكن للمشروع تهيئة جلسة SparkR واستخدام SparkR كالمعتاد:

sparkR.session()
...

مثل

يوضح هذا المثال كيفية إنشاء تجربة وتشغيل مشروع البرنامج التعليمي MLflow على كتلة Azure Databricks وعرض إخراج تشغيل المهمة وعرض التشغيل في التجربة.

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

  1. تثبيت MLflow باستخدام pip install mlflow .
  2. تثبيت وتكوين Databricks CLI. مطلوب آلية مصادقة CLI Databricks لتشغيل مهام على كتلة Azure Databricks.

الخطوة 1: إنشاء تجربة

  1. في مساحة العمل، حدد إنشاء تجربة تدفق MLflow.

  2. في حقل الاسم، أدخِل Tutorial.

  3. انقر فوق ⁧⁩Create⁧⁩. لاحظ معرف التجربة. في هذا المثال، هو 14622565 .

    Experiment ID

الخطوة 2: تشغيل مشروع البرنامج التعليمي MLflow

الخطوات التالية إعداد MLFLOW_TRACKING_URI متغير البيئة وتشغيل المشروع، وتسجيل معلمات التدريب والمقاييس والنموذج المدرب إلى التجربة المشار إليها في الخطوة السابقة:

  1. تعيين MLFLOW_TRACKING_URI متغير البيئة إلى مساحة عمل Azure Databricks.

    export MLFLOW_TRACKING_URI=databricks
    
  2. تشغيل مشروع البرنامج التعليمي MLflow، وتدريب نموذج النبيذ. استبدل <experiment-id> معرف التجربة الذي لاحظته في الخطوة السابقة.

    mlflow run https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine -b databricks --backend-config cluster-spec.json --experiment-id <experiment-id>
    
    === Fetching project from https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine into /var/folders/kc/l20y4txd5w3_xrdhw6cnz1080000gp/T/tmpbct_5g8u ===
    === Uploading project to DBFS path /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ===
    === Finished uploading project to /dbfs/mlflow-experiments/<experiment-id>/projects-code/16e66ccbff0a4e22278e4d73ec733e2c9a33efbd1e6f70e3c7b47b8b5f1e4fa3.tar.gz ===
    === Running entry point main of project https://github.com/mlflow/mlflow#examples/sklearn_elasticnet_wine on Databricks ===
    === Launched MLflow run as Databricks job run with ID 8651121. Getting run status page URL... ===
    === Check the run's status at https://<databricks-instance>#job/<job-id>/run/1 ===
    
  3. نسخ URL https://<databricks-instance>#job/<job-id>/run/1 في السطر الأخير من إخراج تشغيل MLflow.

الخطوة 3: عرض تشغيل مهمة "ستريك البيانات أزور"

  1. افتح URL الذي قمت بنسخه في الخطوة السابقة في مستعرض لعرض إخراج تشغيل وظيفة Azure Databricks:

    Job run output

الخطوة 4: عرض التجربة وتفاصيل تشغيل MLflow

  1. انتقل إلى التجربة في مساحة عمل Azure Databricks.

    Go to experiment

  2. انقر فوق التجربة.

    View experiment

  3. لعرض تفاصيل التشغيل، انقر فوق ارتباط في العمود التاريخ.

    Run details

يمكنك عرض السجلات من التشغيل الخاص بك عن طريق النقر فوق الارتباط Logs في الحقل إخراج المهمة.

الموارد

على سبيل المثال مشاريع MLflow، راجع مكتبة تطبيقات MLflow، التي تحتوي على مستودع للمشاريع الجاهزة لتشغيلها بهدف تسهيل تضمين وظائف ML في التعليمات البرمجية الخاصة بك.