Serviço de alto desempenho com o Triton Inference Server
APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
Saiba como usar o NVIDIA Triton Inference Server no Azure Machine Learning com pontos de extremidade online.
Triton é multi-framework, software de código aberto que é otimizado para inferência. Ele suporta estruturas populares de aprendizado de máquina como TensorFlow, ONNX Runtime, PyTorch, NVIDIA TensorRT e muito mais. Ele pode ser usado para suas cargas de trabalho de CPU ou GPU.
Há principalmente duas abordagens que você pode adotar para aproveitar os modelos Triton ao implantá-los no endpoint 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 (Bring your own container) para modelos Triton é uma maneira mais avançada de implantá-los, pois você tem controle total sobre a personalização das configurações disponíveis para o servidor de inferência Triton.
Para ambas as opções, o servidor de inferência Triton executará a 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 é suportado em endpoints online gerenciados e em endpoints online do Kubernetes.
Neste artigo, você aprenderá como implantar um modelo usando a implantação sem código para Triton em um ponto de extremidade online gerenciado. São fornecidas informações sobre como usar a CLI (linha de comando), o Python SDK v2 e o estúdio Azure Machine Learning. Se você quiser personalizar ainda mais diretamente usando a configuração do servidor de inferência Triton, consulte Usar um contêiner personalizado para implantar um modelo e o exemplo BYOC para Triton (definição de implantação e script de ponta a ponta).
Nota
O uso do contêiner NVIDIA Triton Inference Server é regido pelo contrato de licença do 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 para a CLI do Azure. Para obter mais informações, consulte 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 Windows para Linux.
Uma área de trabalho do Azure Machine Learning. Se você não tiver uma, use as etapas em Instalar, configurar e usar a CLI (v2) para criar uma.
Um ambiente Python 3.8 (ou superior) em funcionamento.
Você deve ter pacotes Python adicionais instalados para pontuação e pode instalá-los com o código abaixo. Estas incluem:
- Numpy - Uma biblioteca de computação numérica e matriz
- Triton Inference Server Client - Facilita solicitações para o Triton Inference Server
- Almofada - 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 poder usar essa série de VMs. Para obter mais informações, consulte NCv3-series.
O NVIDIA Triton Inference Server requer uma estrutura de repositório de modelo específica, onde há 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 do modelo e pelos requisitos do back-end que suporta o modelo. Para ver toda a estrutura do repositório de modelos https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files
As informações neste documento são baseadas no uso de um modelo armazenado no formato ONNX, portanto, a estrutura de diretórios do repositório de modelos é <model-repository>/<model-name>/1/model.onnx
. Especificamente, este modelo realiza a identificação de imagens.
As informações neste artigo são baseadas 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, clone o repositório e, em seguida, altere os diretórios para o cli
diretório 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 para a CLI do Azure, salve suas configurações padrão. Para evitar passar os valores da sua assinatura, espaço de trabalho e grupo de recursos várias vezes, use os comandos a seguir. Substitua os seguintes parâmetros por valores para sua configuração específica:
- Substitua
<subscription>
pelo seu ID da subscrição do Azure. - Substitua
<workspace>
pelo nome do espaço de trabalho do Azure Machine Learning. - Substitua
<resource-group>
pelo grupo de recursos do Azure que contém seu espaço de trabalho. - Substitua
<location>
pela região do Azure que contém seu espaço de trabalho.
Gorjeta
Você pode ver quais são seus padrões atuais usando o az configure -l
comando.
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: Azure CLI ml extension v2 (atual)
Esta seção mostra como você pode implantar em um ponto de extremidade online gerenciado usando a CLI do Azure com a extensão de Aprendizado de Máquina (v2).
Importante
Para Triton no-code-deployment, o teste via endpoints locais não é suportado no momento.
Para evitar digitar um caminho para vários comandos, use o seguinte comando para definir uma variável de
BASE_PATH
ambiente. Esta variável aponta para o diretório onde 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 endpoint. O exemplo a seguir configura o nome e o modo de autenticação do ponto de extremidade. O usado nos comandos a seguir está localizado no
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml
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 azul para o ponto de extremidade definido na etapa anterior. O usado nos comandos a seguir está localizado no
/cli/endpoints/online/triton/single-model/create-managed-deployment.yml
repositório azureml-examples clonado anteriormente:Importante
Para que o Triton no-code-deployment (NCD) funcione, é necessário
type: triton_model
definirtype
comotriton_model
. Para obter mais informações, consulte Esquema YAML modelo 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 poder usar essa VM. Para obter mais informações, consulte 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
Implementar no Azure
APLICA-SE A: Azure CLI ml extension v2 (atual)
Para criar um novo 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 parâmetro de avaliação
APLICA-SE A: Azure CLI ml extension v2 (atual)
Quando a implantação for concluída, use o comando a seguir para fazer uma solicitação de pontuação para o ponto de extremidade implantado.
Gorjeta
O arquivo /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py
no repositório azureml-examples é usado para pontuação. A imagem passada para o 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 tritonclient.http
biblioteca para se comunicar com o servidor de inferência Triton. Este 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 seguinte comando. Submete a imagem de um pavão (https://aka.ms/peacock-pic) ao ponto final:
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: Azure CLI ml extension v2 (atual)
Quando 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 seu modelo:
az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
Próximos passos
Para saber mais, leia estes artigos:
- Implantar modelos com REST
- Criar e usar endpoints online gerenciados no estúdio
- Implementação segura para terminais online
- Como dimensionar automaticamente endpoints online gerenciados
- Exibir custos de um ponto de extremidade online gerenciado do Azure Machine Learning
- Acesse os recursos do Azure com um ponto de extremidade online gerenciado e uma identidade gerenciada
- Solucionar problemas de implantação de endpoints online gerenciados