Bagikan melalui


Menyiapkan MLOps dengan Azure DevOps

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

Azure Pembelajaran Mesin memungkinkan Anda untuk berintegrasi dengan alur Azure DevOps untuk mengotomatiskan siklus hidup pembelajaran mesin. Beberapa operasi yang dapat Anda otomatisasi adalah:

  • Penyebaran infrastruktur Azure Pembelajaran Mesin
  • 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 analisis performa)

Dalam artikel ini, Anda mempelajari tentang menggunakan Azure Pembelajaran Mesin untuk menyiapkan alur MLOps end-to-end yang menjalankan regresi linier untuk memprediksi tarif taksi di NYC. Alur terdiri dari komponen, masing-masing melayani fungsi yang berbeda, yang dapat didaftarkan ke ruang kerja, versi, dan digunakan kembali dengan berbagai input dan output. Anda akan menggunakan arsitektur Azure yang direkomendasikan untuk Akselerator solusi MLOps dan AzureMLOps (v2) untuk menyiapkan proyek MLOps dengan cepat di Azure Pembelajaran Mesin.

Tip

Sebaiknya Anda memahami beberapa arsitektur Azure yang direkomendasikan untuk MLOps sebelum menerapkan solusi apa pun. Anda harus memilih arsitektur terbaik untuk proyek Pembelajaran mesin yang Anda berikan.

Prasyarat

Catatan

Git versi 2.27 atau yang lebih baru diperlukan. Untuk informasi selengkapnya tentang menginstal perintah Git, lihat https://git-scm.com/downloads dan pilih sistem operasi Anda

Penting

Perintah CLI dalam artikel ini diuji menggunakan Bash. Jika Anda menggunakan shell yang berbeda, Anda mungkin mengalami kesalahan.

Menyiapkan autentikasi dengan Azure dan DevOps

Sebelum Anda dapat menyiapkan proyek MLOps dengan Azure Pembelajaran Mesin, Anda perlu menyiapkan autentikasi untuk Azure DevOps.

Buat prinsipal layanan

Untuk penggunaan demo, pembuatan satu atau dua prinsip layanan diperlukan, tergantung pada berapa banyak lingkungan, yang ingin Anda kerjakan (Dev atau Prod atau Both). Prinsip-prinsip ini dapat dibuat menggunakan salah satu metode berikut:

  1. Luncurkan Azure Cloud Shell.

    Tip

    Saat pertama kali meluncurkan Cloud Shell, Anda akan diminta untuk membuat akun penyimpanan untuk Cloud Shell.

  2. Jika diminta, pilih Bash sebagai lingkungan yang digunakan di Cloud Shell. Anda juga dapat mengubah lingkungan di menu drop-down di bilah navigasi atas

    Cuplikan layar dropdown lingkungan cloud shell.

  3. Salin perintah bash berikut ke komputer Anda dan perbarui variabel projectName, subscriptionId, dan environment dengan nilai untuk proyek Anda. Jika Anda membuat lingkungan Dev dan Prod, Anda harus menjalankan skrip ini sekali untuk setiap lingkungan, membuat perwakilan layanan untuk masing-masing lingkungan. Perintah ini juga akan memberikan peran Kontributor kepada perwakilan layanan dalam langganan yang disediakan. Ini diperlukan agar Azure DevOps menggunakan sumber daya dengan benar dalam langganan tersebut.

    projectName="<your project name>"
    roleName="Contributor"
    subscriptionId="<subscription Id>"
    environment="<Dev|Prod>" #First letter should be capitalized
    servicePrincipalName="Azure-ARM-${environment}-${projectName}"
    # Verify the ID of the active subscription
    echo "Using subscription ID $subscriptionID"
    echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes     /subscriptions/$subscriptionId"
    az ad sp create-for-rbac --name $servicePrincipalName --role $roleName --scopes /subscriptions/$subscriptionId
    echo "Please ensure that the information created here is properly save for future use."
    
  4. Salin perintah yang diedit ke Azure Shell dan jalankan (Ctrl + Shift + v).

  5. Setelah menjalankan perintah ini, Anda akan disajikan dengan informasi yang terkait dengan perwakilan layanan. Simpan informasi ini ke lokasi yang aman, akan digunakan nanti dalam demo untuk mengonfigurasi Azure DevOps.

    {
       "appId": "<application id>",
       "displayName": "Azure-ARM-dev-Sample_Project_Name",
       "password": "<password>",
       "tenant": "<tenant id>"
    }
    
  6. Ulangi Langkah 3 jika Anda membuat perwakilan layanan untuk lingkungan Dev dan Prod. Untuk demo ini, kita hanya akan membuat satu lingkungan, yaitu Prod.

  7. Tutup Cloud Shell setelah perwakilan layanan dibuat.

Menyiapkan Azure DevOps

  1. Navigasi ke Azure DevOps.

  2. Pilih buat proyek baru (Beri nama proyek mlopsv2 untuk tutorial ini).

    Cuplikan layar Proyek ADO.

  3. Di proyek di bawah Pengaturan Proyek (di kiri bawah halaman proyek) pilih Koneksi Layanan.

  4. Pilih Buat Koneksi Layanan.

    Cuplikan layar tombol koneksi Layanan Baru ADO.

  5. Pilih Azure Resource Manager, pilih Berikutnya, pilih Perwakilan layanan (manual), pilih Berikutnya dan pilih Langganan Tingkat Cakupan.

    • Nama Langganan - Gunakan nama langganan tempat perwakilan layanan Anda disimpan.
    • Id Langganan - Gunakan input subscriptionId Langkah 1 yang Anda gunakan sebagai ID Langganan
    • Id Perwakilan Layanan - Gunakan appId output dari Langkah 1 sebagai ID Perwakilan Layanan
    • Kunci perwakilan layanan - Gunakan password output dari Langkah 1 sebagai Kunci Perwakilan Layanan
    • ID Penyewa - Gunakan tenant output dari Langkah 1 sebagai ID Penyewa
  6. Beri nama koneksi layanan Azure-ARM-Prod.

  7. Pilih Berikan izin akses ke semua alur, lalu pilih Verifikasi dan Simpan.

Penyiapan Azure DevOps berhasil diselesaikan.

Menyiapkan repositori sumber dengan Azure DevOps

  1. Buka proyek yang Anda buat di Azure DevOps

  2. Buka bagian Repositori dan pilih Impor Repositori

    Cuplikan layar repositori impor Azure DevOps untuk pertama kalinya.

  3. Masukkan https://github.com/Azure/mlops-v2-ado-demo ke bidang URL Kloning. Pilih impor di bagian bawah halaman

    Cuplikan layar repositori demo Azure DevOps impor MLOps.

  4. Buka pengaturan Proyek di bagian bawah panel navigasi sebelah kiri

  5. Di bawah bagian Repositori, pilih Repositori. Pilih repositori yang Anda buat di langkah sebelumnya Pilih tab Keamanan

  6. Di bawah bagian Izin pengguna, pilih pengguna Layanan Build mlopsv2. Ubah izin Kontribusi izin ke Izinkan dan izin Buat cabang ke Izinkan. Cuplikan layar izin Azure DevOps.

  7. Buka bagian Alur di panel navigasi sebelah kiri dan pilih pada 3 titik vertikal di samping tombol Buat Alur . Pilih Kelola Keamanan

    Cuplikan layar keamanan Alur.

  8. Pilih akun Layanan Build mlopsv2 untuk proyek Anda di bawah bagian Pengguna. Mengubah izin Edit alur build menjadi Izinkan

    Cuplikan layar Tambahkan keamanan.

Catatan

Ini menyelesaikan bagian prasyarat dan penyebaran akselerator solusi dapat terjadi.

Menyebarkan infrastruktur melalui Azure DevOps

Langkah ini menyebarkan alur pelatihan ke ruang kerja Azure Pembelajaran Mesin yang dibuat di langkah-langkah sebelumnya.

Tip

Pastikan Anda memahami Pola Arsitektur akselerator solusi sebelum Anda memeriksa repositori MLOps v2 dan menyebarkan infrastruktur. Dalam contoh, Anda akan menggunakan jenis proyek ML klasik.

Menjalankan alur infrastruktur Azure

  1. Buka repositori Anda, mlops-v2-ado-demo, dan pilih file config-infra-prod.yml .

    Penting

    Pastikan Anda telah memilih cabang utama repositori.

    Cuplikan layar Repositori di ADO.

    File konfigurasi ini menggunakan nilai namespace dan postfix nama artefak untuk memastikan keunikan. Perbarui bagian berikut dalam konfigurasi sesuai keinginan Anda.

     namespace: [5 max random new letters]
     postfix: [4 max random new digits]
     location: eastus
    

    Catatan

    Jika Anda menjalankan beban kerja Pembelajaran Mendalam seperti CV atau NLP, pastikan komputasi GPU Anda tersedia di zona penyebaran Anda.

  2. Pilih Terapkan dan dorong kode untuk memasukkan nilai-nilai ini ke dalam alur.

  3. Masuk ke bagian Alur

    Cuplikan layar Alur ADO.

  4. Pilih Buat Saluran.

  5. Pilih Git Repositori Azure.

    Cuplikan layar ADO Di mana kode Anda.

  6. Pilih repositori yang Anda kloning dari bagian sebelumnya mlops-v2-ado-demo

  7. Pilih file YAML Alur Azure yang Sudah Ada

    Cuplikan layar halaman Alur Azure DevOps pada langkah konfigurasi.

  8. main Pilih cabang dan pilih mlops/devops-pipelines/cli-ado-deploy-infra.yml, lalu pilih Lanjutkan.

  9. Jalankan alur; akan memakan waktu beberapa menit untuk menyelesaikannya. Alur harus membuat artefak berikut:

    • Grup Sumber Daya untuk Ruang Kerja Anda termasuk Akun Penyimpanan, Registri Kontainer, Application Insights, Keyvault, dan Ruang Kerja Azure Pembelajaran Mesin itu sendiri.
    • Di ruang kerja, ada juga kluster komputasi yang dibuat.
  10. Sekarang infrastruktur untuk proyek MLOps Anda disebarkan. Cuplikan layar Alur ADO Infra.

    Catatan

    Tidak dapat memindahkan dan menggunakan kembali repositori yang ada ke peringatan lokasi yang diperlukan mungkin diabaikan.

Sampel Skenario Pelatihan dan Penyebaran

Akselerator solusi mencakup kode dan data untuk sampel alur pembelajaran mesin end-to-end yang menjalankan regresi linier untuk memprediksi tarif taksi di NYC. Alur terdiri dari komponen, masing-masing melayani fungsi yang berbeda, yang dapat didaftarkan ke ruang kerja, versi, dan digunakan kembali dengan berbagai input dan output. Contoh alur dan alur kerja untuk skenario Computer Vision dan NLP akan memiliki langkah dan langkah penyebaran yang berbeda.

Alur pelatihan ini berisi langkah-langkah berikut:

Siapkan Data

  • Komponen ini mengambil beberapa himpunan data taksi (kuning dan hijau) dan menggabungkan/memfilter data, dan menyiapkan himpunan data pelatihan/val dan evaluasi.
  • Input: Data lokal di bawah ./data/ (beberapa file .csv)
  • Output: Himpunan data yang disiapkan tunggal (.csv) dan himpunan data latih/val/uji.

Model Latihan

  • Komponen ini melatih Linear Regressor dengan set pelatihan.
  • Input: Himpunan data pelatihan
  • Output: Model terlatih (format acar)

Evaluasi Model

  • Komponen ini menggunakan model terlatih untuk memprediksi tarif taksi pada set pengujian.
  • Input: Model ML dan Himpunan data Pengujian
  • Output: Performa model dan bendera penyebaran apakah akan menyebarkan atau tidak.
  • Komponen ini membandingkan performa model dengan semua model yang disebarkan sebelumnya pada himpunan data pengujian baru dan memutuskan apakah akan mempromosikan atau tidak model ke dalam produksi. Mempromosikan model ke dalam produksi terjadi dengan mendaftarkan model di ruang kerja AML.

Daftarkan Model

  • Komponen ini menilai model berdasarkan seberapa akurat prediksi dalam set pengujian.
  • Input: Model terlatih dan bendera penyebaran.
  • Output: Model terdaftar di Azure Pembelajaran Mesin.

Menyebarkan alur pelatihan model

  1. Masuk ke alur ADO

    Cuplikan layar Alur ADO.

  2. Pilih Alur Baru.

    Cuplikan layar tombol Alur Baru ADO.

  3. Pilih Git Repositori Azure.

    Cuplikan layar ADO Di mana kode Anda.

  4. Pilih repositori yang Anda kloning dari bagian sebelumnya mlopsv2

  5. Pilih file YAML Alur Azure yang Sudah Ada

    Cuplikan layar halaman Alur ADO pada langkah konfigurasi.

  6. Pilih main sebagai cabang dan pilih /mlops/devops-pipelines/deploy-model-training-pipeline.yml, lalu pilih Lanjutkan.

  7. Simpan dan Jalankan alur

Catatan

Pada titik ini, infrastruktur dikonfigurasi dan Perulangan Prototipe Arsitektur MLOps disebarkan. Anda siap untuk pindah ke model terlatih kami ke produksi.

Menyebarkan model Terlatih

Skenario ini mencakup alur kerja bawaan untuk dua pendekatan untuk menyebarkan model terlatih, penilaian batch, atau penyebaran model ke titik akhir untuk penilaian real time. Anda dapat menjalankan salah satu atau kedua alur kerja ini untuk menguji performa model di ruang kerja Azure ML Anda. DALAM contoh ini kita akan menggunakan penilaian real-time.

Menyebarkan titik akhir model ML

  1. Masuk ke alur ADO

    Cuplikan layar Alur ADO.

  2. Pilih Alur Baru.

    Cuplikan layar tombol Alur Baru ADO untuk titik akhir.

  3. Pilih Git Repositori Azure.

    Cuplikan layar ADO Di mana kode Anda.

  4. Pilih repositori yang Anda kloning dari bagian sebelumnya mlopsv2

  5. Pilih file YAML Alur Azure yang Sudah Ada

    Cuplikan layar halaman Alur Azure DevOps pada langkah konfigurasi.

  6. Pilih main sebagai cabang dan pilih Titik Akhir Online Terkelola /mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml lalu pilih Lanjutkan.

  7. Nama titik akhir online harus unik, jadi ubah taxi-online-$(namespace)$(postfix)$(environment) ke nama unik lain lalu pilih Jalankan. Tidak perlu mengubah default jika tidak gagal.

    Cuplikan layar skrip penyebaran batch Azure DevOps.

    Penting

    Jika eksekusi gagal karena nama titik akhir online yang ada, buat ulang alur seperti yang dijelaskan sebelumnya dan ubah [nama titik akhir Anda] menjadi [nama titik akhir Anda (angka acak)]

  8. Saat eksekusi selesai, Anda akan melihat output yang mirip dengan gambar berikut:

    Cuplikan layar halaman hasil eksekusi batch Alur ADO.

  9. Untuk menguji penyebaran ini, buka tab Titik Akhir di ruang kerja AzureML Anda, pilih titik akhir dan klik Tab Uji . Anda dapat menggunakan data input sampel yang terletak di repositori kloning di /data/taxi-request.json untuk menguji titik akhir.

Membersihkan sumber daya

  1. Jika Anda tidak akan terus menggunakan alur Anda, hapus proyek Azure DevOps Anda.
  2. Di portal Azure, hapus grup sumber daya dan instans Azure Pembelajaran Mesin Anda.

Langkah berikutnya