De GPT-1 a los modelos de razonamiento: qué cambió en cada generación para los desarrolladores
Trace la familia GPT desde el preentrenamiento de 2018 hasta los modelos de razonamiento, observe qué ideas aportó cada generación, y conozca como se denominan GPT-4o Vision y Structured Outputs de Python.
Fuentes: The GPT Timeline: How OpenAI Built the Brains of Modern AI
Cada llamada a una API de un modelo de lenguaje moderno se basa en un conjunto de ideas que surgieron poco a poco a lo largo del tiempo: entrenamiento generativo previo, escalabilidad, aprendizaje in-contexto, alineación mediante retroalimentación humana, multimodalidad nativa y cálculos adicionales durante la inferencia. Saber de dónde proviene cada idea facilita enormemente comprender qué puede hacer un modelo, por qué falla y qué características de la API utilizar. Esta guía recorre la línea evolutiva de GPT desde sus orígenes en 2018 hasta los modelos centrados en el razonamiento, y finaliza con dos ejemplos prácticos en Python para GPT-4o.
Antes de GPT: por qué fue importante el Transformer
Hasta alrededor de 2018, la mayor parte del procesamiento del lenguaje natural dependía de redes neuronales recurrentes y su variante LSTM. Estos modelos leían el texto token por token, lo que dificultaba la paralelización del entrenamiento y hacía que la información de las partes iniciales de un texto largo se desvaneciera antes de llegar al final.
En 2017, un artículo de investigación de Google titulado “Attention Is All You Need” presentó la arquitectura Transformer. Esta sustituyó la recursividad por la autoatención, permitiendo que cada posición en una secuencia se relacionara directamente con todas las demás. OpenAI desarrolló su serie GPT (Generative Pre-trained Transformer) sobre esta arquitectura, y en junio de 2018 publicó el artículo “Improving Language Understanding by Generative Pre-Training”, que en ese momento pocos reconocieron como el inicio de un cambio significativo en la informática.
2018 a 2019: entrenamiento previo y los beneficios de la escala
GPT-1: primero entrenamiento previo, luego ajuste fino
El primer modelo era modesto según los estándares actuales:
- 117 millones de parámetros
- un Transformer solo con decodificador y 12 capas
- entrenado en BooksCorpus, aproximadamente 5 GB de texto
Su aporte fue un método en dos etapas. Primero, el entrenamiento previo no supervisado con texto sin procesar permitió al modelo adquirir conocimientos gramaticales, asociaciones factuales y la estructura del lenguaje simplemente al predecir el siguiente token. Segundo, una pequeña cantidad de ajuste fino supervisado en una tarea específica, como el análisis de sentimientos o la clasificación, fue suficiente para obtener resultados de vanguardia, sin necesidad de diseñar una arquitectura personalizada para cada tarea.
GPT-2: aparece el comportamiento de tipo “zero-shot”
El siguiente paso se centró principalmente en el tamaño:
- 1.5 mil millones de parámetros, aproximadamente diez veces más que GPT-1
Con suficiente escala, el ajuste fino pasó a ser opcional para muchas tareas. GPT-2 demostró aprendizaje sin entrenamiento previo: una instrucción como “Traducir al francés:” podía orientarlo hacia una tarea en la que nunca había sido entrenado explícitamente, simplemente porque continuar ese texto implicaba razonablemente producir una traducción.
GPT-2 también es recordado por la forma en que se lanzó. OpenAI retuvo inicialmente el modelo completo, argumentando que podría utilizarse para producir en masa noticias falsas y spam, y lo lanzó por etapas. Esa decisión desató un debate público duradero sobre la seguridad de la IA y sobre si los modelos poderosos deberían publicarse abiertamente.
2020 a 2022: aprendizaje in-context y alineación
GPT-3: ejemplos dentro de la instrucción
GPT-3 traspasó el umbral de la investigación al producto comercial:
- 175 mil millones de parámetros, más de cien veces GPT-2
- entrenado con una combinación de texto web filtrado, libros y Wikipedia, extraído de aproximadamente 45 TB de datos brutos antes del filtrado
Su capacidad más destacada era el aprendizaje con pocos ejemplos a gran escala. Con dos o tres ejemplos funcionales en la instrucción, el modelo continuaba con el patrón, ya fuera escribiendo código, versos o extrayendo campos de datos desorganizados. Esto se conoce como aprendizaje in-context: el modelo se adapta únicamente a partir de la instrucción, sin actualizaciones de pesos.
No obstante, el GPT-3 base tenía una limitación grave. Estaba entrenado solo para continuar textos, no para actuar como un asistente útil, por lo que a menudo inventaba hechos, se desviaba del tema o ignoraba lo que se le había pedido. El diagrama a continuación resume la solución implementada: la alineación mediante retroalimentación humana convierte a un predictor de texto en bruto en un modelo que sigue instrucciones.
[Raw Pre-training] --> Predicts likely text continuations (often rambling or toxic)
│
▼ + RLHF (Human Feedback Alignment)
[InstructGPT Engine] --> Follows instructions safely and concisely
InstructGPT y ChatGPT: aprender de las preferencias humanas
La solución fue el Aprendizaje Reforzado a partir de Retroalimentación Humana (RLHF). Las personas calificaron las salidas del modelo, un modelo de recompensas aprendió esas preferencias y luego el modelo de lenguaje se optimizó para generar respuestas que los humanos prefirieran. Los modelos InstructGPT resultantes siguieron las instrucciones de manera mucho más directa y útil.
El 30 de noviembre de 2022, OpenAI lanzó ChatGPT, basado en la serie GPT-3.5. La combinación de conversaciones multietapa con un comportamiento ajustado mediante RLHF lo convirtió en la aplicación para consumidores de mayor crecimiento hasta ese momento, con una estimación de 100 millones de usuarios en aproximadamente dos meses.
2023 a 2024: razonamiento profesional y multimodalidad
GPT-4: razonamiento más sólido, imágenes y herramientas
GPT-4, lanzado en marzo de 2023, desplazó el foco desde la capacidad para generar texto fluido hacia el razonamiento en tareas académicas y profesionales. OpenAI informó resultados como una puntuación alrededor del 90% en un examen simulado de abogacía y altas calificaciones en muchos exámenes AP. También incorporó la comprensión de imágenes, y la familia GPT-4 adquirió funciones en las que los desarrolladores confían hoy a diario: salida en formato JSON, llamadas a funciones y uso de herramientas como ejecución de código y búsquedas en la web.
Hay dos detalles que a menudo se mencionan incorrectamente. OpenAI no ha publicado oficialmente la arquitectura de GPT-4; la afirmación ampliamente difundida de que se trata de un modelo de tipo Mixture of Experts proviene de informes no confirmados. Además, la ventana de contexto de 128k tokens llegó con GPT-4 Turbo más tarde en 2023, y no con el lanzamiento original de marzo, que ofrecía ventanas mucho más pequeñas.
GPT-4o: una red para texto, visión y audio
Las experiencias de voz anteriores funcionaban mediante pipelines: un modelo transcribía el habla, otro modelo de lenguaje generaba texto y un motor separado sintetizaba el audio. GPT-4o, donde la “o” representa “omni”, maneja texto, imágenes y audio en una única red de extremo a extremo. Al eliminar las etapas intermedias, la latencia de voz se redujo a aproximadamente 200 ms y permitió al modelo percibir y producir el tono de voz en lugar de solo palabras.
Modelos de razonamiento: uso de recursos informáticos en el momento de la inferencia
A medida que se volvía más difícil lograr mejoras con sesiones de entrenamiento cada vez más extensas, y los datos de entrenamiento de alta calidad se convertían en una limitación creciente, la atención se desplazó hacia los cálculos en tiempo de prueba: permitir que un modelo reflexione antes de responder. La diferencia es sencilla. Una respuesta clásica de GPT comienza a generar tokens tan pronto como llega la solicitud, mientras que un modelo basado en el razonamiento primero analiza una secuencia interna de pensamientos y solo luego emite su respuesta final.
Traditional GPT Response: Prompt ──> Immediate Word-by-Word Streaming
o-Series Response: Prompt ──> Internal Chain-of-Thought (Deliberation) ──> Final Answer
Las series o1 y o3 de OpenAI están diseñadas de esta manera. En lugar de decidir inmediatamente la palabra siguiente, el modelo invierte más cálculos en explorar casos límite, verificar pasos intermedios y depurar su propio código, lo cual resulta especialmente útil en matemáticas, programación competitiva y lógica de múltiples pasos. El precio a pagar es una mayor latencia y costo, por lo que deben reservarse para problemas que requieren reflexión.
Trabajar con GPT-4o en Python
La historia explica por qué GPT-4o cambió el enfoque de su desarrollo día a día: en lugar de combinar un modelo de visión, un modelo de lenguaje y un motor de voz, una sola llamada a la API puede aceptar entradas mixtas. Dos ejemplos muestran las características más útiles para los desarrolladores.
Enviar una imagen y texto en una sola solicitud
Con GPT-4o se puede colocar texto e imágenes una al lado de la otra en el array content de un único mensaje de usuario. Una imagen puede ser transmitida como una URL pública o como datos codificados en base64. El ejemplo a continuación utiliza el SDK oficial de Python, lee la clave de API desde una variable de entorno, pide al modelo que examine una foto de concreto en busca de grietas y evalúe su gravedad, limita la respuesta con max_tokens y muestra el texto de la primera opción.
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Sending a visual inspection query directly to GPT-4o
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Analyze this image for architectural structural damage. Identify any cracks and rate severity."
},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e1/Concrete_crack_example.jpg"
},
},
],
}
],
max_tokens=500,
)
print(response.choices[0].message.content)
El contenido es una lista de elementos con tipo definido (text y image_url), lo que permite combinar varias imágenes e instrucciones en una sola vez. Considere la salida como una evaluación para revisar; todo lo relacionado con la seguridad aún requiere la intervención de un experto.
Obtener JSON válido según el esquema con Salidas Estructuradas
Extraer JSON de manera fiable desde un modelo solía requerir una formulación cuidadosa de las instrucciones además de un análisis defensivo con expresiones regulares. Las Salidas Estructuradas resuelven este problema en la etapa de decodificación: la generación del modelo está restringida de modo que la salida debe cumplir con el esquema JSON que se proporcione. Con esquemas estrictos, OpenAI describe esto como una garantía de conformidad con el esquema, lo cual es más sólido que el antiguo “modo JSON”, que solo garantizaba un JSON sintácticamente válido.
En Python, la opción más práctica es Pydantic. El ejemplo define un modelo Entity y un modelo ArticleAnalysis que incluye un título, un resumen, una puntuación de sentimiento entre -1.0 y 1.0 además de una lista de entidades; luego pasa la clase como response_format al helper parse del SDK. Este helper convierte la clase en un esquema JSON, lo envía junto con la solicitud y devuelve un objeto tipado en message.parsed.
from openai import OpenAI
from pydantic import BaseModel, Field
from typing import List
client = OpenAI()
# Define the exact JSON schema required by your database
class Entity(BaseModel):
name: str
category: str = Field(description="Person, Organization, Location, or Date")
class ArticleAnalysis(BaseModel):
title: str
summary: str
sentiment_score: float = Field(description="Score between -1.0 and 1.0")
key_entities: List[Entity]
# Pass the schema directly into the completion request
completion = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are an automated intelligence parser."},
{"role": "user", "content": "OpenAI CEO Sam Altman announced new developer tooling in San Francisco today."}
],
response_format=ArticleAnalysis,
)
# Extract type-safe output directly as a Python object
result: ArticleAnalysis = completion.choices[0].message.parsed
print(f"Summary: {result.summary}")
print(f"Entities: {result.key_entities}")
Dos notas prácticas. El helper se encontraba bajo client.beta cuando se lanzó esta función, y las versiones más recientes del SDK también lo exponen fuera del espacio de nombres beta, así que verifique la versión del SDK que utiliza su proyecto. Aunque el esquema está garantizado, los valores no lo están: una puntuación de sentimiento será un número, pero si ese número es razonable sigue siendo una decisión del modelo. Maneje los rechazos y valide las reglas de negocio como lo haría con cualquier entrada externa.
Un vistazo a la familia GPT
- GPT-1 (2018): 117 millones de parámetros; demostró que el preentrenamiento generativo combinado con un ligero ajuste funciona bien.
- GPT-2 (2019): 1.5 mil millones de parámetros; rendimiento en tareas sin entrenamiento previo y un lanzamiento gradual motivado por consideraciones de seguridad.
- GPT-3 (2020): 175 mil millones de parámetros; aprendizaje en contexto con pocos ejemplos a gran escala.
Qué significa esta evolución para su stack
- Solo escalar ya no es suficiente. Los primeros avances se debieron al número de parámetros (117M, luego 1.5B y después 175B); los progresos posteriores provinieron en gran medida de técnicas de alineamiento como RLHF, unificación multimodal y deliberación en tiempo de prueba.
- Modelos pasados de autocompletado a acciones reales. Los modelos actuales permiten planificar, llamar a funciones y coordinar flujos de trabajo multietapa con herramientas, por lo que el diseño de agentes es ahora un tema central en la ingeniería.
- La previsibilidad es una ventaja que puedes aprovechar. Las salidas estructuradas te permiten integrar los resultados del modelo en rutas de código tipado con un esquema fijo, en lugar de analizar texto libre.
- La eficiencia compite ahora con el tamaño bruto. Variantes más pequeñas como GPT-4o mini y modelos de razonamiento específicos suelen superar al modelo más grande en costos y latencia para una tarea determinada, por lo que es mejor elegir según la carga de trabajo y no solo según sus capacidades generales.
El desarrollo con estos modelos se centra cada vez más en componer sistemas de modelos, herramientas y esquemas, en lugar de enviar una sola solicitud.
Lecturas relacionadas
- Construyendo un tokenizador de codificación de pares de bytes desde cero para un small GPT — Implementar un tokenizador BPE a nivel de carácter en Python, entrenarlo con WikiText-2, guardarlo y obtener su huella digital, y volver a entrenar un small GPT con secuencias de tokens más cortas y densas.
- Depuración de un small GPT en PyTorch: Pruebas que aíslan cada fallo — Un flujo de trabajo paso a paso para depurar un GPT a nivel de carácter en PyTorch, desde los IDs de tokens y el desplazamiento de objetivos hasta los gradientes, las pérdidas NaN y los puntos de control.