Aracılığıyla paylaş


Azure Machine Learning ile Azure Pipelines'i kullanma

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Makine öğrenmesi yaşam döngüsünü otomatikleştirmek için Bir Azure DevOps işlem hattı kullanabilirsiniz. Otomatikleştirebileceğiniz işlemlerden bazıları şunlardır:

  • Veri hazırlama (ayıklama, dönüştürme, yükleme işlemleri).
  • İsteğe bağlı ölçeği genişletme ve ölçeği artırma ile makine öğrenmesi modellerini eğitin.
  • Makine öğrenmesi modellerinin genel veya özel web hizmetleri olarak dağıtımı.
  • Dağıtılan makine öğrenmesi modellerini izleme (performans veya veri kayması analizi gibi).

Bu makalede, bir makine öğrenmesi modeli oluşturan ve bunu Azure Machine Learning'e dağıtan bir Azure işlem hattının nasıl oluşturulacağı açıklanır.

Bu öğreticide Azure Machine Learning Python SDK v2 ve Azure CLI ML uzantısı v2 kullanılır.

Önkoşullar

1. Adım: Kodu alma

GitHub'dan aşağıdaki depoyu fork edin.

https://github.com/azure/azureml-examples

Adım2: Proje oluşturun

Azure'da oturum açın. Azure DevOps kuruluşlarını arayın ve seçin. Kuruluşlarımı görüntüle'yi seçin. Kullanmak istediğiniz kuruluşu seçin.

Seçtiğiniz kuruluş içinde bir proje oluşturun. Kuruluşunuzda hiç proje yoksa Başlamak için proje oluştur ekranını görürsünüz. Aksi takdirde, panonun sağ üst köşesindeki Yeni Proje düğmesini seçin.

3. Adım: Hizmet bağlantısı oluşturma

Mevcut bir hizmet bağlantısını kullanabilirsiniz.

Azure portalında kimlik doğrulaması yapmak için bir Azure Resource Manager bağlantısına ihtiyacınız vardır.

  1. Azure DevOps'ta Proje ayarları'nı ve ardından Hizmet bağlantıları'nı seçin.

  2. Hizmet bağlantısı oluştur'u, Azure Resource Manager'ı ve ardından İleri'yi seçin.

  3. Kimlik türü ve Kimlik Bilgileri için varsayılanları kullanın.

  4. Hizmet bağlantınızı oluşturun. Tercih ettiğiniz kapsam düzeyini, aboneliği, kaynak grubunu ve bağlantı adını ayarlayın.

    ARM hizmeti bağlantısının ekran görüntüsü.

4. Adım: İşlem hattı oluşturma

  1. İşlem Hatları'na gidin ve İşlem Hattı Oluştur'u seçin.

  2. Kaynak kodunuzun konumu olarak GitHub'ı seçin.

  3. Oturum açmak için GitHub'a yönlendirilebilirsiniz. Kullanıyorsanız GitHub kimlik bilgilerinizi girin.

  4. Depo listesini gördüğünüzde deponuzu seçin.

  5. Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Kullanıyorsanız Onayla ve yükle'yi seçin.

  6. Starter işlem hattını seçin. Başlangıç işlem hattı şablonunu güncelleştireceksiniz.

5. Adım: Azure Machine Learning işini göndermek için YAML işlem hattı oluşturma

Başlangıç işlem hattını silin ve aşağıdaki YAML koduyla değiştirin. Bu işlem hattında şunları yapacaksınız:

  • Python 3.8'i ayarlamak ve SDK gereksinimlerini yüklemek için Python sürüm görevini kullanın.
  • Bash görevini kullanarak Azure Machine Learning SDK'sı ve CLI için bash betikleri çalıştırın.
  • Azure Machine Learning işi göndermek için Azure CLI görevini kullanın.

Azure Resource Manager hizmet bağlantısı mı yoksa genel hizmet bağlantısı mı kullandığınıza bağlı olarak aşağıdaki sekmelerden birini seçin. İşlem hattı YAML'sinde değişkenlerin değerlerini kaynaklarınıza karşılık gelen değerlerle değiştirin.

name: submit-azure-machine-learning-job

trigger:
- none

variables:
  service-connection: 'machine-learning-connection' # replace with your service connection name
  resource-group: 'machinelearning-rg' # replace with your resource group name
  workspace: 'docs-ws' # replace with your workspace name

jobs:
- job: SubmitAzureMLJob
  displayName: Submit AzureML Job
  timeoutInMinutes: 300
  pool:
    vmImage: ubuntu-latest
  steps:
  - task: UsePythonVersion@0
    displayName: Use Python >=3.10
    inputs:
      versionSpec: '>=3.10'

  - bash: |
      set -ex

      az version
      az extension add -n ml
    displayName: 'Add AzureML Extension'

  - task: AzureCLI@2
    name: submit_azureml_job_task
    displayName: Submit AzureML Job Task
    inputs:
      azureSubscription: $(service-connection)
      workingDirectory: 'cli/jobs/pipelines-with-components/nyc_taxi_data_regression'
      scriptLocation: inlineScript
      scriptType: bash
      inlineScript: |
      
        # submit component job and get the run name
        job_name=$(az ml job create --file single-job-pipeline.yml -g $(resource-group) -w $(workspace) --query name --output tsv)

        # set output variable for next task
        echo "##vso[task.setvariable variable=JOB_NAME;isOutput=true;]$job_name"

6. Adım: Azure Machine Learning işinin tamamlanmasını bekleyin

5. adımda, Azure Machine Learning işi göndermek için bir iş eklediniz. Bu adımda, Azure Machine Learning işinin tamamlanmasını bekleyen başka bir iş eklersiniz.

Resource Manager hizmet bağlantısı kullanıyorsanız Machine Learning uzantısını kullanabilirsiniz. Bu uzantıyı Azure DevOps uzantıları Marketi'nde arayabilir veya doğrudan uzantı sayfasına gidebilirsiniz. Machine Learning uzantısını yükleyin.

Önemli

Machine Learning (klasik) uzantısını yüklemeyin. Aynı işlevselliği sağlamayan eski bir uzantıdır.

İşlem hattı gözden geçirme penceresinde bir Sunucu İşi ekleyin. İşin adımlar bölümünde Yardımcıyı göster'i seçin ve AzureML'yi arayın. AzureML İş Bekleme görevini seçin ve işin bilgilerini sağlayın.

Görevin dört girişi vardır: Service Connection, Azure Resource Group Name, AzureML Workspace Nameve AzureML Job Name. Bu girişleri sağlayın. Bu adımlar için elde edilen YAML, aşağıdaki örneğe benzer:

Not

  • Azure Machine Learning işi bekleme görevi, pahalı aracı havuzu kaynaklarını kullanmayan ve ek ücret gerektirmeyen bir sunucu işinde çalışır. Sunucu işleri (tarafından pool: serverbelirtilir) işlem hattınızla aynı makinede çalışır. Daha fazla bilgi için bkz . Sunucu işleri.
  • Azure Machine Learning iş bekleme görevi yalnızca bir işi bekleyebilir. Beklemek istediğiniz her iş için ayrı bir görev ayarlamanız gerekir.
  • Azure Machine Learning görevi bekleme süreci en fazla iki gün sürebilir. Bu sınır, Azure DevOps işlem hatları tarafından ayarlanan sabit bir sınırdır.
- job: WaitForAzureMLJobCompletion
  displayName: Wait for AzureML Job Completion
  pool: server
  timeoutInMinutes: 0
  dependsOn: SubmitAzureMLJob
  variables: 
    # Save the name of the azureMl job submitted in the previous step to a variable. It will be used as an input to the AzureML Job Wait task.
    azureml_job_name_from_submit_job: $[ dependencies.SubmitAzureMLJob.outputs['submit_azureml_job_task.JOB_NAME'] ] 
  steps:
  - task: AzureMLJobWaitTask@1
    inputs:
      serviceConnection: $(service-connection)
      resourceGroupName: $(resource-group)
      azureMLWorkspaceName: $(workspace)
      azureMLJobName: $(azureml_job_name_from_submit_job)

7. Adım: İşlem hattını gönderme ve işlem hattı çalıştırmanızı doğrulama

Kaydet ve çalıştır'ı seçin. İşlem hattı, Azure Machine Learning işinin tamamlanmasını bekler ve görevi WaitForJobCompletion Azure Machine Learning işiyle aynı durumla sona erdirecektir. Örneğin:

Azure Machine Learning işi Succeeded == Azure DevOps işi WaitForJobCompletion görevi Succeeded

Azure Machine Learning işi Failed == Azure DevOps işi WaitForJobCompletion görevi Failed

Azure Machine Learning işi Cancelled == Azure DevOps işi WaitForJobCompletion görevi Cancelled

İpucu

Azure Machine Learning işinin tamamını Azure Machine Learning stüdyosu görüntüleyebilirsiniz.

Kaynakları temizleme

İşlem hattınızı kullanmaya devam etmeyecekseniz Azure DevOps projenizi silin. Azure portalında kaynak grubunuzu ve Azure Machine Learning örneğinizi silin.