Apa itu lingkungan Azure Machine Learning?

Lingkungan Azure Machine Learning adalah enkapsulasi lingkungan tempat pelatihan 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).

Diagram of an environment in machine learning workflow

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 AzureML Registry. 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 AzureML.

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 klien seperti Azure Pembelajaran Mesin Python SDK, Azure Pembelajaran Mesin CLI, halaman Lingkungan di 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. Lingkungan tidak akan terdaftar tetapi dapat diambil berdasarkan versi.

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, AzureML 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 AzureML 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 AzureML Registry. Pada awal eksekusi pekerjaan, gambar diambil oleh target komputasi 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 AzureML, gambar baru dibuat. Untuk lingkungan yang dikelola sistem, build gambar terdiri dari dua langkah:

  1. Mengunduh citra dasar, dan menjalankan langkah Docker apa pun
  2. Membangun lingkungan konda sesuai dengan dependensi conda yang ditentukan dalam definisi lingkungan.

Untuk lingkungan terkelola pengguna yang disediakan konteks docker akan dibangun 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 yang baru, Azure Pembelajaran Mesin menghitung nilai hash dari definisi lingkungan dan membandingkannya dengan hash lingkungan yang ada. Hash berfungsi sebagai pengidentifikasi unik untuk lingkungan dan didasarkan pada definisi lingkungan:

  • Gambar dasar
  • Langkah docker kustom
  • Paket Python

Hash tidak terpengaruh oleh nama atau versi lingkungan. 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 di lingkungan juga akan mengubah hash dan memerlukan pembangunan 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 yang ada di registri kontainer Ruang Kerja. Jika ada kecocokan, gambar 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 dan paket Python identik, yang menghasilkan hash yang sama dan gambar yang disimpan yang sesuai. Lingkungan ketiga memiliki paket dan versi Python yang berbeda, yang mengarah ke hash dan gambar yang disimpan yang berbeda.

Diagram of environment caching and Docker images

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 menjadi numpy==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 diperbarui latest . 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:

Langkah berikutnya