Bagikan melalui


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 artikel ini, pelajari cara menyiapkan pekerjaan pelatihan pembelajaran mesin otomatis (AutoML) dengan Azure Pembelajaran Mesin Python SDK v2. ML otomatis memilih algoritma dan hyperparameter untuk Anda dan menghasilkan model yang siap digunakan. Artikel ini menyediakan detail berbagai opsi yang dapat Anda gunakan untuk mengonfigurasi eksperimen pembelajaran mesin otomatis.

Jika Anda lebih suka pengalaman tanpa kode, Anda juga dapat Menyiapkan pelatihan ML Otomatis tanpa kode untuk data tabular dengan antarmuka pengguna studio.

Prasyarat

Untuk menggunakan informasi SDK, instal Azure Pembelajaran Mesin SDK v2 untuk Python.

Untuk menginstal SDK, Anda dapat:

  • Buat instans komputasi, yang sudah memiliki Azure Pembelajaran Mesin Python SDK terbaru dan dikonfigurasi untuk alur kerja ML. Untuk informasi selengkapnya, lihat Membuat instans komputasi Azure Pembelajaran Mesin.
  • Instal SDK di komputer lokal Anda.

Menyiapkan ruang kerja Anda

Untuk menyambungkan ke ruang kerja, Anda perlu menyediakan langganan, grup sumber daya, dan ruang kerja.

Detail Ruang Kerja digunakan di MLClient dari azure.ai.ml untuk mendapatkan handel ke ruang kerja Azure Pembelajaran Mesin yang diperlukan.

Contoh berikut menggunakan autentikasi Azure default dengan konfigurasi atau konfigurasi ruang kerja default dari config.json file dalam struktur folder. Jika tidak config.jsonmenemukan , Anda perlu memperkenalkan ID langganan, grup sumber daya, dan ruang kerja secara manual saat Anda 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)

Tentukan sumber dan format data

Untuk menyediakan data pelatihan 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). Untuk kompatibilitas mundur, ini juga mendukung Himpunan Data Tabular v1 dari v1, Himpunan Data Tabular terdaftar, melalui properti himpunan data input yang sama. Kami menyarankan agar Anda menggunakan MLTable, tersedia di v2. Dalam contoh ini, 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.

Sekarang folder ./train_data memiliki file definisi MLTable ditambah file data, bank_marketing_train_data.csv.

Untuk informasi selengkapnya tentang MLTable, lihat Bekerja dengan tabel di Azure Pembelajaran Mesin.

Pelatihan, validasi, dan data pengujian

Anda dapat menentukan data pelatihan terpisah dan himpunan data validasi. Data pelatihan harus diberikan ke training_data parameter dalam fungsi pabrik pekerjaan pembelajaran mesin 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 dan 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, sepuluh lipatan digunakan.
Jika baris sama dengan atau antara 1.000 dan 20.000, tiga lipatan digunakan.

Komputasi untuk menjalankan eksperimen

Pekerjaan pembelajaran mesin otomatis dengan Python SDK v2 (atau CLI v2) saat ini hanya didukung pada Azure Pembelajaran Mesin kluster komputasi jarak jauh atau instans komputasi. Untuk informasi selengkapnya tentang membuat komputasi dengan Python SDKv2 atau CLIv2, lihat Melatih model dengan Azure Pembelajaran Mesin CLI, SDK, dan REST API.

Mengonfigurasi pengaturan eksperimen Anda

Ada beberapa opsi yang dapat Anda gunakan untuk mengonfigurasi eksperimen pembelajaran mesin 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 menentukan akurasi sebagai metrik utama dan lima lipatan 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

Sebelum Anda dapat mengirimkan pekerjaan ML Otomatis Anda, tentukan jenis masalah pembelajaran mesin yang ingin Anda selesaikan. Masalah ini menentukan fungsi mana yang digunakan pekerjaan Anda dan algoritma model apa yang diterapkannya.

ML otomatis mendukung berbagai jenis tugas:

  • Tugas berbasis data tabular

    • classification
    • regresi
    • Peramalan
  • Tugas visi komputer, termasuk

    • Klasifikasi Gambar
    • Deteksi Objek
  • Tugas pemrosesan bahasa alami, termasuk

    • Klasifikasi teks
    • Pengenalan Entitas

Untuk informasi selengkapnya, lihat jenis tugas. Untuk informasi selengkapnya tentang menyiapkan pekerjaan prakiraan, lihat Menyiapkan AutoML untuk melatih model prakiraan rangkaian waktu.

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 atau model yang akan diterapkan. Untuk memodifikasi iterasi lebih lanjut dengan model yang tersedia untuk disertakan atau dikecualikan, gunakan allowed_training_algorithms parameter atau blocked_training_algorithms dalam training konfigurasi pekerjaan.

Dalam tabel berikut, jelajahi algoritma yang didukung per tugas pembelajaran mesin.

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
SeasonalNaive
Tengah
Naif
SeasonalAverage

Dengan algoritma lain:

Misalnya notebook dari setiap jenis tugas, lihat automl-standalone-jobs.

Metrik utama

Parameter primary_metric menentukan metrik yang akan digunakan selama pelatihan model untuk pengoptimalan. Jenis tugas yang Anda pilih menentukan metrik yang bisa Anda pilih.

Memilih metrik utama untuk pembelajaran mesin 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 himpunan data Anda, termasuk ukuran data, rentang, dan distribusi kelas. Bagian berikut meringkas metrik utama yang disarankan berdasarkan jenis tugas dan skenario bisnis.

Untuk mempelajari definisi spesifik metrik ini, lihat Mengevaluasi hasil eksperimen pembelajaran mesin otomatis.

Metrik untuk skenario klasifikasi multi-kelas

Metrik ini berlaku untuk semua skenario klasifikasi, termasuk data tabular, gambar atau visi komputer, dan teks pemrosesan bahasa alami (NLP-Text).

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 pembelajaran mesin otomatis selesai, Anda dapat memilih model pemenang berdasarkan metrik yang paling sesuai dengan kebutuhan bisnis Anda.

Metrik 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 Pengenalan Entitas Bernama Teks NLP

Untuk NLP Text Named Entity Recognition (NER), 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 semua 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 di semua besaran sama dan kesalahan kuadrat memiliki penalti yang jauh lebih besar untuk kesalahan dengan nilai absolut yang lebih besar. Bergantung pada apakah kesalahan yang lebih besar harus dihukum lebih banyak atau tidak, Anda 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 model.

Catatan

r2_score dan normalized_root_mean_squared_error juga berperilaku serupa dengan metrik utama. Jika set validasi tetap diterapkan, kedua metrik ini mengoptimalkan target yang sama, kesalahan kuadrat rata-rata, dan 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, alih-alih nilai yang tepat, menarik, spearman_correlation bisa menjadi pilihan yang lebih baik. Ini mengukur korelasi peringkat antara nilai nyata dan prediksi.

ML otomatis 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 ML Otomatis dengan metrik utama yang didukung lalu memilih model dengan yang terbaik mean_absolute_percentage_error atau root_mean_squared_log_error. Metrik ini tidak terdefinisi ketika nilai pengamatan apa pun nol, sehingga mungkin tidak selalu menjadi pilihan yang baik.

Metrik 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 rekomendasi untuk skenario regresi.

Metrik 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 dalam ObjectDetectionPrimaryMetrics enum.

Metrik untuk skenario Segmentasi Instans Gambar

Untuk skenario Segmentasi Instans Gambar, metrik utama yang didukung ditentukan dalam InstanceSegmentationPrimaryMetrics enum.

Featurisasi data

Dalam setiap eksperimen pembelajaran mesin otomatis, data Anda secara otomatis diubah menjadi angka dan vektor angka. Data 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, seperti normalisasi fitur, menangani data yang hilang, dan mengonversi teks menjadi numerik, menjadi bagian dari model yang mendasar. Saat Anda menggunakan model untuk prediksi, langkah-langkah fiturisasi yang sama yang diterapkan selama pelatihan diterapkan ke data input Anda secara otomatis.

Saat mengonfigurasi pekerjaan pembelajaran mesin otomatis, Anda dapat mengaktifkan atau menonaktifkan featurization pengaturan.

Tabel berikut menunjukkan pengaturan yang diterima untuk fiturisasi.

Konfigurasi Fiturisasi Deskripsi
"mode": 'auto' Menunjukkan bahwa, sebagai bagian dari pra-pemrosesan, pagar pembatas data dan langkah-langkah fiturisasi dilakukan secara otomatis. Nilai ini adalah 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 set_limits() fungsi untuk mengakhiri eksperimen Anda sebelum pekerjaan selesai.

Kriteria description
Tidak ada kriteria Jika Anda tidak menentukan parameter keluar apa pun, 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 enam 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 eksekusi pelatihan tetapi tidak termasuk ansambel dan keterjelasan model berjalan di akhir proses karena tindakan tersebut perlu terjadi setelah semua percobaan (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 43.200 menit akan 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. Jika tidak ditentukan, defaultnya adalah 1.000 percobaan. Jika Anda menggunakan enable_early_termination, jumlah uji coba 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 angka ini dengan jumlah simpul kluster Anda.

Menjalankan eksperimen

Kirim eksperimen untuk menjalankan dan membuat model.

Catatan

Jika Anda menjalankan eksperimen dengan pengaturan konfigurasi yang sama dan metrik utama beberapa kali, Anda mungkin melihat variasi di setiap eksperimen skor metrik akhir dan model yang dihasilkan. Algoritma yang digunakan pembelajaran mesin otomatis memiliki keacakan melekat yang dapat menyebabkan sedikit variasi dalam output model oleh eksperimen dan skor metrik akhir model yang direkomendasikan, seperti akurasi. Anda juga mungkin melihat hasil dengan nama model yang sama, tetapi parameter hiper yang berbeda yang digunakan.

Peringatan

Jika Anda telah menetapkan aturan di firewall 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.

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 simpul dalam kluster bertindak sebagai komputer virtual individu (VM) yang dapat menyelesaikan satu pelatihan yang dijalankan. Untuk ML Otomatis, fakta ini berarti eksekusi anak. Jika semua simpul sibuk, eksperimen baru akan diantrekan. Jika ada simpul gratis, eksperimen baru menjalankan eksekusi anak secara paralel dalam simpul atau komputer virtual yang tersedia.

Untuk membantu mengelola eksekusi anak dan kapan mereka dapat dilakukan, kami sarankan Anda membuat kluster khusus per eksperimen, dan mencocokkan jumlah max_concurrent_iterations eksperimen Anda dengan jumlah simpul dalam kluster. Dengan cara ini, Anda menggunakan semua simpul kluster secara bersamaan dengan jumlah eksekusi anak bersamaan dan iterasi yang Anda inginkan.

Konfigurasikan max_concurrent_iterations limits dalam konfigurasi. Jika tidak dikonfigurasi, maka secara default hanya satu eksekusi/iterasi turunan bersamaan yang diizinkan per eksperimen. Untuk instans komputasi, max_concurrent_trials dapat diatur agar sama dengan jumlah inti pada komputer virtual instans komputasi.

Menjelajahi model dan metrik

ML otomatis menawarkan opsi bagi Anda untuk memantau dan mengevaluasi hasil pelatihan Anda.

Dari antarmuka pengguna Azure Pembelajaran Mesin 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, Anda dapat menggunakan penyebaran satu klik dengan menggunakan studio Azure Pembelajaran Mesin. Lihat Menyebarkan model Anda.

Menggunakan AutoML dalam alur

Untuk menggunakan ML Otomatis dalam alur kerja operasi pembelajaran mesin, Anda dapat menambahkan langkah-langkah Pekerjaan AutoML ke Azure Pembelajaran Mesin Pipelines Anda. Pendekatan ini memungkinkan Anda mengotomatiskan seluruh alur kerja dengan menghubungkan skrip persiapan data Anda ke ML Otomatis. Kemudian daftarkan dan validasi model terbaik yang dihasilkan.

Kode ini adalah alur sampel dengan komponen klasifikasi ML Otomatis dan komponen perintah yang menunjukkan output yang dihasilkan. Kode mereferensikan input (data pelatihan dan validasi) dan output (model terbaik) 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 ML Otomatis dalam alur Anda, lihat repositori contoh.

Menggunakan AutoML dalam skala besar: pelatihan terdistribusi

Untuk skenario data besar, ML Otomatis mendukung pelatihan terdistribusi untuk serangkaian model terbatas:

Algoritma terdistribusi Tugas yang didukung Batas ukuran data (perkiraan)
LightGBM Klasifikasi, regresi 1 TB
TCNForecaster Prakiraan 200 GB

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, ML Otomatis dapat membuat pilihan seperti membatasi fiturizer dan data sub-pengambilan sampel yang tersedia yang digunakan untuk validasi, penjelasan, dan evaluasi model.

Pelatihan terdistribusi untuk klasifikasi dan regresi

Untuk menggunakan pelatihan terdistribusi untuk klasifikasi atau regresi, atur 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. 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 prakiraan dalam skala besar. Untuk menggunakan pelatihan terdistribusi untuk prakiraan, Anda perlu mengatur training_mode, , max_nodesenable_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 Nilai 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
)

Untuk sampel kode konfigurasi lengkap, lihat bagian sebelumnya tentang konfigurasi dan pengiriman pekerjaan.