Azure Pembelajaran Mesin menyediakan beberapa cara untuk mengirimkan pekerjaan pelatihan ML. Dalam artikel ini, Anda akan mempelajari cara mengirimkan pekerjaan menggunakan metode berikut:
Ekstensi Azure CLI untuk pembelajaran mesin: ml Ekstensi, juga disebut sebagai CLI v2.
Di PowerShell, curl adalah alias untuk Invoke-WebRequest dan curl -d "key=val" -X POST uri menjadi Invoke-WebRequest -Body "key=val" -Method POST -Uri uri.
Meskipun dimungkinkan untuk memanggil REST API dari PowerShell, contoh dalam artikel ini mengasumsikan Anda menggunakan Bash.
Utilitas jq untuk memproses JSON. Utilitas ini digunakan untuk mengekstrak nilai dari dokumen JSON yang dikembalikan dari panggilan REST API.
Mengkloning repositori contoh
Cuplikan kode dalam artikel ini didasarkan pada contoh dalam contoh Azure Pembelajaran Mesin repositori GitHub. Untuk mengkloning repositori ke lingkungan pengembangan Anda, gunakan perintah berikut:
Gunakan --depth 1 untuk mengkloning hanya penerapan terbaru ke repositori, yang mengurangi waktu untuk menyelesaikan operasi.
Contoh pekerjaan
Contoh dalam artikel ini menggunakan himpunan data bunga iris untuk melatih model MLFlow.
Melatih di cloud
Saat pelatihan di cloud, Anda harus tersambung ke ruang kerja Azure Pembelajaran Mesin dan memilih sumber daya komputasi yang akan digunakan untuk menjalankan pekerjaan pelatihan.
1. Hubungkan ke ruang kerja
Tip
Gunakan tab di bawah ini untuk memilih metode yang ingin Anda gunakan untuk melatih model. Memilih tab akan secara otomatis mengalihkan semua tab dalam artikel ini ke tab yang sama. Anda dapat memilih tab lain kapan saja.
Untuk menyambungkan ke ruang kerja, Anda memerlukan parameter pengidentifikasi - langganan, grup sumber daya, dan nama ruang kerja. Anda akan menggunakan detail ini di MLClient dari azure.ai.ml namespace layanan untuk mendapatkan handel ke ruang kerja Azure Pembelajaran Mesin yang diperlukan. Untuk mengautentikasi, Anda menggunakan otentikasi Azure default. Periksa contoh ini untuk detail selengkapnya tentang cara mengonfigurasi info masuk dan menyambungkan ke ruang kerja.
#import required libraries
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace = '<AZUREML_WORKSPACE_NAME>'
#connect to the workspace
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
Saat menggunakan Azure CLI, Anda memerlukan parameter pengidentifikasi - langganan, grup sumber daya, dan nama ruang kerja. Meskipun Anda dapat menentukan parameter ini untuk setiap perintah, Anda juga dapat mengatur default yang akan digunakan untuk semua perintah. Gunakan perintah berikut untuk mengatur nilai default. Ganti <subscription ID>, <Azure Machine Learning workspace name>, dan <resource group> dengan nilai untuk konfigurasi Anda:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Contoh REST API dalam artikel ini menggunakan $SUBSCRIPTION_IDtempat penampung , , $RESOURCE_GROUP$LOCATION, dan $WORKSPACE . Ganti tempat penampung dengan nilai Anda sendiri sebagai berikut:
$SUBSCRIPTION_ID: ID langganan Azure Anda.
$RESOURCE_GROUP: Grup sumber daya Azure yang berisi ruang kerja Anda.
$LOCATION: Wilayah Azure tempat ruang kerja Anda berada.
$WORKSPACE: Nama ruang kerja Azure Pembelajaran Mesin Anda.
$COMPUTE_NAME: Nama kluster komputasi Azure Pembelajaran Mesin Anda.
REST administratif meminta token autentikasi perwakilan layanan. Anda dapat mengambil token dengan perintah berikut. Token disimpan dalam $TOKEN variabel lingkungan:
Penyedia layanan menggunakan argumen api-version untuk memastikan kompatibilitas. Argumen api-version bervariasi dari layanan ke layanan. Atur versi API sebagai variabel untuk mengakomodasi versi mendatang:
API_VERSION="2022-05-01"
Saat Anda berlatih menggunakan REST API, data dan skrip pelatihan harus diunggah ke akun penyimpanan yang dapat diakses ruang kerja. Contoh berikut mendapatkan informasi penyimpanan untuk ruang kerja Anda dan menyimpannya ke dalam variabel sehingga kita dapat menggunakannya nanti:
Kluster komputasi Azure Pembelajaran Mesin adalah sumber daya komputasi terkelola penuh yang dapat digunakan untuk menjalankan pekerjaan pelatihan. Dalam contoh berikut, kluster komputasi bernama cpu-compute dibuat.
Saat respons dikembalikan setelah beberapa detik, ini hanya menunjukkan bahwa permintaan pembuatan telah diterima. Diperlukan waktu beberapa menit agar pembuatan kluster selesai.
Untuk menjalankan skrip ini, Anda akan menggunakan command yang menjalankan skrip Python main.py yang terletak di bawah ./sdk/python/jobs/single-step/lightgbm/iris/src/. Perintah akan dijalankan dengan mengirimkannya sebagai job ke Azure Pembelajaran Mesin.
Catatan
Untuk menggunakan komputasi tanpa server, hapus compute="cpu-cluster" dalam kode ini.
# submit the command
returned_job = ml_client.jobs.create_or_update(command_job)
# get a URL for the status of the job
returned_job.studio_url
Dalam contoh di atas, Anda mengonfigurasi:
code - jalur tempat kode untuk menjalankan perintah berada
command - perintah yang perlu dijalankan
environment - lingkungan yang diperlukan untuk menjalankan skrip pelatihan. Dalam contoh ini, kami menggunakan lingkungan yang dikumpulkan atau siap pakai yang disediakan oleh Azure Pembelajaran Mesin yang disebut AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Kami menggunakan versi terbaru lingkungan ini dengan menggunakan direktif @latest . Anda juga dapat menggunakan lingkungan kustom dengan menentukan gambar docker dasar dan menentukan yaml conda di atasnya.
inputs - kamus input menggunakan pasangan nilai nama ke perintah. Kunci adalah nama untuk input dalam konteks pekerjaan dan nilai adalah nilai input. Masukan direferensikan dalam command menggunakan ekspresi ${{inputs.<input_name>}}. Untuk menggunakan file atau folder sebagai input, Anda dapat menggunakan kelas Input. Untuk informasi selengkapnya, lihat ekspresi SDK dan CLI v2.
Untuk informasi selengkapnya, lihat dokumentasi referensi.
Saat Anda mengirimkan pekerjaan, URL dikembalikan ke status pekerjaan di studio Azure Pembelajaran Mesin. Gunakan antarmuka pengguna studio untuk melihat kemajuan pekerjaan. Anda juga dapat menggunakan returned_job.status untuk memeriksa status pekerjaan saat ini.
az ml job create Perintah yang digunakan dalam contoh ini memerlukan file definisi pekerjaan YAML. Konten file yang digunakan dalam contoh ini adalah:
Catatan
Untuk menggunakan komputasi tanpa server, hapus compute: azureml:cpu-cluster" dalam kode ini.
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml:AzureML-lightgbm-3.3@latest
compute: azureml:cpu-cluster
display_name: lightgbm-iris-example
experiment_name: lightgbm-iris-example
description: Train a LightGBM model on the Iris dataset.
Di atas, Anda mengonfigurasi:
code - jalur tempat kode untuk menjalankan perintah berada
command - perintah yang perlu dijalankan
inputs - kamus input menggunakan pasangan nilai nama ke perintah. Kunci adalah nama untuk input dalam konteks pekerjaan dan nilai adalah nilai input. Masukan direferensikan dalam command menggunakan ekspresi ${{inputs.<input_name>}}. Untuk informasi selengkapnya, lihat ekspresi SDK dan CLI v2.
environment - lingkungan yang diperlukan untuk menjalankan skrip pelatihan. Dalam contoh ini, kami menggunakan lingkungan yang dikumpulkan atau siap pakai yang disediakan oleh Azure Pembelajaran Mesin yang disebut AzureML-lightgbm-3.3. Kami menggunakan versi terbaru lingkungan ini dengan menggunakan direktif @latest . Anda juga dapat menggunakan lingkungan kustom dengan menentukan gambar docker dasar dan menentukan yaml conda di atasnya.
Untuk mengirimkan pekerjaan, gunakan perintah berikut. ID eksekusi (nama) dari pekerjaan pelatihan disimpan dalam $run_id variabel:
run_id=$(az ml job create -f jobs/single-step/lightgbm/iris/job.yml --query name -o tsv)
Anda dapat menggunakan ID eksekusi tersimpan untuk mengembalikan informasi tentang pekerjaan. Parameter --web membuka antarmuka pengguna web studio Azure Pembelajaran Mesin tempat Anda dapat menelusuri detail tentang pekerjaan:
az ml job show -n $run_id --web
Sebagai bagian dari pengiriman pekerjaan, skrip pelatihan dan data harus diunggah ke lokasi penyimpanan cloud yang dapat diakses oleh ruang kerja Azure Pembelajaran Mesin Anda.
Gunakan perintah Azure CLI berikut untuk mengunggah skrip pelatihan. Perintah menentukan direktori yang berisi file yang diperlukan untuk pelatihan, bukan file individual. Jika Anda ingin menggunakan REST untuk mengunggah data, lihat referensi Letakkan Blob :
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/testjob -s cli/jobs/single-step/lightgbm/iris/src/ --account-name $AZURE_STORAGE_ACCOUNT
Buat referensi versi ke data pelatihan. Dalam contoh ini, data sudah ada di cloud dan terletak di https://azuremlexamples.blob.core.windows.net/datasets/iris.csv. Untuk informasi selengkapnya tentang mereferensikan data, lihat Data di Azure Pembelajaran Mesin:
Daftarkan referensi versi ke skrip pelatihan untuk digunakan dengan pekerjaan. Dalam contoh ini, lokasi skrip adalah akun penyimpanan default dan kontainer yang Anda unggah di langkah 1. ID kode pelatihan versi dikembalikan dan disimpan dalam $TRAIN_CODE variabel:
Buat lingkungan yang akan digunakan kluster untuk menjalankan skrip pelatihan. Dalam contoh ini, kami menggunakan lingkungan yang dikumpulkan atau siap pakai yang disediakan oleh Azure Pembelajaran Mesin yang disebut AzureML-lightgbm-3.2-ubuntu18.04-py37-cpu. Perintah berikut mengambil daftar versi lingkungan, dengan yang terbaru berada di bagian atas koleksi. jq digunakan untuk mengambil ID versi ([0]) terbaru, yang kemudian disimpan ke $ENVIRONMENT dalam variabel.
Terakhir, kirimkan pekerjaan. Contoh berikut menunjukkan cara mengirimkan pekerjaan, mereferensikan ID kode pelatihan, ID lingkungan, URL untuk data input, dan ID kluster komputasi. Lokasi output pekerjaan akan disimpan dalam $JOB_OUTPUT variabel:
Tip
Nama pekerjaan harus unik. Dalam contoh ini, uuidgen digunakan untuk menghasilkan nilai unik untuk nama tersebut.
Catatan
Untuk menggunakan komputasi tanpa server, hapus \"computeId\": baris dalam kode ini.
Properti name yang dikembalikan oleh pekerjaan pelatihan digunakan sebagai bagian dari jalur ke model.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
run_model = Model(
path="azureml://jobs/{}/outputs/artifacts/paths/model/".format(returned_job.name),
name="run-model-example",
description="Model created from run.",
type=AssetTypes.MLFLOW_MODEL
)
ml_client.models.create_or_update(run_model)
Tip
Nama (disimpan dalam $run_id variabel) digunakan sebagai bagian dari jalur ke model.
az ml model create -n sklearn-iris-example -v 1 -p runs:/$run_id/model --type mlflow_model
Tip
Nama (disimpan dalam $run_id variabel) digunakan sebagai bagian dari jalur ke model.
Untuk informasi selengkapnya tentang perintah Azure CLI, kelas Python SDK, atau REST API yang digunakan dalam artikel ini, lihat dokumentasi referensi berikut ini: