InfraestructuraHabr AI→ original

En Habr muestran cómo entrenar un mini-LLM en C# con ILGPU y gráficos AMD integrados

Habr ha publicado el ciclo completo de construcción de un micro-LLM en C#, sin Python y sin necesidad de una tarjeta NVIDIA. El autor usó ILGPU y OpenCL, entrenó el modelo en gráficos AMD integrados, lo empaquetó en GGUF y lo abrió en LM Studio. La calidad es modesta, pero sirve como prueba de concepto para desarrolladores .NET que buscan un experimento local con LLM fácil de seguir.

Procesado por IA desde Habr AI; editado por Hamidun News
En Habr muestran cómo entrenar un mini-LLM en C# con ILGPU y gráficos AMD integrados
Fuente: Habr AI. Collage: Hamidun News.
Escuchar artículo

Habr ha publicado un análisis práctico y detallado que muestra un escenario poco habitual en la comunidad de IA local: un modelo de lenguaje pequeño puede construirse y entrenarse desde cero en C#, sin Python y sin necesidad de una tarjeta NVIDIA, para luego guardarse en GGUF y ejecutarse en LM Studio. El autor usó la biblioteca ILGPU y OpenCL, apoyándose en los gráficos integrados de AMD, y obtuvo un prototipo de LLM funcional, aunque muy limitado, de unos 422 KB. El proyecto se concibió como demostración didáctica del ciclo completo, no como un intento de competir con los grandes modelos de código abierto.

El artículo repasa la arquitectura básica del transformer: tokenización, capa de embedding, self-attention, feed-forward, normalización y proyección de salida. Para el entrenamiento, el autor preparó dos conjuntos de datos pequeños: un corpus breve de pretrain con hechos generales sobre el mundo y una muestra de instruction tuning con preguntas y respuestas. El objetivo no era lograr un modelo potente, sino recorrer a mano todas las etapas, del vocabulario a la inferencia.

La configuración final es extremadamente compacta: vocabulario de 512 tokens, longitud de contexto de 64, embedding de 64, capa oculta de 128, una capa de transformer y dos cabezas de atención. En total son 103 744 parámetros. Antes de exportar, el modelo puede guardarse en un archivo binario de unos 6,87 MB, pero el archivo GGUF final ocupa unos 422 KB y se reconoce como GGUF V3. Tras el entrenamiento, la pretrain-loss bajó hasta aproximadamente 0,212 y, después del ajuste fino al formato de diálogo, la finetune-loss llegó a 0,3926. A esta escala, es más una señal de que el esquema funciona técnicamente que una prueba de la calidad de las respuestas.

La lógica del entrenamiento también importa. Primero el modelo pasa por una fase de preentrenamiento con un corpus corto de decenas de frases y después por una etapa independiente de instruction tuning con ejemplos de diálogo. La interfaz del programa incluye menús para reentrenar, probar el tokenizador, guardar los pesos y lanzar un chat interactivo.

Para las respuestas, el autor añadió un filtro de confianza primitivo: si la confianza mínima por token cae por debajo de un umbral, el sistema muestra la frase «me cuesta responder» en lugar de una respuesta. Es una forma tosca pero comprensible de ocultar la basura evidente que casi inevitablemente produce un modelo de este tamaño. Eso es lo que hace que la demo sirva, al menos, para una comprobación básica del pipeline.

La parte más difícil no fue el forward pass ni el entrenamiento en sí, sino la compatibilidad con el ecosistema llama.cpp. El autor intentó primero construir el modelo con una configuración más parecida a LLaMA, pero se topó con errores de carga y con una discrepancia en el número de tensores.

Al final tuvo que simplificar la arquitectura, rehacer el tokenizador siguiendo el enfoque de Microsoft.ML.Tokenizers y describir con cuidado los metadatos de GGUF: arquitectura, longitud de contexto, parámetros de atención, tokens especiales y chat template.

Otro matiz técnico: el modelo en la práctica no retiene un historial largo de conversación, así que el chat usa una plantilla solo con el último mensaje del usuario; de lo contrario, el contexto minúsculo rompe rápidamente la inferencia.

El resultado práctico es modesto, pero ilustrativo. El modelo responde a consultas sencillas y se abre en LM Studio, donde puede funcionar mediante una pila compatible, aunque llama.cpp avisa de una degradación de la calidad de generación y el autor reconoce abiertamente que el entrenamiento aún no es lo bastante bueno. Además, la inferencia falla con algunas consultas que contienen signos de interrogación y exclamación, de modo que el proyecto sigue siendo un experimento y un banco de pruebas didáctico.

Pero el trabajo importa por otra razón: demuestra que la barrera de entrada a los experimentos de bajo nivel con LLM puede reducirse mucho. Para los desarrolladores del mundo .NET, es un ejemplo claro de cómo construir un modelo mínimo, probar un escenario con OpenCL fuera del monopolio de CUDA y entender de qué piezas se compone realmente la ejecución local de un modelo de lenguaje.

Historia
ZK
Zhemal Khamidun — CPO de Alpina Digital, product manager de AlpinaGPT. Crea productos de IA desde 2019. Hamidun News es un proyecto personal que creció hasta ser un agregador en producción con más de 6.000 lectores.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
¿Qué te parece?
Cargando comentarios…