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 modelini derleyen ve Azure Machine Learning'e dağıtan bir Azure Pipeline oluşturmayı öğreneceksiniz.
Bu öğreticide Azure Machine Learning Python SDK v2 ve Azure CLI ML uzantısı v2 kullanılır.
Önkoşullar
- Başlamak için Kaynak oluştur'u tamamlayın:
- Çalışma alanı oluşturma
- Modelinizi eğitmek için kullanılacak bulut tabanlı bir işlem kümesi oluşturma
- Azure Pipelines için Azure Machine Learning uzantısı. Bu uzantı, konumundaki https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.azureml-v2Visual Studio marketinden yüklenebilir.
1. Adım: Kodu alma
GitHub'da aşağıdaki deponun çatalını oluşturun:
https://github.com/azure/azureml-examples
2. Adım: Azure Pipelines'ta oturum açma
Azure Pipelines'da oturum açın. Oturum açtığınızda tarayıcınız Azure https://dev.azure.com/my-organization-name
DevOps panonuzu görüntüler.
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.
Azure DevOps'ta Proje Ayarları'nı seçin ve Hizmet bağlantıları sayfasını açın.
Hizmet bağlantısı oluştur'u ve ardından Azure Resource Manager'ı seçin.
Hizmet sorumlusu (otomatik) adlı varsayılan kimlik doğrulama yöntemini seçin.
Hizmet bağlantınızı oluşturun. Tercih ettiğiniz kapsam düzeyini, aboneliği, kaynak grubunu ve bağlantı adını ayarlayın.
4. Adım: İşlem hattı oluşturma
İşlem hatları'na gidin ve işlem hattı oluştur'u seçin.
İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını uygulayın.
Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.
Depo listesini gördüğünüzde deponuzu seçin.
Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Öyleyse Onayla ve yükle'yi seçin.
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ınızı 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 sekmeleri seçin. İşlem hattı YAML'sinde değişkenlerin değerini kaynaklarınızla 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.8
inputs:
versionSpec: '>=3.8'
- 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.
Azure 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ıya gidebilirsiniz. "Machine Learning" uzantısını yükleyin.
Önemli
Machine Learning (klasik) uzantısını yanlışlıkla 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 doldurun.
Görevin dört girişi vardır: Service Connection
, Azure Resource Group Name
ve AzureML Workspace Name
AzureML Job Name
. Bu girişleri doldurun. 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: server
belirtilir) işlem hattınızla aynı makinede çalışır. Daha fazla bilgi için bkz . Sunucu işleri. - Bir Azure Machine Learning işi bekleme görevi yalnızca bir işte bekleyebilir. Beklemek istediğiniz her iş için ayrı bir görev ayarlamanız gerekir.
- Azure Machine Learning işi bekleme görevi en fazla 2 gün bekleyebilir. Bu, Azure DevOps Pipelines tarafından ayarlanan sabit bir sınırdır.
- job: WaitForAzureMLJobCompletion
displayName: Wait for AzureML Job Completion
pool: server
timeoutInMinutes: 0
dependsOn: SubmitAzureMLJob
variables:
# We are saving the name of azureMl job submitted in previous step to a variable and it will be used as an inut 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 altındaki görevi WaitForJobCompletion
Azure Machine Learning işiyle aynı durumla sona erdirecektir. Örneğin: Azure Machine Learning işi == Azure Machine Learning işi Succeeded
altında Succeeded
WaitForJobCompletion
Azure DevOps Görevi == Azure Machine Learning Cancelled
işi Failed
altında WaitForJobCompletion
Failed
Azure DevOps Görevi == azure devops görevi iş altında WaitForJobCompletion
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.