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
- Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning.
- Ruang kerja Azure Machine Learning.
- Git berjalan di komputer lokal Anda.
- Organisasi di Azure DevOps.
- Proyek Azure DevOps yang akan menghosting repositori dan alur sumber.
- Ekstensi Terraform untuk Azure DevOps jika Anda menggunakan Azure DevOps + Terraform untuk memutar infrastruktur
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:
Luncurkan Azure Cloud Shell.
Tip
Saat pertama kali meluncurkan Cloud Shell, Anda akan diminta untuk membuat akun penyimpanan untuk Cloud Shell.
Jika diminta, pilih Bash sebagai lingkungan yang digunakan di Cloud Shell. Anda juga dapat mengubah lingkungan di menu drop-down di bilah navigasi atas
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."
Salin perintah yang diedit ke Azure Shell dan jalankan (Ctrl + Shift + v).
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>" }
Ulangi Langkah 3 jika Anda membuat perwakilan layanan untuk lingkungan Dev dan Prod. Untuk demo ini, kita hanya akan membuat satu lingkungan, yaitu Prod.
Tutup Cloud Shell setelah perwakilan layanan dibuat.
Menyiapkan Azure DevOps
Navigasi ke Azure DevOps.
Pilih buat proyek baru (Beri nama proyek
mlopsv2
untuk tutorial ini).Di proyek di bawah Pengaturan Proyek (di kiri bawah halaman proyek) pilih Koneksi Layanan.
Pilih Buat Koneksi Layanan.
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
Beri nama koneksi layanan Azure-ARM-Prod.
Pilih Berikan izin akses ke semua alur, lalu pilih Verifikasi dan Simpan.
Penyiapan Azure DevOps berhasil diselesaikan.
Menyiapkan repositori sumber dengan Azure DevOps
Buka proyek yang Anda buat di Azure DevOps
Buka bagian Repositori dan pilih Impor Repositori
Masukkan https://github.com/Azure/mlops-v2-ado-demo ke bidang URL Kloning. Pilih impor di bagian bawah halaman
Buka pengaturan Proyek di bagian bawah panel navigasi sebelah kiri
Di bawah bagian Repositori, pilih Repositori. Pilih repositori yang Anda buat di langkah sebelumnya Pilih tab Keamanan
Di bawah bagian Izin pengguna, pilih pengguna Layanan Build mlopsv2. Ubah izin Kontribusi izin ke Izinkan dan izin Buat cabang ke Izinkan.
Buka bagian Alur di panel navigasi sebelah kiri dan pilih pada 3 titik vertikal di samping tombol Buat Alur . Pilih Kelola Keamanan
Pilih akun Layanan Build mlopsv2 untuk proyek Anda di bawah bagian Pengguna. Mengubah izin Edit alur build menjadi Izinkan
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
Buka repositori Anda,
mlops-v2-ado-demo
, dan pilih file config-infra-prod.yml .Penting
Pastikan Anda telah memilih cabang utama repositori.
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.
Pilih Terapkan dan dorong kode untuk memasukkan nilai-nilai ini ke dalam alur.
Masuk ke bagian Alur
Pilih Buat Saluran.
Pilih Git Repositori Azure.
Pilih repositori yang Anda kloning dari bagian sebelumnya
mlops-v2-ado-demo
Pilih file YAML Alur Azure yang Sudah Ada
main
Pilih cabang dan pilihmlops/devops-pipelines/cli-ado-deploy-infra.yml
, lalu pilih Lanjutkan.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.
Sekarang infrastruktur untuk proyek MLOps Anda disebarkan.
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
Masuk ke alur ADO
Pilih Alur Baru.
Pilih Git Repositori Azure.
Pilih repositori yang Anda kloning dari bagian sebelumnya
mlopsv2
Pilih file YAML Alur Azure yang Sudah Ada
Pilih
main
sebagai cabang dan pilih/mlops/devops-pipelines/deploy-model-training-pipeline.yml
, lalu pilih Lanjutkan.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
Masuk ke alur ADO
Pilih Alur Baru.
Pilih Git Repositori Azure.
Pilih repositori yang Anda kloning dari bagian sebelumnya
mlopsv2
Pilih file YAML Alur Azure yang Sudah Ada
Pilih
main
sebagai cabang dan pilih Titik Akhir Online Terkelola/mlops/devops-pipelines/deploy-online-endpoint-pipeline.yml
lalu pilih Lanjutkan.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.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)]
Saat eksekusi selesai, Anda akan melihat output yang mirip dengan gambar berikut:
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
- 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.
Langkah berikutnya
- Menginstal dan menyiapkan Python SDK v2
- Menginstal dan menyiapkan Python CLI v2
- Akselerator solusi Azure MLOps (v2) di GitHub
- Kursus pelatihan tentang MLOps dengan Pembelajaran Mesin
- Pelajari selengkapnya tentang Azure Pipelines dengan Azure Pembelajaran Mesin
- Pelajari selengkapnya tentang GitHub Actions dengan Azure Pembelajaran Mesin
- Menyebarkan MLOps di Azure dalam Waktu Kurang dari Satu Jam - Video Community MLOps V2 Accelerator