Batch Size
Aprende cómo el tamaño del lote impacta en la velocidad y precisión del entrenamiento de aprendizaje automático. Explora las limitaciones de hardware y optimiza YOLO26 de Ultralytics usando AutoBatch.
En el ámbito del aprendizaje automático y, particularmente, del aprendizaje profundo, el tamaño del lote se refiere al número de ejemplos de entrenamiento utilizados en una iteración del entrenamiento del modelo. En lugar de introducir todos los datos de entrenamiento en la red neuronal a la vez (lo que a menudo es computacionalmente imposible debido a las limitaciones de memoria), el conjunto de datos se divide en subconjuntos más pequeños llamados lotes. El modelo procesa un lote, calcula el error y actualiza sus pesos del modelo internos mediante retropropagación antes de pasar al siguiente lote. Este hiperparámetro juega un papel fundamental a la hora de determinar tanto la velocidad del entrenamiento como la estabilidad del proceso de aprendizaje.
Link to this sectionLa dinámica del entrenamiento con lotes#
La elección del tamaño del lote altera fundamentalmente la forma en que el algoritmo de optimización, normalmente una variante del descenso de gradiente estocástico, navega por el panorama de pérdidas.
- Tamaños de lote pequeños: utilizar un número pequeño (por ejemplo, 8 o 16) da lugar a actualizaciones "ruidosas". Aunque la estimación del gradiente es menos precisa para el conjunto de datos en su conjunto, este ruido a veces puede ayudar al modelo a escapar de los mínimos locales, lo que potencialmente conduce a una mejor generalización. Sin embargo, los lotes más pequeños requieren más actualizaciones por época, lo que puede ralentizar el entrenamiento en términos de tiempo real debido a la sobrecarga.
- Tamaños de lote grandes: un lote mayor (por ejemplo, 128 o 256) proporciona una estimación más precisa del gradiente, lo que conduce a una convergencia más suave de la función de pérdida. Permite una paralelización masiva en hardware moderno, lo que acelera significativamente el cálculo. Sin embargo, si el lote es demasiado grande, el modelo podría establecerse en mínimos agudos y subóptimos, lo que conlleva sobreajuste y una menor capacidad para generalizar a nuevos datos.
Link to this sectionImplicaciones de hardware y memoria#
A menudo, debes seleccionar un tamaño de lote basado en las limitaciones de hardware en lugar de hacerlo por pura preferencia teórica. Los modelos de aprendizaje profundo, especialmente las arquitecturas grandes como los Transformer o las redes convolucionales avanzadas, se almacenan en la VRAM de una GPU.
Al utilizar NVIDIA CUDA para la aceleración, la VRAM debe contener los parámetros del modelo, el lote de datos de entrada y las salidas de activación intermedias necesarias para el cálculo del gradiente. Si el tamaño del lote excede la memoria disponible, el entrenamiento fallará con un error de "fuera de memoria" (OOM). A menudo se emplean técnicas como el entrenamiento de precisión mixta para reducir el uso de memoria, lo que permite tamaños de lote mayores en el mismo hardware.
Link to this sectionDistinguir conceptos relacionados#
Para configurar el entrenamiento de manera efectiva, es esencial distinguir el tamaño del lote de otros términos temporales en el bucle de entrenamiento.
- Tamaño del lote vs. Época: Una época representa una pasada completa por todo el conjunto de datos de entrenamiento. El tamaño del lote determina en cuántos fragmentos se divide el dato dentro de esa época. Por ejemplo, si tienes 1000 imágenes y un tamaño de lote de 100, se necesitarán 10 iteraciones para completar una época.
- Tamaño del lote vs. Iteración: Una iteración (o paso) es el acto de procesar un lote y actualizar los pesos. El número total de iteraciones en el entrenamiento es el número de lotes por época multiplicado por el número total de épocas.
- Tamaño del lote vs. Normalización por lotes: Aunque comparten nombre, la Normalización por lotes es un tipo de capa específica que normaliza las entradas de la capa basándose en la media y la varianza del lote actual. Esta técnica depende en gran medida del tamaño del lote; si el tamaño es demasiado pequeño (por ejemplo, 2), las estimaciones estadísticas se vuelven poco fiables, lo que potencialmente degrada el rendimiento.
Link to this sectionAplicaciones en el mundo real#
Ajustar el tamaño del lote es una necesidad rutinaria al desplegar soluciones de visión artificial en diversas industrias.
-
Imagen médica de alta fidelidad: en el campo de la IA en el cuidado de la salud, los profesionales a menudo trabajan con datos volumétricos 3D como resonancias magnéticas o escáneres CT. Estos archivos son increíblemente densos y consumen mucha memoria. Para realizar tareas como análisis de imágenes médicas o segmentación de imágenes complejas sin que el sistema falle, los ingenieros a menudo reducen el tamaño del lote a un número muy pequeño, a veces incluso a un lote de 1. Aquí, la prioridad es procesar detalles de alta resolución en lugar de la velocidad de entrenamiento bruta.
-
Control de calidad industrial: por el contrario, en IA en la fabricación, la velocidad es primordial. Los sistemas automatizados que inspeccionan productos en una cinta transportadora necesitan procesar miles de imágenes por hora. Durante la inferencia, los ingenieros podrían agregar los flujos de cámara entrantes en lotes más grandes para maximizar la utilización de los dispositivos de Edge AI, garantizando un alto rendimiento para la detección de defectos en tiempo real.
Link to this sectionConfiguración del tamaño del lote en Python#
Al utilizar el paquete de Python de Ultralytics, establecer el tamaño del lote es sencillo. Puedes especificar un número entero fijo o utilizar la configuración dinámica batch=-1, que utiliza la función AutoBatch para calcular automáticamente el tamaño máximo de lote que tu hardware puede manejar de forma segura.
The following example demonstrates how to train a YOLO26 model—the latest standard for speed and accuracy—using a specific batch setting.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)Para gestionar experimentos a gran escala y visualizar cómo los diferentes tamaños de lote afectan a tus métricas de entrenamiento, herramientas como la plataforma de Ultralytics proporcionan un entorno integral para registrar y comparar ejecuciones. Una correcta optimización de hiperparámetros del tamaño del lote suele ser el paso final para exprimir el mejor rendimiento de tu modelo.






