Be Software Architecture Wise
Be Wise Apps

Read in English · Lire en français · Auf Deutsch lesen

Sección 12.1 de 12.8 · Avanzado · 30 min de lectura

Aprendizaje automático y modelos de lenguaje grandes para arquitectos

Videolección

5 min · narrado en inglés, con subtítulos
Solo escuchar (audio)
Leer la transcripción

No necesitas entrenar modelos para diseñar sistemas que los usen. Pero sí necesitas saber cómo se comportan, y de eso trata esta lección.

Imagina a un aprendiz que ha leído una biblioteca entera. Hazle una pregunta y responde al instante y con fluidez, normalmente bien. Pero a veces se inventa un detalle, con exactamente la misma seguridad. Pregunta dos veces y puede que obtengas dos redacciones distintas. Y no recuerda nada de una conversación a otra a menos que se lo recuerdes. Un modelo de lenguaje grande, o LLM, se comporta como ese aprendiz. Así que comprueba su trabajo y no dejes nunca que actúe solo cuando un error saldría caro.

Los componentes anteriores de este curso eran deterministas: misma entrada, misma salida. Un modelo de aprendizaje automático no se escribe como reglas; se ajusta a ejemplos. En el aprendizaje supervisado, los ejemplos llevan las respuestas correctas, como pagos marcados como fraudulentos o legítimos. En el aprendizaje no supervisado no hay etiquetas, y el modelo encuentra estructura por sí solo, como grupos de clientes similares. Los modelos de lenguaje grandes aprenden sobre todo ocultando la siguiente palabra de una frase y prediciéndola. Cualquier texto aporta sus propias respuestas, así que los datos de entrenamiento pueden ser enormes. El entrenamiento ajusta los pesos del modelo en un trabajo por lotes pesado. La inferencia los usa con nuevas entradas, como un servicio con objetivos de latencia y un costo por llamada. La mayoría de los equipos solo operan la inferencia.

Un modelo produce puntuaciones, y otra cosa las convierte en decisiones. Un equipo de pagos puntúa cien mil pagos con tarjeta al día, de los cuales doscientos son fraudulentos. Si no marcas nada, la exactitud es del noventa y nueve punto ocho por ciento, pero no detectas ningún fraude. Así que mide la precisión, la proporción de pagos marcados que son fraude, y la exhaustividad, la proporción del fraude que detectas. Si retienes los pagos con una puntuación superior a cero punto tres, se marcan mil: ciento sesenta fraudes y ochocientos cuarenta pagos legítimos. La precisión es del dieciséis por ciento, y la exhaustividad, del ochenta por ciento. Con cero punto siete, se marcan doscientos, y se escapan ochenta fraudes. La precisión y la exhaustividad son ambas del sesenta por ciento. Así que el umbral es una decisión de negocio. Un número que está fuera del modelo dimensiona una cola de revisión, un equipo y una experiencia del cliente.

Ahora sigue una solicitud a un modelo de lenguaje. La aplicación monta un prompt: instrucciones, historial, texto recuperado y definiciones de herramientas. Un tokenizador lo convierte en tokens. En inglés, un token equivale aproximadamente a tres cuartos de palabra, y los precios, los límites y la latencia se cuentan en tokens. En el servidor del modelo, el paso de prefill lee todos los tokens de entrada a la vez. Eso fija el tiempo hasta el primer token. Después, el bucle de decodificación produce la respuesta token a token, muestreando cada uno. Por eso la salida es más lenta que la entrada, y normalmente varias veces más cara. El texto vuelve en streaming, y la aplicación lo valida antes de que nada se muestre, se guarde o se ejecute. Y el modelo no guarda memoria entre llamadas. Un chat solo parece continuo porque la aplicación reenvía el historial cada vez.

La ventana de contexto es lo máximo que el modelo puede tener en cuenta en una llamada, incluida su propia respuesta. Más grande no es automáticamente mejor: cada token adicional añade costo y latencia. La temperatura controla el muestreo. Una temperatura baja conviene para la extracción, la clasificación y la corrección. Una temperatura más alta conviene para la lluvia de ideas. Un embedding es una lista de números que representa el significado, de modo que los textos con un significado similar quedan cerca aunque compartan pocas palabras.

Una alucinación es una salida fluida y segura de sí misma, pero falsa, como una política de reembolsos que la empresa nunca tuvo. El entrenamiento recompensa el texto plausible, no el texto verificado. Darle al modelo los hechos relevantes y hacer que cite fuentes que puedas comprobar reduce la alucinación. Nunca la elimina. E incluso a temperatura cero, no está garantizado que los modelos alojados se repitan. Así que una prueba que comprueba una única salida exacta demuestra poco.

La idea clave de este capítulo es la contención. El código determinista que rodea al modelo decide qué puede ver, qué puede hacer y qué pasa con su salida. Las reglas, como los límites de reembolso, se quedan en código corriente y comprobable. Así que pregúntate qué ocurre cuando el modelo se equivoca de la forma más plausible. Un reembolso pagado a la cuenta equivocada debe hacerse imposible, mediante validación, permisos y confirmación humana, por bueno que sea el modelo.

La sección completa también trata el transformer, un ejemplo de código sobre la temperatura y los modelos de razonamiento. A continuación, en la sección doce punto dos, veremos dónde encajan los modelos. Nos vemos allí.

Lo que necesitas saber

Por qué los arquitectos necesitan entender el modelo

Todos los componentes de los capítulos anteriores de este curso eran deterministas: con la misma entrada y el mismo estado, un servicio devolvía la misma salida, y una prueba podía comprobarlo. Un componente basado en el aprendizaje automático es de una naturaleza distinta. No se escribió como reglas; se ajustó a ejemplos, y lo que devuelve es una mejor estimación estadística. Un modelo de fraude devuelve una puntuación, no un veredicto. Un modelo de lenguaje grande (LLM) devuelve un texto fluido que normalmente es correcto y, de vez en cuando, erróneo con total seguridad.

Un arquitecto no necesita entrenar modelos, igual que no necesita escribir un motor de base de datos. Sí necesita conocer las propiedades de un modelo lo bastante bien como para diseñar teniéndolas en cuenta, del mismo modo que el Capítulo 7 exigía saber qué garantiza realmente un nivel de aislamiento. Esas propiedades son: cómo se crean los modelos y qué implica eso sobre su conocimiento; cómo fallan; de dónde salen su costo y su latencia; y por qué nunca se puede confiar en su salida como se confía en una fila de una base de datos. Todo lo demás en este capítulo, desde la recuperación hasta los guardrails, se deriva de ellas.

El aprendizaje automático en una página

El aprendizaje automático construye una función a partir de datos en lugar de a partir de reglas escritas a mano. Hay tres familias clásicas. En el aprendizaje supervisado, los datos de entrenamiento contienen las respuestas correctas (etiquetas): pagos pasados marcados como fraudulentos o legítimos, repartos pasados con su duración real. El modelo aprende a asignar entradas a etiquetas. Predecir una categoría es clasificación (fraude o no); predecir un número es regresión (minutos hasta que llega la comida). En el aprendizaje no supervisado no hay etiquetas, y el modelo encuentra estructura por sí solo: grupos de clientes similares, transacciones inusuales que no encajan en ningún patrón, representaciones numéricas compactas de un texto. En el aprendizaje por refuerzo, un agente realiza acciones en un entorno y aprende de una señal de recompensa en lugar de a partir de respuestas correctas; por ejemplo, una política de despacho que se recompensa por tiempos de reparto cortos.

Los modelos de lenguaje grandes proceden sobre todo de una cuarta variante, el aprendizaje autosupervisado, en el que las etiquetas se toman de los propios datos: se oculta la siguiente palabra de una frase y se entrena al modelo para predecirla. Como cualquier texto aporta sus propias etiquetas, los modelos pueden entrenarse con muchísimos más datos de los que nadie podría etiquetar a mano.

Dos fases importan desde el punto de vista arquitectónico. El entrenamiento ajusta los números internos del modelo (sus parámetros o pesos) para reducir el error en los datos de entrenamiento. Es una carga de trabajo por lotes pesada: grandes conjuntos de datos, muchos aceleradores (GPU o chips similares), de horas a meses de cómputo y un pipeline que debe ser repetible. La inferencia consiste en usar el modelo entrenado para producir salidas para nuevas entradas. Es una carga de trabajo de servicio con objetivos de latencia, tasas de solicitudes y costo por llamada, muy parecida a cualquier otro servicio del Capítulo 9. La mayoría de los equipos que crean funcionalidades de IA nunca entrenan un modelo grande; consumen la inferencia de un proveedor o ejecutan pesos entrenados por otros.

El modelo mental más útil es que un modelo entrenado es una función probabilística. Para una entrada produce puntuaciones o una distribución de probabilidad sobre las salidas posibles. Alguien, normalmente la aplicación, convierte después esa distribución en una decisión: bloquear el pago si la puntuación de fraude supera 0.8, o elegir la siguiente palabra mediante muestreo. Ese último paso es una decisión de diseño con consecuencias de negocio, y pertenece a la arquitectura, no al modelo.

Bases de la evaluación: precisión, exhaustividad y sobreajuste

Como un modelo se ajusta en lugar de especificarse, la única forma de saber lo bueno que es consiste en medirlo con ejemplos que no ha visto. Los datos se dividen en un conjunto de entrenamiento (para ajustar el modelo), un conjunto de validación (para afinar decisiones como los umbrales) y un conjunto de prueba que se reserva para la medición final y honesta. Un modelo que puntúa bien con sus datos de entrenamiento pero mal con datos nuevos sufre sobreajuste (overfitting): ha memorizado peculiaridades de los ejemplos en lugar de aprender el patrón general. La fuga de datos (data leakage), cuando información sobre la respuesta se cuela en las entradas (por ejemplo, un indicador de reembolso que solo se activa después de confirmarse el fraude), produce modelos que parecen excelentes en las pruebas y fallan en producción.

En la clasificación, la exactitud por sí sola engaña siempre que una clase es poco frecuente. Cuenta cuatro resultados: verdaderos positivos (fraude marcado), falsos positivos (pago legítimo marcado), falsos negativos (fraude no detectado) y verdaderos negativos. La precisión es la proporción de elementos marcados que realmente son positivos, TP / (TP + FP). La exhaustividad (recall) es la proporción de positivos reales que se detectaron, TP / (TP + FN). Subir el umbral de decisión suele aumentar la precisión y reducir la exhaustividad, y el equilibrio adecuado depende de lo que cueste cada tipo de error. La puntuación F1, la media armónica de ambas, las resume en un solo número cuando los costos son similares.

Los modelos también se degradan después del despliegue. Cuando las entradas que ve el modelo se alejan de los datos de entrenamiento (nuevos restaurantes, un nuevo método de pago, una pandemia que cambia los hábitos de pedido), su exactitud cae en silencio. Vigilar esto forma parte de evaluar los sistemas de IA, que se trata más adelante en este capítulo.

Ejemplo práctico

Ejemplo práctico: un modelo de fraude, dos umbrales

Un equipo de pagos puntúa 100 000 pagos con tarjeta al día. De ellos, 200 (el 0.2%) son fraudulentos. El modelo produce una puntuación de 0 a 1 y el equipo debe elegir el umbral por encima del cual un pago se retiene para revisión manual.

No hacer nada (no marcar ninguno)Exactitud 99.8%, exhaustividad 0%: una exactitud impresionante, un modelo inútil. La exactitud es la medida equivocada para los sucesos poco frecuentes.
Umbral 0.3: 1000 marcadosTP 160, FP 840, FN 40. Precisión = 160 / 1000 = 16%. Exhaustividad = 160 / 200 = 80%. Exactitud = (160 + 98 960) / 100 000 = 99.12%, menor que no hacer nada.
Umbral 0.7: 200 marcadosTP 120, FP 80, FN 80. Precisión = 120 / 200 = 60%. Exhaustividad = 120 / 200 = 60%.
Consecuencia arquitectónicaEl umbral 0.3 necesita un equipo de revisión capaz de atender 1000 casos al día y molesta a 840 clientes legítimos; el umbral 0.7 necesita 200 revisiones, pero deja pasar 80 fraudes. El umbral es una decisión de negocio que dimensiona una cola, un equipo y una experiencia del cliente.

El mismo modelo da lugar a sistemas muy distintos según un único número que está fuera del modelo.

Anota en un registro de decisiones el umbral, su justificación y la precisión y la exhaustividad medidas, y revísalo cuando cambien la tasa de fraude o la capacidad de revisión.

El aprendizaje profundo y el transformer

Una red neuronal es una pila de capas, cada una de las cuales calcula sumas ponderadas de sus entradas seguidas de una función no lineal sencilla. El entrenamiento ajusta poco a poco millones o miles de millones de pesos, mediante el descenso de gradiente y la retropropagación, para que las salidas de la red se acerquen a los objetivos. El aprendizaje profundo (deep learning) designa las redes con muchas capas, que aprenden sus propias representaciones internas de la entrada en lugar de depender de características diseñadas a mano. Transformó el reconocimiento de imágenes a partir de 2012, aproximadamente, y el habla y la traducción poco después.

El lenguaje era más difícil porque el significado depende del contexto: en el repartidor dejó la bolsa porque esta estaba rota, esta se refiere a la bolsa. Las redes recurrentes anteriores procesaban el texto palabra por palabra, lo que hacía lento el entrenamiento y frágil el contexto de largo alcance. En 2017, Ashish Vaswani y sus colegas de Google publicaron Attention Is All You Need, que presentó el transformer. Su mecanismo central, la autoatención (self-attention), permite que cada posición del texto calcule una mezcla ponderada de la información de todas las demás posiciones, de modo que esta puede prestar mucha atención a bolsa. Como durante el entrenamiento todas las posiciones se procesan en paralelo, los transformers aprovechan de forma eficiente los aceleradores modernos, y su calidad siguió mejorando a medida que se escalaban los modelos, los datos y el cómputo.

Al arquitecto le llegan dos consecuencias. Primero, el cálculo de la atención crece aproximadamente con el cuadrado de la longitud de la secuencia, que es una de las razones por las que la longitud del contexto tiene límites y los prompts largos cuestan más tiempo y dinero (los avances de ingeniería han suavizado este costo, pero no lo han eliminado). Segundo, hay distintas formas de transformer para distintas tareas: los modelos solo decodificador (decoder-only) generan texto y son la base de los modelos de chat actuales, mientras que los modelos codificador (encoder) de la línea de BERT (2018) leen texto para clasificarlo o representarlo, y sustentan muchos de los modelos de embeddings y de re-ranking que se usan en la recuperación. Muchos modelos grandes también usan un diseño de mezcla de expertos (mixture-of-experts), en el que solo una parte de la red está activa para cada token, lo que reduce el costo de inferencia para un tamaño total dado.

Cómo produce texto un modelo de lenguaje grande

Un modelo no lee caracteres ni palabras; lee tokens, fragmentos de texto de un vocabulario fijo de decenas o cientos de miles de entradas, producidos por un tokenizador. Las palabras comunes son un solo token; las palabras raras, los nombres y los números se dividen en varios. Para un texto en inglés, una regla práctica habitual es de unos cuatro caracteres, o tres cuartos de palabra, por token. Otros idiomas y el código fuente suelen necesitar más tokens para el mismo contenido, lo que importa porque los precios, los límites y la latencia se cuentan en tokens.

La ventana de contexto es el número máximo de tokens que el modelo puede tener en cuenta en una llamada, contando las instrucciones, la conversación hasta ese momento, los documentos que se le proporcionen y la respuesta que escribe. En 2026, las ventanas van desde unos pocos miles de tokens en los modelos pequeños en el dispositivo hasta alrededor de un millón o más en algunos modelos alojados. Una ventana grande no equivale a usarla bien: Liu y sus colegas (Lost in the Middle, 2023) mostraron que los modelos usan la información del principio y del final de un contexto largo de forma más fiable que la información enterrada en el medio, y cada token adicional añade costo y latencia.

La generación es una predicción del siguiente token en bucle. El modelo lee toda la entrada (la fase de prefill) y produce, para cada token de su vocabulario, la probabilidad de que sea el siguiente. Se elige un token, se añade a la entrada y el proceso se repite (la fase de decodificación o decode) hasta que el modelo emite un marcador de fin o alcanza una longitud máxima. El modelo guarda en caché los resultados internos de los tokens que ya ha procesado (la caché KV), así que cada paso solo calcula el nuevo token, pero la salida se sigue produciendo de token en token. Por eso los tokens de salida son más lentos y normalmente varias veces más caros que los tokens de entrada, y por eso las respuestas se envían a los usuarios en streaming a medida que se producen.

La forma de elegir el siguiente token se llama muestreo (sampling). La decodificación voraz (greedy) siempre toma el token más probable. La temperatura reescala antes las probabilidades: por debajo de 1 las concentra en el favorito; por encima de 1 las aplana para que los tokens menos probables aparezcan más a menudo. El muestreo top-p (de núcleo) conserva solo los tokens más probables cuyas probabilidades suman p, y el top-k conserva solo los k más probables. Una temperatura baja conviene para la extracción, la clasificación y la corrección; una temperatura más alta conviene para la lluvia de ideas y la redacción variada.

Por último, el modelo no tiene estado. La API de un modelo no recuerda nada entre llamadas: un chat parece continuo solo porque la aplicación envía todo el historial relevante con cada solicitud. Por tanto, el estado de la conversación vive en tu sistema, su tamaño determina el costo en cada turno, y decidir qué conservar, resumir o descartar es una tarea de diseño (consulta la memoria y el estado en la sección 12.4).

import math

# raw scores the model gives three candidate next tokens after
# "The capital of Portugal is"
logits = {"Lisbon": 9.0, "Porto": 6.5, "Madrid": 5.0}

def probabilities(logits, temperature):
    scaled = {t: v / temperature for t, v in logits.items()}
    total = sum(math.exp(v) for v in scaled.values())
    return {t: round(math.exp(v) / total, 4) for t, v in scaled.items()}

print(probabilities(logits, 1.0))  # Lisbon 0.9088, Porto 0.0746, Madrid 0.0166
print(probabilities(logits, 0.5))  # Lisbon 0.9930, Porto 0.0067, Madrid 0.0003
print(probabilities(logits, 2.0))  # Lisbon 0.7033, Porto 0.2015, Madrid 0.0952
Cómo la temperatura transforma las mismas puntuaciones del siguiente token (logits) en probabilidades distintas

El ciclo de vida de una solicitud a un LLM

El ciclo de vida de una solicitud a un LLM, desde el montaje del prompt hasta la tokenización, el prefill, el bucle de decodificación token a token, el streaming y la validaciónAplicaciónmsj. usuarioMontar el promptinstrucciones, historial,pasajes, herramientasTokenizadortexto a ID de tokenServidor LLMPrefilllee los tokens de entradaProb. delsiguiente tokenMuestreotemperatura, top-pdecodificación: un token por pasoDónde se gastan tiempo y dineroPrefill procesa en paralelo cada token de entrada:fija el tiempo hasta el primer token.La decodificación genera un token por paso:fija la velocidad de salida y casi todo el costo.El modelo no guarda memoria entre llamadas:la aplicación reenvía el historial cada vez.Destokenizarstreaming a la appValidar salidaesquema, políticas, citasRespuesta o acciónse muestra, guarda o ejecuta
Una llamada a un modelo de lenguaje: la aplicación monta y envía tokens, el servidor los lee todos a la vez, después produce la respuesta token a token, muestreando cada uno, y la aplicación valida el resultado antes de usarlo.

Embeddings: el significado como números

Un embedding es una lista de números (un vector, normalmente de unos cientos a unos miles de números de longitud) que representa el significado de un fragmento de texto, una imagen o un producto, y que produce un modelo de embeddings. El modelo se entrena para que los elementos con un significado similar queden cerca: mi comida llegó fría y el pedido no estaba caliente cuando lo entregaron producen vectores cercanos aunque casi no compartan palabras. La cercanía suele medirse con la similitud del coseno, el ángulo entre dos vectores.

Los embeddings impulsan la búsqueda semántica, las recomendaciones, la deduplicación, el agrupamiento (clustering) y la clasificación, y son el núcleo de la mayoría de los sistemas de generación aumentada por recuperación. De ello se derivan dos hechos arquitectónicos. Los modelos de embeddings son independientes, más pequeños y mucho más baratos que los modelos de generación, y pueden ejecutarse fácilmente en tu propia infraestructura. Y los vectores de distintos modelos de embeddings (o de distintas versiones de uno) no son comparables, así que cambiar el modelo de embeddings implica volver a generar los embeddings de todo el corpus: una decisión que es barata de tomar al principio y cara de revertir después.

Del preentrenamiento a un asistente útil

Un modelo de chat moderno se construye por etapas. El preentrenamiento ejecuta la predicción autosupervisada del siguiente token sobre un corpus enorme de texto y código, a menudo billones de tokens. Es con diferencia la etapa más cara, al alcance de muy pocas organizaciones, y da como resultado un modelo base: un potente continuador de textos que ha absorbido gramática, hechos, estilos y patrones de razonamiento, pero que no sigue las instrucciones de forma fiable. Todo lo que el modelo sabe gracias al preentrenamiento queda congelado en una fecha de corte del entrenamiento.

El fine-tuning (ajuste fino) continúa el entrenamiento con un conjunto de datos mucho más pequeño y específico. El ajuste por instrucciones (instruction tuning) hace fine-tuning con ejemplos de instrucciones emparejadas con buenas respuestas, y convierte el modelo base en un asistente. Después, el aprendizaje por refuerzo a partir de retroalimentación humana (RLHF) pide a personas que comparen pares de respuestas, entrena un modelo de recompensa para predecir sus preferencias y optimiza el asistente para que obtenga una buena puntuación con él. El enfoque lo describieron Christiano y sus colegas en 2017 y se aplicó al seguimiento de instrucciones en el trabajo InstructGPT de OpenAI (Ouyang y sus colegas, 2022). Algunas variantes sustituyen partes del pipeline: la optimización directa de preferencias (direct preference optimisation, 2023) aprende de las comparaciones sin un modelo de recompensa separado, y la retroalimentación puede proceder de otro modelo que sigue unos principios escritos en lugar de proceder de personas.

Las organizaciones también pueden hacer fine-tuning, a menudo con métodos eficientes en parámetros como LoRA (Hu y sus colegas, 2021), que entrenan un pequeño complemento en lugar de todos los pesos. El fine-tuning sirve para enseñar un formato, un tono, una tarea acotada o el vocabulario de un dominio. Es una mala forma de enseñar hechos que cambian, como precios o políticas, porque esos hechos quedan entonces incorporados en pesos que no pueden citar su fuente, no pueden actualizarse sin reentrenar e ignoran los derechos de acceso. Para el conocimiento cambiante, la recuperación suele ser la mejor herramienta; el orden habitual de intentos es primero mejores prompts, después recuperación y después fine-tuning.

Alucinación y no determinismo

Una alucinación es una salida fluida y segura de sí misma, pero falsa o sin respaldo: una cita inventada, una función que no existe en una biblioteca, una política de reembolsos que la empresa nunca tuvo. Es una consecuencia directa de cómo funciona el modelo. El entrenamiento recompensa las continuaciones plausibles, no las verificadas, y el modelo no tiene una forma integrada de distinguir lo que sabe de lo que simplemente suena bien. Las tasas de alucinación varían mucho según el modelo y la tarea, y bajan cuando al modelo se le dan los hechos relevantes (fundamentación o grounding), se le permite y se le anima a decir que no sabe algo, o se le obliga a citar fuentes que la aplicación pueda comprobar. No llegan a cero.

Las salidas también son no deterministas. Con el muestreo, el mismo prompt da respuestas distintas por diseño. Incluso a temperatura 0, no está garantizado que los modelos alojados sean repetibles: la aritmética de punto flotante en los aceleradores no es perfectamente asociativa, y la forma en que un servidor agrupa tu solicitud con otras puede cambiar el orden de las operaciones y, por tanto, ocasionalmente, un token. Los proveedores también actualizan los modelos sin cambiar sus nombres. Pequeños cambios en la redacción del prompt, en el orden de los ejemplos o en el contexto que los rodea pueden cambiar los resultados de forma apreciable.

Para un arquitecto, estas dos propiedades significan que una prueba que comprueba una única salida exacta demuestra poco, que la versión del modelo y el prompt deben registrarse con cada resultado, y que cualquier salida que importe debe comprobarla algo más fiable que el propio modelo.

Un componente probabilístico dentro de un sistema determinista

Propiedad del modeloConsecuencia arquitectónicaDónde se trata
Las salidas son plausibles, no verificadasTrata la salida del modelo como una entrada no confiable: valídala con esquemas y reglas de negocio, fundaméntala en hechos recuperados y mantén a una persona o una regla en el camino de las acciones con consecuencias12.3 RAG, 12.6 Guardrails
El comportamiento es estadísticoSustituye las pruebas de coincidencia exacta por conjuntos de evaluación, umbrales y monitorización; trata las evaluaciones como funciones de aptitud en el pipeline12.5 Evaluar la IA
El costo y la latencia escalan con los tokensPresupuesta los tokens por solicitud, envía la salida en streaming, usa caché y enruta las solicitudes fáciles a modelos más baratos12.2 Dónde encajan los modelos, 12.7 Costo y LLMOps
Los modelos son externos, tienen límites de tasa y cambianPon un gateway delante, fija las versiones, planifica alternativas y degrada el servicio de forma elegante12.2 Dónde encajan los modelos, Capítulo 9
El conocimiento está congelado y faltan los datos privadosRecupera hechos actuales y permitidos en el momento de la consulta en lugar de reentrenar12.3 RAG
Los prompts y los logs contienen datos de usuariosAplica las reglas de minimización de datos, conservación y residencia a los prompts, las trazas y las cachés12.8 IA responsable, Capítulo 8

Diseñar en torno a un componente probabilístico

La idea arquitectónica más importante de este capítulo es la contención. Un modelo es un componente potente pero poco fiable, así que el código determinista que lo rodea decide qué se le permite ver al modelo, qué se le permite hacer y qué ocurre con su salida. En términos de la arquitectura hexagonal, el modelo está detrás de un puerto: el dominio pide un borrador de respuesta, una clasificación o una extracción, y el adaptador que llama al modelo también hace cumplir el contrato de salida. Las reglas del dominio (límites de reembolso, horarios de apertura, quién puede ver qué pedido) se quedan en código corriente y comprobable.

Una prueba útil para cualquier funcionalidad de IA propuesta es preguntar qué ocurre cuando el modelo se equivoca de la forma más plausible. Si la respuesta es un cliente ve una frase un poco torpe, se necesita poco control. Si es se paga un reembolso a la cuenta equivocada o a un paciente se le indica una dosis incorrecta, el diseño debe hacer imposible ese resultado mediante validación, permisos y confirmación humana, por bueno que sea el modelo. Los modelos seguirán mejorando; este principio de diseño no cambiará.

Comprueba lo que has entendido

¿Cuál es la diferencia entre el entrenamiento y la inferencia, y cuál operan realmente la mayoría de los equipos que crean funcionalidades de IA?

El entrenamiento ajusta los pesos del modelo a los datos en un trabajo por lotes pesado; la inferencia aplica el modelo entrenado a nuevas entradas como un servicio sensible a la latencia y al costo. La mayoría de los equipos solo operan la inferencia, a menudo a través de un proveedor.

¿Por qué los tokens de salida son más lentos y más caros que los tokens de entrada?

Los tokens de entrada se procesan juntos en un único paso de prefill en paralelo, mientras que los tokens de salida se producen de uno en uno, y cada uno necesita su propio paso por el modelo.

¿Qué cuenta para la ventana de contexto de un modelo, además del último mensaje del usuario?

Las instrucciones del sistema, el historial de la conversación, los documentos recuperados y las definiciones de herramientas, y la respuesta que escribe el modelo.

Las tarifas de reparto de tu empresa cambian cada mes. ¿Deberías hacer fine-tuning de un modelo con ellas?

Normalmente no. Los hechos aprendidos mediante fine-tuning quedan desactualizados, no pueden citarse y necesitan reentrenamiento para cambiar; recuperar la tabla de tarifas vigente en el momento de la consulta es más fiable.

Siguiente · 12.2Dónde encajan los modelosModelos alojados por un proveedor, autoalojados o en el dispositivo; inferencia online y por lotes; gateways de IA, enrutamiento, cascadas y escaleras de alternativas (fallback ladders); humanos en el bucle; cómo elegir un modelo; y una arquitectura de referencia para un asistente de soporte.Continuar →

Fuentes y lecturas recomendadas

¿Tienes una pregunta sobre esta sección? ArchitectBot, el asistente de estudio con IA del curso, responde primero a partir del curso.

Pregunta: “Si el mismo prompt puede dar respuestas distintas, ¿cómo debo probar una funcionalidad que usa un modelo de lenguaje grande?”