Compartilhar via


Implantar pacotes de modelo em pontos de extremidade online (versão prévia)

O pacote de modelo é uma capacidade no Azure Machine Learning que permite coletar todas as dependências necessárias para implantar um modelo de machine learning em uma plataforma de serviço. A criação de pacotes antes de implantar modelos fornece implantação robusta e confiável e um fluxo de trabalho MLOps mais eficiente. Os pacotes podem ser movidos entre workspaces e até mesmo fora do Azure Machine Learning. Saiba mais sobre Pacotes de modelo (versão prévia)

Importante

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos.

Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Neste artigo, você aprenderá a empacotar um modelo e implantá-lo em um ponto de extremidade online no Azure Machine Learning.

Pré-requisitos

Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:

  • Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.

  • Um workspace do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Como gerenciar workspaces para criar um.

  • O RBAC do Azure (controle de acesso baseado em função) do Azure é usado para permitir acesso a operações no Azure Machine Learning. Para executar as etapas neste artigo, sua conta de usuário deve receber a função de proprietário ou colaborador para o workspace do Azure Machine Learning ou uma função personalizada. Para obter mais informações, consulte Gerenciar acesso a um workspace do Azure Machine Learning.

Sobre este exemplo

Neste exemplo, você empacota um modelo de tipo personalizado e o implanta em um ponto de extremidade online para inferência online.

O exemplo neste artigo é baseado em exemplos de códigos contidos no repositório azureml-examples . Para executar os comandos localmente sem precisar copiar/colar o YAML e outros arquivos, primeiro clone o repositório e altere os diretórios para a pasta:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

Esta seção usa o exemplo na pasta endpoints/online/deploy-packages/custom-model.

Conectar-se ao workspace

Conecte-se ao workspace do Azure Machine Learning no qual você fará seu trabalho.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Empacotar o modelo

É possível criar pacotes de modelo explicitamente para permitir que você controle como a operação de empacotamento é feita. Você pode criar pacotes de modelo especificando:

  • Modelo a ser empacotado: cada pacote pode conter apenas um único modelo. O Azure Machine Learning não dá suporte ao empacotamento de vários modelos no mesmo pacote.
  • Ambiente base: os ambientes são usados para indicar a imagem base e, em pacotes Python, as dependências de que seu modelo precisa. Para modelos do MLflow, o Azure Machine Learning gera automaticamente o ambiente base. Para modelos personalizados, você precisa especificá-lo.
  • Tecnologia de serviço: a pilha de inferência usada para executar o modelo.

Dica

Se o modelo for do MLflow, não será necessário criar o pacote de modelo manualmente. É possível empacotar automaticamente antes da implantação. Confira Implantar modelos do MLflow em pontos de extremidade online.

  1. Os pacotes de modelo exigem que o modelo seja registrado no workspace ou em um registro do Azure Machine Learning. Neste exemplo, você já tem uma cópia local do modelo no repositório, portanto, só precisa publicar o modelo no registro no workspace. Você pode ignorar esta seção se o modelo que está tentando implantar já estiver registrado.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Nosso modelo requer que os seguintes pacotes sejam executados e os especificamos em um arquivo conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Observação

    Observe como apenas os requisitos do modelo são indicados no YAML conda. Qualquer pacote necessário para o servidor de inferência será incluído pela operação de pacote.

    Dica

    Se o modelo exigir pacotes hospedados em feeds particulares, você poderá configurar seu pacote para incluí-los. Leia Empacotar um modelo que tenha dependências em feeds particulares do Python.

  3. Crie um ambiente base que contenha os requisitos do modelo e uma imagem base. Somente as dependências exigidas pelo modelo são indicadas no ambiente base. Para modelos do MLflow, o ambiente base é opcional, e neste caso, o Azure Machine Learning o gera automaticamente para você.

    Crie uma definição de ambiente base:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Em seguida, crie o ambiente da seguinte maneira:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Crie uma especificação de pacote:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Inicie a operação de pacote de modelo:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. O resultado da operação de pacote é um ambiente.

Implantar o pacote de modelo

Os pacotes de modelo podem ser implantados diretamente em pontos de extremidade online no Azure Machine Learning. Siga estas etapas para implantar um pacote em um ponto de extremidade online:

  1. Escolha um nome para um ponto de extremidade hospedar a implantação do pacote e crie-o:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Crie a implantação usando o pacote. Observe como environment está configurado com o pacote criado.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Dica

    Observe que você não especifica o modelo ou o script de pontuação nesse exemplo; todos fazem parte do pacote.

  3. Inicie a implantação:

    az ml online-deployment create -f deployment.yml
    
  4. Neste ponto, a implantação está pronta para ser consumida. Você pode testar o funcionamento criando um arquivo de solicitação de exemplo:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Enviar a solicitação para o ponto de extremidade

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Próxima etapa