Partilhar via


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:

Uma captura de tela mostrando uma estrutura de pastas local contendo vários modelos.

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.pkllocal:

$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:

Uma captura de tela mostrando a estrutura de pastas do local de armazenamento para vários modelos.

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:

Uma captura de tela de uma estrutura de pastas mostrando os artefatos de modelo de um modelo registrado.

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:

Uma captura de tela da estrutura de pastas mostrando vários modelos.

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.