Serviço de alto desempenho com o servidor de inferência Triton
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Saiba como usar o NVIDIA Triton Inference Server no Azure Machine Learning com pontos de extremidade online.
Triton é um software de código aberto de várias estruturas que é otimizado para inferência. Ele dá suporte a estruturas populares de aprendizado de máquina, como TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT e muito mais. Ele pode ser usado nas cargas de trabalho de CPU ou GPU.
Há, principalmente, duas abordagens que você pode adotar para aproveitar os modelos Triton ao implantá-los no ponto de extremidade online: implantação sem código ou implantação de código completo (traga seu próprio contêiner).
- A implantação sem código para modelos Triton é uma maneira simples de implantá-los, pois você só precisa trazer modelos Triton para implantar.
- A implantação de código completo (traga seu próprio contêiner) para modelos Triton é uma maneira mais avançada de implantá-los, pois você tem controle total sobre como personalizar as configurações disponíveis para o servidor de inferência Triton.
Para ambas as opções, o servidor de inferência Triton executará inferência com base no modelo Triton, conforme definido pela NVIDIA. Por exemplo, modelos de conjunto podem ser usados para cenários mais avançados.
O Triton tem suporte em pontos de extremidade online gerenciados e pontos de extremidade online do Kubernetes.
Neste artigo, você aprenderá a implantar um modelo usando a implantação sem código para Triton em um ponto de extremidade online gerenciado. Você receberá informações sobre como usar a CLI (linha de comando), SDK do Python v2 e Estúdio do Azure Machine Learning. Se quiser personalizar ainda mais usando diretamente a configuração do servidor de inferência Triton, consulte Usar um contêiner personalizado para implantar um modelo e o exemplo de BYOC para Triton (definição de implantação e script de ponta a ponta).
Observação
O uso do contêiner NVIDIA Triton Inference Server é regido pelo contrato de licença NVIDIA AI Enterprise Software e pode ser usado por 90 dias sem uma assinatura de produto empresarial. Para obter mais informações, consulte NVIDIA AI Enterprise no Azure Machine Learning.
Pré-requisitos
Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:
A CLI do Azure e a
ml
extensão na CLI do Azure. Para obter mais informações, confira Instalar, configurar e usar a CLI (v2).Importante
Os exemplos de CLI neste artigo pressupõem que você esteja usando o shell Bash (ou compatível). Por exemplo, de um sistema Linux ou Subsistema do Windows para Linux.
Um Workspace do Azure Machine Learning. Se você não tiver um, use as etapas em Instalar, configurar e usar a CLI (v2) para criar.
Um ambiente Python 3.8 (ou superior) em funcionamento.
Você deve ter pacotes adicionais do Python instalados para pontuação e pode instalá-los com o código abaixo. Eles incluem:
- Numpy – uma matriz e uma biblioteca de computação numérica
- Triton Inference Server Client – Facilita as solicitações para o Triton Inference Server
- Pillow – Uma biblioteca para operações de imagem
- Gevent – Uma biblioteca de rede usada ao se conectar ao Triton Server
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
Acesso a VMs da série NCv3 para sua assinatura do Azure.
Importante
Talvez seja necessário solicitar um aumento de cota para sua assinatura antes de usar essa série de VMs. Para saber mais, confira NCv3-series.
O Servidor de Inferência NVIDIA Triton requer uma estrutura de repositório de modelo específica em que haja um diretório para cada modelo e subdiretórios para a versão do modelo. O conteúdo de cada subdiretório de versão do modelo é determinado pelo tipo de modelo e pelos requisitos do back-end que dá suporte ao modelo. Para ver toda a estrutura do repositório de modelo https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files
As informações neste documento se baseiam no uso de um modelo armazenado no formato ONNX, ou seja, a estrutura de diretório do repositório de modelo é <model-repository>/<model-name>/1/model.onnx
. Mais especificamente, esse modelo executa a identificação da imagem.
As informações deste artigo se baseiam em exemplos de código contidos no repositório azureml-examples. Para executar os comandos localmente sem precisar copiar/colar YAML e outros arquivos, clone o repositório e altere os diretórios para o diretório cli
no repositório:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
Se você ainda não definiu os padrões da CLI do Azure, salve as configurações padrão. Para evitar passar os valores para sua assinatura, espaço de trabalho e grupo de recursos várias vezes, use os seguintes comandos. Substitua os seguintes parâmetros por valores para a sua configuração específica:
- Substitua
<subscription>
por sua ID da assinatura do Azure. - Substitua
<workspace>
pelo nome do workspace do Azure Machine Learning. - Substitua
<resource-group>
pelo grupo de recursos do Azure que contém o workspace. - Substitua
<location>
pela região do Azure que contém o workspace.
Dica
Para ver quais são seus padrões atuais, use o comando az configure -l
.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Definir a configuração de implantação
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Esta seção mostra como você pode implantar um ponto de extremidade online gerenciado usando a CLI do Azure com a extensão Machine Learning (v2).
Importante
Para Triton sem código-implantação, não há suporte para o teste por meio de pontos de extremidade locais .
Para evitar digitar um caminho para vários comandos, use o comando a seguir para definir uma variável de ambiente
BASE_PATH
. Essa variável aponta para o diretório em que o modelo e os arquivos de configuração YAML associados estão localizados:BASE_PATH=endpoints/online/triton/single-model
Use o comando a seguir para definir o nome do ponto de extremidade que será criado. Neste exemplo, um nome aleatório é criado para o ponto de extremidade:
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
Crie um arquivo de configuração YAML para seu ponto de extremidade. O exemplo a seguir configura o nome e o modo de autenticação do ponto de extremidade. O que é usado nos comandos a seguir está localizado em
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml
no repositório azureml-examples clonado anteriormente:create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_token
Crie um arquivo de configuração YAML para a implantação. O exemplo a seguir configura uma implantação chamada blue para o ponto de extremidade definido na etapa anterior. O que é usado nos comandos a seguir está localizado em
/cli/endpoints/online/triton/single-model/create-managed-deployment.yml
no repositório azureml-examples clonado anteriormente:Importante
Para que o NCD (Triton sem implantação de código) funcione, a configuração
type
paratriton_model
é necessária,type: triton_model
. Para saber mais, confira o esquema YAML do modelo da CLI (v2).Essa implantação usa uma VM Standard_NC6s_v3. Talvez seja necessário solicitar um aumento de cota para sua assinatura antes de usar essa VM. Para saber mais, confira NCv3-series.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: Standard_NC6s_v3
Implantar no Azure
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Para criar um ponto de extremidade usando a configuração YAML, use o seguinte comando:
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
Para criar a implantação usando a configuração YAML, use o seguinte comando:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
Testar o ponto de extremidade
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Quando a implantação for concluída, use o comando a seguir para fazer uma solicitação de pontuação ao ponto de extremidade implantado.
Dica
O arquivo /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py
no repositório azureml-examples é usado para pontuação. A imagem transmitida ao ponto de extremidade precisa de pré-processamento, para atender aos requisitos de tamanho, tipo e formato, e pós-processamento, para mostrar o rótulo previsto. O triton_densenet_scoring.py
usa a biblioteca tritonclient.http
para se comunicar com o servidor de inferência Triton. Esse arquivo é executado no lado do cliente.
Para obter o URI de pontuação do ponto de extremidade, use o seguinte comando:
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}
Para obter uma chave de autenticação, use o seguinte comando:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
Para pontuar dados com o ponto de extremidade, use o comando a seguir. Ele envia a imagem de um peacock (https://aka.ms/peacock-pic ao ponto de extremidade:
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg
A resposta do script é semelhante ao seguinte texto:
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
Excluir o ponto de extremidade e o modelo
APLICA-SE A: Extensão de ML da CLI do Azurev2 (atual)
Depois de terminar o ponto de extremidade, use o seguinte comando para excluí-lo:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
Use o seguinte comando para arquivar o modelo:
az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
Próximas etapas
Para saber mais, examine estes artigos:
- Implantar modelos com o REST
- Criar e usar pontos de extremidade online gerenciados no estúdio
- Distribuição segura para pontos de extremidade online
- Como fazer o dimensionamento automático de pontos de extremidade online gerenciados
- Ver os custos de um ponto de extremidade online gerenciado do Azure Machine Learning
- Acesso aos recursos do Azure com um ponto de extremidade online gerenciado e uma identidade gerenciada
- Solucionar problemas de implantação de pontos de extremidade online gerenciados