Model Weights
Los pesos de un modelo son los valores aprendidos que convierten las entradas de una red en predicciones. Descubre cómo los determina el entrenamiento, cómo son los archivos de pesos y cómo se comprimen.
Los pesos del modelo son los valores entrenables de una red neuronal que transforman sus entradas en predicciones. Cada peso escala la señal que pasa entre dos unidades o forma un valor de un filtro de convolución, y todos los pesos juntos codifican todo lo que el modelo ha aprendido de sus datos de entrenamiento. El término suele usarse de forma imprecisa para referirse a todos los parámetros aprendidos por un modelo, incluidos los sesgos y los valores de normalización, como en «pesos preentrenados» o «modelos de pesos abiertos». El número de pesos puede variar en varios órdenes de magnitud: ResNet-50 tiene unos 25,6 millones de parámetros, mientras que los modelos de lenguaje grandes tienen miles de millones.
Cómo determina el entrenamiento los pesos#
Una red nueva comienza con pesos aleatorios pequeños, obtenidos mediante métodos como la inicialización de He, que ajustan los valores aleatorios al tamaño de cada capa para que las señales no se desvanezcan ni exploten al pasar por muchas capas. En este punto, las predicciones del modelo son ruido. A continuación, el entrenamiento repite un ciclo para cada lote de datos: una pasada hacia delante genera predicciones, una función de pérdida evalúa su error, la retropropagación calcula cuánto ha contribuido cada peso a ese error y un optimizador, como el descenso de gradiente estocástico (SGD) o el optimizador Adam, ajusta ligeramente cada peso para reducirlo. Tras millones de estos pequeños ajustes, los pesos se estabilizan en valores que generan predicciones precisas, y permanecen fijos durante la inferencia.
Pesos y términos relacionados#
- Sesgos: En una capa que calcula
y = Wx + b, los pesosWmultiplican las entradas y el sesgobañade un desplazamiento. Esto permite que la función de activación de una unidad desplace su umbral y genere una salida distinta de cero cuando todas las entradas son cero. Ambos se aprenden durante el entrenamiento. - Hiperparámetros: Ajustes como la tasa de aprendizaje y el tamaño del lote que se eligen antes del entrenamiento y controlan cómo se aprenden los pesos. El descenso de gradiente no los actualiza.
- Activaciones: Las salidas intermedias que calcula una red para una entrada determinada. Los pesos permanecen iguales para todas las entradas, mientras que las activaciones se vuelven a calcular para cada una.
- Weights & Biases: Una plataforma de seguimiento de experimentos cuyo nombre alude a los dos tipos de parámetros.
Guardar y cargar pesos#
Los pesos entrenados se guardan en archivos para poder volver a cargarlos para la inferencia, compartirlos o usarlos como punto de partida para el aprendizaje por transferencia. En PyTorch, los pesos de un modelo se encuentran en su state_dict y suelen guardarse en archivos .pt. Estos archivos usan el formato pickle de Python, que puede ejecutar código al cargarse, por lo que, desde PyTorch 2.6, torch.load usa weights_only=True de forma predeterminada. El formato safetensors solo almacena tensores sin procesar, lo que evita la ejecución de código y permite una carga rápida con memoria mapeada; además, es el formato estándar en Hugging Face. Los archivos ONNX empaquetan los pesos junto con el grafo de cálculo para que otros entornos de ejecución puedan ejecutar el modelo.
Los puntos de control .pt de Ultralytics YOLO26 almacenan una media móvil exponencial (EMA) de los pesos, que suaviza el ruido entre pasos, junto con los argumentos de entrenamiento y los resultados de cada época. Cada ejecución de entrenamiento guarda best.pt y last.pt en su carpeta weights. Al cargar la misma arquitectura con y sin pesos entrenados, se ve dónde reside el conocimiento del modelo:
from ultralytics import YOLO
# Same YOLO26n architecture with two different sets of weights
trained = YOLO("yolo26n.pt") # weights learned on COCO
untrained = YOLO("yolo26n.yaml") # randomly initialized weights
for name, model in [("trained", trained), ("untrained", untrained)]:
results = model("https://ultralytics.com/images/bus.jpg")
print(f"{name}: {len(results[0].boxes)} objects detected")Los pesos entrenados encuentran el autobús y a las personas de la imagen, mientras que la copia con inicialización aleatoria de la misma red no detecta nada.
Compresión de pesos para el despliegue#
La precisión de los pesos determina el tamaño del archivo y la huella de memoria de un modelo, algo especialmente importante en los dispositivos de IA en el borde. La cuantización de modelos almacena los pesos con menor precisión: pasar de coma flotante de 32 bits a enteros de 8 bits los hace cuatro veces más pequeños y acelera la inferencia en hardware compatible con enteros. La poda elimina los pesos que apenas contribuyen a la salida, y la destilación de conocimiento entrena un modelo más pequeño para que imite a uno más grande. Como referencia, un modelo de lenguaje de 7.000 millones de parámetros necesita unos 28 GB para sus pesos a 32 bits, 14 GB a 16 bits y 3,5 GB a 4 bits.










