Partilhar via


Empacotar e implantar modelos fora do Azure Machine Learning (visualização)

Você pode implantar modelos fora do Azure Machine Learning para atendimento online criando pacotes de modelos (visualização). O Azure Machine Learning permite criar um pacote de modelo que recolhe todas as dependências necessárias para implementar um modelo de aprendizagem automática numa plataforma de serviço. Você pode mover um pacote de modelo entre espaços de trabalho e até mesmo fora do Azure Machine Learning. Para saber mais sobre pacotes de modelo, consulte Pacotes de modelo para implantação (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á como 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 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 de trabalho para criar um.

    Nota

    Os espaços de trabalho habilitados para link privado não oferecem suporte a modelos de empacotamento para implantação fora do Azure Machine Learning.

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

Prepare o seu sistema

Siga estes passos para preparar o sistema.

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

    Este artigo usa o exemplo na pasta endpoints/online/deploy-with-packages/mlflow-model.

  2. 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>
    
  3. Os pacotes exigem que o modelo seja registrado em seu espaço de trabalho ou em um registro do Azure Machine Learning. Neste exemplo, há uma cópia local do modelo no repositório, portanto, você só precisa publicar o modelo no registro no espaço de trabalho. Você pode pular esta 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. A implantação de um modelo fora do Azure Machine Learning requer a criação de uma especificação de pacote. Para criar um pacote completamente desconectado do Aprendizado de Máquina do Azure, especifique o copy modo na configuração do modelo. O copy modo diz 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:

    Crie uma especificação YAML de 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
    

    Gorjeta

    Ao especificar a configuração do modelo usando copy para a propriedade mode, você garante que todos os artefatos de modelo sejam copiados dentro da imagem do docker gerada em vez de baixados do registro do modelo do Azure Machine Learning, permitindo assim a verdadeira portabilidade 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 do pacote é um ambiente no Azure Machine Learning. A vantagem de ter esse ambiente é que cada ambiente tem uma imagem 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 você obtém 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 Ambientes 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.

    Uma captura de tela mostrando a seção onde o nome da imagem do Registro do contêiner do Azure é exibido no estúdio do Azure Machine Learning.

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

    1. Vá para 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. Para Publicar, selecione Contêiner do Docker.

    5. Em Sistema Operacional, selecione Linux.

      Uma captura de tela mostrando como configurar o serviço de aplicativo para implantar a imagem de contêiner do docker gerada.

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

    7. Vá para a guia Docker .

    8. Em Opções, selecione Contêiner único.

    9. Para Fonte de 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 Registro, selecione o Registro de Contêiner do Azure associado ao espaço de trabalho do Azure Machine Learning.

      2. Em Imagem, selecione a imagem que você encontrou na etapa 3(e) deste tutorial.

      3. Em Tag, selecione mais recente.

      Uma captura de tela mostrando a seção Docker do assistente, onde a imagem docker associada ao pacote é indicada.

    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 sob a 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 a carga útil da solicitação. O formato de um modelo 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óximo passo