Bagikan melalui


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 menjelaskan cara membuat alur Azure yang membangun model pembelajaran mesin dan menyebarkannya ke Azure Machine Learning.

Tutorial ini menggunakan Ekstensi Azure Pembelajaran Mesin Python SDK v2 dan Azure CLI ML v2.

Prasyarat

Langkah 1: Dapatkan kode

Fork repositori berikut dari GitHub:

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

Langkah 2: Buat proyek

Masuk ke Azure. Cari dan pilih organisasi Azure DevOps. Pilih Tampilkan organisasi saya. Pilih organisasi yang ingin Anda gunakan.

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 Microsoft Azure.

  1. Di Azure DevOps, pilih Pengaturan proyek, lalu pilih Koneksi layanan.

  2. Pilih Buat koneksi layanan, pilih Azure Resource Manager, lalu pilih Berikutnya.

  3. Gunakan nilai default untuk Jenis identitas dan Kredensial.

  4. Buat koneksi layanan Anda. Atur tingkat cakupan, langganan, grup sumber daya, dan nama koneksi pilihan Anda.

    Cuplikan layar koneksi layanan ARM.

Langkah 4: Membuat alur

  1. Buka Alur, lalu pilih Buat Alur.

  2. Pilih GitHub sebagai lokasi kode sumber Anda.

  3. Anda dapat diarahkan ke GitHub untuk masuk. Jika sudah, masukkan kredensial GitHub Anda.

  4. Saat Anda melihat daftar repositori, pilih repositori Anda.

  5. Anda mungkin diarahkan ke GitHub untuk menginstal aplikasi Azure Pipelines. Jika sudah, pilih Setujui & instal.

  6. Pilih alur Starter. Anda memperbarui templat alur pemula.

Langkah 5: Buat alur YAML untuk mengirimkan pekerjaan Azure Machine Learning

Hapus alur pemula dan ganti dengan kode YAML berikut. Dalam alur kerja ini, Anda:

  • Gunakan tugas versi Python untuk menyiapkan Python 3.10 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 salah satu tab berikut, bergantung pada apakah Anda menggunakan koneksi layanan Azure Resource Manager atau koneksi layanan generik. Dalam YAML alur kerja, ganti nilai variabel dengan nilai yang sesuai 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.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"

Langkah 6: Tunggu pekerjaan Azure Machine Learning 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 Resource Manager, Anda dapat menggunakan ekstensi Azure Machine Learning. Anda dapat mencari ekstensi ini di Marketplace ekstensi Azure DevOps atau langsung masuk ke halaman ekstensi. Instal ekstensi Pembelajaran Mesin.

Penting

Jangan instal ekstensi Pembelajaran Mesin (klasik). 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, lalu cari AzureML. Pilih tugas Tunggu Pekerjaan AzureML , lalu berikan informasi untuk pekerjaan tersebut.

Tugas ini memiliki empat input: Service Connection, , Azure Resource Group Name, AzureML Workspace Namedan AzureML Job Name. Berikan input ini. YAML yang dihasilkan untuk langkah-langkah ini mirip dengan contoh berikut:

Catatan

  • Tugas tunggu pekerjaan Azure Machine Learning 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.
  • Tugas menunggu dalam Azure Machine Learning hanya dapat menunggu satu pekerjaan. Anda perlu menyiapkan tugas terpisah untuk setiap pekerjaan yang ingin Anda tunggu.
  • Tugas tunggu pekerjaan Azure Machine Learning dapat menunggu maksimal dua hari. Batas ini adalah batas keras yang ditetapkan oleh alur Azure DevOps.
- 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)

Langkah 7: Kirim pipeline dan verifikasi jalannya pipeline Anda

Pilih Simpan dan jalankan. Alur menunggu hingga pekerjaan Azure Machine Learning selesai dan mengakhiri tugas di bawah WaitForJobCompletion dengan status yang sama seperti pekerjaan Azure Machine Learning tersebut. Contohnya:

  • Pekerjaan Succeeded Azure Machine Learning == Tugas Azure DevOps di bawah WaitForJobCompletion pekerjaan Succeeded

  • Pekerjaan Failed Azure Machine Learning == Tugas Azure DevOps di bawah WaitForJobCompletion pekerjaan Failed

  • Pekerjaan Cancelled Azure Machine Learning == Tugas Azure DevOps di bawah WaitForJobCompletion pekerjaan Cancelled

Petunjuk / Saran

Anda dapat melihat pekerjaan Azure Pembelajaran Mesin lengkap di studio Azure Pembelajaran Mesin.

Membersihkan sumber daya

Jika Anda tidak berencana untuk terus menggunakan alur Anda, hapus proyek Azure DevOps Anda. Di portal Microsoft Azure, hapus grup sumber daya dan instans Azure Machine Learning Anda.