Habr a montré comment entraîner une mini-LLM en C# en utilisant ILGPU et des graphiques AMD intégrés
Habr a présenté un cycle complet de construction d'une micro-LLM en C# sans Python et sans nécessiter une carte NVIDIA. L'auteur a utilisé ILGPU et OpenCL…
Traité par IA depuis Habr AI ; édité par Hamidun News
Un détail pratique complet a été publié sur Habr, montrant un scénario rare pour la communauté locale de l'IA : un petit modèle de langage peut être assemblé et entraîné à partir de zéro en C#, sans Python et sans cartes NVIDIA obligatoires, puis sauvegardé en GGUF et exécuté dans LM Studio. L'auteur a utilisé la bibliothèque ILGPU et OpenCL, s'appuyant sur les graphiques intégrés AMD, et a obtenu un prototype fonctionnel, bien que très limité, de LLM d'environ 422 KB. Le projet a été conçu comme une démonstration éducative du cycle complet, non comme une tentative de concurrencer les grands modèles open-source.
L'article discute l'architecture de base d'un transformateur : tokenization, couche d'embedding, self-attention, feed-forward, normalisation et projection de sortie. Pour l'entraînement, l'auteur a préparé deux petits ensembles de données : un corpus de pré-entraînement court avec des faits généraux sur le monde et un échantillon d'ajustement d'instructions avec des questions et des réponses. L'objectif n'était pas d'obtenir un modèle puissant, mais de passer manuellement par toutes les étapes — du vocabulaire à l'inférence.
La configuration finale s'est avérée extrêmement compacte : vocabulaire de 512 tokens, longueur de contexte de 64, embedding de 64, couche cachée de 128, une couche transformateur et deux têtes d'attention. Au total, cela représente 103 744 paramètres. Avant l'exportation, le modèle peut être sauvegardé dans un fichier binaire d'environ 6,87 MB, mais le fichier GGUF final occupe environ 422 KB et est reconnu comme GGUF V3.
Après l'entraînement, la perte de pré-entraînement est tombée à environ 0,212, et après l'ajustement fin pour le format de dialogue, la perte d'ajustement fin est tombée à 0,3926. Pour cette échelle, c'est plutôt une indication que le schéma fonctionne techniquement plutôt qu'une preuve de la qualité des réponses. La logique d'entraînement elle-même est également importante.
D'abord, le modèle passe par une phase de pré-entraînement sur un corpus court de dizaines de phrases, puis une étape séparée d'ajustement d'instructions sur des exemples de dialogue. L'interface du programme dispose d'un menu pour le réentraînement, les tests du tokenizer, l'enregistrement des poids et le lancement d'un chat interactif. Pour la réponse, l'auteur a ajouté un filtre de confiance primitif : si la confiance minimale entre les tokens tombe en dessous du seuil, le système affiche non pas une réponse, mais la phrase "je ne peux pas répondre".
C'est une façon brute mais compréhensible de masquer les déchets évidents, qui sont presque inévitables pour un modèle de cette taille. C'est ce qui rend la démo adéquate au moins pour la validation de base du pipeline. La partie la plus difficile s'est avérée être non le passage vers l'avant et non l'entraînement lui-même, mais la compatibilité avec l'écosystème llama.
cpp. L'auteur a d'abord essayé de construire le modèle dans une configuration plus similaire à LLaMA, mais s'est heurté à des erreurs lors du chargement et à des incompatibilités de nombre de tenseurs. Au final, il a dû simplifier l'architecture, reconstruire le tokenizer en s'inspirant de Microsoft.
ML.Tokenizers et décrire soigneusement les métadonnées GGUF : architecture, longueur de contexte, paramètres d'attention, tokens spéciaux et template de chat. Une nuance technique séparée — le modèle ne maintient pas réellement un long historique de dialogue, donc pour le chat un template avec seulement le dernier message de l'utilisateur est utilisé, sinon le contexte minuscule casse rapidement l'inférence.
Le résultat pratique est modeste mais révélateur. Le modèle répond à des requêtes simples, s'ouvre dans LM Studio et peut fonctionner via une pile compatible, cependant llama.cpp avertit d'une dégradation de la qualité de génération, et l'auteur déclare directement que l'entraînement n'est pas encore assez bon.
De plus, l'inférence échoue sur certaines requêtes avec des points d'interrogation et des points d'exclamation, donc le projet reste une expérience et un banc d'essai. Mais le travail lui-même est important pour une autre raison : il montre que le seuil d'entrée pour les expériences de bas niveau avec LLM peut être considérablement abaissé. Pour les développeurs du monde .
NET, c'est un exemple clair de comment assembler un modèle minimal, vérifier un scénario OpenCL en dehors du monopole CUDA, et comprendre quels détails composent réellement l'exécution locale d'un modèle de langage.
Vous voulez cesser de lire sur l'IA et commencer à l'utiliser?
AI News est un fil d'actualité IA. Hamidun Academy vous apprend à utiliser l'IA dans votre travail.