(LLM) se han convertido rápidamente en la base de los sistemas de inteligencia artificial modernos, desde chatbots y copilotos hasta búsqueda, codificación y automatización. Pero para los ingenieros que hacen la transición a este espacio, la curva de aprendizaje puede parecer empinada y fragmentada. Conceptos como tokenización, atención, ajuste y evaluación a menudo se explican de forma aislada, lo que dificulta formar un modelo mental coherente de cómo encaja todo.
Me encontré con esto de primera mano cuando pasé de la visión por computadora a los LLM. En un corto lapso de tiempo, tuve que comprender no sólo la teoría detrás de los transformadores, sino también las realidades prácticas: compensaciones en el entrenamiento, cuellos de botella en la inferencia, desafíos de alineación y dificultades de evaluación.
Este artículo está diseñado para cerrar esa brecha.
En lugar de profundizar en un solo componente, proporciona un mapa estructurado del panorama de ingeniería de LLM, que cubre los componentes clave que necesita comprender para diseñar, capacitar e implementar sistemas de LLM en el mundo real.
Pasaremos de los fundamentos de cómo se representa el texto, a través de arquitecturas de modelos y estrategias de entrenamiento, hasta llegar a la optimización de la inferencia, la evaluación y consideraciones a nivel de sistema y consideraciones prácticas como la ingeniería rápida y la reducción de las alucinaciones.
Al final, debería tener un marco mental claro sobre cómo se construyen los sistemas LLM modernos y dónde encaja cada concepto en la práctica.
Convertir letras a números
Tokenización
Cuando alimentamos datos a un modelo, no podemos simplemente alimentarlo con letras o palabras directamente; necesitamos una forma de convertir texto en números. Intuitivamente, podríamos pensar en asignar a cada palabra del idioma un número único y alimentar esos números al modelo. Sin embargo, hay cientos de miles de palabras en el idioma inglés y entrenar un vocabulario tan amplio sería inviable en términos de memoria y eficiencia.
Entonces, ¿qué se puede hacer en su lugar? Bueno, podríamos intentar codificar letras, ya que sólo hay 26 en el alfabeto inglés. Pero esto también generaría problemas: los modelos tendrían dificultades para capturar el significado de las palabras sólo a partir de letras individuales, y las secuencias se volverían innecesariamente largas, lo que dificultaría el entrenamiento.
Una solución práctica es la tokenización. En lugar de representar el idioma a nivel de palabra o carácter, dividimos el texto en las unidades de subpalabras más frecuentes y útiles. Estas subpalabras actúan como bloques de construcción del vocabulario del modelo: las palabras comunes aparecen como fichas completas, mientras que las palabras raras se pueden representar como combinaciones de subpalabras más pequeñas.
Un algoritmo común para esto es la codificación de pares de bytes (BPE). BPE comienza con caracteres individuales como tokens, luego fusiona repetidamente los pares de tokens más frecuentes en tokens nuevos, construyendo gradualmente un vocabulario de unidades de subpalabras hasta alcanzar el tamaño de vocabulario deseado.
En esta etapa, a cada token se le asigna un número único: su ID en el vocabulario.
Incrustaciones
Después de tokenizar los datos y asignar ID de token, debemos asignar un significado semántico a estos ID. Esto se logra mediante incrustaciones de texto: asignaciones de ID de tokens discretos a espacios vectoriales continuos. En este espacio, las palabras o tokens con significados similares se colocan muy juntos, e incluso las operaciones algebraicas pueden capturar relaciones semánticas (por ejemplo: incrustación(reina) — incrustación(mujer) + incrustación(hombre) ≈ incrustación(rey)).
Generalmente, las capas de incrustación están entrenadas para tomar ID de token como entrada y producir vectores densos como salida. Estos vectores se optimizan conjuntamente con el objetivo de entrenamiento del modelo (por ejemplo, predicción del siguiente token). Con el tiempo, el modelo aprende incorporaciones que codifican información tanto sintáctica como semántica sobre palabras, subpalabras o tokens. Los modelos de incrustación populares son: word2vec, guante, BERT.
Codificación posicional
Generalmente, los LLM no son inherentemente conscientes de la estructura del lenguaje. El lenguaje natural tiene una naturaleza secuencial (el orden de las palabras importa), pero al mismo tiempo, los elementos que están muy separados en una oración pueden estar fuertemente relacionados. Para capturar tanto el orden local como las dependencias de largo alcance, inyectamos información posicional de los tokens en cada incorporación.
Hay varios puntos comunes a los enfoques posicionales:
Codificaciones posicionales absolutas: se agregan patrones fijos, como funciones seno y coseno en diferentes frecuencias, a las incrustaciones de tokens. Esto es simple y eficaz, pero puede resultar complicado representar secuencias muy largas, ya que no modela explícitamente distancias relativas. Codificaciones posicionales relativas: representan la distancia entre tokens en lugar de sus posiciones absolutas. Un método popular es RoPE (Rotary Positional Embeddings), que codifica la posición como rotaciones vectoriales. Este enfoque se adapta mejor a secuencias largas y captura las relaciones entre tokens distantes de forma más natural. Codificaciones posicionales aprendidas: en lugar de depender de funciones matemáticas fijas, el modelo aprende directamente incorporaciones de posición durante el entrenamiento. Esto permite flexibilidad pero puede ser menos generalizable a longitudes de secuencia que no se ven en el entrenamiento.
Arquitectura modelo
Una vez que los datos se tokenizan, se incrustan y se enriquecen con codificaciones posicionales, se pasan a través del modelo. La arquitectura de última generación actual para el procesamiento de datos textuales es la arquitectura transformadora, cuyo núcleo se basa en el mecanismo de atención. Un transformador normalmente consta de una pila de bloques de transformadores:
Atención de múltiples cabezas: permite que el modelo se centre en diferentes partes de la secuencia de entrada simultáneamente, capturando contexto diverso. Calcula consultas (Q), claves (K) y valores (V) para definir relaciones de palabras. Red de avance por posición (FFN): una red completamente conectada que se aplica a cada posición de forma independiente, lo que agrega no linealidad. Conexiones residuales: conexiones de atajo que ayudan a que los gradientes fluyan durante el entrenamiento, evitando la pérdida de información. Normalización de capas: normaliza la entrada para estabilizar el entrenamiento.
Atención
Presentado en el artículo titulado La atención es todo lo que necesitas, en atención, cada token se proyecta en tres vectores: una consulta (lo que está buscando), una clave (lo que ofrece) y un valor (la información real que contiene). La atención funciona comparando consultas con claves (a través de puntuaciones de similitud) para decidir qué cantidad de cada valor agregar. Esto permite que el modelo incluya dinámicamente un contexto relevante basado en el contenido, no en la posición.
La atención multicabezal ejecuta varios mecanismos de atención en paralelo, cada uno con sus propias proyecciones aprendidas. Piense en cada “cabeza” como si se centrara en una relación diferente (por ejemplo, sintaxis, correferencia, semántica). Combinarlos le da al modelo una comprensión más rica y matizada que un solo pase de atención.
Existen varios tipos de mecanismos de atención que varían en función de su finalidad: autoatención, autoatención enmascarada y atención cruzada.
La autoatención opera dentro de una secuencia única, permitiendo que los tokens se atiendan entre sí (por ejemplo, comprender una oración). La autoatención enmascarada es similar a la autoatención con la diferencia clave de que la atención sólo ve señales pasadas, sin observar las futuras. La atención cruzada conecta dos secuencias, donde una proporciona consultas y la otra proporciona claves/valores (por ejemplo, un decodificador que atiende una entrada codificada en traducción). La diferencia clave es si el contexto proviene de la misma fuente o de una fuente externa.
La atención estándar compara cada token con todos los demás, lo que lleva a una complejidad cuadrática O(n2). A medida que aumenta la longitud de la secuencia, el cálculo y el uso de la memoria aumentan rápidamente, lo que hace que los contextos muy largos sean caros y lentos. Este es uno de los principales obstáculos para ampliar los LLM y un campo de investigación activo, por ejemplo, al ser selectivo sobre qué tokens atienden a qué tokens.
Tipos de arquitectura
Las tareas de modelado de lenguaje se crean utilizando una de las siguientes arquitecturas transformadoras:
Modelos de solo codificador: cada token puede atender a todos los demás tokens de la secuencia (atención bidireccional). Estos modelos generalmente se entrenan con modelado de lenguaje enmascarado (MLM), donde algunos tokens en la entrada están ocultos y la tarea es predecirlos. Esta configuración es adecuada para tareas de clasificación y comprensión (por ejemplo, BERT). Modelos solo decodificadores: cada token puede atender solo a los tokens que le preceden en la secuencia (atención causal o unidireccional). Estos modelos se entrenan con modelado de lenguaje causal, es decir, prediciendo el siguiente token dados todos los anteriores. Esta configuración es ideal para la generación de texto (por ejemplo, GPT). Modelos codificador-decodificador: el codificador procesa primero la secuencia de entrada y luego las representaciones resultantes se introducen en el decodificador a través de capas de atención cruzada. El decodificador genera una secuencia de salida, un token a la vez, condicionada tanto a las representaciones del codificador como a sus propias salidas anteriores. Esta configuración es común para tareas de secuencia a secuencia como la traducción automática (por ejemplo, T5, BART).
Predicción del siguiente token y decodificación de salida
Los modelos se entrenan para predecir el siguiente token; esto se hace generando una distribución de probabilidad sobre todos los tokens posibles en el vocabulario. La salida del modelo es el logit que luego se pasa a través de softmax para predecir la probabilidad del siguiente token en el vocabulario.
En el enfoque más sencillo, siempre podríamos elegir el token con la mayor probabilidad (esto se llama decodificación codiciosa). Sin embargo, esta estrategia suele ser subóptima, ya que la señal más probable a nivel local no siempre conduce a la oración más coherente o natural a nivel global.
Para mejorar la generación, podemos tomar muestras de la distribución de probabilidad. Esto introduce diversidad y permite que el modelo explore diferentes continuaciones. Además, podemos ramificar el proceso de generación considerando múltiples tokens candidatos y expandiéndolos en paralelo.
Varias estrategias de decodificación populares utilizadas en la práctica son:
Búsqueda de haces: en lugar de seguir un único camino codicioso, la búsqueda de haces realiza un seguimiento de las n secuencias candidatas (haces) principales en cada paso, expandiéndolas en paralelo y, en última instancia, seleccionando la secuencia con la mayor probabilidad general. Muestreo top-k: en cada paso, solo se consideran los k tokens más probables y se muestrea uno de acuerdo con sus probabilidades. Esto evita el muestreo de la larga cola de tokens muy improbables. Muestreo top-p (muestreo de núcleo): en lugar de fijar k, seleccionamos el conjunto más pequeño de tokens cuya probabilidad acumulada sea al menos p (p. ej., 0,9). Luego tomamos muestras de este conjunto, ajustando dinámicamente cuántos tokens se consideran según la forma de la distribución.
Para controlar qué tan "plana" o "puntiaguda" es la distribución de probabilidad, los LLM utilizan un parámetro de temperatura. Una temperatura baja (<1) hace que el modelo sea más determinista, concentrando la masa de probabilidad en los tokens más probables. Una temperatura alta (>1) hace que la distribución sea más uniforme, aumentando la aleatoriedad y la diversidad en la salida generada.
Etapas de formación
La capacitación de LLM generalmente tiene dos etapas: capacitación previa, donde el modelo aprende patrones de lenguaje generales como gramática, sintaxis y significado a partir de datos a gran escala, y ajuste, donde se adapta para realizar tareas específicas, como seguir instrucciones o responder preguntas en un formato deseado y luego refina los resultados para alinearlos con las preferencias humanas y las limitaciones de seguridad.
Esta progresión pasa de la capacidad (lo que el modelo puede hacer) a la alineación (lo que el modelo debería hacer).
Pre-entrenamiento
El entrenamiento previo es la etapa computacionalmente más costosa del entrenamiento LLM porque el modelo debe aprender de conjuntos de datos extremadamente grandes y diversos. Por lo general, esto implica cientos de miles de millones a billones de tokens extraídos de fuentes como páginas web, libros, artículos, códigos y conversaciones.
Para guiar las decisiones sobre el tamaño del modelo, el tiempo de entrenamiento y la escala del conjunto de datos, los investigadores utilizan leyes de escalamiento de LLM, que describen cómo se relacionan estos factores y ayudan a estimar la configuración óptima para lograr un rendimiento sólido.
El preprocesamiento de datos es un paso crucial porque el texto sin formato puede degradar significativamente el rendimiento de LLM si se usa directamente. Los datos de capacitación provienen de muchas fuentes, cada una con sus propios desafíos que deben limpiarse y filtrarse.
Las páginas web suelen contener contenido repetitivo, como anuncios, menús de navegación, encabezados y pies de página, además de ruido de formato de HTML, CSS y JavaScript. También pueden incluir páginas duplicadas, spam, texto de baja calidad o incluso contenido dañino. Los libros pueden presentar problemas como metadatos (detalles del editor, números de página, notas a pie de página), errores de OCR debido a la digitalización y pasajes repetitivos o estilísticamente inconsistentes. Además, las restricciones de derechos de autor requieren un filtrado cuidadoso y el cumplimiento de las licencias. Los conjuntos de datos de código pueden incluir archivos generados automáticamente, repositorios duplicados, comentarios excesivos o código repetitivo. Las limitaciones de las licencias también son importantes, y el código de baja calidad o con errores puede afectar negativamente a la capacitación si no se elimina.
Para abordar estos desafíos, los conjuntos de datos generalmente se filtran por idioma y calidad, y los desequilibrios entre las fuentes se corrigen mediante el aumento o la reponderación de los datos.
Ajuste supervisado
En el ajuste fino supervisado, normalmente no actualizamos todos los parámetros del modelo. En cambio, la mayoría de los pesos previamente entrenados se mantienen congelados y solo se entrena una pequeña cantidad de parámetros adicionales. Esto se hace agregando módulos adaptadores livianos o usando métodos eficientes en parámetros como LoRA, mientras se entrena en un pequeño subconjunto de datos limpios y filtrados.
La Adaptación de Bajo Rango (LoRA) es uno de los enfoques más utilizados. En lugar de actualizar la matriz de peso completa, LoRA aprende dos matrices más pequeñas de rango bajo, A y B, cuyo producto se aproxima a la actualización de los pesos originales. Los pesos previamente entrenados permanecen fijos y solo se entrenan A y B. Esto hace que el ajuste fino sea mucho más eficiente en términos de memoria y computación y, al mismo tiempo, preserva el rendimiento. (Ver también: técnicas prácticas de entrenamiento de LoRA y mejores prácticas). Más allá de LoRA, otros métodos eficientes en parámetros incluyen el ajuste de prefijos, donde un pequeño conjunto de “tokens virtuales” entrenables se agrega a la entrada y se optimiza durante el entrenamiento, y capas de adaptadores, que son pequeños módulos entrenables insertados entre bloques de transformadores existentes mientras el resto del modelo permanece congelado.
En un nivel superior, el ajuste fino supervisado en sí es la etapa en la que le enseñamos al modelo cómo comportarse en una tarea específica utilizando ejemplos etiquetados de alta calidad. Esto normalmente incluye:
Datos de diálogo: conversaciones seleccionadas entre humanos y humanos o entre humanos y IA que enseñan al modelo cómo responder de forma natural en entornos interactivos. Datos de instrucción: pares de indicación-respuesta que entrenan al modelo para seguir instrucciones, responder preguntas y realizar razonamientos o resultados específicos de tareas.
Juntas, estas técnicas alinean un modelo previamente entrenado con el comportamiento que realmente queremos en el momento de la inferencia.
Aprendizaje por refuerzo
Después de que el ajuste supervisado le enseña al modelo qué hacer, se utiliza el aprendizaje por refuerzo para refinar qué tan bien lo hace, especialmente en tareas abiertas o subjetivas como el diálogo, el razonamiento y la seguridad.
A diferencia del aprendizaje supervisado con objetivos fijos, RL introduce un circuito de retroalimentación: los resultados del modelo se evalúan, califican y mejoran con el tiempo. Esto convierte a RL en una herramienta clave para alinear modelos con las preferencias humanas. En la práctica, ayuda a: fomentar comportamientos útiles, inofensivos y honestos, reducir resultados tóxicos, sesgados o inseguros y mejorar el seguimiento de instrucciones y la calidad de la conversación.
Debido a que los datos de alineación son más pequeños pero de mayor calidad que los datos previos al entrenamiento, RL actúa como un mecanismo de dirección detallado, no como una fuente de nuevos conocimientos.
Un paradigma común es el aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF), que normalmente implica tres pasos:
Recopilar datos de preferencias: dado que los humanos, el estándar de oro, clasifican múltiples respuestas de modelos al mismo mensaje (por ejemplo, cuál es más útil o seguro), lo que produce preferencias relativas en lugar de etiquetas absolutas, sin embargo, en algunos casos, se utilizan modelos más sólidos para generar datos de preferencias o criticar modelos más débiles, lo que reduce la dependencia de costosos etiquetados humanos. En la práctica, combinar la retroalimentación humana y automatizada permite escalar manteniendo la calidad. Entrenar un modelo de recompensa (RM): se entrena un modelo separado para calificar las respuestas de acuerdo con las preferencias humanas. Dada una respuesta rápida y candidata, el modelo de recompensa asigna una puntuación escalar que representa qué tan buena es la respuesta según el juicio humano. Optimice la política (el LLM): el modelo de lenguaje se entrena para maximizar la señal de recompensa, es decir, para generar resultados que los humanos probablemente prefieran.
Optimizar la política (LLM) suele ser complicado: la RL podría destruir el conocimiento aprendido o el modelo podría colapsar y predecir un resultado plausible que generaría la máxima recompensa sin diversidad. Se utilizan varios algoritmos para realizar esta optimización y abordar los problemas:
Optimización de políticas próximas (PPO): PPO actualiza el modelo al tiempo que limita qué tan lejos puede alejarse de la política original en un solo paso, evitando la inestabilidad o la degradación de la calidad del lenguaje. Puede encontrar un excelente video explicativo de la PPO aquí. Optimización de preferencias directas (DPO): evita la necesidad de un modelo de recompensa explícito. Optimiza directamente el modelo para preferir las respuestas elegidas a las rechazadas utilizando un objetivo de estilo de clasificación, lo que simplifica el proceso y reduce la complejidad del entrenamiento. Optimización de políticas relativas a grupos (GRPO): una variante que compara grupos de resultados en lugar de pares, mejorando la estabilidad y la eficiencia de la muestra al aprovechar señales comparativas más ricas. Optimización Kahneman-Tversky (KTO): KTO incorpora preferencias asimétricas (por ejemplo, penalizar los malos resultados con más fuerza que recompensar los buenos), que pueden reflejar mejor el juicio humano en escenarios críticos para la seguridad.
RL para modelos de lenguaje se puede clasificar ampliamente en en línea y fuera de línea según cómo se recopilan y utilizan los datos durante la capacitación:
RL sin conexión (hoy dominante): el modelo se entrena en un conjunto de datos fijo de interacciones. No hay más interacción con los humanos o el medio ambiente durante la optimización: una vez que se recopilan los datos de preferencias y se entrena el modelo de recompensa, se realiza la optimización de políticas (por ejemplo, PPO o DPO) en este conjunto de datos estáticos. RL en línea: el modelo interactúa continuamente con el entorno (por ejemplo, usuarios o anotadores humanos), generando nuevos resultados y recibiendo nueva retroalimentación que se incorpora a la capacitación. Esto crea un circuito de retroalimentación dinámica donde el modelo puede explorar y mejorar de forma iterativa.
RL consciente del razonamiento (p. ej., RL a través de cadena de pensamiento)
RL también se puede aplicar para mejorar el razonamiento. En lugar de recompensar únicamente las respuestas finales, el modelo puede ser recompensado por producir pasos de razonamiento intermedios de alta calidad (cadena de pensamiento). Esto fomenta un comportamiento de resolución de problemas más estructurado, interpretable y confiable.
Alucinaciones en LLM
Incluso los LLM formados con datos objetivamente correctos tienen una tendencia a producir completaciones no objetivas, también conocidas como alucinaciones. Esto sucede porque los LLM son modelos probabilísticos que predicen el siguiente token condicionado al corpus de datos de entrenamiento y los tokens generados hasta el momento y no se garantiza que produzcan una coincidencia exacta con los datos entrenados. Sin embargo, existen formas de minimizar el efecto de las alucinaciones en los LLM:
Generación aumentada de recuperación (RAG): incorpore fuentes de conocimiento externas en el momento de la inferencia para que el modelo pueda recuperar información fáctica relevante y fundamentar sus respuestas en datos verificados, reduciendo la dependencia de conocimiento interno potencialmente obsoleto o incompleto. RAG puede ser bastante complejo desde la perspectiva de la ingeniería y normalmente consta de:
Fragmentación: dividir documentos en partes más pequeñas y manejables antes de indexarlas para su recuperación. Una buena fragmentación equilibra el contexto y la precisión: las porciones demasiado grandes diluyen la relevancia, mientras que las porciones demasiado pequeñas pierden contexto importante. Incrustación: convierta fragmentos de texto en representaciones vectoriales densas que capturen el significado semántico. En RAG, tanto las consultas como los documentos están integrados en el mismo espacio vectorial, lo que permite la búsqueda por similitud para recuperar contenido relevante incluso cuando las palabras clave exactas no coinciden. Recuperación: la recuperación de alta calidad garantiza que se pasen al modelo fragmentos relevantes, diversos y no redundantes, lo que reduce las alucinaciones y mejora la precisión de los hechos. Depende de factores como la calidad de la inserción, la estrategia de fragmentación, el método de indexación y los parámetros de búsqueda. Reclasificación: un paso de filtrado de segunda etapa que reordena los fragmentos recuperados utilizando un modelo más preciso (a menudo más caro). Si bien la recuperación inicial está optimizada para la velocidad, los reclasificadores se centran en la relevancia, lo que ayuda a priorizar el contexto más útil para la generación.
Entrenar para decir no sé: enseñar explícitamente al modelo a reconocer la incertidumbre cuando carece de información suficiente, disuadiéndolo de generar declaraciones que parezcan plausibles pero incorrectas.
Coincidencia exacta y evaluación posterior: utilice una comparación o verificación estricta con fuentes confiables o verificadores y críticos externos basados en modelos durante la finalización o el posprocesamiento para garantizar que el contenido generado se alinee con referencias fácticas, particularmente para información sensible o precisa.
Mejoramiento
Entrenar LLM es un desafío en sí mismo: entrenar el modelo requiere una gran cantidad de GPU, ya que necesitamos almacenar el modelo, los gradientes y los parámetros del optimizador. Sin embargo, la inferencia también es un desafío (imagínese tener que atender millones de solicitudes); la retención de usuarios es mayor si los modelos pueden inferir el texto rápidamente y con alta calidad.
Optimización del entrenamiento
El entrenamiento de modelos grandes generalmente se realiza mediante el descenso de gradiente estocástico (SGD) o una de sus variantes. En lugar de actualizar los parámetros del modelo después de cada ejemplo, calculamos gradientes en lotes de datos, lo que hace que el entrenamiento sea más estable y eficiente. En general, cuanto mayor sea el tamaño del lote, más precisa será la estimación del gradiente, aunque los lotes extremadamente grandes también pueden ralentizar la convergencia o requerir ajustes.
Para modelos muy grandes, como los LLM, una sola GPU no puede almacenar todos los parámetros ni procesar lotes grandes por sí sola. Para abordar esto, la capacitación se distribuye entre múltiples GPU o incluso entre grupos de máquinas. Esto requiere decidir cuidadosamente cómo dividir la carga de trabajo, ya sea dividiendo los datos, los parámetros del modelo o el proceso de cálculo.
Si bien la capacitación distribuida se ha estudiado ampliamente en el aprendizaje profundo, los LLM presentan desafíos únicos debido a su enorme número de parámetros y requisitos de memoria. Se han desarrollado varias estrategias para superarlos:
Paralelismo de datos: cada GPU contiene una copia del modelo pero procesa diferentes lotes de datos, con gradientes promediados entre las GPU. Paralelismo del modelo: los parámetros del modelo se dividen entre varias GPU, por lo que cada GPU es responsable de una parte del modelo. Paralelismo de canalización: se asignan diferentes capas del modelo a diferentes GPU y los datos fluyen a través de ellas como etapas de una canalización. Paralelismo tensorial: las operaciones tensoriales individuales (por ejemplo, multiplicaciones de matrices grandes) se dividen en varias GPU. DeepSpeed / ZeRO: una biblioteca y un conjunto de técnicas de optimización para entrenar modelos grandes de manera eficiente, incluidos estados, gradientes y parámetros del optimizador de partición para reducir el uso de memoria.
Generalmente, en estos hay dos parámetros que estamos tratando de optimizar: reducir la comunicación entre GPU (por ejemplo, para el intercambio de gradientes), y al mismo tiempo asegurarnos de que ajustemos datos significativos en las GPU. Otras técnicas para reducir la memoria durante el entrenamiento y ganar algunas aceleraciones incluyen:
Punto de control de gradiente: una técnica de entrenamiento para ahorrar memoria que almacena solo un subconjunto de activaciones intermedias durante el pase hacia adelante y vuelve a calcular el resto durante la propagación hacia atrás. Esto intercambia computación adicional por un uso de memoria de GPU significativamente menor, lo que permite entrenar modelos más grandes o secuencias más largas. Entrenamiento de precisión mixta: utiliza formatos de menor precisión (p. ej., FP16 o BF16) para la mayoría de los cálculos mientras mantiene los valores críticos (como pesos maestros o acumulaciones) en mayor precisión (FP32). Esto reduce el uso de memoria y acelera el entrenamiento, especialmente en GPU modernas con hardware especializado, con un impacto mínimo en la precisión.
Optimización de inferencia
Destilación: los modelos grandes a menudo están sobreparametrizados, por lo que podemos entrenar un modelo de estudiante más pequeño para imitar a un maestro más grande. En lugar de aprender sólo los resultados correctos, el estudiante iguala la distribución de probabilidad completa del maestro, incluidas las fichas menos probables, capturando relaciones más ricas. Esto produce un rendimiento casi docente en un modelo mucho más pequeño y más rápido. Atención flash: un algoritmo de atención optimizado que calcula la atención exacta y al mismo tiempo reduce drásticamente el uso de memoria. Evita materializar toda la matriz de atención al agrupar cálculos y fusionar operaciones en un único núcleo de GPU, manteniendo los datos en una memoria rápida en el chip. El resultado: entrenamiento e inferencia significativamente más rápidos, especialmente para secuencias largas, y soporte para contextos de mayor duración sin cambiar el modelo. Almacenamiento en caché de KV: durante la generación autorregresiva, recalcular la atención sobre tokens pasados es un desperdicio. El almacenamiento en caché KV almacena claves y valores previamente calculados y los reutiliza para tokens futuros. Esto reduce la complejidad de la generación de longitud de secuencia de cuadrática a lineal, lo que acelera enormemente la generación de texto de formato largo. Poda: las redes neuronales suelen estar sobreparametrizadas, por lo que la poda elimina pesos redundantes. Esto puede ser estructurado (eliminando neuronas, cabezas o capas enteras) o no estructurado (eliminando pesos individuales). En la práctica, se prefiere la poda estructurada porque se alinea mejor con el hardware, lo que hace que las aceleraciones sean realmente realizables. Cuantización: reduce la precisión numérica (por ejemplo, de flotantes de 32 bits a enteros de 8 bits) para reducir los modelos y acelerar el cálculo. Reduce el uso de memoria y mejora la eficiencia en hardware especializado. Si se aplica después o durante el entrenamiento, puede afectar levemente la precisión, pero una calibración cuidadosa lo minimiza. La cuantificación eficaz también requiere controlar los rangos de valores (por ejemplo, pequeñas magnitudes de activación) para evitar la pérdida de información. Decodificación especulativa: acelera la generación utilizando dos modelos: un modelo de borrador pequeño y rápido y un modelo de destino más grande y preciso. El borrador propone varios tokens por delante y el objetivo los verifica en paralelo: acepta coincidencias y vuelve a calcular las discrepancias. Esto permite generar múltiples tokens por paso en lugar de uno. Mezcla de expertos (MoE): en lugar de activar todos los parámetros para cada token, los modelos MoE utilizan muchos "expertos" especializados y un mecanismo de activación para seleccionar solo unos pocos por entrada. Esto permite una capacidad de modelo masiva sin un costo de computación proporcional. Ejemplos notables incluyen Switch Transformer, GLaM y Mixtral.
Un blog más detallado de NVIDIA sobre optimización de inferencias sería sin duda una excelente lectura si desea utilizar algunas técnicas más avanzadas.
Ingeniería rápida
La ingeniería rápida es una parte fundamental del trabajo con LLM porque, en la práctica, el comportamiento del modelo no está determinado solo por sus pesos sino por cómo está condicionado en el momento de la inferencia. El mismo modelo puede producir resultados radicalmente diferentes dependiendo de cómo se escriban las instrucciones, el contexto y las restricciones.
La ingeniería rápida no es un diseño de una sola vez, sino una iteración. Pequeños cambios en la redacción, el orden o las restricciones pueden producir grandes cambios de comportamiento. Trate las indicaciones como código: pruébelas, mídalas, refinelas y controle sus versiones como parte de su sistema.
¿Qué hace que un mensaje sea fuerte?
Sea explícito acerca de la tarea, no solo del tema: un mensaje débil le pregunta qué quiere (“Explicar RAG”). Un mensaje contundente especifica cómo lo desea (“Explique RAG en 5 puntos, centrándose en los modos de falla, para una audiencia de blog técnico”). Instrucción, contexto y formato separados: las indicaciones claras distinguen entre lo que debe hacer el modelo, qué información debe usar y cómo debe verse el resultado. Por ejemplo: instrucciones (“resumir”), contexto (texto recuperado) y formato (“JSON con campos X, Y, Z”). Utilice ejemplos (indicaciones breves): proporcionar de 1 a 3 ejemplos del comportamiento de entrada y salida deseado mejora significativamente la confiabilidad para tareas complejas. Esto es especialmente útil para clasificar o formatear. Restrinja la estructura de salida de manera agresiva: si necesita una salida consistente o legible por máquina, defina formatos estrictos (por ejemplo, JSON, esquemas). Controle el contexto y la calidad: más contexto no siempre es mejor. Las entradas irrelevantes o ruidosas degradan el rendimiento. Priorice la información de señal alta y, en los sistemas RAG, asegúrese de que la recuperación sea precisa y esté filtrada.
Consideraciones prácticas
Realice un seguimiento de los cambios de avisos, como el código. Sepa quién cambió qué, cuándo y por qué. Esto hace posible la depuración y la reversión. Utilice plantillas siempre que sea posible. Divida las indicaciones en componentes reutilizables (instrucciones, espacios de contexto, reglas de formato). Utilice sistemas de enrutamiento. Ajustando tanto la selección del modelo como el aviso en función de las solicitudes del usuario. Tener pruebas estructuradas. Ejecute indicaciones con un conjunto de datos fijo y compare resultados utilizando métricas o rúbricas estructuradas (corrección, integridad, estilo). Mantenga a un humano informado. Para cualidades subjetivas como la claridad o el razonamiento, los revisores humanos siguen siendo la señal más confiable, especialmente para los casos extremos. Mantenga un conjunto de pruebas de ejemplos críticos, especialmente en materia de seguridad. Redteaming y tratar de romper las defensas que has construido son ahora una norma en la industria.
Evaluación
Se utilizan grandes modelos de lenguaje en una amplia gama de tareas, desde respuestas estructuradas a preguntas hasta generación abierta, por lo que ninguna métrica puede capturar el rendimiento en todos los casos. En la práctica, la evaluación depende en gran medida del problema que estás resolviendo. Dicho esto, la mayoría de los enfoques se dividen en algunas categorías claras, que abarcan tanto las métricas tradicionales como los evaluadores basados en LLM.
Independientemente de las métricas utilizadas, una de las métricas utilizadas, la parte más importante de la evaluación es el ancla de referencia para lo que se consideraría un buen desempeño del modelo: el conjunto de datos de evaluación. Debe ser diverso, limpio, basado en la realidad y tener el conjunto de tareas objetivo para su modelo.
Convencional
Por lo general, recopilan estadísticas a nivel de palabras, son fáciles de implementar y rápidas, pero tienen limitaciones: no comprenden la semántica.
Distancia de Levenstein: mide el número mínimo de ediciones de un solo carácter (inserciones, eliminaciones o sustituciones) necesarias para transformar una cadena en otra. Perplejidad: mide qué tan bien un modelo de lenguaje predice una secuencia; valores más bajos indican que el modelo asigna una mayor probabilidad al texto observado. BLEU: evalúa el texto traducido automáticamente midiendo la superposición de n-gramas entre una traducción candidata y una o más traducciones de referencia, enfatizando la precisión. ROUGE: evalúa el resumen (y la generación) del texto midiendo la superposición de n-gramas y secuencias entre un texto generado y los textos de referencia, enfatizando la recuperación. METEOR: evalúa el texto generado alineándolo con textos de referencia utilizando coincidencias exactas, derivadas y de sinónimos, equilibrando la recuperación de precisión.
basado en LLM
BertScore: compara el texto generado con una referencia utilizando incrustaciones contextuales de BERT. En lugar de hacer coincidir palabras exactas, mide la similitud semántica en el espacio de incrustaciones: qué tan cerca están los significados, lo que lo hace fuerte para reconocer paráfrasis y diferencias sutiles de redacción. Es una buena opción para tareas de resumen y traducción. GPTScore: GPTScore utiliza un modelo de lenguaje grande para evaluar los resultados basándose en el razonamiento, calificando aspectos como la corrección, la relevancia, la coherencia o incluso el estilo, sin depender de referencias. Su flexibilidad lo hace ideal para tareas subjetivas sin una base clara. SelfCheckGPT: incita al mismo modelo a criticar su propia producción, sacando a la luz alucinaciones, inconsistencias lógicas o afirmaciones engañosas. Útil en tareas que requieren mucho conocimiento o razonamiento, donde la corrección es importante pero la verificación externa puede ser costosa o lenta. Bleurt: una métrica basada en BERT ajustada para la evaluación. Compara el texto utilizando representaciones semánticas aprendidas y genera una puntuación de calidad única que refleja la fluidez, la preservación del significado y la paráfrasis. GEval: En GEval, usted solicita al modelo una rúbrica (por ejemplo, juzgar la factibilidad o la claridad) y devuelve una puntuación o comentarios detallados. Esto lo hace especialmente útil para tareas subjetivas en las que fallan las métricas tradicionales, ofreciendo evaluaciones que se sienten más cercanas al juicio humano. Gráfico acíclico dirigido (DAG): el enfoque divide la evaluación en una secuencia de comprobaciones más pequeñas basadas en reglas. Cada nodo es un juez de LLM responsable de un criterio y el flujo entre nodos define cómo se toman las decisiones. Esta estructura reduce la ambigüedad y mejora la coherencia, especialmente cuando la tarea se puede comprobar paso a paso.
La evaluación basada en un LLM no es infalible: tiene sus propias peculiaridades:
Sesgo: los modelos de jueces pueden favorecer respuestas más largas, ciertos estilos de escritura o resultados que se asemejen a sus datos de entrenamiento. Varianza: debido a que los modelos son estocásticos, pequeños cambios (como la temperatura) pueden generar puntuaciones diferentes para la misma entrada. Sensibilidad de las indicaciones: Incluso pequeños ajustes en la indicación o rúbrica de evaluación pueden cambiar los resultados significativamente, haciendo que las comparaciones no sean confiables.
Trate la evaluación de LLM como un sistema que necesita calibración. Estandarice las indicaciones, pruébelas rigurosamente y esté atento a sesgos ocultos.
Mirando más allá de las tareas tradicionales, una clase de métricas analiza la evaluación de canales RAG, que dividen el proceso de recuperación de información en pasos de recuperación y generación, y se basa en métricas específicas para cada paso, y una clase que analiza métricas de resumen.
Si desea profundizar en la evaluación del modelo LLM, le recomendaría este documento de encuesta que cubre múltiples métodos.
¿Cuándo utilizar el LLM como juez frente a las métricas tradicionales?
No todos los resultados se pueden calificar claramente con reglas. Si está evaluando aspectos como la calidad del resumen, el tono, la utilidad o qué tan bien se siguen las instrucciones, las métricas rígidas se quedan cortas. Aquí es donde brilla el LLM como juez: en lugar de verificar coincidencias exactas, le pide a otro modelo que califique las respuestas según una rúbrica.
Dicho esto, no descartes las métricas tradicionales. Cuando hay una verdad fundamental clara, como exactitud objetiva o respuestas exactas. Son rápidos, baratos y consistentes.
Las mejores configuraciones combinan ambas: utilice métricas tradicionales para la corrección objetiva y jueces de LLM para la calidad subjetiva o abierta.
Bucles de evaluación en producción.
La evaluación sólida no se basa en un solo método, sino en capas:
Métricas sin conexión: comience con conjuntos de datos etiquetados y puntuación automatizada para filtrar rápidamente las versiones débiles del modelo. Evaluación humana: contrate anotadores o expertos para evaluar los matices: realismo, utilidad, seguridad y casos extremos que las métricas pasan por alto. Pruebas A/B en línea: finalmente, mida el impacto en el mundo real: clics, retención y satisfacción.
Una vez que su sistema esté activo, la evaluación no se detiene: evoluciona. Las interacciones de los usuarios deben registrarse, muestrearse y revisarse continuamente. Estos ejemplos del mundo real revelan casos de fallas y cambios en los patrones de uso. Cuantos más datos haya registrado del modelo, más herramientas tendrá para el diagnóstico: incrustaciones del modelo, respuesta, tiempo de respuesta, etc.
Incluso si su modelo permanece sin cambios, su comportamiento y rendimiento aún pueden cambiar con el tiempo. Este fenómeno, conocido como deriva del comportamiento, suele surgir gradualmente a medida que evolucionan factores externos, como cambios en las consultas de los usuarios, la introducción de nueva jerga, cambios en el enfoque del dominio o incluso pequeños ajustes en las indicaciones y plantillas. El desafío es que esta degradación es a menudo sutil y silenciosa, lo que hace que sea fácil pasarla por alto hasta que comienza a afectar la experiencia del usuario.
Para captar la deriva temprano, preste mucha atención tanto a las entradas como a las salidas.
Entrada: realice un seguimiento de los cambios en las distribuciones incorporadas, la duración de las consultas, los patrones de temas o la apariencia de tokens no vistos anteriormente. Resultado: Realice un seguimiento de los cambios de tono, verbosidad, tasas de rechazo o señales relacionadas con la seguridad. Más allá de estas señales directas, también es útil monitorear los indicadores de evaluación a lo largo del tiempo: cosas como puntajes de LLM como juez, comentarios de los usuarios (como aprobación o aprobación) y heurísticas de tareas específicas en períodos de tiempo prolongados, teniendo en cuenta la estacionalidad del comportamiento del usuario, lo que activa alertas cuando las diferencias estadísticas exceden los umbrales definidos.
Crítica del LLM
Una crítica común a los LLM es que se comportan como “promedios de información”: en lugar de almacenar o recuperar hechos discretos, aprenden una distribución estadística suavizada sobre el texto. Esto significa que sus resultados a menudo reflejan la combinación más probable de muchas continuaciones posibles en lugar de una única afirmación “verdadera” y fundamentada. En la práctica, esto puede conducir a respuestas demasiado genéricas o declaraciones que suenan seguras que en realidad son sólo patrones lingüísticos de alta probabilidad.
En el centro de este comportamiento se encuentra el objetivo de entropía cruzada, que entrena modelos para minimizar la distancia entre las probabilidades de token predichas y el siguiente token observado en los datos. Si bien es eficaz para aprender un lenguaje fluido, la entropía cruzada solo recompensa la coincidencia de probabilidades, no la verdad, la causalidad o la coherencia entre contextos. No distingue entre "redacción plausible" y "razonamiento correcto", solo si el siguiente token coincide con la distribución del entrenamiento.
La limitación se vuelve práctica: la optimización para la entropía cruzada fomenta el promedio de modos, donde el modelo prefiere predicciones centrales y seguras a las predicciones precisas y verificables. Esta es la razón por la que los LLM pueden ser excelentes en síntesis fluidas, pero frágiles en tareas que requieren un razonamiento simbólico preciso, coherencia a largo plazo o una base fáctica sin sistemas externos como recuperación o verificación.
Resumen
Construir e implementar grandes modelos de lenguaje no se trata de dominar una única idea innovadora, sino de comprender cuántos sistemas interdependientes se unen para producir inteligencia coherente. Desde tokenización e incrustaciones, pasando por arquitecturas basadas en la atención, hasta estrategias de entrenamiento como preentrenamiento, ajuste y aprendizaje de refuerzo, cada capa contribuye con una función específica para convertir el texto sin formato en modelos capaces y controlables.
Lo que hace que la ingeniería de LLM sea desafiante (y emocionante) es que el rendimiento rara vez está determinado por un componente de forma aislada. Los trucos de eficiencia como el almacenamiento en caché KV, FlashAttention y la cuantificación son tan importantes como las elecciones de alto nivel como la arquitectura del modelo o la estrategia de alineación. De manera similar, el éxito en la producción depende no solo de la calidad de la capacitación, sino también de la optimización de la inferencia, el rigor de la evaluación, el diseño rápido y el monitoreo continuo de los modos de deriva y falla.
Vistos en conjunto, los sistemas LLM se parecen menos a un modelo único y más a una pila en evolución: canales de datos, objetivos de capacitación, sistemas de recuperación, estrategias de decodificación y circuitos de retroalimentación, todos trabajando en conjunto. Los ingenieros que desarrollan un mapa mental de esta pila pueden ir más allá del “uso de modelos” y comenzar a diseñar sistemas que sean confiables, escalables y alineados con las limitaciones del mundo real.
A medida que el campo continúa evolucionando (hacia ventanas de contexto más largas, arquitecturas más eficientes, capacidades de razonamiento más sólidas y una alineación humana más estrecha), el desafío principal sigue siendo el mismo: unir el aprendizaje estadístico con la inteligencia práctica. Dominar ese puente es lo que da forma al trabajo de un ingeniero LLM.
Modelos notables en orden cronológico
BERT (2018), GPT-1 (2018), RoBERTa (2019), SpanBERT (2019), GPT-2 (2019), T5 (2019), GPT-3 (2020), Gopher (2021), Jurassic-1 (2021), Chinchila (2022), LaMDA (2022), LLaMA (2023)
¿Le gustó el autor? ¡Manténgase conectado!
Si te gustó este artículo ¡compártelo con un amigo! Para leer más sobre temas de aprendizaje automático y procesamiento de imágenes, presione suscríbete.
¿Me he perdido algo? ¡No dudes en dejar una nota, comentar o enviarme un mensaje directamente en LinkedIn o Twitter!