Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK:Azure Machine Learning SDK v1 untuk Python
Penting
Artikel ini memberikan informasi tentang penggunaan Azure Machine Learning SDK v1. SDK v1 tidak lagi digunakan mulai 31 Maret 2025 dan dukungan untuk itu akan berakhir pada 30 Juni 2026. Anda dapat menginstal dan menggunakan SDK v1 hingga tanggal tersebut.
Kami merekomendasikan agar Anda beralih ke SDK v2 sebelum 30 Juni 2026. Untuk informasi lebih lanjut tentang SDK v2, lihat Apa itu Azure Machine Learning Python SDK v2 dan Referensi SDK v2.
Gambar Docker bawaan untuk inferensi model berisi paket untuk kerangka kerja pembelajaran mesin yang populer. Ada dua metode yang dapat digunakan untuk menambahkan paket Python tanpa membangun kembali gambar Docker:
Penginstalan dinamis: Pendekatan ini menggunakan file persyaratan untuk memulihkan paket Python secara otomatis saat kontainer Docker melakukan booting.
Pertimbangkan metode ini untuk pembuatan purwarupa cepat. Saat gambar dimulai, paket dipulihkan menggunakan file
requirements.txt
. Metode ini meningkatkan pengaktifan gambar, dan Anda harus menunggu lebih lama sebelum penyebaran dapat menangani permintaan.Paket Python yang diinstal sebelumnya: Anda menyediakan direktori yang berisi paket Python yang sudah diinstal sebelumnya. Selama penyebaran, direktori ini dipasang ke dalam kontainer untuk digunakan skrip entri Anda (
score.py
).Gunakan pendekatan ini untuk penyebaran produksi. Karena direktori yang berisi paket dipasang ke gambar direktori tersebut dapat digunakan bahkan ketika penyebaran Anda tidak memiliki akses internet publik. Misalnya, ketika digunakan ke Azure Virtual Network yang aman.
Penting
Menggunakan ekstensibilitas paket Python untuk gambar Docker bawaan dengan Azure Machine Learning saat ini sedang dalam pratinjau. Fungsionalitas pratinjau disediakan "apa adanya", tanpa jaminan dukungan atau perjanjian tingkat layanan. Untuk informasi selengkapnya, lihat Ketentuan penggunaan tambahan untuk pratinjau Microsoft Azure.
Prasyarat
- Ruang kerja Azure Machine Learning. Untuk tutorial tentang membuat ruang kerja, lihat Memulai Azure Machine Learning.
- Keakraban dengan menggunakan lingkungan Azure Machine Learning.
- Keakraban dengan Di mana dan bagaimana menyebarkan model dengan Azure Machine Learning.
Penginstalan dinamis
Pendekatan ini menggunakan file persyaratan untuk memulihkan paket Python secara otomatis saat gambar dimulai.
Untuk memperluas gambar kontainer docker bawaan Anda melalui requirements.txt, ikuti langkah-langkah berikut:
- Buat file
requirements.txt
di bersama skripscore.py
Anda. - Tambahkan semua paket yang Anda perlukan ke file
requirements.txt
. - Atur
AZUREML_EXTRA_REQUIREMENTS_TXT
variabel lingkungan di lingkungan Azure Machine Learning Anda ke lokasi filerequirements.txt
.
Setelah digunakan, paket akan secara otomatis dipulihkan untuk skrip skor Anda.
Petunjuk / Saran
Bahkan saat membuat purwarupa, sebaiknya Anda menyematkan setiap versi paket di requirements.txt
.
Misalnya, gunakan scipy == 1.2.3
alih-alih hanya scipy
atau bahkan scipy > 1.2.3
.
Jika Anda tidak menyematkan versi yang tepat dan scipy
merilis versi baru, ini dapat merusak skrip penilaian Anda dan menyebabkan kegagalan selama penyebaran dan penskalaan.
Contoh berikut menunjukkan pengaturan variabel lingkungan AZUREML_EXTRA_REQUIRMENTS_TXT
:
from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies
myenv = Environment(name="my_azureml_env")
myenv.docker.enabled = True
myenv.docker.base_image = <MCR-path>
myenv.python.user_managed_dependencies = True
myenv.environment_variables = {
"AZUREML_EXTRA_REQUIREMENTS_TXT": "requirements.txt"
}
Diagram berikut adalah representasi visual dari proses penginstalan dinamis:
Paket Python yang sudah diinstal sebelumnya
Pendekatan ini memasang direktori yang Anda berikan ke dalam gambar. Paket Python dari direktori ini kemudian dapat digunakan oleh skrip entri (score.py
).
Untuk memperluas gambar kontainer docker bawaan Anda melalui paket Python yang sudah diinstal sebelumnya, ikuti langkah-langkah berikut:
Penting
Anda harus menggunakan paket yang kompatibel dengan Python 3.8 atau 3.8, tergantung pada gambar yang Anda gunakan.
Buat lingkungan virtual menggunakan virtualenv.
Pasang Dependensi Anda. Jika Anda memiliki daftar dependensi dalam
requirements.txt
, misalnya, Anda dapat menggunakannya untuk memasang denganpip install -r requirements.txt
atau hanyapip install
dependensi individual.Saat Anda menentukan
AZUREML_EXTRA_PYTHON_LIB_PATH
variabel lingkungan, pastikan Anda menunjuk ke direktori paket situs yang benar, yang akan bervariasi tergantung pada nama lingkungan dan versi Python Anda. Kode berikut menunjukkan pengaturan jalur untuk lingkungan virtual bernamamyenv
dan Python 3.8:from azureml.core import Environment from azureml.core.conda_dependencies import CondaDependencies myenv = Environment(name='my_azureml_env') myenv.docker.enabled = True myenv.docker.base_image = <MCR-path> myenv.python.user_managed_dependencies = True myenv.environment_variables = { "AZUREML_EXTRA_PYTHON_LIB_PATH": "myenv/lib/python3.8/site-packages" }
Diagram berikut adalah representasi visual dari proses paket yang telah dipasang sebelumnya:
Masalah umum
Solusi pemasangan hanya akan berfungsi bila direktori paket situs myenv
Anda berisi semua dependensi Anda. Jika lingkungan lokal Anda menggunakan dependensi yang dipasang di lokasi berbeda, dependensi tidak akan tersedia di gambar.
Berikut adalah beberapa hal yang dapat menyebabkan masalah ini:
-
virtualenv
membuat lingkungan yang terisolasi secara default. Setelah Anda mengaktifkan lingkungan virtual, dependensi global tidak dapat digunakan. - Jika Anda memiliki variabel lingkungan
PYTHONPATH
yang mengarah ke dependensi global Anda, itu dapat mengganggu lingkungan virtual Anda. Jalankanpip list
danpip freeze
setelah mengaktifkan lingkungan Anda untuk memastikan tidak ada ketergantungan yang tidak diinginkan di lingkungan Anda. -
Lingkungan Conda dan
virtualenv
dapat mengganggu. Pastikan untuk tidak menggunakan Lingkungan Conda danvirtualenv
secara bersamaan.
Batasan
Model.package()
Metode Model.package() memungkinkan Anda membuat paket model dalam bentuk gambar Docker atau konteks build Dockerfile. Menggunakan Model.package() dengan gambar docker inferensi bawaan memicu build gambar perantara yang mengubah pengguna non-root menjadi pengguna root.
Kami menyarankan agar Anda menggunakan solusi ekstensibilitas paket Python kami. Jika dependensi lain diperlukan (seperti paket
apt
), buat Dockerfile Anda sendiri yang diperluas dari gambar inferensi.
Tanya jawab umum
Dalam pendekatan ekstensibilitas requirements.txt apakah nama file wajib menjadi
requirements.txt
?myenv.environment_variables = { "AZUREML_EXTRA_REQUIREMENTS_TXT": "name of your pip requirements file goes here" }
Dapatkah Anda meringkas pendekatan
requirements.txt
versus pendekatan pemasangan?Mulai membuat purwarupa dengan pendekatan requirements.txt. Setelah beberapa perulangan, bila Anda yakin tentang paket (dan versi) mana yang Anda perlukan untuk penerapan model yang berhasil, alihkan ke Solusi Pemasangan.
Berikut perbandingan terperinci.
Item yang dibandingkan Requirements.txt (pemasangan dinamis) Pemasangan Paket Solusi Buat requirements.txt
yang memasang paket yang ditentukan saat kontainer dimulai.Buat lingkungan Python lokal dengan semua dependensi. Pasang direktori ini ke dalam kontainer pada runtime. Penginstalan paket Tidak ada penginstalan tambahan (dengan asumsi pip sudah terpasang) Lingkungan virtual atau penginstalan lingkungan conda. Penyiapan lingkungan virtual Tidak diperlukan pengaturan tambahan lingkungan virtual, karena pengguna dapat menarik lingkungan pengguna lokal saat ini dengan pembekuan pip sesuai kebutuhan untuk membuat file requirements.txt
.Perlu menyiapkan lingkungan virtual yang bersih, dapat mengambil langkah tambahan tergantung pada lingkungan lokal pengguna saat ini. Awakutu Mudah untuk mengatur dan men-debug server, karena dependensi tercantum dengan jelas. Lingkungan virtual yang tidak bersih dapat menyebabkan masalah saat penelusuran kesalahan server. Misalnya, mungkin tidak jelas apakah kesalahan berasal dari lingkungan atau kode pengguna. Konsistensi selama penskalaan Tidak konsisten karena bergantung pada paket PyPi eksternal dan pengguna menyematkan dependensinya. Unduhan eksternal ini mungkin tidak stabil. Hanya bergantung pada lingkungan pengguna, jadi tidak ada masalah konsistensi. Mengapa
requirements.txt
dan direktori dependensi yang dipasang tidak ditemukan di kontainer?Secara lokal, verifikasi variabel lingkungan diatur dengan benar. Selanjutnya, verifikasi jalur yang ditentukan sudah dieja dengan benar dan tersedia. Periksa apakah Anda telah mengatur direktori sumber dengan benar di konstruktor konfigurasi inferensi.
Bisakah saya mengganti dependensi paket Python dalam gambar docker inferensi bawaan?
Ya. Jika Anda ingin menggunakan versi lain dari paket Python yang sudah terpasang di gambar inferensi, solusi ekstensibilitas kami akan menghormati versi Anda. Pastikan tidak ada konflik di antara dua versi.
Praktik Terbaik
Lihat dokumen Muat model terdaftar. Saat Anda mendaftarkan direktori model, jangan sertakan skrip penilaian Anda, direktori dependensi yang dipasang, atau
requirements.txt
di dalam direktori itu.Untuk informasi selengkapnya tentang cara memuat model terdaftar atau lokal, lihat Di mana dan bagaimana cara menyebarkannya.
Perbaikan Bug
2021-07-26
-
AZUREML_EXTRA_REQUIREMENTS_TXT
danAZUREML_EXTRA_PYTHON_LIB_PATH
sekarang selalu relatif terhadap direktori skrip skor. Misalnya, jika skrip requirements.txt dan skor ada di my_folder,AZUREML_EXTRA_REQUIREMENTS_TXT
harus diatur ke requirements.txt.AZUREML_EXTRA_REQUIREMENTS_TXT
tidak akan lagi disetel ke my_folder/requirements.txt.
Langkah berikutnya
Untuk mempelajari lebih lanjut tentang menyebarkan model, lihat Cara menyebarkan model.
Untuk mempelajari cara memecahkan masalah penyebaran gambar docker bawaan, lihat cara memecahkan masalah penyebaran gambar Docker bawaan.