dynamic_batching_triton
Skill para configurar y optimizar el dynamic batching nativo de NVIDIA Triton Inference Server, agrupando requests de inferencia facial, liveness y OCR en batches óptimos para maximizar el throughput GPU. A diferencia del batching genérico a nivel aplicación, esta skill se centra en la configuración específica de Triton y sus parámetros de scheduling para el pipeline de verificación KYC.
When to use
Usar esta skill cuando el model_server_agent necesite configurar, tunear o diagnosticar el dynamic batching dentro de Triton Inference Server. Aplica al desplegar nuevos modelos en Triton, optimizar latencia vs throughput, o resolver problemas de scheduling en modelos del pipeline KYC. Esta skill es complementaria a triton_inference_server (que cubre el servidor completo) y separada de dynamic_batching genérico.
Instructions
Habilitar dynamic batching en el model config de Triton para cada modelo del pipeline:
# model_repository/arcface/config.pbtxt
name: "arcface"
platform: "onnxruntime_onnx"
max_batch_size: 32
dynamic_batching {
preferred_batch_size: [8, 16, 32]
max_queue_delay_microseconds: 100000 # 100ms max wait
}
input [{
name: "input"
data_type: TYPE_FP32
dims: [3, 112, 112]
}]
Configurar parámetros de batching diferenciados por modelo según su perfil de latencia:
# Liveness model - latencia crítica, batches pequeños
dynamic_batching {
preferred_batch_size: [4, 8]
max_queue_delay_microseconds: 50000 # 50ms - más agresivo
}
# OCR model - tolerante a latencia, batches grandes
dynamic_batching {
preferred_batch_size: [16, 32, 64]
max_queue_delay_microseconds: 200000 # 200ms
}
Configurar prioridades de scheduling para que liveness (crítico en UX) tenga prioridad sobre OCR:
dynamic_batching {
priority_levels: 3
default_priority_level: 2
default_queue_policy {
timeout_action: REJECT
default_timeout_microseconds: 500000
}
}
Habilitar métricas de batching en Triton para monitorizar la efectividad:
# Arrancar Triton con métricas habilitadas
tritonserver --model-repository=/models \
--metrics-port=8002 \
--allow-metrics=true \
--metrics-interval-ms=1000
Monitorizar métricas clave de batching via Prometheus endpoint:
nv_inference_request_success # Requests exitosas
nv_inference_queue_duration_us # Tiempo en cola
nv_inference_compute_infer_duration_us # Tiempo de inferencia
nv_inference_exec_count # Batches ejecutados
nv_inference_request_duration_us # Duración total
Tunear el max_queue_delay basándose en el SLA de 8 segundos totales del pipeline:
# Budget de latencia por modelo dentro del SLA de 8s
LATENCY_BUDGET_MS = {
"liveness": 500, # Máx 500ms
"arcface": 300, # Máx 300ms
"paddleocr": 1000, # Máx 1000ms
"antifraud": 200, # Máx 200ms
}
# max_queue_delay = budget * 0.3 (30% del budget para queueing)
Configurar sequence batching para modelos que procesan múltiples frames (liveness con secuencia de frames):
sequence_batching {
max_sequence_idle_microseconds: 5000000
control_input [{
name: "START"
control [{ kind: CONTROL_SEQUENCE_START }]
}]
}
Notes
- El dynamic batching de Triton opera a nivel de inference server, no de aplicación. Esto es más eficiente que batching manual porque Triton conoce el estado exacto de la GPU y puede optimizar la ejecución de kernels CUDA.
- El parámetro max_queue_delay es el trade-off principal: valores altos mejoran throughput pero aumentan latencia. Para el pipeline KYC con SLA de 8s, mantener delays conservadores en modelos de la ruta crítica (liveness, face_match).
- Sequence batching es necesario para el módulo de liveness que analiza múltiples frames consecutivos; no confundir con dynamic batching que agrupa requests independientes.
1---2name: dynamic-batching-triton3description: Batching dinámico en Triton Inference Server para maximizar throughput GPU en inferencia facial4---56# dynamic_batching_triton78Skill para configurar y optimizar el dynamic batching nativo de NVIDIA Triton Inference Server, agrupando requests de inferencia facial, liveness y OCR en batches óptimos para maximizar el throughput GPU. A diferencia del batching genérico a nivel aplicación, esta skill se centra en la configuración específica de Triton y sus parámetros de scheduling para el pipeline de verificación KYC.910## When to use1112Usar esta skill cuando el **model_server_agent** necesite configurar, tunear o diagnosticar el dynamic batching dentro de Triton Inference Server. Aplica al desplegar nuevos modelos en Triton, optimizar latencia vs throughput, o resolver problemas de scheduling en modelos del pipeline KYC. Esta skill es complementaria a triton_inference_server (que cubre el servidor completo) y separada de dynamic_batching genérico.1314## Instructions15161. Habilitar dynamic batching en el model config de Triton para cada modelo del pipeline:1718 ```protobuf19 # model_repository/arcface/config.pbtxt20 name: "arcface"21 platform: "onnxruntime_onnx"22 max_batch_size: 3223 dynamic_batching {24 preferred_batch_size: [8, 16, 32]25 max_queue_delay_microseconds: 100000 # 100ms max wait26 }27 input [{28 name: "input"29 data_type: TYPE_FP3230 dims: [3, 112, 112]31 }]32 ```33342. Configurar parámetros de batching diferenciados por modelo según su perfil de latencia:3536 ```protobuf37 # Liveness model - latencia crítica, batches pequeños38 dynamic_batching {39 preferred_batch_size: [4, 8]40 max_queue_delay_microseconds: 50000 # 50ms - más agresivo41 }4243 # OCR model - tolerante a latencia, batches grandes44 dynamic_batching {45 preferred_batch_size: [16, 32, 64]46 max_queue_delay_microseconds: 200000 # 200ms47 }48 ```49503. Configurar prioridades de scheduling para que liveness (crítico en UX) tenga prioridad sobre OCR:5152 ```protobuf53 dynamic_batching {54 priority_levels: 355 default_priority_level: 256 default_queue_policy {57 timeout_action: REJECT58 default_timeout_microseconds: 50000059 }60 }61 ```62634. Habilitar métricas de batching en Triton para monitorizar la efectividad:6465 ```bash66 # Arrancar Triton con métricas habilitadas67 tritonserver --model-repository=/models \68 --metrics-port=8002 \69 --allow-metrics=true \70 --metrics-interval-ms=100071 ```72735. Monitorizar métricas clave de batching via Prometheus endpoint:7475 ```76 nv_inference_request_success # Requests exitosas77 nv_inference_queue_duration_us # Tiempo en cola78 nv_inference_compute_infer_duration_us # Tiempo de inferencia79 nv_inference_exec_count # Batches ejecutados80 nv_inference_request_duration_us # Duración total81 ```82836. Tunear el max_queue_delay basándose en el SLA de 8 segundos totales del pipeline:8485 ```python86 # Budget de latencia por modelo dentro del SLA de 8s87 LATENCY_BUDGET_MS = {88 "liveness": 500, # Máx 500ms89 "arcface": 300, # Máx 300ms90 "paddleocr": 1000, # Máx 1000ms91 "antifraud": 200, # Máx 200ms92 }93 # max_queue_delay = budget * 0.3 (30% del budget para queueing)94 ```95967. Configurar sequence batching para modelos que procesan múltiples frames (liveness con secuencia de frames):97 ```protobuf98 sequence_batching {99 max_sequence_idle_microseconds: 5000000100 control_input [{101 name: "START"102 control [{ kind: CONTROL_SEQUENCE_START }]103 }]104 }105 ```106107## Notes108109- El dynamic batching de Triton opera a nivel de inference server, no de aplicación. Esto es más eficiente que batching manual porque Triton conoce el estado exacto de la GPU y puede optimizar la ejecución de kernels CUDA.110- El parámetro max_queue_delay es el trade-off principal: valores altos mejoran throughput pero aumentan latencia. Para el pipeline KYC con SLA de 8s, mantener delays conservadores en modelos de la ruta crítica (liveness, face_match).111- Sequence batching es necesario para el módulo de liveness que analiza múltiples frames consecutivos; no confundir con dynamic batching que agrupa requests independientes.