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…
Processado por IA de Habr AI; editado por Hamidun News
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.
Quer parar de ler sobre IA e começar a usar?
AI News é um feed curado de notícias de IA. A Hamidun Academy ensina você a usar IA no trabalho.