Compartilhar via


Empacotar e implantar modelos fora do Azure Machine Learning (versão prévia)

Você pode implantar modelos fora do Azure Machine Learning para serviço online criando pacotes de modelo (versão prévia). O Azure Machine Learning permite que você crie um pacote de modelo que coleta todas as dependências necessárias para implantar um modelo de machine learning em uma plataforma de serviço. Você pode mover um pacote de modelo entre workspaces e até mesmo fora do Azure Machine Learning. Para saber mais sobre pacotes de modelo, consulte Pacotes de modelo para implantação (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 Serviço de Aplicativo do Azure.

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 do artigo Como gerenciar espaços de trabalho para criar um.

    Observação

    Workspaces habilitados para link privado não dão suporte a modelos de empacotamento para implantação fora do Azure Machine Learning.

  • 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.

Preparar seu sistema

Siga estas etapas para preparar seu sistema.

  1. 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
    

    Este artigo usa o exemplo nos pontos de extremidade de pasta endpoints/online/deploy-with-packages/mlflow-model.

  2. 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>
    
  3. Os pacotes exigem que o modelo seja registrado em seu workspace ou em um registro do Azure Machine Learning. Nesse caso, existe uma cópia local do modelo no repositório, portanto, você só precisa publicar o modelo no registro no workspace. Você poderá pular essa etapa se o modelo que está tentando implantar já estiver registrado.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

Implantar um pacote de modelo no Serviço de Aplicativo do Azure

Nesta seção, você empacota o modelo MLflow registrado anteriormente e o implanta no Serviço de Aplicativo do Azure.

  1. Implantar um modelo fora do Azure Machine Learning requer a criação de uma especificação de pacote. Para criar um pacote totalmente desconectado do Azure Machine Learning, especifique o modo copy na configuração do modelo. O modo copy informa ao pacote para copiar os artefatos dentro do pacote. O código a seguir mostra como especificar o modo de cópia para a configuração do modelo:

    Criar uma especificação YAML do pacote:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    Dica

    Ao especificar a configuração de modelo usando copy para propriedade de modo, você garante que todos os artefatos de modelo sejam copiados dentro da imagem do Docker gerada em vez de baixados do registro de modelo do Azure Machine Learning, permitindo assim a portabilidade verdadeira fora do Azure Machine Learning. Para obter uma especificação completa sobre todas as opções ao criar pacotes, consulte Criar uma especificação de pacote.

  2. Inicie a operação do pacote.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. O resultado da operação de pacote é um ambiente no Azure Machine Learning. A vantagem de ter esse ambiente é que cada ambiente tem uma imagem do Docker correspondente que você pode usar em uma implantação externa. As imagens são hospedadas no Registro de Contêiner do Azure. As etapas a seguir mostram como obter o nome da imagem gerada:

    1. Vá para o estúdio do Azure Machine Learning.

    2. Selecione a seção Ambientes.

    3. Selecione a guia Pontos de extremidade personalizados.

    4. Procure o ambiente chamado heart-classifier-mlflow-package, que é o nome do pacote que você acabou de criar.

    5. Copie o valor que está no campo registro de contêiner do Azure.

    A screenshot showing the section where the Azure container registry image name is displayed in Azure Machine Learning studio.

  4. Agora, implante esse pacote em um Serviço de Aplicativo.

    1. Acesse o portal do Azure e crie um novo recurso do Serviço de Aplicativo.

    2. No assistente de criação, selecione a assinatura e o grupo de recursos que você está usando.

    3. Na seção Detalhes da Instância, dê um nome ao aplicativo.

    4. Em Publicar, selecione Contêiner do Docker.

    5. Em Sistema operacional, selecione Linux.

      A screenshot showing how to configure the app service to deploy the generated docker container image.

    6. Configure o restante da página conforme necessário e selecione Avançar.

    7. Vá para a guia do Docker.

    8. Para Opções, selecione Contêiner Único.

    9. Para Origem da imagem, selecione Registro de Contêiner do Azure.

    10. Configure as opções do Registro de Contêiner do Azure da seguinte maneira:

      1. Para o Registro, selecione o Registro de Contêiner do Azure associado ao workspace do Azure Machine Learning.

      2. Para Imagem, selecione a imagem que você encontrou na etapa 3 deste tutorial.

      3. Em Tag, selecione mais recente.

      A screenshot showing the section Docker of the wizard, where the docker image associated with the package is indicated.

    11. Configure o restante do assistente conforme necessário.

    12. Selecione Criar. O modelo agora está implantado no Serviço de Aplicativo que você criou.

    13. A maneira como você invoca e obtém previsões depende do servidor de inferência usado. Neste exemplo, você usou o servidor de inferência do Azure Machine Learning, que cria previsões na rota /score. Para obter mais informações sobre os formatos e recursos de entrada, consulte os detalhes do pacote azureml-inference-server-http.

    14. Prepare o conteúdo da solicitação. O formato de um modelo de MLflow implantado com o servidor de inferência do Azure Machine Learning é o seguinte:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. Teste a implantação do modelo para ver se ela funciona.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

Próxima etapa