Partilhar via


Implantar pacotes de modelo em pontos de extremidade online (visualização)

O pacote de modelo é um recurso do Azure Machine Learning que permite coletar todas as dependências necessárias para implantar um modelo de aprendizado de máquina em uma plataforma de serviço. A criação de pacotes antes da implantação de modelos fornece uma implantação robusta e confiável e um fluxo de trabalho MLOps mais eficiente. Os pacotes podem ser movidos entre espaços de trabalho e até mesmo fora do Azure Machine Learning. Saiba mais sobre Pacotes de modelos (pré-visualização)

Importante

Esta funcionalidade está atualmente em pré-visualização pública. Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas.

Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações 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 subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.

  • Uma área de trabalho do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Como gerenciar espaços detrabalho para criar um.

  • Os controlos de acesso baseado em funções (RBAC do Azure) são utilizados para conceder acesso às 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 espaço de trabalho do Azure Machine Learning ou uma função personalizada. Para obter mais informações, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.

Sobre este exemplo

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

O exemplo neste artigo é baseado em exemplos de código contidos no repositório azureml-examples . Para executar os comandos localmente sem ter que copiar/colar YAML e outros arquivos, primeiro clone o repositório e, em seguida, 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.

Ligar à sua área de trabalho

Conecte-se ao espaço de trabalho do Azure Machine Learning onde você fará seu trabalho.

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

Empacotar o modelo

Você pode 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 para embalagem: Cada pacote de modelo pode conter apenas um único modelo. O Azure Machine Learning não oferece suporte ao empacotamento de vários modelos no mesmo pacote de modelo.
  • Ambiente base: Os ambientes são usados para indicar a imagem base e, em pacotes Python, as dependências do modelo precisam. Para modelos 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.

Gorjeta

Se o seu modelo for MLflow, você não precisará criar o pacote de modelo manualmente. Podemos empacotar automaticamente antes da implantação. Consulte Implantar modelos MLflow em pontos de extremidade online.

  1. Os pacotes de modelo exigem que o modelo seja registrado em seu espaço de trabalho 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 espaço de trabalho. Você pode pular 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 os seguintes pacotes para executar e nós os temos especificados 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
    

    Nota

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

    Gorjeta

    Se o seu modelo requer pacotes hospedados em feeds privados, você pode configurar seu pacote para incluí-los. Leia Empacotar um modelo que tem dependências em feeds Python privados.

  3. Crie um ambiente base que contenha os requisitos do modelo e uma imagem base. Somente as dependências exigidas pelo seu modelo são indicadas no ambiente base. Para modelos MLflow, o ambiente base é opcional, caso em que 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 do pacote de modelos:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. O resultado da operação do 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 para 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 é configurado com o pacote que você criou.

    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
    

    Gorjeta

    Observe que você não especifica o modelo ou o script de pontuação neste exemplo; todos eles 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 como ele está funcionando 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óximo passo