Compartilhar via


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:

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

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:

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

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:

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

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:

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

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.