As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implantação de modelo com o servidor de inferência Triton
O servidor de inferência Triton
Os contêineres do Triton do SageMaker AI ajudam você a implantar o Triton Inference Server na plataforma de hospedagem do SageMaker AI para oferecer modelos treinados em produção. Ele aceita os diferentes modos em que o SageMaker AI opera. Para ver uma lista dos contêineres do Triton Inference Server disponíveis no SageMaker AI, consulte NVIDIA Triton Inference Containers (SM support only)
Para exemplos completos de caderno, recomendamos dar uma olhada no repositório amazon-sagemaker-examples
Modos de hospedagem
Os seguintes modos de hospedagem do SageMaker AI são compatíveis com contêineres do Triton:
-
Endpoints de modelo único
-
Esse é o modo de operação padrão do SageMaker AI. Nesse modo, o contêiner do Triton pode carregar um modelo único ou um modelo único de conjunto.
-
O nome do modelo deve ser transmitido como uma propriedade do ambiente de contêiner, que faz parte da chamada de API
CreateModeldo SageMaker AI. A variável de ambiente usada para passar o nome do modelo éSAGEMAKER_TRITON_DEFAULT_MODEL_NAME.
-
-
Endpoints de modelo único com conjunto
-
O servidor de inferência Triton é compatível com um conjunto, que é um pipeline ou um DAG (gráfico acíclico direcionado) de modelos. Embora um conjunto seja tecnicamente composto de vários modelos, no modo de endpoint de modelo único padrão, o SageMaker AI pode tratar o conjunto propriamente dito (o metamodelo que representa o pipeline) como o modelo principal a ser carregado e, posteriormente, carregar os modelos associados.
-
O nome do modelo do conjunto propriamente dito deve ser usado para carregar o modelo. Ele deve ser passado como uma propriedade do ambiente de contêiner, que faz parte da chamada de API do SageMaker
CreateModel. A variável de ambiente usada para passar o nome do modelo éSAGEMAKER_TRITON_DEFAULT_MODEL_NAME.
-
-
Endpoints multimodelo
-
Nesse modo, o SageMaker AI pode atender a vários modelos em um único endpoint. Você pode usar esse modo especificando a variável de ambiente
‘MultiModel’: truecomo uma propriedade do ambiente de contêiner, que faz parte da chamada de API do SageMakerCreateModel. -
Por padrão, nenhum modelo é carregado quando a instância é iniciada. Para executar uma solicitação de inferência em um modelo específico, especifique o arquivo
*.tar.gzdo modelo correspondente como argumento para a propriedadeTargetModelda chamada de API do SageMakerInvokeEndpoint.
-
-
Endpoints multimodelo com conjunto
-
Nesse modo, o SageMaker AI funciona conforme descrito para endpoints multimodelo. No entanto, o contêiner do Triton do SageMaker AI pode carregar vários modelos de conjunto, o que significa que vários pipelines de modelo podem ser executados na mesma instância. O SageMaker AI trata cada conjunto como um modelo, e o conjunto propriamente dito de cada modelo pode ser invocado especificando o arquivo correspondente
*.tar.gzcomo oTargetModel. Para um melhor gerenciamento de memória durante a memória dinâmica
LOADeUNLOAD, recomendamos que você mantenha o tamanho do conjunto pequeno.
-
Tipos de carga útil de inferência
O Triton oferece aceita dois métodos de envio de uma carga útil de inferência pela rede: json e binary+json (ou json codificado em binário). A carga útil JSON em ambos os casos inclui o tipo de dados, a forma e o tensor real da solicitação de inferência. O tensor da solicitação deve ser um tensor binário.
Com o formato binary+json, você deve especificar o tamanho dos metadados da solicitação no cabeçalho para permitir que o Triton analise corretamente a carga útil binária. No contêiner do Triton do SageMaker AI, isso é feito usando um cabeçalho Content-Type personalizado: application/vnd.sagemaker-triton.binary+json;json-header-size={}. Isso é diferente de usar o cabeçalho Inference-Header-Content-Length em um Triton Inference Server autônomo porque não são permitidos cabeçalhos personalizados no SageMaker AI.
Uso de config.pbtxt para definir a configuração do modelo
Para o Triton Inference Server no SageMaker AI, cada modelo deve incluir um arquivo config.pbtxt que especifique, no mínimo, as seguintes configurações para o modelo:
-
name: embora isso seja opcional para modelos executados fora do SageMaker AI, recomendamos que você sempre forneça um nome para os modelos a serem executados no Triton no SageMaker AI. -
platforme/oubackend: Configurar um backend é essencial para especificar o tipo do modelo. Alguns backends têm classificação adicional, como tensorflow_savedmodeloutensorflow_graphdef. Essas opções podem ser especificadas como parte da chaveplatform, além da chavebackend. Os backends mais comuns sãotensorrt,onnxruntime,tensorflow,pytorch,python,dali,fileopenvino. -
input: Especifique três atributos para a entrada:name,data_typeedims(a forma). -
output: Especifique três atributos para a saída:name,data_typeedims(a forma). -
max_batch_size: Defina o tamanho do lote para um valor maior ou igual a 1 que indica o tamanho máximo do lote que o Triton deve usar com o modelo.
Para obter mais detalhes sobre a configuração de config.pbtxt, consulte o repositório
-
instance_groups: Os grupos de instâncias ajudam a especificar o número e a localização de um determinado modelo. Eles têm os atributos count,kindegpus(usados quandokindéKIND_GPU). O atributocounté equivalente ao número de operadores. Para um serviço de modelo regular, cada operador tem a sua própria cópia do modelo. Da mesma forma, no Triton,countespecifica o número de cópias do modelo por dispositivo. Por exemplo, se o tipoinstance_groupforKIND_CPU, a CPU terácountcópias do modelo.nota
Em uma instância de GPU, a configuração
instance_groupse aplica a cada dispositivo de GPU. Por exemplo,countcópias do modelo são colocadas em cada dispositivo de GPU, a menos que você especifique explicitamente quais dispositivos de GPU devem carregar o modelo. -
dynamic_batchinge sequence_batching: O lote dinâmico é usado para modelos sem estado, e o lote de sequência é usado para modelos com estado (onde você deseja rotear uma solicitação para a mesma instância do modelo todas as vezes). Os agendadores de lotes habilitam uma fila por modelo, o que ajuda a aumentar o throughput, dependendo da configuração dos lotes. -
ensemble: Um modelo de conjunto representa um pipeline de um ou mais modelos e a conexão dos tensores de entrada e saída entre esses modelos. Ele pode ser configurado especificando platformcomoensemble. A configuração do conjunto é apenas uma representação do pipeline do modelo. No SageMaker AI, todos os modelos em um conjunto são tratados como dependentes do modelo de conjunto e são contados como um único modelo para as métricas do SageMaker AI, comoLoadedModelCount.
Publicação de métricas padrão do Triton no Amazon CloudWatch
O contêiner de inferência do NVIDIA Triton expõe métricas na porta 8002 (configurável) para os diferentes modelos e GPUs utilizados no servidor de inferência Triton. Para obter detalhes completos das métricas padrão disponíveis, consulte a página do GitHub para ver as métricas do servidor de inferência Triton
A partir da versão v23.07, o contêiner do Triton do SageMaker AI passa a oferecer compatibilidade com a publicação dessas métricas no Amazon CloudWatch ao especificar algumas variáveis de ambiente. Para extrair as métricas do Prometheus, o contêiner do Triton do SageMaker AI utiliza o agente do Amazon CloudWatch.
As variáveis de ambiente necessárias que você deve especificar para coletar métricas são as seguintes:
| Variável de ambiente | Descrição | Valor de exemplo |
|---|---|---|
|
|
Especifique esta opção para permitir que o Triton publique métricas em seu endpoint do Prometheus. |
"true" |
|
|
Especifique esta opção para iniciar as verificações prévias necessárias para publicar as métricas no Amazon CloudWatch. |
"true" |
|
|
Especifique esta opção para apontar para o grupo de logs no qual as métricas são gravadas. |
“/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesTest” |
|
|
Especifique esta opção para apontar para o namespace da métrica em que você deseja ver e plotar as métricas. |
“/aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesPublicTest |
|
|
Especifique isto como 8002 ou qualquer outra porta. Se o SageMaker AI não tiver bloqueado a porta especificada, ela será usada. Caso contrário, outra porta não bloqueada será escolhida automaticamente. |
"8002" |
Ao publicar métricas com o Triton no SageMaker AI, tenha em mente as seguintes limitações:
Embora você possa gerar métricas personalizadas por meio do backend de API C e Python (v23.05 em diante), no momento, não há compatibilidade com a publicação delas no Amazon CloudWatch.
No modo de endpoints multimodelo (MME) do SageMaker AI, o Triton é executado em um ambiente que exige que a atribuição de namespaces de modelo seja ativado porque cada modelo (exceto os modelos de conjunto) é tratado como se estivesse em seu próprio repositório de modelos. No momento, isso cria uma limitação para as métricas. Quando o namespacing de modelo está ativado, o Triton não distingue as métricas entre dois modelos com o mesmo nome pertencentes a conjuntos diferentes. Como solução alternativa, verifique se cada modelo que está sendo implantado tem um nome exclusivo. Isso também facilita a consulta de suas métricas no CloudWatch.
Variáveis de ambiente
A tabela a seguir lista as variáveis de ambiente compatíveis com o Triton no SageMaker AI.
| Variável de ambiente | Descrição | Tipo | Possíveis valores |
|---|---|---|---|
|
Permite que o Triton opere no modo de endpoints multimodelo do SageMaker AI. |
Booleano |
|
|
Especifique o modelo a ser carregado no modo de modelo único (padrão) do SageMaker AI. Para o modo de conjunto, especifique o nome do conjunto propriamente dito. |
String |
|
|
|
String |
|
|
No contêiner do Triton do SageMaker AI, isso é definido como |
Booleano |
|
|
No SageMaker AI, a porta padrão é 8080. Você pode personalizar para uma porta diferente em cenários de vários contêineres. |
String |
|
|
Isso é definido pela plataforma do SageMaker AI ao usar o modo de vários contêineres. |
String |
|
|
Embora o SageMaker AI não ofereça compatibilidade com o gRPC no momento, se você estiver usando o Triton na frente de um proxy reverso personalizado, poderá habilitar o gRPC. |
Booleano |
|
|
A porta padrão para o GRPC é 8001, mas você pode alterá-la. |
String |
|
|
Você pode definir o número de threads padrão do manipulador de solicitações HTTP. |
String |
|
|
|
Booleano |
|
|
|
Booleano |
|
|
|
Booleano |
|
|
|
Booleano |
|
|
Especifique o tamanho de shm para o backend do Python, em bytes. O valor padrão é 16 MB, mas pode ser aumentado. |
String |
|
|
Especifique o tamanho de crescimento de shm para o backend do Python, em bytes. O valor padrão é 1 MB, mas pode ser aumentado para permitir maiores incrementos. |
String |
|
|
O valor padrão é |
String |
|
|
Restrinja a porcentagem máxima de memória da GPU usada para carregamento do modelo, permitindo que o restante seja usado para as solicitações de inferência. |
String |
|
|
|
Booleano |
|
|
A porta padrão é 8002. |
String |
|
|
|
Booleano |
|
|
Obrigatório se você tiver ativado a publicação de métricas no CloudWatch. |
String |
|
|
Obrigatório se você tiver ativado a publicação de métricas no CloudWatch. |
String |
|
|
Acrescenta quaisquer argumentos adicionais ao iniciar o servidor Triton. |
String |
|