Menyiapkan pelatihan AutoML untuk data tabular dengan Azure Pembelajaran Mesin CLI dan Python SDK
BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)
Dalam panduan ini, pelajari cara menyiapkan pembelajaran mesin otomatis, AutoML, pekerjaan pelatihan dengan Azure Pembelajaran Mesin Python SDK v2. ML otomatis memilih algoritma dan hyperparameter untuk Anda dan menghasilkan model yang siap digunakan. Panduan ini memberikan detail berbagai opsi yang dapat Anda gunakan untuk mengonfigurasi eksperimen ML otomatis.
Jika Anda lebih suka pengalaman tanpa kode, Anda juga dapat Menyiapkan pelatihan AutoML tanpa kode di studio Azure Machine Learning.
Prasyarat
- Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning.
- Ruang kerja Azure Machine Learning. Jika Anda tidak memilikinya, Anda bisa menggunakan langkah-langkah dalam artikel Membuat sumber daya untuk memulai .
Untuk menggunakan informasi SDK, instal Azure Pembelajaran Mesin SDK v2 untuk Python.
Untuk menginstal SDK Anda dapat baik,
- Buat instans komputasi, yang sudah menginstal Azure Pembelajaran Mesin Python SDK terbaru dan telah dikonfigurasi sebelumnya untuk alur kerja ML. Lihat Membuat instans komputasi Azure Pembelajaran Mesin untuk informasi selengkapnya.
- Menginstal SDK di komputer lokal Anda
Menyiapkan ruang kerja Anda
Untuk terhubung ke ruang kerja, Anda perlu memberikan langganan, grup sumber daya, dan nama ruang kerja.
Detail Ruang Kerja digunakan di MLClient
dari azure.ai.ml
untuk mendapatkan handel ke ruang kerja Azure Pembelajaran Mesin yang diperlukan.
Dalam contoh berikut, autentikasi Azure default digunakan bersama dengan konfigurasi ruang kerja default atau dari file config.json
apa pun yang mungkin telah Anda salin ke dalam struktur folder. Jika tidak config.json
ditemukan, maka Anda perlu memperkenalkan subscription_id, resource_group, dan ruang kerja secara manual saat membuat MLClient
.
from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient
credential = DefaultAzureCredential()
ml_client = None
try:
ml_client = MLClient.from_config(credential)
except Exception as ex:
print(ex)
# Enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
ml_client = MLClient(credential, subscription_id, resource_group, workspace)
Sumber dan format data
Untuk menyediakan data pelatihan ke AutoML di SDK v2, Anda perlu mengunggahnya ke cloud melalui MLTable.
Persyaratan untuk memuat data ke dalam MLTable:
- Data harus dalam bentuk tabular.
- Nilai yang akan diprediksi, kolom target, harus ada dalam data.
Data pelatihan harus dapat diakses dari komputasi jarak jauh. ML v2 otomatis (Python SDK dan CLI/YAML) menerima aset data MLTable (v2), meskipun untuk kompatibilitas mundur juga mendukung Himpunan Data Tabular v1 dari v1 (Set Data Tabular terdaftar) melalui properti himpunan data input yang sama. Namun rekomendasinya adalah menggunakan MLTable yang tersedia di v2. Dalam contoh ini, kami berasumsi data disimpan di jalur lokal, ./train_data/bank_marketing_train_data.csv
Anda dapat membuat MLTable menggunakan Mltable Python SDK seperti dalam contoh berikut:
import mltable
paths = [
{'file': './train_data/bank_marketing_train_data.csv'}
]
train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')
Kode ini membuat file baru, ./train_data/MLTable
, yang berisi format file dan instruksi pemuatan.
./train_data
Sekarang folder memiliki file definisi MLTable ditambah file data, bank_marketing_train_data.csv
.
Untuk informasi selengkapnya tentang MLTable, lihat artikel cara mltable
Pelatihan, validasi, dan data pengujian
Anda dapat menentukan data pelatihan dan himpunan data validasi yang terpisah, namun data pelatihan harus diberikan ke parameter training_data
dalam fungsi pabrik dari tugas ML otomatis Anda.
Jika Anda tidak secara eksplisit menentukan validation_data
parameter atau n_cross_validation
, ML otomatis menerapkan teknik default untuk menentukan bagaimana validasi dilakukan. Penentuan ini tergantung pada jumlah baris dalam set data yang ditetapkan ke parameter training_data
Anda.
Ukuran data pelatihan | Teknik validasi |
---|---|
Lebih besar dari 20.000 baris | Pemisahan data pelatihan/validasi diterapkan. Defaultnya yaitu mengambil 10% dari himpunan data pelatihan awal sebagai set validasi. Pada saatnya, set validasi tersebut digunakan untuk perhitungan metrik. |
Lebih kecil dari atau sama dengan 20.000 baris | Pendekatan validasi silang diterapkan. Jumlah lipatan default tergantung pada jumlah baris. Jika himpunan data kurang dari 1.000 baris, 10 lipatan akan digunakan. Jika baris sama dengan atau antara 1.000 dan 20.000, maka tiga lipatan digunakan. |
Komputasi untuk menjalankan eksperimen
Pekerjaan ML otomatis dengan Python SDK v2 (atau CLI v2) saat ini hanya didukung pada Azure Pembelajaran Mesin komputasi jarak jauh (kluster atau instans komputasi).
Pelajari selengkapnya tentang membuat komputasi dengan Python SDKv2 (atau CLIv2)..
Mengonfigurasi pengaturan eksperimen Anda
Ada beberapa opsi yang dapat Anda gunakan untuk mengonfigurasi eksperimen ML otomatis Anda. Parameter konfigurasi ini diatur dalam metode tugas Anda. Anda juga dapat mengatur pengaturan pelatihan pekerjaan dan kriteria keluar dengan training
pengaturan dan limits
.
Contoh berikut menunjukkan parameter yang diperlukan untuk tugas klasifikasi yang menetapkan akurasi sebagai metrik utama dan 5 kali lipat validasi silang.
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input
# note that this is a code snippet -- you might have to modify the variable values to run it successfully
# make an Input object for the training data
my_training_data_input = Input(
type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)
# configure the classification job
classification_job = automl.classification(
compute=my_compute_name,
experiment_name=my_exp_name,
training_data=my_training_data_input,
target_column_name="y",
primary_metric="accuracy",
n_cross_validations=5,
enable_model_explainability=True,
tags={"my_custom_tag": "My custom value"}
)
# Limits are all optional
classification_job.set_limits(
timeout_minutes=600,
trial_timeout_minutes=20,
max_trials=5,
enable_early_termination=True,
)
# Training properties are optional
classification_job.set_training(
blocked_training_algorithms=["logistic_regression"],
enable_onnx_compatible_models=True
)
Pilih jenis tugas pembelajaran mesin Anda (masalah ML)
Sebelum dapat mengirimkan pekerjaan ML otomatis, Anda perlu menentukan jenis masalah pembelajaran mesin yang Anda selesaikan. Masalah ini menentukan fungsi mana yang digunakan tugas ML otomatis Anda dan algoritme model apa yang diterapkannya.
ML otomatis mendukung tugas berbasis data tabular (klasifikasi, regresi, perkiraan), tugas visi komputer (seperti Klasifikasi Gambar dan Deteksi Objek), dan tugas pemrosesan bahasa alami (seperti tugas Klasifikasi Teks dan Pengenalan Entitas). Lihat artikel kami tentang jenis tugas untuk informasi selengkapnya. Lihat panduan prakiraan rangkaian waktu kami untuk detail selengkapnya tentang menyiapkan pekerjaan prakiraan.
Algoritme yang didukung
Pembelajaran mesin otomatis mencoba berbagai model dan algoritme selama proses otomatisasi dan penyetelan. Sebagai pengguna, Anda tidak perlu menentukan algoritma.
Metode tugas menentukan daftar algoritma/model, untuk diterapkan. allowed_training_algorithms
Gunakan parameter atau blocked_training_algorithms
dalam training
konfigurasi pekerjaan AutoML untuk memodifikasi iterasi lebih lanjut dengan model yang tersedia untuk disertakan atau dikecualikan.
Dalam daftar tautan berikut, Anda dapat menjelajahi algoritme yang didukung per tugas pembelajaran mesin yang tercantum di bawah.
Klasifikasi | Regresi | Prakiraan Rangkaian Waktu |
---|---|---|
Regresi Logistik* | Jaring Elastis* | AutoARIMA |
Light GBM* | Light GBM* | Prophet |
Gradient Boosting* | Gradient Boosting* | Jaring Elastis |
Pohon Keputusan* | Pohon Keputusan* | Light GBM |
K Nearest Neighbors* | K Nearest Neighbors* | K Nearest Neighbors |
Linear SVC* | LARS Lasso* | Pohon Keputusan |
Klasifikasi Vektor Dukungan (SVC)* | Stochastic Gradient Descent (SGD)* | Arimax |
Hutan Acak* | Hutan Acak | LARS Lasso |
Pohon yang Sangat Acak* | Pohon yang Sangat Acak* | Pohon yang Sangat Acak* |
XGBoost* | XGBoost* | Hutan Acak |
Naive Bayes* | XGBoost | TCNForecaster |
Stochastic Gradient Descent (SGD)* | Stochastic Gradient Descent (SGD) | Gradient Boosting |
EksponensialSmoothing | ||
MusimanNaif | ||
Rata-rata | ||
Naive | ||
Penyelamat Musiman |
Dengan algoritma tambahan di bawah ini.
- Algoritma Multi-kelas Klasifikasi Gambar
- Algoritma Multilabel Klasifikasi Gambar
- Algoritma Deteksi Objek Gambar
- Algoritma Multi-label Klasifikasi Teks NLP
- Algoritma Pengenalan Entitas Bernama Teks NLP (NER)
Ikuti tautan ini untuk contoh notebook dari setiap jenis tugas.
Metrik utama
Parameter primary_metric
menentukan metrik yang akan digunakan selama pelatihan model untuk pengoptimalan. Metrik yang tersedia yang dapat Anda pilih ditentukan oleh jenis tugas yang dipilih.
Memilih metrik utama untuk ML otomatis untuk dioptimalkan tergantung pada banyak faktor. Kami menyarankan pertimbangan utama Anda adalah untuk memilih metrik yang paling mewakili kebutuhan bisnis. Kemudian pertimbangkan apakah metrik cocok untuk profil set data Anda (ukuran data, rentang, distribusi kelas, dll.). Bagian berikut meringkas metrik utama yang disarankan berdasarkan jenis tugas dan skenario bisnis.
Pelajari tentang definisi spesifik dari metrik ini dalam Memahami hasil pembelajaran mesin otomatis.
Metrik untuk skenario klasifikasi multi-kelas
Metrik ini berlaku untuk semua skenario klasifikasi, termasuk data tabular, gambar/visi komputer, dan NLP-Teks.
Metrik yang bergantung pada ambang batas, seperti accuracy
, recall_score_weighted
, norm_macro_recall
, dan precision_score_weighted
mungkin tidak dioptimalkan juga untuk himpunan data yang kecil, memiliki kemiringan kelas besar (ketidakseimbangan kelas), atau ketika nilai metrik yang diharapkan sangat dekat dengan 0,0 atau 1,0. Dalam kasus tersebut, AUC_weighted
bisa menjadi pilihan yang lebih baik untuk metrik utama. Setelah ML otomatis selesai, Anda dapat memilih model terbaik berdasarkan metrik yang paling sesuai dengan kebutuhan bisnis Anda.
Metric | Contoh kasus penggunaan |
---|---|
accuracy |
Klasifikasi gambar, analisis sentimen, prediksi Churn |
AUC_weighted |
Deteksi penipuan, Klasifikasi gambar, Deteksi anomali/deteksi spam |
average_precision_score_weighted |
Analisis sentimen |
norm_macro_recall |
Prediksi Churn |
precision_score_weighted |
Metrik untuk skenario multi-label klasifikasi
Untuk Klasifikasi teks, multi-label saat ini 'Akurasi' adalah satu-satunya metrik utama yang didukung.
Untuk klasifikasi gambar multi-label, metrik utama yang didukung ditentukan dalam ClassificationMultilabelPrimaryMetrics Enum
Metrik untuk skenario NLP Text NER (Named Entity Recognition)
- Untuk NLP Text NER (Pengenalan Entitas Karakter) yang saat ini 'Akurasi' adalah satu-satunya metrik utama yang didukung.
Metrik untuk skenario regresi
r2_score
, normalized_mean_absolute_error
dan normalized_root_mean_squared_error
mencoba meminimalkan kesalahan prediksi. r2_score
dan normalized_root_mean_squared_error
sama-sama meminimalkan kesalahan kuadrat rata-rata saat normalized_mean_absolute_error
meminimalkan nilai absolut rata-rata kesalahan. Nilai absolut memperlakukan kesalahan pada semua besarnya sama dan kesalahan kuadrat akan memiliki penalti yang jauh lebih besar untuk kesalahan dengan nilai absolut yang lebih besar. Tergantung apakah kesalahan yang lebih besar harus dihukum lebih atau tidak, seseorang dapat memilih untuk mengoptimalkan kesalahan kuadrat atau kesalahan absolut.
Perbedaan utama antara r2_score
dan normalized_root_mean_squared_error
adalah cara mereka dinormalisasi dan maknanya. normalized_root_mean_squared_error
adalah akar rata-rata kesalahan kuadrat dinormalisasi oleh rentang dan dapat ditafsirkan sebagai besarnya kesalahan rata-rata untuk prediksi. r2_score
adalah kesalahan kuadrat rata-rata yang dinormalisasi oleh perkiraan varians data. Ini adalah proporsi variasi yang dapat ditangkap oleh model.
Catatan
r2_score
dan normalized_root_mean_squared_error
juga berperilaku serupa dengan metrik utama. Jika kumpulan validasi tetap diterapkan, kedua metrik ini mengoptimalkan target yang sama, kesalahan kuadrat rata-rata, dan akan dioptimalkan oleh model yang sama. Saat hanya satu set pelatihan yang tersedia dan validasi silang diterapkan, mereka akan sedikit berbeda karena normalizer untuk normalized_root_mean_squared_error
diperbaiki sebagai rentang set pelatihan, tetapi normalizer untuk r2_score
akan bervariasi untuk setiap lipatan karena varians untuk setiap lipatan.
Jika peringkat, bukan nilai yang tepat adalah menarik, spearman_correlation
dapat menjadi pilihan yang lebih baik karena mengukur korelasi peringkat antara nilai-nilai nyata dan prediksi.
AutoML saat ini tidak mendukung metrik utama apa pun yang mengukur perbedaan relatif antara prediksi dan pengamatan. Metrik r2_score
, normalized_mean_absolute_error
, dan normalized_root_mean_squared_error
adalah semua ukuran perbedaan absolut. Misalnya, jika prediksi berbeda dari pengamatan sebesar 10 unit, metrik ini menghitung nilai yang sama jika pengamatan adalah 20 unit atau 20.000 unit. Sebaliknya, perbedaan persentase, yang merupakan ukuran relatif, masing-masing memberikan kesalahan 50% dan 0,05%! Untuk mengoptimalkan perbedaan relatif, Anda dapat menjalankan AutoML dengan metrik utama yang didukung lalu memilih model dengan yang terbaik mean_absolute_percentage_error
atau root_mean_squared_log_error
. Perhatikan bahwa metrik ini tidak terdefinisi ketika nilai pengamatan apa pun nol, sehingga metrik tersebut mungkin tidak selalu menjadi pilihan yang baik.
Metric | Contoh kasus penggunaan |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
Prediksi harga (rumah/produk/tip), Tinjau prediksi skor |
r2_score |
Keterlambatan maskapai, Estimasi gaji, waktu resolusi bug |
normalized_mean_absolute_error |
Metrik untuk skenario Prakiraan Deret Waktu
Rekomendasinya mirip dengan yang dicatat untuk skenario regresi.
Metric | Contoh kasus penggunaan |
---|---|
normalized_root_mean_squared_error |
Prediksi harga (perkiraan), Pengoptimalan persediaan, Perkiraan permintaan |
r2_score |
Prediksi harga (perkiraan), Pengoptimalan persediaan, Perkiraan permintaan |
normalized_mean_absolute_error |
Metrik untuk skenario Deteksi Objek Gambar
- Untuk Deteksi Objek Gambar, metrik utama yang didukung ditentukan di Enum ObjectDetectionPrimaryMetrics
Metrik untuk skenario Segmentasi Instans Gambar
- Untuk skenario Segmentasi Instans Gambar, metrik utama yang didukung ditentukan di Enum InstanceSegmentationPrimaryMetrics
Featurisasi data
Dalam setiap eksperimen ML otomatis, data Anda secara otomatis diubah menjadi angka dan vektor angka dan juga diskalakan dan dinormalisasi untuk membantu algoritma yang sensitif terhadap fitur yang berada pada skala yang berbeda. Transformasi data ini disebut fiturisasi.
Catatan
Langkah-langkah fiturisasi pembelajaran mesin otomatis (normalisasi fitur, penanganan data yang hilang, mengonversi teks menjadi numerik, dll.) menjadi bagian dari model yang mendasari. Saat menggunakan model untuk prediksi, langkah-langkah fiturisasi yang sama dan diterapkan selama pelatihan akan diterapkan ke data input Anda secara otomatis.
Saat mengonfigurasi pekerjaan ML otomatis, Anda dapat mengaktifkan/menonaktifkan featurization
pengaturan.
Tabel berikut menunjukkan pengaturan yang diterima untuk fiturisasi.
Konfigurasi Fiturisasi | Deskripsi |
---|---|
"mode": 'auto' |
Menunjukkan bahwa sebagai bagian dari praproses, pagar pembatas data dan langkah-langkah fiturisasi dilakukan secara otomatis. Pengaturan default. |
"mode": 'off' |
Menunjukkan langkah fiturisasi tidak boleh dilakukan secara otomatis. |
"mode": 'custom' |
Menunjukkan langkah fiturisasi yang disesuaikan harus digunakan. |
Kode berikut menunjukkan bagaimana fitur kustomisasi dapat disediakan dalam kasus ini untuk pekerjaan regresi.
from azure.ai.ml.automl import ColumnTransformer
transformer_params = {
"imputer": [
ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
],
}
regression_job.set_featurization(
mode="custom",
transformer_params=transformer_params,
blocked_transformers=["LabelEncoding"],
column_name_and_types={"CHMIN": "Categorical"},
)
Kriteria keluar
Ada beberapa opsi yang dapat Anda tentukan dalam fungsi set_limits()
untuk mengakhiri eksperimen Anda sebelum pekerjaan selesai.
Kriteria | description |
---|---|
Tidak ada kriteria | Jika Anda tidak menentukan parameter keluar, eksperimen berlanjut hingga tidak ada kemajuan lebih lanjut yang dibuat pada metrik utama Anda. |
timeout |
Menentukan berapa lama, dalam menit, eksperimen Anda harus terus berjalan. Jika tidak ditentukan, total batas waktu pekerjaan default adalah 6 hari (8.640 menit). Untuk menentukan batas waktu kurang dari atau sama dengan 1 jam (60 menit), pastikan ukuran himpunan data Anda tidak lebih besar dari 10.000.000 (kolom waktu baris) atau hasil kesalahan. Batas waktu ini mencakup penyiapan, fiturisasi, dan pelatihan yang berjalan tetapi tidak termasuk ansambel dan keterjelasan model berjalan di akhir proses karena tindakan tersebut perlu terjadi setelah semua uji coba (pekerjaan anak-anak) selesai. |
trial_timeout_minutes |
Waktu maksimum dalam menit yang dapat dijalankan setiap percobaan (pekerjaan turunan) sebelum berakhir. Jika tidak ditentukan, nilai 1 bulan atau 43200 menit digunakan |
enable_early_termination |
Apakah akan mengakhiri pekerjaan jika skor tidak membaik dalam jangka pendek |
max_trials |
Jumlah maksimum percobaan/menjalankan masing-masing dengan kombinasi algoritma dan hyper-parameter yang berbeda untuk dicoba selama pekerjaan AutoML. Jika tidak ditentukan, defaultnya adalah 1000 percobaan. Jika menggunakan enable_early_termination jumlah percobaan yang digunakan bisa lebih kecil. |
max_concurrent_trials |
Mewakili jumlah maksimum percobaan (pekerjaan turunan) yang akan dieksekusi secara paralel. Ini adalah praktik yang baik untuk mencocokkan nomor ini dengan jumlah node kluster Anda |
Menjalankan eksperimen
Catatan
Jika Anda menjalankan eksperimen dengan pengaturan konfigurasi dan metrik utama yang sama beberapa kali, kemungkinan Anda akan melihat variasi di setiap skor metrik akhir eksperimen dan model yang dihasilkan. Algoritme yang digunakan ML otomatis memiliki keacakan bawaan yang dapat menyebabkan sedikit variasi dalam keluaran model oleh eksperimen dan skor metrik akhir model yang direkomendasikan, seperti akurasi. Anda kemungkinan juga akan melihat hasil dengan nama model yang sama, tetapi parameter hiper yang berbeda yang digunakan.
Peringatan
Jika Anda telah menetapkan aturan di firewall dan/atau Grup Keamanan Jaringan di ruang kerja Anda, verifikasi bahwa izin yang diperlukan diberikan untuk lalu lintas jaringan masuk dan keluar seperti yang ditentukan dalam Mengonfigurasi lalu lintas jaringan masuk dan keluar.
Kirim eksperimen untuk menjalankan dan membuat model. Dengan yang MLClient
dibuat dalam prasyarat, Anda dapat menjalankan perintah berikut di ruang kerja.
# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
classification_job
) # submit the job to the backend
print(f"Created job: {returned_job}")
# Get a URL for the status of the job
returned_job.services["Studio"].endpoint
Beberapa anak berjalan pada kluster
Percobaan ML otomatis yang dijalankan anak dapat dilakukan pada klaster yang sudah menjalankan eksperimen lain. Namun, waktunya tergantung pada berapa banyak node yang memiliki kluster, dan jika node tersebut tersedia untuk menjalankan eksperimen yang berbeda.
Setiap node dalam klaster bertindak sebagai mesin virtual individu (VM) yang dapat mencapai satu pelatihan; untuk ML otomatis ini berarti anak yang dijalankan. Jika semua simpul sibuk, eksperimen baru akan diantrekan. Tetapi jika ada node gratis, eksperimen baru akan menjalankan anak ML otomatis berjalan secara paralel di node / VM yang tersedia.
Untuk membantu mengelola lari anak dan kapan mereka dapat dilakukan, kami sarankan Anda membuat klaster khusus per percobaan, dan mencocokkan max_concurrent_iterations
jumlah eksperimen Anda dengan jumlah node dalam klaster. Dengan cara ini, Anda menggunakan semua node kluster secara bersamaan dengan jumlah run/iterasi anak bersamaan yang Anda inginkan.
Konfigurasikan max_concurrent_iterations
limits
dalam konfigurasi. Jika tidak dikonfigurasi, maka secara default hanya satu run/iterasi anak bersamaan yang diizinkan per percobaan.
Untuk instans komputasi, max_concurrent_trials
dapat diatur agar sama dengan jumlah inti pada VM instans komputasi.
Menjelajahi model dan metrik
ML otomatis menawarkan opsi bagi Anda untuk memantau dan mengevaluasi hasil pelatihan Anda.
Untuk definisi dan contoh bagan performa dan metrik yang disediakan untuk setiap proses, lihat Mengevaluasi hasil eksperimen pembelajaran mesin otomatis.
Untuk mendapatkan ringkasan fiturisasi dan memahami fitur apa yang ditambahkan ke model tertentu, lihat Transparansi fiturisasi.
Dari Azure Pembelajaran Mesin UI di halaman model, Anda juga dapat melihat parameter hiper yang digunakan saat melatih model tertentu dan juga melihat dan menyesuaikan kode pelatihan model internal yang digunakan.
Mendaftarkan dan menggunakan model
Setelah Anda menguji model dan mengonfirmasi bahwa Anda ingin menggunakannya dalam produksi, Anda dapat mendaftarkannya untuk digunakan nanti.
Tip
Untuk model terdaftar, penyebaran satu klik tersedia melalui studio Azure Machine Learning. Lihat cara menggunakan model terdaftar dari studio.
AutoML dalam alur
Untuk memanfaatkan AutoML di alur kerja MLOps, Anda dapat menambahkan langkah-langkah Pekerjaan AutoML ke Azure Pembelajaran Mesin Pipelines Anda. Ini memungkinkan Anda mengotomatiskan seluruh alur kerja dengan menghubungkan skrip persiapan data Anda ke AutoML lalu mendaftarkan dan memvalidasi model terbaik yang dihasilkan.
Di bawah ini adalah alur sampel dengan komponen klasifikasi AutoML dan komponen perintah yang menunjukkan output AutoML yang dihasilkan. Perhatikan bagaimana input (data pelatihan & validasi) dan output (model terbaik) dirujuk dalam langkah yang berbeda.
# Define pipeline
@pipeline(
description="AutoML Classification Pipeline",
)
def automl_classification(
classification_train_data,
classification_validation_data
):
# define the automl classification task with automl function
classification_node = classification(
training_data=classification_train_data,
validation_data=classification_validation_data,
target_column_name="y",
primary_metric="accuracy",
# currently need to specify outputs "mlflow_model" explictly to reference it in following nodes
outputs={"best_model": Output(type="mlflow_model")},
)
# set limits and training
classification_node.set_limits(max_trials=1)
classification_node.set_training(
enable_stack_ensemble=False,
enable_vote_ensemble=False
)
command_func = command(
inputs=dict(
automl_output=Input(type="mlflow_model")
),
command="ls ${{inputs.automl_output}}",
environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
)
show_output = command_func(automl_output=classification_node.outputs.best_model)
pipeline_job = automl_classification(
classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)
# set pipeline level compute
pipeline_job.settings.default_compute = compute_name
# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
pipeline_job,
experiment_name=experiment_name
)
returned_pipeline_job
# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline
Untuk contoh selengkapnya tentang cara menyertakan AutoML dalam alur Anda, silakan lihat contoh repositori kami.
AutoML dalam skala besar: pelatihan terdistribusi
Untuk skenario data besar, AutoML mendukung pelatihan terdistribusi untuk serangkaian model terbatas:
Algoritma terdistribusi | Tugas yang didukung | Batas ukuran data (perkiraan) |
---|---|---|
LightGBM | Klasifikasi, regresi | 1 TB |
TCNForecaster | Prakiraan | 200GB |
Algoritma pelatihan terdistribusi secara otomatis mempartisi dan mendistribusikan data Anda di beberapa simpul komputasi untuk pelatihan model.
Catatan
Validasi silang, model ansambel, dukungan ONNX, dan pembuatan kode saat ini tidak didukung dalam mode pelatihan terdistribusi. Selain itu, AutoML dapat membuat pilihan seperti membatasi fiturizer yang tersedia dan data sub-pengambilan sampel yang digunakan untuk validasi, penjelasan, dan evaluasi model.
Pelatihan terdistribusi untuk klasifikasi dan regresi
Untuk menggunakan pelatihan terdistribusi untuk klasifikasi atau regresi, Anda perlu mengatur training_mode
properti dan max_nodes
objek pekerjaan.
Properti | Deskripsi |
---|---|
training_mode | Menunjukkan mode pelatihan; distributed atau non_distributed . Default ke non_distributed . |
max_nodes | Jumlah simpul yang digunakan untuk pelatihan oleh setiap uji coba AutoML. Pengaturan ini harus lebih besar dari atau sama dengan 4. |
Sampel kode berikut menunjukkan contoh pengaturan ini untuk pekerjaan klasifikasi:
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
classification_job.set_training(
allowed_training_algorithms=["LightGBM"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes for each trial
classification_job.set_limits(
max_nodes=4,
# other limit settings
)
Catatan
Pelatihan terdistribusi untuk tugas klasifikasi dan regresi saat ini tidak mendukung beberapa uji coba bersamaan. Uji coba model dijalankan secara berurutan dengan setiap percobaan menggunakan max_nodes
simpul. max_concurrent_trials
Pengaturan batas saat ini diabaikan.
Pelatihan terdistribusi untuk prakiraan
Untuk mempelajari cara kerja pelatihan terdistribusi untuk tugas prakiraan, lihat artikel prakiraan dalam skala besar . Untuk menggunakan pelatihan terdistribusi untuk prakiraan, Anda perlu mengatur training_mode
, , max_nodes
enable_dnn_training
, dan secara max_concurrent_trials
opsional properti objek pekerjaan.
Properti | Deskripsi |
---|---|
training_mode | Menunjukkan mode pelatihan; distributed atau non_distributed . Default ke non_distributed . |
enable_dnn_training | Bendera untuk mengaktifkan model jaringan neural mendalam. |
max_concurrent_trials | Ini adalah jumlah maksimum model uji coba untuk dilatih secara paralel. Default ke 1. |
max_nodes | Jumlah total simpul yang digunakan untuk pelatihan. Pengaturan ini harus lebih besar dari atau sama dengan 2. Untuk tugas prakiraan, setiap model uji coba dilatih menggunakan $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$ node. |
Sampel kode berikut menunjukkan contoh pengaturan ini untuk pekerjaan prakiraan:
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
forecasting_job.set_training(
enable_dnn_training=True,
allowed_training_algorithms=["TCNForecaster"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
max_concurrent_trials=2,
max_nodes=4,
# other limit settings
)
Lihat bagian sebelumnya tentang konfigurasi dan pengiriman pekerjaan untuk sampel kode konfigurasi lengkap.
Langkah berikutnya
- Pelajari selengkapnya tentang cara dan tempat menerapkan model.
- Pelajari selengkapnya tentang cara menyiapkan AutoML untuk melatih model prakiraan rangkaian waktu.