Menggunakan Tindakan GitHub dengan Azure Machine Learning

BERLAKU UNTUK:Ekstensi Azure CLI ml v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Mulai menggunakan Tindakan GitHub untuk melatih model di Azure Machine Learning.

Artikel ini mengajarkan anda cara membuat alur kerja GitHub Actions yang membangun dan menyebarkan model pembelajaran mesin ke Azure Pembelajaran Mesin. Anda melatih model regresi linier scikit-learn pada himpunan data Taksi NYC.

GitHub Actions menggunakan file YAML alur kerja (.yml) di path /.github/workflows/ dalam repositori Anda. Definisi ini berisi berbagai langkah dan parameter yang membentuk alur kerja.

Prasyarat

  • Ruang kerja Azure Machine Learning. Untuk langkah-langkah membuat ruang kerja, lihat Membuat ruang kerja.

  • Azure Machine Learning SDK untuk Python v2. Untuk menginstal SDK, gunakan perintah berikut:

    pip install azure-ai-ml azure-identity
    

    Untuk memperbarui penginstalan SDK yang ada ke versi terbaru, gunakan perintah berikut:

    pip install --upgrade azure-ai-ml azure-identity
    

    Untuk informasi lebih lanjut, lihat Azure Machine Learning Package client library for Python.

Langkah 1: Dapatkan kode

Fork repositori berikut pada GitHub:

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

Kloning repositori fork Anda secara lokal.

git clone https://github.com/YOUR-USERNAME/azureml-examples

Langkah 2: Mengautentikasi dengan Azure

Pertama, tentukan cara mengautentikasi dengan Azure. Opsi yang direkomendasikan dan lebih aman adalah masuk dengan menggunakan OpenID Connect dengan aplikasi Microsoft Entra atau identitas terkelola yang ditetapkan pengguna. Jika perlu, Anda juga dapat menggunakan login dengan menggunakan prinsipal layanan dan kunci rahasia. Pendekatan ini kurang aman dan tidak disarankan.

Membuat kredensial penyebaran

Untuk menggunakan tindakan Azure Login dengan OIDC, Anda perlu mengonfigurasi kredensial identitas gabungan pada aplikasi Microsoft Entra atau identitas terkelola yang ditetapkan pengguna.

Opsi 1: Aplikasi Microsoft Entra

Opsi 2: Identitas terkelola yang ditetapkan pengguna

Membuat rahasia

Anda perlu memberikan ID Klien, ID Direktori (penyewa), dan ID Langganan aplikasi Anda ke tindakan login. Nilai ini bisa disediakan secara langsung di alur kerja atau bisa disimpan di rahasia GitHub dan direferensikan dalam alur kerja Anda. Menyimpan nilai sebagai GitHub rahasia adalah opsi yang lebih aman.

  1. Di GitHub, buka repositori Anda.

  2. Pilih Keamanan > Tindakan untuk rahasia dan variabel>.

    Cuplikan layar penambahan kunci rahasia

  3. Pilih Rahasia repositori baru.

    Catatan

    Untuk meningkatkan keamanan alur kerja di repositori publik, gunakan rahasia lingkungan alih-alih rahasia repositori. Jika lingkungan memerlukan persetujuan, pekerjaan tidak dapat mengakses rahasia lingkungan hingga salah satu peninjau yang diperlukan menyetujuinya.

  4. Membuat rahasia untuk AZURE_CLIENT_ID, AZURE_TENANT_ID, dan AZURE_SUBSCRIPTION_ID. Salin nilai-nilai ini dari aplikasi Microsoft Entra atau identitas terkelola yang ditetapkan pengguna untuk rahasia GitHub Anda:

    Rahasia GitHub Aplikasi Microsoft Entra atau identitas terkelola yang ditetapkan pengguna
    AZURE_CLIENT_ID ID klien
    AZURE_SUBSCRIPTION_ID (ID Langganan Azure) ID Langganan
    AZURE_TENANT_ID (ID Penyewa Azure) ID Direktori (tenant)

    Catatan

    Untuk alasan keamanan, sebaiknya gunakan Rahasia GitHub daripada meneruskan nilai langsung ke alur kerja.

Langkah 3: Perbarui setup.sh untuk menyambungkan ke ruang kerja Azure Pembelajaran Mesin Anda

Perbarui variabel file penyiapan CLI agar sesuai dengan ruang kerja Anda.

  1. Di repositori fork Anda, buka azureml-examples/cli/.

  2. Edit setup.sh dan perbarui variabel ini dalam file.

    Variabel Deskripsi
    GROUP Nama grup sumber daya
    LOCATION Lokasi ruang kerja Anda (misalnya: eastus2)
    WORKSPACE Nama ruang kerja Azure Machine Learning

Langkah 4: Perbarui pipeline.yml dengan nama kluster komputasi Anda

Gunakan file pipeline.yml untuk menerapkan alur Azure Machine Learning Anda. Alur adalah alur pembelajaran mesin dan bukan alur DevOps. Anda hanya perlu membuat pembaruan ini jika Anda menggunakan nama selain cpu-cluster untuk nama kluster komputasi Anda.

  1. Di repositori fork Anda, buka azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml.
  2. Setiap kali Anda melihat compute: azureml:cpu-cluster, perbarui nilai cpu-cluster dengan nama kluster komputasi Anda. Misalnya, jika kluster Anda bernama my-cluster, nilai baru Anda akan menjadi azureml:my-cluster. Terdapat lima pembaruan.

Langkah 5: Jalankan alur kerja Tindakan GitHub Anda

Alur kerja Anda mengautentikasi dengan Azure, menyiapkan Azure Machine Learning CLI, dan menggunakan CLI untuk melatih model di Azure Machine Learning.

File alur kerja Anda terdiri dari bagian pemicu dan pekerjaan:

  • Alur kerja dimulai oleh pemicu di bagian on. Alur kerja dijalankan secara otomatis pada sistem penjadwalan berbasis waktu (cron schedule) dan saat permintaan pull dibuat dari cabang dan jalur yang sesuai. Pelajari selengkapnya tentang peristiwa yang memicu alur kerja.
  • Di bagian pekerjaan dalam alur kerja, Anda memeriksa kode dan masuk ke Azure dengan tindakan masuk Azure menggunakan OpenID Connect.
  • Bagian tugas juga menyertakan tindakan penyiapan yang memasang dan menyiapkan CLI Pembelajaran Mesin (v2). Setelah CLI dipasang, perintah menjalankan pekerjaan akan menjalankan file Azure Machine Learning Anda untuk melatih model dengan data taksi NYC.

Mengaktifkan alur kerja Anda

  1. Di repositori fork Anda, buka .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml dan verifikasi bahwa alur kerja Anda terlihat mirip dengan ini.

    Catatan

    File alur kerja dalam repositori dapat mencakup langkah-langkah tambahan (seperti bootstrapping dan validasi) yang tidak ditampilkan di sini. Contoh berikut menunjukkan langkah-langkah inti.

    name: cli-jobs-pipelines-nyc-taxi-pipeline
    on:
      workflow_dispatch:
      schedule:
        - cron: "0 0/4 * * *"
      pull_request:
        branches:
          - main
        paths:
          - cli/jobs/pipelines/nyc-taxi/**
          - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
          - cli/run-pipeline-jobs.sh
          - cli/setup.sh
    permissions:
      id-token: write
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: check out repo
          uses: actions/checkout@v4
        - name: azure login
          uses: azure/login@v2
          with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - name: setup
          run: bash setup.sh
          working-directory: cli
          continue-on-error: true
        - name: run job
          run: bash -x ../../../run-job.sh pipeline.yml
          working-directory: cli/jobs/pipelines/nyc-taxi
    
  2. Pilih Tampilkan eksekusi.

  3. Aktifkan alur kerja dengan memilih Saya memahami alur kerja saya, lanjutkan dan aktifkan.

  4. Pilih alur kerja cli-jobs-pipelines-nyc-taxi-pipeline dan pilih Aktifkan alur kerja.

    Cuplikan layar dari mengaktifkan workflow GitHub Actions.

  5. Pilih Jalankan alur kerja dan pilih opsi untuk Menjalankan alur kerja sekarang.

    Cuplikan layar dari menjalankan workflow GitHub Actions.

Langkah 6: Verifikasi pelaksanaan alur kerja Anda

  1. Buka eksekusi alur kerja yang telah selesai dan verifikasi bahwa pekerjaan build berhasil dijalankan. Anda melihat tanda centang hijau di samping pekerjaan.

  2. Buka studio Azure Machine Learning dan buka nyc-taxi-pipeline-example. Verifikasi bahwa setiap bagian dari pekerjaan Anda (persiapan, transformasi, pelatihan, prediksi, skor) selesai dan Anda melihat tanda centang hijau.

    Cuplikan layar dari eksekusi Studio Azure Machine Learning yang berhasil.

Membersihkan sumber daya

Saat Anda tidak lagi memerlukan grup sumber daya dan repositori, bersihkan sumber daya yang Anda sebarkan dengan menghapus grup sumber daya dan repositori GitHub Anda.

Langkah berikutnya