Crie o perfil do seu modelo para determinar a utilização de recursos
APLICA-SE A:Azure CLI ml extension v1Python SDK azureml v1
Este artigo mostra como criar o perfil de um aprendizado de máquina para modelar para determinar a quantidade de CPU e memória que você precisará alocar para o modelo ao implantá-lo como um serviço Web.
Importante
Este artigo se aplica à CLI v1 e SDK v1. Essa técnica de criação de perfil não está disponível para a v2 da CLI ou SDK.
Importante
Alguns dos comandos da CLI do Azure neste artigo usam a extensão , ou v1, para o azure-cli-ml
Azure Machine Learning. O suporte para a extensão v1 terminará em 30 de setembro de 2025. Você poderá instalar e usar a extensão v1 até essa data.
Recomendamos que você faça a transição para a ml
extensão , ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, consulte Extensão CLI do Azure ML e Python SDK v2.
Pré-requisitos
Este artigo pressupõe que você tenha treinado e registrado um modelo com o Azure Machine Learning. Veja o tutorial de exemplo aqui para obter um exemplo de treinamento e registro de um modelo de aprendizagem scikit com o Azure Machine Learning.
Limitações
- A criação de perfil não funcionará quando o Registro de Contêiner do Azure (ACR) para seu espaço de trabalho estiver atrás de uma rede virtual.
Executar o criador de perfil
Depois de registrar seu modelo e preparar os outros componentes necessários para sua implantação, você pode determinar a CPU e a memória de que o serviço implantado precisará. A criação de perfil testa o serviço que executa seu modelo e retorna informações como o uso da CPU, o uso da memória e a latência de resposta. Ele também fornece uma recomendação para a CPU e memória com base no uso de recursos.
Para traçar o perfil do seu modelo, você vai precisar de:
- Um modelo registado.
- Uma configuração de inferência baseada no script de entrada e definição de ambiente de inferência.
- Um conjunto de dados tabular de coluna única, na qual cada linha contém uma cadeia de carateres que representa dados de pedido de amostra.
Importante
Neste ponto, oferecemos suporte apenas à criação de perfil de serviços que esperam que seus dados de solicitação sejam uma cadeia de caracteres, por exemplo: string serialized json, text, string serialized image, etc. O conteúdo de cada linha do conjunto de dados (string) será colocado no corpo da solicitação HTTP e enviado para o serviço que encapsula o modelo para pontuação.
Importante
Suportamos apenas a criação de perfis de até 2 CPUs na região ChinaEast2 e USGovArizona.
Abaixo está um exemplo de como você pode construir um conjunto de dados de entrada para criar o perfil de um serviço que espera que seus dados de solicitação de entrada contenham json serializado. Nesse caso, criamos um conjunto de dados baseado em 100 instâncias do mesmo conteúdo de dados de solicitação. Em cenários do mundo real, sugerimos que você use conjuntos de dados maiores contendo várias entradas, especialmente se o uso/comportamento do recurso do modelo depender da entrada.
APLICA-SE A: 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)
Depois de ter o conjunto de dados contendo dados de solicitação de exemplo pronto, crie uma configuração de inferência. A configuração de inferência é baseada na definição de score.py e ambiente. O exemplo a seguir demonstra como criar a configuração de inferência e executar a criação de perfil:
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()
APLICA-SE A: Azure CLI ml extension v1
O comando a seguir demonstra como criar o perfil de um modelo usando a 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>
Gorjeta
Para manter as informações retornadas pela criação de perfil, use tags ou propriedades para o modelo. O uso de tags ou propriedades armazena os dados com o modelo no registro do modelo. Os exemplos a seguir demonstram a adição de uma nova tag contendo as requestedCpu
informações e 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
Próximos passos
- Resolver problemas de uma implementação com falhas
- Implantar no Serviço Kubernetes do Azure
- Criar aplicativos cliente para consumir serviços Web
- Atualizar serviço Web
- Como implantar um modelo usando uma imagem personalizada do Docker
- Utilizar o TLS para proteger um serviço Web através do Azure Machine Learning
- Monitore seus modelos do Azure Machine Learning com o Application Insights
- Recolher dados para modelos em produção
- Criar alertas de eventos e gatilhos para implantações de modelo