Sdílet prostřednictvím


Profilování modelu a určení využití prostředků

PLATÍ PRO:Rozšíření Azure CLI ml v1Python SDK azureml v1

Důležité

Tento článek poskytuje informace o použití Azure Machine Learning SDK verze 1. Sada SDK v1 je od 31. března 2025 zastaralá. Podpora bude ukončena 30. června 2026. Do tohoto data můžete nainstalovat a používat sadu SDK v1. Vaše stávající pracovní postupy využívající sadu SDK v1 budou fungovat i po datu ukončení podpory. Mohou však být vystaveny bezpečnostním rizikům nebo zásadním změnám v případě změn architektury v produktu.

Doporučujeme přejít na SDK v2 před 30. červnem 2026. Další informace o sadě SDK v2 najdete v tématu Co je Azure Machine Learning CLI a Python SDK v2? a referenční informace k sadě SDK v2.

V tomto článku se dozvíte, jak profilovat strojové učení k modelování, abyste zjistili, kolik procesoru a paměti je potřeba pro model přidělit při nasazování jako webové služby.

Důležité

Tento článek se týká rozhraní příkazového řádku v1 a sady SDK verze 1. Tato technika profilace není dostupná pro rozhraní příkazového řádku nebo sadu SDK verze 2.

Důležité

Některé příkazy Azure CLI v tomto článku používají azure-cli-mlrozšíření (nebo v1) pro Azure Machine Learning. Podpora rozhraní příkazového řádku v1 skončila 30. září 2025. Společnost Microsoft již nebude poskytovat technickou podporu ani aktualizace této služby. Vaše stávající pracovní postupy využívající rozhraní příkazového řádku v1 budou fungovat i po datu ukončení podpory. Mohou však být vystaveny bezpečnostním rizikům nebo zásadním změnám v případě změn architektury v produktu.

Doporučujeme, abyste co nejdříve přešli na rozšíření ml, tedy v2. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure Machine Learning CLI a Python SDK v2.

Požadavky

Tento článek předpokládá, že vytrénujete a zaregistrujete model ve službě Azure Machine Learning. Příklad trénování a registrace modelu scikit-learn ve službě Azure Machine Learning najdete v tomto ukázkovém kurzu.

Omezení

  • Profilace nefunguje, když je Azure Container Registry (ACR) pro váš pracovní prostor za virtuální sítí.

Spuštění profileru

Jakmile zaregistrujete model a připravíte další komponenty potřebné pro jeho nasazení, můžete určit procesor a paměť, které nasazená služba potřebuje. Profilace testuje službu, která spouští váš model, a vrací informace, jako je využití procesoru, využití paměti a latence odezvy. Poskytuje také doporučení pro procesor a paměť na základě využití prostředků.

K profilování modelu potřebujete:

  • Registrovaný model.
  • Konfigurace odvozování založená na zaváděcím skriptu a definici prostředí pro odvozování.
  • Tabulková datová sada s jedním sloupcem, kde každý řádek obsahuje řetězec představující ukázková data požadavku.

Důležité

Azure Machine Learning podporuje pouze profilaci služeb, které očekávají, že jejich data požadavku budou řetězcem, například řetězec serializovaný json, text, serializovaný obrázek řetězce atd. Obsah každého řádku datové sady (řetězec) se vloží do textu požadavku HTTP a odešle do služby zapouzdření modelu pro bodování.

Důležité

Profilaci podporujeme pouze 2 procesory v oblasti ChinaEast2 a USGovArizona.

Následuje příklad, jak můžete vytvořit vstupní datovou sadu pro profilování služby, která očekává, že data příchozích požadavků budou obsahovat serializovaný json. V tomto případě jsme vytvořili datovou sadu založenou na 100 instancích stejného obsahu dat požadavku. Ve scénářích reálného světa doporučujeme používat větší datové sady obsahující různé vstupy, zejména pokud je využití a chování prostředků modelu závislé na vstupu.

PLATÍ PRO:Azure Machine Learning SDK v1 pro Python

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)

Jakmile máte datovou sadu obsahující ukázková data požadavku připravená, vytvořte konfiguraci odvozování. Konfigurace odvozování je založená na score.py a definici prostředí. Následující příklad ukazuje, jak vytvořit konfiguraci odvozování a spustit profilaci:

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()

PLATÍ PRO: Rozšíření Azure CLI ml v1

Následující příkaz ukazuje, jak profilovat model pomocí rozhraní příkazového řádku:

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>

Návod

Chcete-li zachovat informace vrácené profilací, použijte značky nebo vlastnosti modelu. Použití značek nebo vlastností ukládá data s modelem v registru modelu. Následující příklady ukazují přidání nové značky obsahující tyto requestedCpu informace 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

Další kroky