Menggunakan Azure Pipelines dengan Azure Pembelajaran Mesin
Layanan Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019
Anda dapat menggunakan alur Azure DevOps untuk mengotomatiskan siklus hidup pembelajaran mesin. Beberapa operasi yang dapat Anda otomatisasi adalah:
- Persiapan data (ekstrak, transformasi, operasi pemuatan)
- Melatih model pembelajaran mesin dengan peluasan skala dan peningkatan skala sesuai permintaan
- Penyebaran model pembelajaran mesin sebagai layanan web publik atau privat
- Memantau model pembelajaran mesin yang disebarkan (seperti untuk performa atau analisis penyimpangan data)
Artikel ini mengajarkan cara membuat Azure Pipeline yang membangun dan menyebarkan model pembelajaran mesin ke Azure Pembelajaran Mesin.
Tutorial ini menggunakan Ekstensi Azure Pembelajaran Mesin Python SDK v2 dan Azure CLI ML v2.
Prasyarat
- Selesaikan Buat sumber daya untuk memulai :
- Membuat ruang kerja
- Membuat kluster komputasi berbasis cloud untuk digunakan untuk melatih model Anda
- Ekstensi Azure Pembelajaran Mesin untuk Azure Pipelines. Ekstensi ini dapat diinstal dari marketplace Visual Studio di https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.azureml-v2.
Langkah 1: Dapatkan kode
Fork repositori berikut pada GitHub:
https://github.com/azure/azureml-examples
Langkah 2: Masuk ke Azure Pipelines
Masuk ke Azure Pipelines. Setelah Anda masuk, browser Anda masuk ke https://dev.azure.com/my-organization-name
dan menampilkan dasbor Azure DevOps Anda.
Dalam organisasi yang Anda pilih, buat proyek. Jika Anda tidak memiliki proyek apa pun di organisasi Anda, Anda melihat layar Buat proyek untuk memulai. Jika tidak, pilih tombol Proyek Baru di sudut kanan atas dasbor.
Langkah 3: Membuat koneksi layanan
Anda dapat menggunakan koneksi layanan yang ada.
Anda memerlukan koneksi Azure Resource Manager untuk mengautentikasi dengan portal Azure.
Di Azure DevOps, pilih Project Pengaturan dan buka halaman Koneksi layanan.
Pilih + Koneksi layanan baru dan pilih Azure Resource Manager.
Pilih metode autentikasi default, Perwakilan layanan (otomatis).
Buat koneksi layanan Anda. Atur tingkat cakupan, langganan, grup sumber daya, dan nama koneksi pilihan Anda.
Langkah 4: Membuat alur
Buka Alur, lalu pilih Alur baru.
Lakukan langkah-langkah wizard dengan terlebih dahulu memilih GitHub sebagai lokasi kode sumber Anda.
Anda dapat diarahkan ke GitHub untuk masuk. Jika demikian, masukkan informasi masuk GitHub Anda.
Saat Anda melihat daftar repositori, pilih repositori Anda.
Anda mungkin diarahkan ke GitHub untuk menginstal aplikasi Azure Pipelines. Jika demikian, pilih Setujui & instal.
Pilih alur Starter. Anda akan memperbarui templat alur pemula.
Langkah 5: Bangun alur YAML Anda untuk mengirimkan pekerjaan Azure Pembelajaran Mesin
Hapus alur pemula dan ganti dengan kode YAML berikut. Dalam alur ini, Anda akan:
- Gunakan tugas versi Python untuk menyiapkan Python 3.8 dan menginstal persyaratan SDK.
- Gunakan tugas Bash untuk menjalankan skrip bash untuk Azure Pembelajaran Mesin SDK dan CLI.
- Gunakan tugas Azure CLI untuk mengirimkan pekerjaan Azure Pembelajaran Mesin.
Pilih tab berikut bergantung pada apakah Anda menggunakan koneksi layanan Azure Resource Manager atau koneksi layanan generik. Dalam YAML alur, ganti nilai variabel dengan sumber daya Anda.
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"
Langkah 6: Tunggu pekerjaan Azure Pembelajaran Mesin selesai
Di langkah 5, Anda menambahkan pekerjaan untuk mengirimkan pekerjaan Pembelajaran Mesin Azure. Dalam langkah ini, Anda menambahkan pekerjaan lain yang menunggu pekerjaan Azure Pembelajaran Mesin selesai.
Jika Anda menggunakan koneksi layanan Azure Resource Manager, Anda dapat menggunakan ekstensi "Pembelajaran Mesin". Anda dapat mencari ekstensi ini di Marketplace ekstensi Azure DevOps atau langsung masuk ke ekstensi. Instal ekstensi "Pembelajaran Mesin".
Penting
Jangan menginstal ekstensi Pembelajaran Mesin (klasik) secara tidak sengaja; ini adalah ekstensi lama yang tidak menyediakan fungsionalitas yang sama.
Di jendela Tinjauan alur, tambahkan Pekerjaan Server. Di bagian langkah-langkah pekerjaan, pilih Perlihatkan asisten dan cari AzureML. Pilih tugas Tunggu Pekerjaan AzureML dan isi informasi untuk pekerjaan tersebut.
Tugas ini memiliki empat input: Service Connection
, , Azure Resource Group Name
AzureML Workspace Name
dan AzureML Job Name
. Isi input ini. YAML yang dihasilkan untuk langkah-langkah ini mirip dengan contoh berikut:
Catatan
- Tugas tunggu pekerjaan Azure Pembelajaran Mesin berjalan pada pekerjaan server, yang tidak menggunakan sumber daya kumpulan agen yang mahal dan tidak memerlukan biaya tambahan. Pekerjaan server (ditunjukkan oleh
pool: server
) berjalan pada komputer yang sama dengan alur Anda. Untuk informasi selengkapnya, lihat Pekerjaan server. - Satu tugas tunggu pekerjaan Azure Pembelajaran Mesin hanya dapat menunggu pada satu pekerjaan. Anda harus menyiapkan tugas terpisah untuk setiap pekerjaan yang ingin Anda tunggu.
- Tugas tunggu pekerjaan Azure Pembelajaran Mesin dapat menunggu maksimal 2 hari. Ini adalah batas keras yang ditetapkan oleh Azure DevOps Pipelines.
- 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)
Langkah 7: Kirim alur dan verifikasi eksekusi alur Anda
Pilih Simpan dan jalankan. Alur akan menunggu pekerjaan Azure Pembelajaran Mesin selesai, dan mengakhiri tugas dengan WaitForJobCompletion
status yang sama dengan pekerjaan Azure Pembelajaran Mesin. Misalnya: Tugas Succeeded
Azure Pembelajaran Mesin == Tugas Azure DevOps di bawah WaitForJobCompletion
pekerjaan Succeeded
Azure Pembelajaran Mesin pekerjaan Failed
== Tugas Azure DevOps di bawah WaitForJobCompletion
pekerjaan Failed
Azure Pembelajaran Mesin pekerjaan Cancelled
== Tugas Azure DevOps di bawah WaitForJobCompletion
pekerjaanCancelled
Tip
Anda dapat melihat pekerjaan Azure Pembelajaran Mesin lengkap di studio Azure Pembelajaran Mesin.
Membersihkan sumber daya
Jika Anda tidak akan terus menggunakan alur Anda, hapus proyek Azure DevOps Anda. Di portal Azure, hapus grup sumber daya dan instans Azure Pembelajaran Mesin Anda.