Apa itu lingkungan Azure Machine Learning?
Lingkungan Azure Pembelajaran Mesin adalah enkapulasi lingkungan tempat pelatihan atau inferensi pembelajaran mesin Anda terjadi. Mereka menentukan paket Python, dan pengaturan perangkat lunak di sekitar skrip pelatihan dan penilaian Anda. Lingkungan adalah entitas terkelola dan versi dalam ruang kerja Pembelajaran Mesin Anda yang memungkinkan alur kerja pembelajaran mesin yang dapat direproduksi, dapat diaudit, dan portabel di berbagai target komputasi. Anda dapat menggunakan objek Environment
untuk:
- Mengembangkan skrip pelatihan.
- Menggunakan kembali lingkungan yang sama di Azure Machine Learning Compute untuk pelatihan model dalam skala besar.
- Menyebarkan model dengan lingkungan yang sama.
- Mengunjungi kembali lingkungan tempat model yang ada dilatih.
Diagram berikut ini menggambarkan bagaimana Anda dapat menggunakan satu objek Environment
dalam konfigurasi pekerjaan (untuk pelatihan) dan konfigurasi inferensi serta penyebaran (untuk penyebaran layanan web).
Lingkungan, target komputasi, dan skrip pelatihan bersama-sama membentuk konfigurasi pekerjaan: spesifikasi lengkap pekerjaan pelatihan.
Jenis lingkungan
Lingkungan secara luas dapat dibagi menjadi tiga kategori: dipilih, dikelola pengguna, dan dikelola sistem.
Lingkungan yang dikumpulkan disediakan oleh Azure Machine Learning dan tersedia di ruang kerja secara default. Dimaksudkan untuk digunakan apa adanya, lingkungan tersebut berisi kumpulan paket dan pengaturan Python untuk membantu Anda mulai menggunakan berbagai kerangka pembelajaran mesin. Lingkungan yang dibuat sebelumnya ini juga memungkinkan waktu penyebaran yang lebih cepat. Lingkungan yang dikumpulkan dihosting di registri AzureML, yang merupakan registri pembelajaran mesin yang dihosting oleh Microsoft. Untuk daftar lengkapnya, lihat lingkungan di registri AzureML.
Di lingkungan yang dikelola pengguna, Anda bertanggung jawab untuk menyiapkan lingkungan dan menginstal setiap paket yang dibutuhkan skrip pelatihan Anda di target komputasi. Pastikan juga untuk menyertakan semua dependensi yang diperlukan untuk penyebaran model. Lingkungan yang dikelola pengguna dapat berupa BYOC (Bring Your Own Container) atau Berbasis Konteks Build Docker yang mendelegasikan materialisasi gambar ke Azure Pembelajaran Mesin. Mirip dengan lingkungan yang dikumpulkan, Anda dapat berbagi lingkungan yang dikelola pengguna di seluruh ruang kerja dengan menggunakan registri pembelajaran mesin yang Anda buat dan kelola.
Anda menggunakan lingkungan yang dikelola sistem saat Anda ingin conda mengelola lingkungan Python. Lingkungan conda baru dimaterialisasi dari spesifikasi conda Anda di atas gambar docker dasar.
Membuat dan mengelola lingkungan
Anda dapat membuat lingkungan dari Azure Pembelajaran Mesin Python SDK, Azure Pembelajaran Mesin CLI, studio azure Pembelajaran Mesin, dan ekstensi VISUAL Code. Setiap klien mengizinkan Anda untuk menyesuaikan gambar dasar, Dockerfile, dan lapisan Python jika diperlukan.
Untuk sampel kode tertentu, lihat bagian "Membuat lingkungan" di Cara menggunakan lingkungan.
Lingkungan juga mudah dikelola melalui ruang kerja, yang memungkinkan Anda untuk:
- Daftarkan lingkungan.
- Ambil lingkungan dari ruang kerja Anda untuk digunakan untuk pelatihan atau penyebaran.
- Buat instans baru dari lingkungan dengan mengedit yang sudah ada.
- Lihat perubahan pada lingkungan Anda dari waktu ke waktu, yang memastikan reproduktifitas.
- Bangun gambar Docker secara otomatis dari lingkungan Anda.
Lingkungan "Anonim" secara otomatis terdaftar di ruang kerja saat Anda mengirimkan eksperimen. Mereka tidak tercantum tetapi Anda dapat menggunakan versi untuk mengambilnya.
Untuk sampel kode, lihat bagian "Kelola lingkungan" pada Cara menggunakan lingkungan.
Pembangunan, pembuatan cache, dan penggunaan kembali lingkungan
Azure Pembelajaran Mesin membangun definisi lingkungan ke dalam gambar Docker. Layanan ini juga membuat cache lingkungan sehingga dapat digunakan kembali dalam pekerjaan pelatihan dan penyebaran titik akhir layanan berikutnya. Menjalankan skrip pelatihan secara jarak jauh memerlukan pembuatan gambar Docker. Secara default, Azure Pembelajaran Mesin mengelola target build gambar pada kuota komputasi tanpa server ruang kerja yang tersedia jika tidak ada komputasi khusus yang ditetapkan untuk ruang kerja.
Catatan
Pembatasan jaringan apa pun di ruang kerja Azure Pembelajaran Mesin mungkin memerlukan penyiapan komputasi build gambar terkelola pengguna khusus. Ikuti langkah-langkah untuk mengamankan sumber daya ruang kerja.
Mengirimkan pekerjaan menggunakan lingkungan
Saat pertama kali mengirimkan pekerjaan jarak jauh menggunakan lingkungan atau membuat instans lingkungan secara manual, Azure Pembelajaran Mesin membuat gambar untuk spesifikasi yang disediakan. Gambar hasil di-cache dalam instans registri kontainer yang terkait dengan ruang kerja. Lingkungan yang dikumpulkan sudah di-cache di Azure Pembelajaran Mesin Registry. Pada awal eksekusi pekerjaan, target komputasi mengambil gambar dari registri kontainer yang relevan.
Membangun lingkungan sebagai citra Docker
Jika gambar untuk definisi lingkungan tertentu belum ada di instans registri kontainer yang terkait dengan ruang kerja Azure Pembelajaran Mesin, gambar baru dibuat. Untuk lingkungan yang dikelola sistem, build gambar terdiri dari dua langkah:
- Mengunduh citra dasar, dan menjalankan langkah Docker apa pun
- Membangun lingkungan konda sesuai dengan dependensi conda yang ditentukan dalam definisi lingkungan.
Untuk lingkungan terkelola pengguna, disediakan build konteks docker apa adanya. Dalam hal ini Anda bertanggung jawab untuk menginstal paket Python apa pun, dengan menyertakannya dalam gambar dasar Anda, atau menentukan langkah-langkah Docker kustom.
Pembuatan cache gambar dan penggunaan kembali
Jika Anda menggunakan definisi lingkungan yang sama untuk pekerjaan lain, Azure Pembelajaran Mesin menggunakan kembali gambar yang di-cache dari registri kontainer yang terkait dengan Ruang Kerja Anda.
Untuk melihat detail gambar yang di-cache, periksa halaman Lingkungan di studio Azure Pembelajaran Mesin atau gunakan MLClient.environments
untuk mendapatkan dan memeriksa lingkungan.
Untuk menentukan apakah akan menggunakan kembali gambar yang di-cache atau membangun gambar baru, Azure Pembelajaran Mesin menghitung nilai hash dari definisi lingkungan. Kemudian membandingkan hash dengan hash lingkungan yang ada. Hash berfungsi sebagai pengidentifikasi unik untuk lingkungan dan didasarkan pada definisi lingkungan:
- Gambar dasar
- Langkah docker kustom
- Paket Python
Nama dan versi lingkungan tidak berpengaruh pada hash. Jika Anda mengganti nama lingkungan atau membuat yang baru dengan pengaturan dan paket yang sama dengan lingkungan lain, maka nilai hash tetap sama. Namun, definisi lingkungan berubah seperti menambahkan atau menghapus paket Python atau mengubah versi paket mengubah nilai hash yang dihasilkan. Mengubah urutan dependensi atau saluran dalam lingkungan mengubah hash dan memerlukan build gambar baru. Demikian pula, setiap perubahan pada lingkungan yang dikumpulkan menghasilkan pembuatan lingkungan kustom.
Catatan
Anda tidak akan dapat mengirimkan perubahan lokal apa pun ke lingkungan yang dikumpulkan tanpa mengubah nama lingkungan. Awalan "AzureML-" dan "Microsoft" dicadangkan secara eksklusif untuk lingkungan yang dikumpulkan, dan pengiriman pekerjaan Anda akan gagal jika namanya dimulai dengan salah satu dari awalan tersebut.
Nilai hash komputasi lingkungan dibandingkan dengan hash di registri kontainer ruang kerja. Jika ada kecocokan, gambar yang di-cache ditarik dan digunakan, jika tidak, build gambar dipicu.
Diagram berikut menunjukkan tiga definisi lingkungan. Dua di antaranya memiliki nama dan versi yang berbeda tetapi gambar dasar yang identik dan paket Python, yang menghasilkan hash yang sama dan gambar cache yang sesuai. Lingkungan ketiga memiliki paket dan versi Python yang berbeda, yang mengarah ke hash dan gambar yang disimpan yang berbeda.
Gambar cache aktual di registri kontainer ruang kerja Anda memiliki nama yang mirip azureml/azureml_e9607b2514b066c851012848913ba19f
dengan hash yang muncul di akhir.
Penting
Jika Anda membuat lingkungan dengan dependensi paket yang tidak disematkan (misalnya,
numpy
), lingkungan menggunakan versi paket yang tersedia saat lingkungan dibuat. Lingkungan masa depan apa pun yang menggunakan definisi yang cocok akan menggunakan versi aslinya.Untuk memperbarui paket, tentukan nomor versi untuk memaksa pembangunan ulang gambar. Contohnya adalah mengubah
numpy
menjadinumpy==1.18.1
. Dependensi baru--termasuk yang berlapis--akan diinstal, dan dependensi mungkin merusak skenario yang berfungsi sebelumnya.Menggunakan gambar dasar yang tidak disematkan seperti
mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04
dalam definisi lingkungan Anda dapat mengakibatkan pembangunan ulang gambar setiap kali tag diperbaruilatest
. Hal ini membantu gambar menerima patch terbaru dan pembaruan sistem.
Penambalan gambar
Microsoft bertanggung jawab untuk menambal gambar dasar untuk kerentanan keamanan yang diketahui. Pembaruan untuk gambar yang didukung dirilis setiap dua minggu, dengan komitmen tidak ada kerentanan yang tidak dikirim lebih dari 30 hari dalam versi terbaru gambar. Gambar yang ditambal dirilis dengan tag baru yang tidak dapat diubah dan tag :latest
diperbarui ke versi terbaru dari gambar yang ditambal.
Anda perlu memperbarui aset Azure Pembelajaran Mesin terkait untuk menggunakan gambar yang baru di-patch. Misalnya, saat bekerja dengan titik akhir online terkelola, Anda perlu menyebarkan ulang titik akhir Anda untuk menggunakan gambar yang di-patch.
Jika Anda menyediakan gambar Anda sendiri, Anda bertanggung jawab untuk memperbaruinya dan memperbarui aset Azure Pembelajaran Mesin yang menggunakannya.
Untuk informasi selengkapnya tentang gambar dasar, lihat tautan berikut:
- Gambar dasar Azure Machine Learning repositori GitHub.
- Menggunakan kontainer kustom untuk menyebarkan model ke titik akhir online
- Mengelola lingkungan dan gambar kontainer
Konten terkait
- Pelajari cara membuat dan menggunakan lingkungan di Azure Machine Learning.
- Lihat dokumentasi referensi Python SDK untuk kelas lingkungan.