El autor detalla un experimento personal de ajuste fino (fine-tuning) de un modelo de lenguaje para que genere documentación técnica al estilo de los años 80 y 90. La motivación es explorar la predicción de que los redactores técnicos del futuro trabajarán con modelos locales especializados, en lugar de depender de modelos frontera conectados a la nube.
Para entrenar el modelo recurrió a Bitsavers, un repositorio de manuales informáticos escaneados, y seleccionó la colección de Microsoft, que reúne más de 37 millones de palabras publicadas entre 1977 y 2005. Tras limpiar los archivos OCR con scripts en Python, usó el modelo gemma-4-26b a través de OpenRouter para clasificar cada párrafo como válido o descartable, un segundo filtrado que costó unos 8 dólares. El conjunto final fue de 192.456 ejemplos de entrenamiento en formato JSONL, divididos por límites de párrafo y emparejados con instrucciones sintéticas extraídas de plantillas.
En lugar de entrenar un modelo desde cero, optó por QLoRA (Quantized Low-Rank Adaptation), una técnica que congela los pesos del modelo base y añade un adaptador ligero que modifica el comportamiento, reduciendo los requisitos de memoria. Entrenó dos modelos: Llama 3.1 8B Instruct y Qwen 2.5 7B Instruct, ambos con un tamaño que permite ejecutarlos en un Macbook Air. Como infraestructura alquiló GPUs en Runpod por unos 6 dólares la hora y completó todas las pruebas en un día, con un coste total aproximado de 50 dólares.
Probó seis configuraciones variando volumen de datos (40.000 frente a 192.000 ejemplos), número de épocas y rango del adaptador. Cada adaptador entrenado se convirtió a formato GGUF LoRA y se registró como modelo local en Ollama para evaluarlo en su portátil. Para medir la transferencia de estilo, sometió a cada modelo a tres pruebas: documentar la función malloc() de C, documentar una API Win32 ficticia ConnectWifi() y explicar qué es una REST API al estilo anacrónico de Microsoft en los 90. El artículo describe la metodología, los compromisos entre tiempo, dinero y ambición al trabajar con LLMs en local, y lecciones como la fragilidad de Runpod cuando el saldo se agota o la utilidad del comando /goal de Claude Code para automatizar las fases del experimento.
