Habr mostró cómo entrenar una mini-LLM en C# usando ILGPU y gráficos AMD integrados
Habr mostró un ciclo completo de construcción de una micro-LLM en C# sin Python y sin requerir una tarjeta NVIDIA. El autor utilizó ILGPU y OpenCL, entrenó…
Procesado por IA desde Habr AI; editado por Hamidun News
En Habr se publicó un desglose práctico detallado que muestra un escenario raro para la comunidad local de IA: un pequeño modelo de lenguaje puede ser ensamblado y entrenado desde cero en C#, sin Python y sin tarjetas NVIDIA obligatorias, y luego guardado en GGUF y ejecutado en LM Studio. El autor utilizó la biblioteca ILGPU y OpenCL, confiando en gráficos integrados AMD, y obtuvo un prototipo funcional, aunque muy limitado, de LLM de aproximadamente 422 KB. El proyecto fue concebido como una demostración educativa del ciclo completo, no como un intento de competir con grandes modelos de código abierto.
El artículo analiza la arquitectura básica de un transformador: tokenización, capa de embedding, self-attention, feed-forward, normalización y proyección de salida. Para el entrenamiento, el autor preparó dos pequeños conjuntos de datos: un corpus de preentrenamiento corto con hechos generales sobre el mundo y una muestra de ajuste de instrucciones con preguntas y respuestas. El objetivo no era obtener un modelo fuerte, sino pasar manualmente por todas las etapas — desde vocabulario hasta inferencia.
La configuración final resultó ser extremadamente compacta: vocabulario de 512 tokens, longitud de contexto de 64, embedding de 64, capa oculta de 128, una capa transformadora y dos cabezas de atención. En total, esto es 103.744 parámetros.
Antes de la exportación, el modelo se puede guardar en un archivo binario de aproximadamente 6,87 MB, pero el archivo GGUF final ocupa aproximadamente 422 KB y se reconoce como GGUF V3. Después del entrenamiento, la pérdida de preentrenamiento bajó a aproximadamente 0,212, y después del ajuste fino para formato de diálogo, la pérdida de ajuste fino bajó a 0,3926. Para esta escala, esto es más bien una indicación de que el esquema funciona técnicamente que una prueba de la calidad de las respuestas.
La lógica del entrenamiento en sí también es importante. Primero, el modelo pasa por una fase de preentrenamiento en un corpus corto de decenas de oraciones, luego una etapa separada de ajuste de instrucciones en ejemplos de diálogo. La interfaz del programa tiene un menú para reentrenamiento, prueba de tokenizador, guardado de pesos e inicio de un chat interactivo.
Para la respuesta, el autor añadió un filtro de confianza primitivo: si la confianza mínima entre tokens cae por debajo del umbral, el sistema emite no una respuesta, sino la frase "no sé responder". Esta es una forma tosca pero comprensible de ocultar basura evidente, que es casi inevitable para un modelo de este tamaño. Esto hace que la demostración sea adecuada al menos para validación básica del pipeline.
La parte más difícil resultó ser no el pase hacia adelante ni el entrenamiento en sí, sino la compatibilidad con el ecosistema llama.cpp. El autor primero intentó construir el modelo en una configuración más similar a LLaMA, pero encontró errores al cargar e incompatibilidades en el número de tensores.
Al final, tuvo que simplificar la arquitectura, reconstruir el tokenizador basándose en Microsoft.ML.Tokenizers y describir cuidadosamente los metadatos GGUF: arquitectura, longitud de contexto, parámetros de atención, tokens especiales y plantilla de chat.
Un matiz técnico separado — el modelo en realidad no mantiene un historial de diálogo largo, por lo que para chat se usa una plantilla solo con el último mensaje del usuario, de lo contrario el contexto diminuto rompe rápidamente la inferencia. El resultado práctico es modesto pero indicativo. El modelo responde consultas simples, se abre en LM Studio y puede funcionar a través de una pila compatible, sin embargo llama.
cpp advierte sobre degradación de la calidad de generación, y el autor afirma directamente que el entrenamiento aún no es lo suficientemente bueno. Además, la inferencia se rompe en algunas consultas con signos de interrogación y exclamación, así que el proyecto sigue siendo un experimento y un campo de pruebas. Pero el trabajo en sí es importante por otra razón: muestra que el umbral de entrada para experimentos de bajo nivel con LLM puede reducirse significativamente.
Para desarrolladores del mundo .NET, este es un ejemplo claro de cómo ensamblar un modelo mínimo, verificar un escenario OpenCL fuera del monopolio CUDA, y entender qué detalles realmente componen la ejecución local de un modelo de lenguaje.
¿Quieres dejar de leer sobre IA y empezar a usarla?
AI News es un feed curado de noticias de IA. Hamidun Academy te enseña a usar la IA en tu trabajo.