Melatih model scikit-learn dalam skala besar dengan Azure Machine Learning (SDK v1)
BERLAKU UNTUK: Python SDK azureml v1
Dalam artikel ini, pelajari cara menjalankan skrip pelatihan scikit-learn dengan Azure Machine Learning.
Contoh skrip dalam artikel ini digunakan untuk mengklasifikasikan gambar bunga iris untuk membangun model pembelajaran mesin berdasarkan himpunan data iris scikit-learn.
Baik melatih model scikit-learn pembelajaran mesin dari awal atau membawa model yang ada ke cloud, Anda dapat menggunakan Azure Machine Learning untuk memperluas skala pekerjaan pelatihan sumber terbuka menggunakan sumber daya komputasi cloud elastis. Anda dapat membuat, menyebarkan, membuat versi, dan memantau model tingkat produksi dengan Azure Machine Learning.
Prasyarat
Anda dapat menjalankan kode ini dalam instans komputasi Azure Machine Learning, atau Jupyter Notebook Anda sendiri:
Instans komputasi Azure Machine Learning
- Menyelesaikan Mulai Cepat: Mulai menggunakan Azure Machine Learning untuk membuat instans komputasi. Setiap instans komputasi menyertakan server buku catatan khusus yang dimuat sebelumnya dengan SDK dan repositori sampel notebook.
- Pilih tab notebook di studio Azure Machine Learning. Dalam contoh folder pelatihan di server notebook, temukan notebook yang telah selesai dan diperluas dengan menavigasi ke direktori ini: folder how-to-use-azureml > ml-frameworks > scikit-learn > train-hyperparameter-tune-deploy-with-sklearn.
- Anda dapat menggunakan kode pra-populated di folder pelatihan sampel untuk menyelesaikan tutorial ini.
Buat server Jupyter Notebook dan jalankan kode di bagian berikut.
Menyiapkan eksperimen
Bagian ini menyiapkan eksperimen pelatihan dengan memuat paket Python yang diperlukan, menginisialisasi ruang kerja, membuat lingkungan pelatihan, dan menyiapkan skrip pelatihan.
Menginisialisasi ruang kerja
Ruang kerja Azure Machine Learning adalah sumber daya tingkat teratas untuk layanan ini. Ini menyediakan tempat terpusat untuk bekerja dengan semua artefak yang Anda buat. Di SDK Python, Anda dapat mengakses artefak ruang kerja dengan membuat objek workspace
.
Buat objek ruang kerja dari file config.json
yang dibuat di bagian prasyarat.
from azureml.core import Workspace
ws = Workspace.from_config()
Mempersiapkan skrip
Dalam tutorial ini, skrip pelatihan train_iris.py sudah disediakan untuk Anda. Dalam praktiknya, Anda harus dapat mengambil skrip pelatihan kustom apa adanya dan menjalankannya dengan Azure Pembelajaran Mesin tanpa harus mengubah kode Anda.
Catatan
- Skrip pelatihan yang disediakan menunjukkan cara mencatat beberapa metrik ke Pembelajaran Mesin Azure Anda yang dijalankan menggunakan
Run
objek dalam skrip. - Skrip pelatihan yang disediakan menggunakan data contoh dari fungsi
iris = datasets.load_iris()
. Untuk menggunakan dan mengakses data Anda sendiri, lihat cara berlatih dengan himpunan data agar data tersedia selama pelatihan.
Menentukan lingkungan Anda
Untuk menentukan Azure Pembelajaran Mesin Environment yang merangkum dependensi skrip pelatihan, Anda dapat menentukan lingkungan kustom atau menggunakan dan lingkungan yang dikumpulkan Azure Pembelajaran Mesin.
Menggunakan lingkungan yang dikumpulkan
Secara opsional, Azure Pembelajaran Mesin menyediakan lingkungan bawaan yang dikumpulkan jika Anda tidak ingin menentukan lingkungan Anda sendiri.
Jika ingin menggunakan lingkungan yang dikumpulkan, Anda dapat menjalankan perintah berikut:
from azureml.core import Environment
sklearn_env = Environment.get(workspace=ws, name='AzureML-Tutorial')
Membuat lingkungan kustom
Anda juga dapat membuat lingkungan kustom Anda sendiri. Tentukan dependensi conda dalam file YAML; dalam contoh ini file diberi nama conda_dependencies.yml
.
dependencies:
- python=3.7
- scikit-learn
- numpy
- pip:
- azureml-defaults
Buat lingkungan Azure Pembelajaran Mesin dari spesifikasi lingkungan Conda ini. Lingkungan akan dikemas ke dalam kontainer Docker pada saat runtime bahasa umum.
from azureml.core import Environment
sklearn_env = Environment.from_conda_specification(name='sklearn-env', file_path='conda_dependencies.yml')
Untuk informasi selengkapnya tentang membuat dan menggunakan lingkungan, lihat Membuat dan menggunakan lingkungan perangkat lunak di Azure Machine Learning.
Mengonfigurasi dan mengirimkan eksekusi pelatihan Anda
Membuat ScriptRunConfig
Buat objek ScriptRunConfig untuk menentukan detail konfigurasi pekerjaan pelatihan, yang mencakup skrip pelatihan, lingkungan yang akan digunakan, dan target komputasi yang akan dijalankan.
Argumen apa pun ke skrip pelatihan Anda akan diteruskan melalui baris perintah jika ditentukan dalam parameter arguments
.
Kode berikut akan mengonfigurasi objek ScriptRunConfig untuk mengirimkan pekerjaan Anda untuk dieksekusi di komputer lokal.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory='.',
script='train_iris.py',
arguments=['--kernel', 'linear', '--penalty', 1.0],
environment=sklearn_env)
Jika Anda ingin menjalankan pekerjaan Anda pada kluster jarak jauh, Anda dapat menentukan target komputasi yang diinginkan ke parameter compute_target
ScriptRunConfig.
from azureml.core import ScriptRunConfig
compute_target = ws.compute_targets['<my-cluster-name>']
src = ScriptRunConfig(source_directory='.',
script='train_iris.py',
arguments=['--kernel', 'linear', '--penalty', 1.0],
compute_target=compute_target,
environment=sklearn_env)
Mengirimkan eksekusi Anda
from azureml.core import Experiment
run = Experiment(ws,'Tutorial-TrainIRIS').submit(src)
run.wait_for_completion(show_output=True)
Peringatan
Azure Machine Learning menjalankan skrip pelatihan dengan menyalin seluruh direktori sumber. Jika Anda memiliki data sensitif yang tidak ingin Anda unggah, gunakan file .ignore atau jangan sertakan dalam direktori sumber. Sebagai gantinya, akses data Anda menggunakan himpunan data Azure Pembelajaran Mesin.
Apa yang terjadi selama eksekusi dijalankan
Saat eksekusi dijalankan, eksekusi melewati tahap-tahap berikut:
Persiapan: Gambar docker dibuat sesuai dengan lingkungan yang ditentukan. Gambar diunggah ke registri kontainer ruang kerja dan di-cache untuk dijalankan nantinya. Log juga di-streaming ke riwayat eksekusi dan dapat ditampilkan untuk memantau perkembangan. Jika lingkungan yang dikumpulkan ditentukan, gambar yang di-cache dan mendukung lingkungan yang dikumpulkan akan digunakan.
Penskalaan: Kluster mencoba meningkatkan skala jika kluster Batch AI membutuhkan lebih banyak simpul untuk menjalankan eksekusi daripada yang tersedia saat ini.
Dijalankan: Semua skrip dalam folder skrip diunggah ke target komputasi, penyimpanan data dipasang atau disalin, dan
script
dijalankan. Output dari stdout dan folder ./logs di-streaming ke riwayat eksekusi dan dapat digunakan untuk memantau eksekusi.Pascapemrosesan: folder ./outputs dari proses disalin ke riwayat proses.
Menyimpan dan mendaftarkan model
Setelah melatih model, Anda dapat menyimpan dan mendaftarkannya ke ruang kerja. Pendaftaran model memungkinkan Anda menyimpan dan membuat versi model di ruang kerja untuk menyederhanakan manajemen dan penyebaran model.
Tambahkan kode berikut ke skrip pelatihan, train_iris.py, untuk menyimpan model.
import joblib
joblib.dump(svm_model_linear, 'model.joblib')
Daftarkan model ke ruang kerja dengan kode berikut. Dengan menentukan parameter model_framework
,model_framework_version
, dan resource_configuration
, penyebaran model tanpa kode menjadi tersedia. Penyebaran model tanpa kode memungkinkan Anda secara langsung menyebarkan model sebagai layanan web dari model terdaftar, dan objek ResourceConfiguration
menentukan sumber daya komputasi untuk layanan web.
from azureml.core import Model
from azureml.core.resource_configuration import ResourceConfiguration
model = run.register_model(model_name='sklearn-iris',
model_path='outputs/model.joblib',
model_framework=Model.Framework.SCIKITLEARN,
model_framework_version='0.19.1',
resource_configuration=ResourceConfiguration(cpu=1, memory_in_gb=0.5))
Penyebaran
Model yang baru saja Anda daftarkan dapat disebarkan dengan cara yang sama persis seperti model terdaftar lainnya di Azure Pembelajaran Mesin. Cara penyebaran berisi bagian tentang mendaftarkan model, tetapi Anda dapat langsung melompat ke [creating a compute targethow-to-deploy-and-where.md#choose-a-compute-target) untuk penyebaran, karena Anda sudah memiliki model terdaftar.
(Pratinjau) Model penyebaran tanpa kode
Penting
Fitur ini masih dalam pratinjau umum. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas.
Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Alih-alih rute penyebaran tradisional, Anda juga dapat menggunakan fitur penyebaran tanpa kode (pratinjau) untuk scikit-learn. Penyebaran model tanpa kode didukung untuk semua jenis model scikit-learn bawaan. Dengan mendaftarkan model seperti yang ditunjukkan di atas dengan model_framework
, model_framework_version
, resource_configuration
parameter, Anda cukup menggunakan fungsi statis deploy()
untuk menyebarkan model.
web_service = Model.deploy(ws, "scikit-learn-service", [model])
Catatan
Dependensi ini disertakan dalam kontainer inferensi scikit-learn bawaan.
- azureml-defaults
- inference-schema[numpy-support]
- scikit-learn
- numpy
Cara lengkap untuk mencakup penyebaran di Azure Machine Learning secara lebih mendalam.
Langkah berikutnya
Dalam artikel ini, Anda melatih dan mendaftarkan model scikit-learn, dan mempelajari tentang opsi penyebaran. Lihat artikel lainnya ini untuk mempelajari selengkapnya tentang Azure Machine Learning.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk