Llevo tiempo queriendo entender cómo funcionan internamente y en detalle este tipo de modelos (y los sistemas basados en ellos) y cómo se entrenan o cómo se adaptan para exhibir esa capacidad de razonamiento.
Como parte de esa investigación estoy finalizando la lectura del libro 'Building a resoning model (form scratch)' de Sebastian Raschka, una obra que, aunque con mucho foco en la codificación, también expone con rigor muchos de los fundamentos teóricos.
Y con este post inicio una serie en que, con base en esa obra, explico los principales métodos para convertir a un LLM 'clásico' en un modelo razonador.
Lo que hace un LLM 'básico'
Un LLM ('Large Language Model'), como muchos otros modelos de lenguaje más simples que les han precedido, son fundamentalmente predictores de la siguiente palabra. Es decir, ante un texto de entrada incompleto proponen como salida la palabra que sigue a ese texto de entrada. Actuando de modo iterativo, en que se añade una palabra nueva en cada ciclo, el resultado que observamos, es que ante un texto de entrada (el 'prompt'), se genera el texto que le sigue ('completion') que en la practica constituye la respuesta.
Como muchos lectores de este blog sabrán, en realidad la base de funcionamiento no son las palabras sino los tokens, pero a estos efectos me quedaré en el nivel palabra por entendernos mejor.
También muchos lectores sabrán que el modelo no reacciona únicamente al prompt de entrada sino que la entrada se enriquece con el contexto, las memorias o la información que se obtiene mediante una consulta a la web o una recuperación de conocimiento mediante RAG ('Retrieval Augmented Generation'). En cualquier caso, y aunque el 'verdadero' texto de entrada sea mucho más que el 'prompt', en esencia el modelo funciona completando o contestando a ese texto de entrada enriquecido.
Los modelos razonadores
Pero los modelos razonadores hacen otra cosa, aunque la puedan expresar como texto o, si se quiere, añaden otro ingrediente.
Los modelos razonadores entienden su entrada no tanto como un texto a completar o a contestar, sino como un objetivo o un problema a resolver. Y, por ello, en lugar de 'lanzarse a contestar directamente', lo que hacen es plantear una especie de 'plan de acción', una estrategia o una serie de pasos a dar para resolver el problema. Además, y a medida que ejecutan el plan, evalúan las respuestas y, eventualmente, rehacen el plan.
En el caso de sistemas dotados de capacidades agenticas, como parte de la ejecución del plan pueden invocar a las denominadas herramientas ('tools') que permiten la interacción con el exterior.
Esta forma de funcionar de los modelos razonadores resulta maravillosa y los acerca aún más a lo que podríamos entender como verdadera 'inteligencia'. Y, visto a alto nivel, tal y como la he explicado, no resultan, creo, difíciles de entender.
Pero me maravilla el que se puedan conseguir este tipo de modelos y no me parece evidente cómo se hace esto, tanto en diseño y entrenamiento del modelo, como luego en ejecución.
Y sobre este tipo de problemáticas es sobre las que se enfoca esta serie de posts que ahora inicio.
El entrenamiento y personalización de de modelos generativos
Antes de dar el primer paso, conviene recordar un par de ideas acerca de cómo se entrenan y cómo se personalizan los grandes modelos de lenguaje. Básicamente, conviene que recordar que, típicamente, existen tres etapas:
- Pre-entrenamiento ('pretraining'): Es la fase inicial, tremendamente masiva, en que se trabaja sobre millones de datos. Tras esta fase, el modelo usa de manera estructuralmente correcta el lenguaje y dispone de un amplísimo 'conocimiento' de propósito general. Tras esta fase, en general, el modelo de lenguaje ya es perfectamente utilizable.
- Ajuste fino ('fine-tunning'): Persigue una especialización en un dominio concreto o en una forma concreta de actuar. El interés de esta fase es que, con una cantidad de datos de entrenamiento comparativamente muy pequeña, se consiguen sin embargo muy buenos resultados en esa especialización. En muchos casos de uso esta fase, que ya no es obligatoria, se realiza mediante aprendizaje supervisado pero en otros entornos, y en concreto en la 'conversión en razonador', se utiliza el aprendizaje por refuerzo.
- Uso y 'prompting': Finalmente, y como es quizá ya más conocido, se pueden conseguir interesantes adaptaciones y personalizaciones simplemente mediante el uso adecuado del modelo, sin modificarlo en absoluto: mediante la aplicación de técnicas de prompting, mediante la gestión del contexto, etc
Tres grandes estrategias para modelos razonadores
Bueno, tras toda esta base, en este post sólo voy a introducir las tres grandes estrategias que se nos explican en la referencia mencionada más ariiba para transformar un modelo de lenguaje 'normal', en un modelo razonador. Éstas son las estrategias (que veremos con un poco más de detalle en próximos posts)
- Escalado de computación en tiempo de inferencia ('inference-time compute scaling'): A pesar del nombre tan 'espectacular', es la estrategia probablemente más sencilla, porque no implica ninguna forma de entrenamiento sino que trabaja sin modificar el modelo y en la fase final, de uso y prompting. Es decir, aplica fundamentalmente técnicas de ingeniería de prompts como la conocidísima cadena de pensamiento (CoT, 'Chain-Of_Thought') o la auto-consistencia ('self-consistency'). Trabajamos, pues, sin modificar el modelo, en tiempo de inferencia y lo hacemos mediante técnicas que mejoran el razonamiento pero con mayor coste computacional y de tokens (de ahí que se hable de escalado).
- Aprendizaje por refuerzo ('reinforcement-learning'): Se centra en la segunda etapa, el ajuste fino. En un entrenamiento sobre problemas lógicos o complejos, se aplican formas diferentes de aprendizaje por refuerzo para 'dar pistas' al modelo acerca de cuál es la mejor forma de tratar el problema.
- Destilado ('distillation'): Es una estrategia en que un gran modelo entrena a otro que es el que se convertirá en modelo razonador. Sobre este segundo actuamos en la fase de ajuste fino 'fine tuning'.
Conclusiones
Los modelos razonadores son uno de los grandes avances de los dos últimos años y habilitan la aparición de la IA agéntica.
Con este post, inicio una serie en que intentaremos ver cómo se puede convertir un modelo de lenguaje 'clásico' en un modelo razonador. De momento, en este post, hemos identificado las tres grandes estrategias.








No hay comentarios:
Publicar un comentario