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.
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
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.
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
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
Inicie a operação de pacote de modelo:
az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
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:
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
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.
Inicie a implantação:
az ml online-deployment create -f deployment.yml
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] ] }
Enviar a solicitação para o ponto de extremidade
az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json