Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Batch Size

El tamaño del lote es el número de ejemplos de entrenamiento que procesa un modelo en cada actualización de pesos. Determina el uso de memoria de la GPU, la velocidad de entrenamiento y el ruido del gradiente.

El tamaño del lote es el número de ejemplos de entrenamiento que un modelo procesa a la vez antes de actualizar sus pesos. En lugar de introducir todo el conjunto de datos de entrenamiento en una red neuronal de una sola vez, el entrenamiento lo divide en lotes. Para cada lote, el modelo genera predicciones, la función de pérdida las puntúa, la retropropagación calcula los gradientes y el optimizador da un paso. El tamaño del lote es un hiperparámetro que determina tres cosas a la vez: cuánta memoria GPU necesita el entrenamiento, cuánto tarda cada época y cuánto ruido tiene cada estimación del gradiente.

Cómo afecta el tamaño del lote al entrenamiento#

Cada lote proporciona al algoritmo de optimización una estimación del gradiente para todo el conjunto de datos, y la estimación es más precisa cuanto mayor es el lote. El fragmento de PyTorch que aparece a continuación mide esa precisión directamente, promediando los gradientes por muestra en muchos lotes aleatorios de cada tamaño:

import torch

torch.manual_seed(0)

# Per-sample gradients of a squared-error loss for 10,000 samples
x = torch.randn(10_000)
y = 2 * x + torch.randn(10_000)
w = torch.tensor(0.0)
per_sample_grads = 2 * (w * x - y) * x

# Estimate the gradient from 1,000 random batches at each batch size
for batch_size in (8, 64, 512):
    idx = torch.randint(0, len(x), (1000, batch_size))
    batch_grads = per_sample_grads[idx].mean(dim=1)
    print(f"batch {batch_size:3d}: gradient std {batch_grads.std():.3f}")

La dispersión de la estimación del gradiente baja de 2.248 con un tamaño de lote de 8 a 0.771 con 64 y a 0.267 con 512. Cada aumento de 8 veces en el tamaño del lote reduce el ruido unas 2,9 veces, un valor cercano a la raíz cuadrada de 8, que es el comportamiento de los promedios de muestras independientes.

Ese ruido determina el equilibrio entre lotes pequeños y grandes:

  • Lotes pequeños (por ejemplo, de 8 a 32): Actualizaciones ruidosas y muchos pasos por época. El ruido actúa como un regularizador moderado que suele ayudar a que el descenso de gradiente estocástico (SGD) generalice. Además, los lotes pequeños caben en equipos modestos, pero cada época tarda más porque la GPU está parcialmente inactiva.
  • Lotes grandes (por ejemplo, de 256 en adelante): Gradientes suaves, menos pasos por época y un alto aprovechamiento del hardware. Los lotes muy grandes tienden a converger en mínimos pronunciados que generalizan peor, como observaron Keskar et al.. Además, como requieren menos pasos por época, necesitan una tasa de aprendizaje proporcionalmente mayor y un periodo de calentamiento. Con esa regla de escalado lineal, Goyal et al. entrenaron ResNet-50 con ImageNet en una hora, usando un tamaño de lote de 8.192 repartido entre 256 GPU y obteniendo una precisión equivalente a la del entrenamiento con lotes pequeños.

Límites de memoria y acumulación de gradientes#

La memoria de la GPU debe almacenar los pesos del modelo, el estado del optimizador y las activaciones intermedias que necesita la retropropagación. La memoria de activaciones aumenta de forma lineal con el tamaño del lote y la resolución de la imagen. Si un lote no cabe, el entrenamiento se detiene con un error de memoria agotada (OOM). El entrenamiento con precisión mixta reduce aproximadamente a la mitad la memoria de activaciones, y la acumulación de gradientes permite alcanzar un lote efectivo mayor al sumar los gradientes de varios lotes pequeños antes de actualizar los pesos.

El entrenamiento de Ultralytics YOLO incorpora esta función: acumula gradientes hasta haber procesado unas 64 imágenes, el tamaño de lote nominal nbs, de modo que, tras el calentamiento, el valor predeterminado batch=16 actualiza los pesos cada cuatro lotes. Al establecer batch=-1, se ejecuta AutoBatch, que elige el lote más grande que cabe en aproximadamente el 60 % de la memoria CUDA libre y recurre a un tamaño de lote de 16 en dispositivos CPU y Apple MPS.

from ultralytics import YOLO

# Carga un modelo YOLO26n preentrenado
model = YOLO("yolo26n.pt")

# batch=-1 permite que AutoBatch elija el tamaño del lote según la memoria GPU disponible
# Usa un entero (batch=16) para fijar el tamaño o un número decimal (batch=0.70) para indicar una fracción de la memoria
results = model.train(data="coco8.yaml", epochs=5, batch=-1)

Antes de iniciar el entrenamiento, AutoBatch ejecuta el modelo YOLO26 con tamaños de lote de 1 a 16 (hasta 64 en GPU con 16 GB o más), ajusta una recta a las mediciones de uso de memoria y la resuelve para obtener el tamaño de lote que alcanza la fracción objetivo.

  • Época e iteración: Una época es un recorrido por todo el conjunto de datos y una iteración es una actualización de pesos. El número de iteraciones por época es el tamaño del conjunto de datos dividido entre el tamaño del lote, redondeado hacia arriba. Por tanto, 1.000 imágenes con un tamaño de lote de 100 requieren 10 iteraciones.
  • Minilote: En la mayoría de los textos sobre aprendizaje profundo, es sinónimo de lote. En sentido estricto, el descenso de gradiente por lotes utiliza todo el conjunto de datos en cada actualización, el descenso de gradiente estocástico utiliza un ejemplo y el descenso de gradiente por minilotes queda entre ambos; así es como se entrenan casi todas las redes modernas.
  • Normalización por lotes: Capa que normaliza las activaciones con la media y la varianza del lote actual, por lo que sus estadísticas dejan de ser fiables con tamaños de lote muy pequeños. La normalización por grupos evita esta dependencia y obtuvo un error un 10,6 % menor que la normalización por lotes en ResNet-50 con ImageNet y un tamaño de lote de 2.
  • Tamaño del lote de inferencia: Durante el despliegue, el procesamiento por lotes intercambia latencia de inferencia por rendimiento. Agrupar fotogramas de varias cámaras aumenta el número de imágenes procesadas por segundo, mientras cada fotograma espera a que se complete su lote.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático