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 Python SDK, 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 Machine Learning tanpa harus memodifikasi kode Anda.
Catatan
- Skrip pelatihan yang disediakan menunjukkan cara mencatat beberapa metrik ke eksekusi Azure Machine Learning Anda 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
Untuk menentukan Lingkungan Azure Machine Learning yang merangkum dependensi skrip pelatihan Anda, Anda dapat menentukan lingkungan kustom atau penggunaan dan lingkungan yang dikumpulkan Azure Machine Learning.
Menggunakan lingkungan yang dikumpulkan
Secara opsional, Azure Machine Learning 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 Machine Learning dari spesifikasi lingkungan Conda ini. Lingkungan akan dikemas ke dalam kontainer Docker pada saat runtime.
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 diunggah, gunakan file .ignore atau jangan sertakan dalam direktori sumber. Sebagai gantinya, akses data Anda menggunakan himpunan data Azure Machine Learning.
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 Machine Learning. 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) Penyebaran model tanpa kode
Penting
Fitur ini sedang 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 yang dibatasi.
Untuk informasi lebih lanjut, 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 Anda seperti yang ditunjukkan di atas dengan model_framework
, model_framework_version
, resource_configuration
parameter, Anda cukup menggunakan fungsi statis deploy()
untuk menyebarkan model Anda.
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.