39 · Encoder, decoder, encoder-decoder
El mismo bloque transformer da tres familias: solo-encoder (BERT) para comprensión, solo-decoder (GPT) para generación, y encoder-decoder (T5) para seq2seq — la diferencia es la máscara de atención.
De UN solo bloque transformer surgen tres familias: solo-encoder (bidireccional → comprensión), solo-decoder (causal → generación) y encoder-decoder (ambos → seq2seq). La MÁSCARA de atención es lo que las distingue.
Sin esto:
Saber qué familia encaja con una tarea — BERT para embeddings, GPT para chat, T5 para traducción — es la diferencia entre elegir el modelo correcto y pelear con el equivocado.
El bloque transformer que construiste en el Capítulo 8 es una unidad única y reutilizable. Sorprendentemente, todo el panorama moderno de los LLM surge de organizar ese mismo bloque de una de tres maneras, distinguidas principalmente por qué máscara de atención usan:
-
Solo-encoder (BERT, RoBERTa, DistilBERT). Pilas de bloques con atención bidireccional — cada token atiende a todos los demás, a izquierda y derecha. Esto construye una representación profunda y rica en contexto de toda la entrada a la vez. Perfecto para tareas de comprensión: clasificación, reconocimiento de entidades nombradas y producir embeddings de oraciones para búsqueda. Se empareja con el objetivo de LM enmascarado (lección 38). NO genera texto token por token.
-
Solo-decoder (GPT, LLaMA, Mistral, Claude). Pilas de bloques con atención causal — cada token atiende solo a sí mismo y a los tokens anteriores (una máscara triangular bloquea el futuro). Esto es justo lo que la generación necesita: predecir el siguiente token, añadir, repetir. Se empareja con el objetivo de LM causal.
-
Encoder-decoder (el Transformer original, T5, BART). Un encoder (bidireccional) lee toda la entrada en una representación; un decoder (causal) genera la salida mientras también hace atención cruzada (cross-attention) sobre la salida del encoder. Este es el ajuste natural para tareas secuencia a secuencia (seq2seq) donde la entrada y la salida son secuencias distintas: traducción, resumen.
Así que las familias no son tres invenciones distintas — son tres configuraciones del mismo bloque de atención. Las máscaras que calcularemos abajo (bidireccional vs causal) son literalmente el interruptor que elige una familia. Esto conecta directamente con la atención enmascarada de las lecciones 30 y 34.
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Las flechas verdes punteadas son las conexiones residuales que rodean cada subcapa.
Las flechas verdes punteadas son las conexiones residuales que rodean cada subcapa.
Tabla tarea-a-familia: comprensión/embeddings → encoder (BERT); chat/completado/código → decoder (GPT); traducción/resumen → encoder-decoder (T5).
¿Qué familia encaja mejor para producir un único embedding de oración para búsqueda semántica?
- Solo-encoder (BERT) usa atención bidireccional para comprensión/embeddings; solo-decoder (GPT) usa atención causal para generación; encoder-decoder (T5) combina ambas para seq2seq.
- Las tres son configuraciones del mismo bloque transformer — la MÁSCARA de atención (bidireccional vs triangular causal) es el interruptor central entre el comportamiento de encoder y decoder.
- Solo-decoder ganó la carrera de escalado porque la predicción del siguiente token a escala generaliza a casi cualquier tarea mediante prompting, sin cabezas específicas de tarea.
Elegir un modelo empieza aquí: una pipeline de recuperación recurre a un encoder estilo BERT, un chatbot a un decoder estilo GPT, un servicio de traducción a un encoder-decoder estilo T5.
Si lo quitas: Tratarías 'transformer' como una sola cosa monolítica y recurrirías al modelo equivocado — p. ej. intentando obtener embeddings de GPT o generación de BERT.