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