MLflow Projelerini Azure Databricks

MLflow Project, veri bilimi kodunu yeniden kullanılabilir ve yeniden tekrarlanabilir bir şekilde paketlemek için bir biçimdir. MLflow Projeleri bileşeni, projeleri çalıştırmaya yönelik bir API ve komut satırı araçları içerir. Ayrıca, yenidenlanabilirlik için kaynak kodunuzun parametrelerini ve git işlemesini otomatik olarak kaydetmek için İzleme bileşeniyle tümleştirilmiştir.

Bu makalede MLflow Project biçimi ve veri bilimi kodunuzu dikey olarak ölçeklendirmeyi kolaylaştıran MLflow CLI'sini kullanarak MLflow projesini Azure Databricks kümelerinde uzaktan çalıştırma açıklanmıştır.

MLflow proje biçimi

Herhangi bir yerel dizin veya Git deposu MLflow projesi olarak kabul edilebilir. Aşağıdaki kural bir projeyi tanımlar:

  • Projenin adı dizinin adıdır.
  • Varsa Conda ortamı conda.yaml içinde belirtilir. Hiçbir dosya yoksa MLflow, projeyi çalıştırarak yalnızca Python (özellikle Conda için kullanılabilen en son conda.yaml Python) içeren bir Conda ortamı kullanır.
  • Proje içinde herhangi bir veya dosyası, açıkça hiçbir parametre .py .sh bildirilene sahip olmayan bir giriş noktası olabilir. Böyle bir komutu bir parametre kümesiyle çalıştırsanız, MLflow söz dizimi kullanarak her parametreyi komut satırına --key <value> iletir.

YAML söz dizimsinde bir metin dosyası olan MLproject dosyası ekleyerek daha fazla seçenek belirtirsiniz. Örnek bir MLproject dosyası şöyledir:

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 projesi çalıştırma

Varsayılan çalışma alanında bir Azure Databricks MLflow projesi çalıştırmak için şu komutu kullanın:

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

burada, MLflow projesi içeren bir Git deposu URI'si veya klasörüdür ve küme <uri> <json-new-cluster-spec> belirtimi içeren bir JSON belgesidir. Git URI'si şu şekildedir: https://github.com/<repo>#<project-folder> .

Örnek küme belirtimi şöyledir:

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

Çalışana kitaplık yüklemeniz gerekirse "küme belirtimi" biçimini kullanın. Tekerleklerin DBFS'ye yük olmalı ve bağımlılık olarak pypi belirtilmelidir. Örneğin:

{
  "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"
      }
    }
  ]
}

Önemli

  • .egg ve .jar bağımlılıkları MLflow projeleri için desteklenmiyor.
  • Docker ortamları ile MLflow projeleri için yürütme desteklenmiyor.
  • Databricks üzerinde bir MLflow kümesi Project küme belirtimi kullan gerekir. Mevcut kümelerde Proje çalıştırma desteklenmiyor.

SparkR kullanma

SparkR'i bir MLflow Project çalıştırmak için, proje kodunuzun önce SparkR'i aşağıdaki gibi yüklemesi ve içeri aktarması gerekir:

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

library(SparkR)

Projeniz daha sonra bir SparkR oturumu başlatarak SparkR'ı normal şekilde kullanabilir:

sparkR.session()
...

Örnek

Bu örnekte deneme oluşturma, MLflow öğretici projesini bir Azure Databricks kümesinde çalıştırma, iş çalıştırması çıkışını görüntüleme ve çalıştırmayı denemede görüntüleme hakkında bilgi ve destek ve destek yer ala.

Önkoşullar

  1. kullanarak MLflow'ı pip install mlflow yükleyin.
  2. Databricks CLI'yi yükleyin ve yapılandırabilirsiniz. Databricks CLI kimlik doğrulama mekanizması, bir kümede işleri çalıştırmak Azure Databricks gerekir.

1. Adım: Deneme oluşturma

  1. Çalışma alanında Create > MLflow Experiment (MLflow Denemesi) öğesini seçin.

  2. Ad alanına Tutorial girin.

  3. Oluştur’a tıklayın. Deneme Kimliği'ne dikkatin. Bu örnekte bu değer 14622565’dur.

    Deneme Kimliği

2. Adım: MLflow öğretici projesini çalıştırma

Aşağıdaki adımlar ortam değişkenlerini ayarp projeyi çalıştırarak eğitim parametrelerini, ölçümlerini ve eğitilen modeli önceki adımda not verilen MLFLOW_TRACKING_URI denemeye kaydeder:

  1. Ortam MLFLOW_TRACKING_URI değişkenlerini çalışma alanına Azure Databricks ayarlayın.

    export MLFLOW_TRACKING_URI=databricks
    
  2. MLflow öğretici projesini çalıştırın ve bir şarap modeli eğitin. yerine <experiment-id> önceki adımda not edinen Deneme Kimliğini girin.

    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. https://<databricks-instance>#job/<job-id>/run/1MLflow çalıştırma çıkışının son satırına URL'yi kopyalayın.

3. Adım: Azure Databricks çalıştırmayı görüntüleme

  1. Önceki adımda kopyalanan URL'yi tarayıcıda açıp iş çalıştırması Azure Databricks açın:

    İş çalıştırma çıkışı

4. Adım: Denemeyi ve MLflow çalıştırma ayrıntılarını görüntüleme

  1. Azure Databricks çalışma alanınıza gidin.

    Denemeye git

  2. Denemeye tıklayın.

    Denemeyi görüntüleme

  3. Çalıştırma ayrıntılarını görüntülemek için Tarih sütunundaki bir bağlantıya tıklayın.

    Çalıştırma ayrıntıları

İş Çıktısı alanında Günlükler bağlantısına tıklayarak çalıştırmadan günlükleri görüntüleyebilirsiniz.

Kaynaklar

Bazı örnek MLflow projeleri için, kodunuza uygulama işlevselliği eklemeyi kolaylaştırmaya yönelik, çalıştırmaya hazır projelerin bir deposunu içeren MLflowUygulama Kitaplığı'ML bakın.