Registre um modelo implantado no NVIDIA Triton Inference Server e invoque-o para inferência em tempo real em jobs do Flink SQL.
Contexto
O Realtime Compute for Apache Flink (VVR 11.7+) permite registrar modelos no NVIDIA Triton Inference Server por meio da instrução CREATE MODEL. Utilize ML_PREDICT em jobs SQL para executar inferências em fluxos de dados em tempo real.
O NVIDIA Triton Inference Server é um serviço de inferência open source de alto desempenho da NVIDIA, compatível com TensorFlow, PyTorch, ONNX, TensorRT e outros frameworks. É possível utilizar um serviço Triton autogerenciado ou implantar um no PAI-EAS. Implantar um serviço usando uma imagem do Triton Inference Server.
Observações de uso
Este recurso está disponível apenas na versão 11.7 ou superior do mecanismo VVR.
As solicitações a um servidor Triton externo trafegam pela internet pública e exigem acesso à rede pública.
Quando o servidor Triton estiver implantado no PAI, as requisições utilizarão uma rede privada. Para obter o endpoint, consulte a seção de Perguntas frequentes.
Recursos do servidor Triton, condições de rede e desempenho do modelo impactam diretamente o throughput de inferência. Serviços Triton sobrecarregados ou com limitação de taxa podem gerar back pressure nos jobs do Flink. Limitações severas de taxa podem provocar timeouts de operadores e reinicializações de jobs.
Sintaxe
CREATE MODEL [catalog_name.][db_name.]model_name
INPUT (
input_column input_type
)
OUTPUT (
output_column output_type
)
WITH (
'provider' = 'triton',
'endpoint' = '<endpoint>',
'auth-token' = '<authentication_token>'
'model-name' = '<model_name>',
'model-version' = '<model_version>'
);
Parâmetros WITH
Parâmetros gerais
|
Parâmetro |
Descrição |
Tipo |
Obrigatório |
Padrão |
Observações |
|
provider |
Tipo do serviço de modelo. |
String |
Sim |
Nenhum |
O valor deve ser |
|
endpoint |
Endpoint HTTP do Triton Inference Server. |
String |
Sim |
Nenhum |
Garanta a conectividade de rede entre o workspace do Flink e o serviço Triton. Opções de conexão de rede. Em implantações no PAI-EAS, obtenha o endpoint nas informações de invocação do serviço, na página de serviço de inferência de modelos no PAI console. |
|
model-name |
Nome do modelo no servidor Triton. |
String |
Sim |
Nenhum |
Este nome deve corresponder exatamente ao nome do modelo no repositório de modelos do Triton. |
|
model-version |
Versão do modelo Triton. |
String |
Não |
latest |
Especifique uma versão, como |
|
timeout |
Tempo limite para uma requisição HTTP. |
Duration |
Não |
30s |
Aplica-se a operações de conexão, leitura e escrita. Defina no formato de duração, como |
|
flatten-batch-dim |
Indica se a dimensão de lote de uma entrada de array deve ser achatada. |
Boolean |
Não |
false |
O formato padrão da entrada de array é |
|
priority |
Prioridade da requisição. |
Integer |
Não |
Nenhum |
Intervalo: |
|
compression |
Algoritmo de compressão para o corpo da requisição. |
String |
Não |
Nenhum |
Atualmente, apenas |
|
auth-token |
Token de autenticação para o modelo Triton. |
String |
Não |
Nenhum |
Adiciona o cabeçalho |
|
custom-headers |
Cabeçalhos personalizados de requisição HTTP. |
Map |
Não |
Nenhum |
Exemplo: 'X-Trace-Id:abc,Authorization:token'. |
Parâmetros de modelos com estado
Estes parâmetros aplicam-se a modelos Triton com estado (RNN, LSTM) que mantêm estado entre requisições.
|
Parâmetro |
Descrição |
Tipo |
Obrigatório |
Padrão |
Observações |
|
sequence-id |
ID da sequência. |
String |
Não |
Nenhum |
O Triton encaminha requisições com o mesmo ID de sequência para a mesma instância do modelo. |
|
sequence-start |
Marca a requisição como início de uma sequência. |
Boolean |
Não |
false |
Se definido como |
|
sequence-end |
Marca a requisição como fim de uma sequência. |
Boolean |
Não |
false |
Se definido como |
Mapeamento de tipos
Os tipos de coluna do Flink devem corresponder ao data_type no arquivo config.pbtxt do modelo no servidor Triton.
|
Tipo Flink |
dtype Triton |
Descrição |
|
BOOLEAN |
BOOL |
Tipo booleano. |
|
TINYINT |
INT8 |
Inteiro assinado de 8 bits. |
|
SMALLINT |
INT16 |
Inteiro assinado de 16 bits. |
|
INT |
INT32 |
Inteiro assinado de 32 bits. |
|
BIGINT |
INT64 |
Inteiro assinado de 64 bits. |
|
FLOAT |
FP32 |
Número de ponto flutuante de 32 bits. |
|
DOUBLE |
FP64 |
Número de ponto flutuante de 64 bits. |
|
STRING / VARCHAR |
BYTES |
Tipo texto. |
|
ARRAY<T> |
Corresponde ao tipo de elemento |
Apenas arrays unidimensionais são suportados. |
Regras de formato:
O formato de uma entrada escalar é
[1].O formato padrão de uma entrada
ARRAY<T>é[1, N], ondeNrepresenta o comprimento do array. Caso o modelo Triton espere o formato[N], defina 'flatten-batch-dim' = 'true'.
Perguntas frequentes
Como obter o endpoint e o token de um serviço Triton implantado no Platform for AI (PAI)?
Faça login no console do Platform for AI (PAI).
No painel de navegação à esquerda, escolha e clique em no nome do serviço desejado para abrir a página Overview.
Na seção Basic Information, clique em View Invocation Information.
No painel Invocation Information, copie o endpoint e o token.
Como resolver um erro de incompatibilidade de formato?
Verifique se o tipo da coluna de entrada do Flink corresponde ao campo dims no arquivo config.pbtxt do modelo no servidor Triton. Para entradas ARRAY<T>, o Flink envia o formato [1, N] por padrão. Se o modelo esperar [N], defina:
'flatten-batch-dim' = 'true'
Arrays aninhados não são suportados. Para tensores de alta dimensionalidade, achate-os para um ARRAY<T> unidimensional e restaure o formato original no lado do modelo.
Modelos com múltiplas entradas ou saídas são suportados?
Apenas colunas únicas de entrada e saída são suportadas. Para múltiplas entradas, agrupe recursos numéricos em um único ARRAY<T> ou serialize estruturas complexas como uma string JSON e faça o parsing no lado do modelo. Para múltiplas saídas, consolide-as em um único tensor de saída ou string JSON no lado do modelo.