Membuat profil model untuk menentukan penggunaan sumber daya

BERLAKU UNTUK:Ekstensi ml Azure CLI v1Python SDK azureml v1

Artikel ini menunjukkan cara membuat profil pembelajaran mesin sebagai model untuk menentukan banyaknya CPU dan memori yang perlu dialokasikan untuk model saat menyebarkannya sebagai layanan web.

Penting

Artikel ini berlaku untuk CLI v1 dan SDK v1. Teknik pembuatan profil ini tidak tersedia untuk v2, baik CLI atau SDK.

Penting

Beberapa perintah Azure CLI dalam artikel ini menggunakan ekstensi azure-cli-ml, atau v1, untuk Azure Machine Learning. Dukungan untuk ekstensi v1 akan berakhir pada 30 September 2025. Anda dapat memasang dan menggunakan ekstensi v1 hingga tanggal tersebut.

Kami menyarankan agar Anda beralih ke ekstensi ml, atau v2 sebelum 30 September 2025. Untuk informasi selengkapnya mengenai ekstensi v2, lihat Ekstensi CLI Pembelajaran Mesin Azure dan SDK Python v2.

Prasyarat

Artikel ini mengasumsikan bahwa Anda telah melatih dan mendaftarkan model di Azure Machine Learning. Lihat contoh tutorial di sini untuk contoh pelatihan dan mendaftarkan model scikit-learn di Azure Machine Learning.

Batasan

  • Pembuatan profil tidak akan berfungsi jika Azure Container Registry (ACR) untuk ruang kerja Anda berada di belakang jaringan virtual.

Jalankan pembuat profil

Setelah Anda mendaftarkan model Anda dan menyiapkan komponen lain yang diperlukan untuk penyebarannya, Anda dapat menentukan CPU dan memori yang dibutuhkan layanan yang disebarkan. Pembuatan profil akan menguji layanan yang menjalankan model Anda dan menampilkan informasi seperti penggunaan CPU, penggunaan memori, dan latensi respons. Ini juga memberikan rekomendasi untuk CPU dan memori berdasarkan penggunaan sumber daya.

Untuk membuat profil model, Anda memerlukan:

  • Model terdaftar.
  • Konfigurasi inferensi berdasarkan skrip entri dan definisi lingkungan inferensi Anda.
  • Himpunan data tabular kolom tunggal, tempat setiap baris berisi string yang mewakili contoh data permintaan.

Penting

Pada titik ini kami hanya mendukung pembuatan profil layanan yang mengharapkan data permintaan menjadi string, misalnya: json berseri string, teks, gambar berseri string, dll. Isi setiap baris himpunan data (string) akan dimasukkan ke dalam isi permintaan dan dikirim ke layanan yang merangkum model untuk penilaian.

Penting

Kami hanya mendukung pembuatan profil hingga 2 CPU di wilayah ChinaEast2 dan USGovArizona.

Berikut adalah contoh cara membuat himpunan data input untuk membuat profil layanan yang mengharapkan data permintaan masuk agar berisi json berseri. Dalam hal ini, kami membuat 100 instans berbasis himpunan data konten data permintaan yang sama. Dalam skenario dunia nyata, sebaiknya Anda menggunakan himpunan data yang lebih besar yang berisi berbagai input, terutama jika penggunaan/perilaku sumber daya model Anda bergantung pada input.

BERLAKU UNTUK:Python SDK azureml v1

import json
from azureml.core import Datastore
from azureml.core.dataset import Dataset
from azureml.data import dataset_type_definitions

input_json = {'data': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                       [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}
# create a string that can be utf-8 encoded and
# put in the body of the request
serialized_input_json = json.dumps(input_json)
dataset_content = []
for i in range(100):
    dataset_content.append(serialized_input_json)
dataset_content = '\n'.join(dataset_content)
file_name = 'sample_request_data.txt'
f = open(file_name, 'w')
f.write(dataset_content)
f.close()

# upload the txt file created above to the Datastore and create a dataset from it
data_store = Datastore.get_default(ws)
data_store.upload_files(['./' + file_name], target_path='sample_request_data')
datastore_path = [(data_store, 'sample_request_data' +'/' + file_name)]
sample_request_data = Dataset.Tabular.from_delimited_files(
    datastore_path, separator='\n',
    infer_column_types=True,
    header=dataset_type_definitions.PromoteHeadersBehavior.NO_HEADERS)
sample_request_data = sample_request_data.register(workspace=ws,
                                                   name='sample_request_data',
                                                   create_new_version=True)

Setelah Anda memiliki himpunan data yang berisi contoh data permintaan yang siap, buat konfigurasi inferensi. Konfigurasi inferensi didasarkan pada score.py dan definisi lingkungan. Contoh berikut menunjukkan cara membuat konfigurasi inferensi dan menjalankan pembuatan profil:

from azureml.core.model import InferenceConfig, Model
from azureml.core.dataset import Dataset


model = Model(ws, id=model_id)
inference_config = InferenceConfig(entry_script='path-to-score.py',
                                   environment=myenv)
input_dataset = Dataset.get_by_name(workspace=ws, name='sample_request_data')
profile = Model.profile(ws,
            'unique_name',
            [model],
            inference_config,
            input_dataset=input_dataset)

profile.wait_for_completion(True)

# see the result
details = profile.get_details()

BERLAKU UNTUK:Ekstensi ml Azure CLI v1

Perintah berikut ini menunjukkan cara membuat profil model menggunakan CLI:

az ml model profile -g <resource-group-name> -w <workspace-name> --inference-config-file <path-to-inf-config.json> -m <model-id> --idi <input-dataset-id> -n <unique-name>

Tip

Untuk tetap mendapatkan informasi yang ditampilkan melalui pembuatan profil, gunakan tag atau properti untuk model tersebut. Menggunakan tag atau properti akan menyimpan data dengan model dalam registri model. Contoh berikut menunjukkan penambahkan tag baru yang berisi informasi requestedCpu dan requestedMemoryInGb:

model.add_tags({'requestedCpu': details['requestedCpu'],
                'requestedMemoryInGb': details['requestedMemoryInGb']})
az ml model profile -g <resource-group-name> -w <workspace-name> --i <model-id> --add-tag requestedCpu=1 --add-tag requestedMemoryInGb=0.5

Langkah berikutnya