InfraestruturaHabr AI→ original

Habr mostra como treinar um mini-LLM em C# com ILGPU e gráficos AMD integrados

O Habr publicou o ciclo completo de construção de um micro-LLM em C#, sem Python e sem exigir placa NVIDIA. O autor usou ILGPU e OpenCL, treinou o modelo em gráficos AMD integrados, empacotou em GGUF e abriu no LM Studio. A qualidade é modesta, mas serve como prova de conceito para desenvolvedores .NET que querem um experimento local com LLM fácil de acompanhar.

Processado por IA de Habr AI; editado por Hamidun News
Habr mostra como treinar um mini-LLM em C# com ILGPU e gráficos AMD integrados
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo

O Habr publicou uma análise prática e detalhada que mostra um cenário raro na comunidade de IA local: um modelo de linguagem pequeno pode ser montado e treinado do zero em C#, sem Python e sem exigir uma placa NVIDIA, e depois salvo em GGUF e executado no LM Studio. O autor usou a biblioteca ILGPU e o OpenCL, apoiando-se nos gráficos integrados da AMD, e chegou a um protótipo de LLM funcional, embora bastante limitado, de cerca de 422 KB. O projeto foi pensado como demonstração didática do ciclo completo, e não como tentativa de competir com os grandes modelos de código aberto.

O artigo percorre a arquitetura básica do transformer: tokenização, camada de embedding, self-attention, feed-forward, normalização e projeção de saída. Para o treinamento, o autor preparou dois conjuntos de dados pequenos: um corpus curto de pretrain com fatos gerais sobre o mundo e uma amostra de instruction tuning com perguntas e respostas. O objetivo não era obter um modelo forte, mas percorrer manualmente todas as etapas, do vocabulário à inferência.

A configuração final ficou extremamente compacta: vocabulário de 512 tokens, comprimento de contexto de 64, embedding de 64, camada oculta de 128, uma camada de transformer e duas cabeças de atenção. No total, são 103.744 parâmetros. Antes da exportação, o modelo pode ser salvo em um arquivo binário de aproximadamente 6,87 MB, mas o arquivo GGUF final ocupa cerca de 422 KB e é reconhecido como GGUF V3. Após o treinamento, a pretrain-loss caiu para cerca de 0,212 e, depois do ajuste fino para o formato de diálogo, a finetune-loss chegou a 0,3926. Nessa escala, é mais um sinal de que o esquema funciona tecnicamente do que uma prova da qualidade das respostas.

A lógica do treinamento também importa. Primeiro o modelo passa por uma fase de pré-treinamento em um corpus curto de dezenas de frases, depois por uma etapa separada de instruction tuning com exemplos de diálogo. A interface do programa tem menus para retreinar, testar o tokenizador, salvar os pesos e iniciar um chat interativo.

Para as respostas, o autor incluiu um filtro de confiança primitivo: se a confiança mínima por token cai abaixo de um limite, o sistema exibe a frase «tenho dificuldade para responder» em vez de uma resposta. É uma forma grosseira, mas compreensível, de esconder o lixo evidente que um modelo desse tamanho quase inevitavelmente produz. É isso que torna a demo útil, pelo menos para uma verificação básica do pipeline.

A parte mais difícil não foi o forward pass nem o treinamento em si, mas a compatibilidade com o ecossistema llama.cpp. O autor tentou primeiro montar o modelo numa configuração mais parecida com a do LLaMA, mas esbarrou em erros de carregamento e em uma divergência no número de tensores. No fim, precisou simplificar a arquitetura, refazer o tokenizador nos moldes do Microsoft.ML.Tokenizers e descrever com cuidado os metadados do GGUF: arquitetura, comprimento de contexto, parâmetros de atenção, tokens especiais e chat template. Outro detalhe técnico: na prática, o modelo não guarda um histórico longo de conversa, então o chat usa um template apenas com a última mensagem do usuário; do contrário, o contexto minúsculo quebra rapidamente a inferência.

O resultado prático é modesto, mas ilustrativo. O modelo responde a consultas simples e abre no LM Studio, onde pode funcionar por meio de uma stack compatível, mas o llama.cpp alerta para degradação da qualidade de geração, e o autor escreve abertamente que o treinamento ainda não é bom o suficiente. Além disso, a inferência falha em algumas consultas com pontos de interrogação e exclamação, ou seja, o projeto continua sendo um experimento e um laboratório didático.

Mas o trabalho importa por outro motivo: mostra que a barreira de entrada para experimentos de baixo nível com LLMs pode cair bastante. Para desenvolvedores do mundo .NET, é um exemplo claro de como montar um modelo mínimo, testar um cenário com OpenCL fora do monopólio do CUDA e entender de quais peças realmente se compõe a execução local de um modelo de linguagem.

História
ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ 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
O que você acha?
Carregando comentários…