Registre un modelo desplegado en NVIDIA Triton Inference Server e invóquelo para realizar inference en tiempo real dentro de trabajos de Flink SQL.
Contexto
Realtime Compute for Apache Flink (VVR 11.7+) permite registrar modelos en NVIDIA Triton Inference Server mediante la sentencia CREATE MODEL. Utilice ML_PREDICT en sus trabajos SQL para ejecutar inference sobre flujos de datos en tiempo real.
NVIDIA Triton Inference Server es un servicio de inference de código abierto y alto rendimiento desarrollado por NVIDIA, compatible con TensorFlow, PyTorch, ONNX, TensorRT y otros frameworks. Puede utilizar un servicio Triton autogestionado o desplegar uno en PAI-EAS. Deploy a service by using a Triton Inference Server image.
Notas de uso
Esta función solo es compatible con la versión 11.7 del motor VVR y posteriores.
Las solicitudes a un servidor Triton externo utilizan la red pública de internet y requieren public network access.
Si el servidor Triton está desplegado en PAI, las solicitudes se realizan a través de una red privada. Para obtener el endpoint, consulte la sección FAQ.
Los recursos del servidor Triton, las condiciones de la red y el rendimiento del modelo afectan el throughput de inference. Los servicios Triton sobrecargados o con limitación de tasa pueden causar contrapresión en los trabajos de Flink. Una limitación de tasa severa puede provocar tiempos de espera agotados en los operadores y reinicios del trabajo.
Sintaxis
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 generales
|
Parámetro |
Descripción |
Tipo |
Obligatorio |
Predeterminado |
Notas |
|
provider |
El tipo de servicio del modelo. |
String |
Sí |
Ninguna |
El valor debe ser |
|
endpoint |
El endpoint HTTP de Triton Inference Server. |
String |
Sí |
Ninguna |
Asegúrese de que exista conectividad de red entre el espacio de trabajo de Flink y el servicio Triton. Network connection options. Para despliegues en PAI-EAS, obtenga el endpoint desde la información de invocación del servicio en la página del servicio de inference de modelos en la PAI console. |
|
model-name |
El nombre del modelo en el servidor Triton. |
String |
Sí |
Ninguna |
Este nombre debe coincidir con el nombre del modelo en el repositorio de modelos de Triton. |
|
model-version |
La versión del modelo Triton. |
String |
No |
latest |
Puede especificar una versión, como |
|
timeout |
El tiempo de espera para una solicitud HTTP. |
Duration |
No |
30s |
Se aplica a operaciones de conexión, lectura y escritura. Especifíquelo en formato de duración, como |
|
flatten-batch-dim |
Indica si se debe aplanar la dimensión de lote de una entrada de matriz. |
Boolean |
No |
false |
La forma predeterminada de entrada de matriz es |
|
priority |
La prioridad de la solicitud. |
Integer |
No |
Ninguna |
Rango: de |
|
compression |
El algoritmo de compresión para el cuerpo de la solicitud. |
String |
No |
Ninguna |
Actualmente, solo se admite |
|
auth-token |
El token de autenticación para el modelo Triton. |
String |
No |
Ninguna |
Agrega el encabezado |
|
custom-headers |
Encabezados de solicitud HTTP personalizados. |
Map |
No |
Ninguna |
Ejemplo: 'X-Trace-Id:abc,Authorization:token'. |
Parámetros de modelos con estado
Estos parámetros aplican a modelos Triton con estado (RNN, LSTM) que mantienen información de estado entre solicitudes.
|
Parámetro |
Descripción |
Tipo |
Obligatorio |
Predeterminado |
Notas |
|
sequence-id |
El ID de secuencia. |
String |
No |
Ninguna |
Triton enruta las solicitudes con el mismo ID de secuencia a la misma instancia del modelo. |
|
sequence-start |
Marca la solicitud como el inicio de una secuencia. |
Boolean |
No |
false |
Si se establece en |
|
sequence-end |
Marca la solicitud como el final de una secuencia. |
Boolean |
No |
false |
Si se establece en |
Mapeo de tipos
Los tipos de columna de Flink deben coincidir con el data_type definido en el archivo config.pbtxt del modelo en el servidor Triton.
|
Tipo Flink |
dtype Triton |
Descripción |
|
BOOLEAN |
BOOL |
Tipo booleano. |
|
TINYINT |
INT8 |
Entero con signo de 8 bits. |
|
SMALLINT |
INT16 |
Entero con signo de 16 bits. |
|
INT |
INT32 |
Entero con signo de 32 bits. |
|
BIGINT |
INT64 |
Entero con signo de 64 bits. |
|
FLOAT |
FP32 |
Número de punto flotante de 32 bits. |
|
DOUBLE |
FP64 |
Número de punto flotante de 64 bits. |
|
STRING / VARCHAR |
BYTES |
Tipo de texto. |
|
ARRAY<T> |
Corresponde al tipo de elemento |
Solo se admiten matrices unidimensionales. |
Reglas de forma:
La forma de una entrada escalar es
[1].La forma predeterminada de una entrada
ARRAY<T>es[1, N], dondeNes la longitud de la matriz. Si el modelo Triton espera una forma de[N], establezca 'flatten-batch-dim' = 'true'.
Preguntas frecuentes
¿Cómo obtengo el endpoint y el token para un servicio Triton desplegado en Platform for AI (PAI)?
Inicie sesión en la consola de Platform for AI (PAI).
En el panel de navegación izquierdo, elija y luego haga clic en el nombre del servicio objetivo para abrir la página Overview.
En la sección Basic Information, haga clic en View Invocation Information.
En el panel Invocation Information, copie el endpoint y el token.
¿Cómo resuelvo un error de discrepancia de forma?
Asegúrese de que el tipo de columna de entrada de Flink coincida con dims en el archivo config.pbtxt del modelo en el servidor Triton. Para entradas ARRAY<T>, Flink envía la forma [1, N] de manera predeterminada. Si el modelo espera [N], configure lo siguiente:
'flatten-batch-dim' = 'true'
No se admiten matrices anidadas. Para tensores de alta dimensión, aplánelos a un ARRAY<T> unidimensional y restaure la forma en el lado del modelo.
¿Se admiten modelos con múltiples entradas o salidas?
Solo se admiten columnas de entrada y salida únicas. Para múltiples entradas, empaquete las características numéricas en un solo ARRAY<T> o serialice estructuras complejas como una JSON string y analícela sintácticamente en el lado del modelo. Para múltiples salidas, fusiónelas en un solo tensor de salida o cadena JSON en el lado del modelo.