تشغيل مشاريع MLflow على Azure Databricks

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

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

تنسيق مشروع MLflow

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

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

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

name: My Project

python_env: python_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> هو URI لمستودع Git أو مجلد يحتوي على مشروع MLflow وهو <json-new-cluster-spec> مستند JSON يحتوي على بنية new_cluster. يجب أن يكون Git URI بالشكل: https://github.com/<repo>#<project-folder>.

مثال على مواصفات نظام المجموعة هو:

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

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

استخدام SparkR

لاستخدام SparkR في تشغيل مشروع 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. مطلوب آلية مصادقة Databricks CLI لتشغيل المهام على نظام مجموعة Azure Databricks.

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

  1. في مساحة العمل، حدد Create > MLflow Experiment.

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

  3. انقر فوق إنشاء. لاحظ معرف التجربة. في هذا المثال، يكون .14622565

    معرف التجربة

الخطوة 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: عرض تشغيل مهمة Azure Databricks

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

    إخراج تشغيل الوظيفة

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

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

    الانتقال إلى التجربة

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

    عرض التجربة

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

    تفاصيل التشغيل

يمكنك عرض السجلات من التشغيل بالنقر فوق ارتباط Logs في حقل Job Output.

الموارد

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