InfraestruturaHabr AI→ original

Habr mostrou como treinar uma mini-LLM em C# usando ILGPU e gráficos AMD integrados

Habr apresentou um ciclo completo de construção de uma micro-LLM em C# sem Python e sem exigir uma placa NVIDIA. O autor usou ILGPU e OpenCL, treinou o modelo em gráficos AMD integrados, empacotou em GGUF e abriu no LM Studio. O resultado é modesto em qualidade, mas importante como prova de conceito para desenvolvedores .NET que precisam de um experimento local compreensível com LLM.

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

Um detalhamento prático completo foi publicado na Habr, que mostra um cenário raro para a comunidade local de IA: um pequeno modelo de linguagem pode ser montado e treinado do zero em C#, sem Python e sem placas NVIDIA obrigatórias, e então salvo em GGUF e executado em LM Studio. O autor usou a biblioteca ILGPU e OpenCL, apoiando-se em gráficos integrados AMD, e obteve um protótipo funcional, embora muito limitado, de LLM com cerca de 422 KB. O projeto foi concebido como uma demonstração educacional do ciclo completo, não como uma tentativa de competir com grandes modelos de código aberto.

O artigo discute a arquitetura básica de um transformador: tokenização, camada de embedding, self-attention, feed-forward, normalização e projeção de saída. Para o treinamento, o autor preparou dois pequenos conjuntos de dados: um corpus de pré-treinamento curto com fatos gerais sobre o mundo e uma amostra de ajuste de instruções com perguntas e respostas. O objetivo não era obter um modelo forte, mas passar manualmente por todos os estágios — do vocabulário à inferência.

A configuração final se mostrou extremamente compacta: vocabulário de 512 tokens, comprimento de contexto de 64, embedding de 64, camada oculta de 128, uma camada transformadora 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 perda de pré-treinamento caiu para aproximadamente 0,212, e após o ajuste fino para formato de diálogo, a perda de ajuste fino caiu para 0,3926. Para essa escala, isso é mais uma indicação de que o esquema funciona tecnicamente do que uma prova da qualidade das respostas.

A lógica do treinamento em si também é importante. Primeiro, o modelo passa por uma fase de pré-treinamento em um corpus curto de dezenas de sentenças, depois um estágio separado de ajuste de instruções em exemplos de diálogo. A interface do programa tem um menu para retreinamento, teste do tokenizador, salvamento de pesos e lançamento de um bate-papo interativo.

Para a resposta, o autor adicionou um filtro de confiança primitivo: se a confiança mínima entre tokens cair abaixo do limiar, o sistema exibe não uma resposta, mas a frase "não sei responder". Esta é uma maneira grosseira, mas compreensível, de ocultar lixo óbvio, que é quase inevitável em um modelo deste tamanho. Isso torna a demonstração adequada pelo menos para validação básica do pipeline.

A parte mais difícil acabou sendo não o passe direto e nem o treinamento em si, mas a compatibilidade com o ecossistema llama.cpp. O autor primeiro tentou construir o modelo em uma configuração mais similar ao LLaMA, mas esbarrou em erros ao carregar e incompatibilidades na contagem de tensores.

No final, ele teve que simplificar a arquitetura, reconstruir o tokenizador com base em Microsoft.ML.Tokenizers e descrever cuidadosamente metadados GGUF: arquitetura, comprimento de contexto, parâmetros de atenção, tokens especiais e template de chat.

Uma nuance técnica separada — o modelo na verdade não mantém um histórico de diálogo longo, então para chat usa-se um template com apenas a última mensagem do usuário, caso contrário o contexto minúsculo quebra rapidamente a inferência. O resultado prático é modesto, mas indicativo. O modelo responde consultas simples, abre em LM Studio e pode funcionar através de uma pilha compatível, porém llama.

cpp avisa sobre degradação da qualidade de geração, e o autor afirma diretamente que o treinamento ainda não é bom o suficiente. Além disso, a inferência quebra em algumas consultas com pontos de interrogação e exclamação, então o projeto permanece um experimento e um campo de treinamento. Mas o trabalho em si é importante por outro motivo: ele mostra que o limite de entrada para experimentos de baixo nível com LLM pode ser significativamente reduzido.

Para desenvolvedores do mundo .NET, este é um exemplo claro de como montar um modelo mínimo, verificar um cenário OpenCL fora do monopólio CUDA e entender quais detalhes realmente compõem 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…