Especificar o modelo a ser implantado para uso no ponto de extremidade online
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
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 em seu computador local
- Forneça uma referência a um modelo com versão que já está registrado em seu workspace.
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 que você criar a implantação, a variável de ambiente AZUREML_MODEL_DIR
apontará para o local de armazenamento no Azure onde o modelo está armazenado.
Implantação para modelos armazenados localmente
Esta seção usa esse exemplo de estrutura de pasta local para mostrar como é possível especificar modelos para uso em uma implantação online:
Implantação para um único modelo local
Para usar um único modelo que você tem no computador local em uma implantação, especifique o path
para o model
no arquivo de configuração 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 de ambiente AZUREML_MODEL_DIR
apontará para o local de armazenamento no Azure em que o modelo está armazenado. Por exemplo, /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1
agora contém o modelo sample_m1.pkl
.
No script de pontuação (score.py
), você pode carregar seu modelo (nesse exemplo, sample_m1.pkl
) na função do script init()
:
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 que você especifique 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 modelos 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 e versões registrados durante a implantação, confira Registrar modelo e ambiente.
No exemplo de estrutura de pasta local, observe que há vários modelos na pasta models
. Para usar esses modelos, em seu YAML de implantação, especifique o caminho para a pasta models
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 que você criar a implantação, a variável de ambiente AZUREML_MODEL_DIR
apontará 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 de arquivos.
Para este exemplo, o conteúdo da pasta AZUREML_MODEL_DIR
terá a seguinte aparência:
No script de pontuação (score.py
), você pode carregar seus modelos na função init()
. O código a seguir carrega o modelo sample_m1.pkl
:
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, confira Implantar vários modelos em uma implantação (exemplo da CLI) e Implantar vários modelos em uma implantação (exemplo do SDK).
Dica
Se você tiver mais de 1.500 arquivos para registrar, considere a possibilidade de compactar os arquivos ou subdiretórios como .tar.gz ao registrar o modelo. Para consumir os modelos, você pode descompactar os arquivos ou subdiretórios na função init()
do script de pontuação. Como alternativa, ao registrar os modelos, defina a propriedade azureml.unpack
como True
, para descompactar automaticamente os arquivos ou subdiretórios. Em ambos os casos, a descompactação dos arquivos ocorre uma vez no estágio de inicialização.
Implantação para modelos registrados em seu workspace
Você pode usar modelos registrados em sua definição de implantação fazendo referência aos nomes deles no YAML de implantação. Por exemplo, a seguinte configuração de YAML de implantação especifica o nome model
registrado 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
Neste 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 que você criar a implantação, a variável de ambiente AZUREML_MODEL_DIR
apontará 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 do modelo. Com base nesse exemplo, o conteúdo da pasta AZUREML_MODEL_DIR
tem a seguinte aparência:
No script de pontuação (score.py
), você pode carregar seus modelos na função init()
. Por exemplo, carregue o modelo diabetes.sav
:
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 que estão disponíveis no catálogo de modelos
Para qualquer modelo no catálogo de modelos, exceto os modelos que estão na coleção do OpenAI do Azure, você pode usar a ID do modelo mostrada no cartão do modelo para implantação. As IDs de modelo têm o formato azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
. Por exemplo, uma 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 de modelo incluem notebooks 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 no formato azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}
. Você também pode optar por usar ambientes registrados no mesmo registro.