Especificar modelo a ser implantado para uso em ponto de extremidade online
APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
Neste artigo, você aprenderá sobre as diferentes maneiras de especificar modelos que deseja usar em implantações online. Ao implantar um modelo em um ponto de extremidade online do Azure Machine Learning, você precisa especificar o modelo de uma das duas maneiras:
- Forneça o caminho para a localização do modelo no computador local
- Forneça uma referência a um modelo versionado que já esteja registrado em seu espaço de trabalho.
A forma como você especifica seu modelo para a implantação de um ponto de extremidade online depende de onde o modelo está armazenado.
No Azure Machine Learning, depois de criar sua implantação, a variável AZUREML_MODEL_DIR
de ambiente aponta para o local de armazenamento no Azure onde seu modelo está armazenado.
Implantação para modelos armazenados localmente
Esta seção usa este exemplo de uma estrutura de pastas local para mostrar como você pode especificar modelos para uso em uma implantação online:
Implantação para um único modelo local
Para usar um único modelo que você tem em sua máquina local em uma implantação, especifique o path
para no model
arquivo de configuração do YAML de implantação. O código a seguir é um exemplo do YAML de implantação com o caminho /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl
local:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
No Azure Machine Learning, depois de criar sua implantação em um ponto de extremidade online, a variável AZUREML_MODEL_DIR
de ambiente aponta para o local de armazenamento no Azure onde seu modelo está armazenado. Por exemplo, /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1
agora contém o modelo sample_m1.pkl
.
Dentro do script de pontuação (score.py
), você pode carregar seu modelo (neste exemplo, sample_m1.pkl
) na função do init()
script:
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl")
model = joblib.load(model_path)
Implantação para vários modelos locais
Embora a CLI do Azure, o SDK do Python e outras ferramentas de cliente permitam especificar apenas um modelo por implantação na definição de implantação, você ainda pode usar vários modelos em uma implantação registrando uma pasta de modelo que contém todos os modelos como arquivos ou subdiretórios. Para obter mais informações sobre como registrar seus ativos, como modelos, para que você possa especificar seus nomes registrados e versões durante a implantação, consulte Registrar seu modelo e ambiente.
No exemplo de estrutura de pasta local, você percebe que há vários modelos na models
pasta. Para usar esses modelos, em sua implantação YAML, especifique o caminho para a models
pasta da seguinte maneira:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: /Downloads/multi-models-sample/models/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Depois de criar sua implantação, a variável AZUREML_MODEL_DIR
de ambiente aponta para o local de armazenamento no Azure onde seus modelos são armazenados. Por exemplo, /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1
agora contém os modelos e a estrutura do arquivo.
Neste exemplo, o conteúdo da pasta tem esta AZUREML_MODEL_DIR
aparência:
Dentro do init()
seu script de pontuação (score.py
), você pode carregar seus modelos na função. O código a seguir carrega o sample_m1.pkl
modelo:
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ")
model = joblib.load(model_path)
Para obter um exemplo de como implantar vários modelos em uma implantação, consulte Implantar vários modelos em uma implantação (exemplo de CLI) e Implantar vários modelos em uma implantação (exemplo de SDK).
Gorjeta
Se você tiver mais de 1500 arquivos para registrar, considere compactar os arquivos ou subdiretórios como .tar.gz ao registrar os modelos. Para consumir os modelos, você pode descompactar os arquivos ou subdiretórios na init()
função do script de pontuação. Como alternativa, ao registrar os modelos, defina a azureml.unpack
propriedade como True
, para descompactar automaticamente os arquivos ou subdiretórios. Em ambos os casos, o descompactamento dos arquivos acontece uma vez no estágio de inicialização.
Implantação para modelos registrados em seu espaço de trabalho
Você pode usar modelos registrados em sua definição de implantação fazendo referência a seus nomes em seu YAML de implantação. Por exemplo, a seguinte configuração de implantação do YAML especifica o nome registrado model
como azureml:local-multimodel:3
:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:local-multimodel:3
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
Para este exemplo, considere que local-multimodel:3
contém os seguintes artefatos de modelo, que podem ser exibidos na guia Modelos no estúdio do Azure Machine Learning:
Depois de criar sua implantação, a variável AZUREML_MODEL_DIR
de ambiente aponta para o local de armazenamento no Azure onde seus modelos são armazenados. Por exemplo, /var/azureml-app/azureml-models/local-multimodel/3
contém os modelos e a estrutura do arquivo. AZUREML_MODEL_DIR
aponta para a pasta que contém a raiz dos artefatos de modelo. Com base neste exemplo, o conteúdo da pasta tem esta AZUREML_MODEL_DIR
aparência:
Dentro do init()
seu script de pontuação (score.py
), você pode carregar seus modelos na função. Por exemplo, carregue o diabetes.sav
modelo:
def init():
model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav")
model = joblib.load(model_path)
Implantação para modelos disponíveis no catálogo de modelos
Para qualquer modelo no catálogo de modelos, exceto para modelos que estão na coleção do Azure OpenAI, você pode usar a ID do modelo mostrada no cartão do modelo para implantação. Os IDs do modelo são do formato azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
. Por exemplo, um ID de modelo para o modelo Meta Llama 3-8 B Instruct é azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2
.
Alguns cartões modelo incluem blocos de anotações de exemplo que mostram como usar a ID do modelo para a implantação.
Implantação para modelos que estão disponíveis no registro da sua organização
Cada modelo no registro de uma organização tem uma ID de modelo do formulário azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
. Você também pode optar por usar ambientes registrados no mesmo registro.