SKILL.md
dynamic_batching
Agrupamiento dinámico de múltiples peticiones de inferencia en un solo batch GPU para maximizar throughput. Cuando llegan varias peticiones simultáneamente, se procesan juntas en vez de una por una.
When to use
Usar en el workerpoolagent cuando hay carga sostenida (>10 peticiones/segundo). En baja carga, procesar individualmente para mínima latencia.
Instructions
- Implementar colector de batch con timeout:
``python batch = [] while len(batch) < maxbatchsize: try: item = await queue.get(timeout=maxwaitms / 1000) batch.append(item) except asyncio.TimeoutError: break ``
- Configurar
maxbatchsize=8ymaxwaitms=50. - Concatenar inputs:
batch_tensor = torch.stack([item.tensor for item in batch]). - Ejecutar inferencia en batch:
results = model(batch_tensor). - Distribuir resultados: cada item recibe su resultado individual.
- Monitorizar batch_size promedio: si siempre es 1, el batching no aporta valor.
- Ajustar maxbatchsize según VRAM disponible.
Notes
- Triton Inference Server implementa dynamic batching automáticamente; preferir Triton si está disponible.
- El batch size máximo depende de la VRAM: ArcFace batch=8 consume ~2GB.
- El maxwaitms añade latencia; balance entre throughput (batch grande) y latencia (batch pequeño).