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.
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.
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>
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.
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 modocopy
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.Inicie a operação do pacote.
az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
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:
Vá para o estúdio do Azure Machine Learning.
Selecione a seção Ambientes.
Selecione a guia Pontos de extremidade personalizados.
Procure o ambiente chamado heart-classifier-mlflow-package, que é o nome do pacote que você acabou de criar.
Copie o valor que está no campo registro de contêiner do Azure.
Agora, implante esse pacote em um Serviço de Aplicativo.
Acesse o portal do Azure e crie um novo recurso do Serviço de Aplicativo.
No assistente de criação, selecione a assinatura e o grupo de recursos que você está usando.
Na seção Detalhes da Instância, dê um nome ao aplicativo.
Em Publicar, selecione Contêiner do Docker.
Em Sistema operacional, selecione Linux.
Configure o restante da página conforme necessário e selecione Avançar.
Vá para a guia do Docker.
Para Opções, selecione Contêiner Único.
Para Origem da imagem, selecione Registro de Contêiner do Azure.
Configure as opções do Registro de Contêiner do Azure da seguinte maneira:
Para o Registro, selecione o Registro de Contêiner do Azure associado ao workspace do Azure Machine Learning.
Para Imagem, selecione a imagem que você encontrou na etapa 3 deste tutorial.
Em Tag, selecione mais recente.
Configure o restante do assistente conforme necessário.
Selecione Criar. O modelo agora está implantado no Serviço de Aplicativo que você criou.
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.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] ] } }
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 @-