返回 Skill 列表
extension
分类: 内容与媒体无需 API Key

dynamic_batching

当队列超过阈值时,将推理请求分批处理

person作者: jakexiaohubgithub

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 worker_pool_agent cuando hay carga sostenida (>10 peticiones/segundo). En baja carga, procesar individualmente para mínima latencia.

Instructions

  1. Implementar colector de batch con timeout:
    batch = []
    while len(batch) < max_batch_size:
        try:
            item = await queue.get(timeout=max_wait_ms / 1000)
            batch.append(item)
        except asyncio.TimeoutError:
            break
    
  2. Configurar max_batch_size=8 y max_wait_ms=50.
  3. Concatenar inputs: batch_tensor = torch.stack([item.tensor for item in batch]).
  4. Ejecutar inferencia en batch: results = model(batch_tensor).
  5. Distribuir resultados: cada item recibe su resultado individual.
  6. Monitorizar batch_size promedio: si siempre es 1, el batching no aporta valor.
  7. Ajustar max_batch_size 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 max_wait_ms añade latencia; balance entre throughput (batch grande) y latencia (batch pequeño).