Ingenium Expert LMS 3B Instruct โ€” GGUF (Ollama, CPU)

Paquet de dรฉploiement complet du candidat Ingenium Expert LMS 3B Instruct : routeur grounded fusionnรฉ LoRA sur mistralai/Ministral-3-3B-Instruct-2512-BF16, converti en GGUF texte et quantifiรฉ Q8_0, servi par Ollama sur CPU. Frรจre cadet du candidat 8B/GPU (IngeniumDL/ingenium-expert-lms-8b-instruct) : mรชme produit, mรชme harnais, mรชme dataset โ€” seuls le modรจle de base et le moteur d'infรฉrence changent.

Le modรจle ne rรฉcite pas les procรฉdures depuis ses poids : il comprend la demande et route vers un registre fermรฉ ; le harnais fourni dans ce paquet rend ensuite la fiche canonique. Utiliser les poids seuls, sans le harnais, retire le garde de pรฉrimรจtre, la validation de schรฉma et le rendu canonique โ€” voir ยซ Utilisation directe ยป plus bas pour ce que cela signifie concrรจtement.

Dรฉployer avec Docker Compose (recommandรฉ)

Prรฉrequis : Linux x86-64, Docker, Docker Compose. Aucun GPU requis.

hf download IngeniumDL/ingenium-expert-lms-3b-instruct-gguf --local-dir ingenium-3b-gguf
cd ingenium-3b-gguf

GGUF_PATH=./ingenium-expert-lms-3b-instruct-grounded-v0.1.0-Q8_0.gguf \
  docker compose -f docker-compose.cpu.yml up --build --detach

Le premier dรฉmarrage construit l'image Ollama et crรฉe le modรจle ร  partir du GGUF (quelques dizaines de secondes). Le harnais attend qu'Ollama soit prรชt avant de dรฉmarrer.

curl http://127.0.0.1:8080/health

curl -X POST http://127.0.0.1:8080/ask \
  -H "Content-Type: application/json" \
  -d '{
    "question": "Comment crรฉer un utilisateur dans Moodle ?",
    "context": {
      "moodle_release": "4.5.12 (Build: 20260608)",
      "moodle_version_code": "2024100712",
      "branch": "405",
      "locale": "fr",
      "theme": "boost",
      "route_class": "admin_users",
      "capabilities": {"moodle/user:create": true}
    }
  }'

Arrรชt propre :

docker compose -f docker-compose.cpu.yml down

Seul le harnais est exposรฉ (127.0.0.1:8080) ; Ollama reste sur le rรฉseau interne du compose et n'est jamais joignable directement, comme pour le paquet 8B/vLLM.

CLI de test utilisateur

Un client Go (CLI-LLM/ingenium-cli, Linux x86-64 statique) permet de tester la chaรฎne rรฉelle CLI โ†’ harnais โ†’ Ollama sans manipuler le JSON de l'API :

chmod +x CLI-LLM/ingenium-cli
./CLI-LLM/ingenium-cli --profile learner "Comment dรฉposer mon devoir dans Moodle ?"
./CLI-LLM/ingenium-cli --profile admin "Comment crรฉer un utilisateur dans Moodle ?"

Le profil par dรฉfaut est learner. Les profils admin, teacher, learner et guest simulent uniquement les capacitรฉs du contexte de test, pas un mรฉcanisme d'authentification.

Utilisation directe avec Ollama (sans harnais)

Pour inspecter le modรจle seul, sans le harnais :

ollama create ingenium-expert-lms-3b-instruct -f deploy/ollama/Modelfile.ingenium-3b
ollama run ingenium-expert-lms-3b-instruct

Le Modelfile fourni est requis, pas seulement recommandรฉ : Ollama ne traduit pas automatiquement le chat_template.jinja Mistral embarquรฉ dans le GGUF. Sans le TEMPLATE explicite du Modelfile, Ollama retombe sur un gabarit brut qui ignore la structure systรจme/utilisateur attendue par le modรจle et dรฉgrade fortement la qualitรฉ des rรฉponses (constatรฉ empiriquement).

Appelรฉ seul, le modรจle rรฉpond par un objet JSON routing-v1 โ€” un guide_id (ou module_ids), un scope/status et une confiance, jamais les รฉtapes dรฉtaillรฉes ni le contenu d'une formation :

{"scope":"IN_DOMAIN","domain":"MOODLE_USAGE","status":"ANSWER","guide_id":"core.admin.user.create","confidence":"high"}

Sans le harnais, rien ne garantit que guide_id existe rรฉellement dans un registre de procรฉdures, que des รฉtapes affichรฉes ร  l'utilisateur sont correctes, ni que les capacitรฉs requises sont respectรฉes. C'est le rรดle du harnais fourni dans ce paquet (harness/, src/, config/, schemas/, data/) de refermer ces garanties.

Mode JSON โ€” limite connue. response_format: {"type": "json_object"} est acceptรฉ par l'API compatible OpenAI d'Ollama mais n'est pas un dรฉcodage contraint par grammaire comme sur vLLM : la validitรฉ JSON constatรฉe (800/800 sur la campagne de qualification scellรฉe) repose sur l'entraรฎnement du modรจle, pas sur une garantie structurelle du moteur.

Contenu du paquet

Chemin Rรดle
ingenium-expert-lms-3b-instruct-grounded-v0.1.0-Q8_0.gguf poids quantifiรฉs Q8_0 (texte uniquement, tour vision exclue)
deploy/ollama/Modelfile.ingenium-3b Modelfile Ollama (gabarit de chat, tempรฉrature, contexte) utilisรฉ par le compose
schemas/ contrats context-v1, procedure-v1, module-v1, routing-v1 et response-v2
config/guides-v1.json, config/module-registry-v1.json registres d'identifiants fermรฉs
config/capabilities-v1.json capacitรฉs Moodle acceptรฉes dans le contexte
config/routing-prompt-v1.txt system prompt envoyรฉ au modรจle par le harnais
data/procedures/, data/modules/ contenu canonique rendu par le harnais
harness/, src/ garde, correspondance catalogue, validation et rendu fail-closed
docker/ollama/, docker-compose.cpu.yml image Ollama personnalisรฉe et paquet de dรฉploiement CPU
CLI-LLM/ binaire Linux x86-64 et sources Go du client
merge-report.json inventaire SHA-256 du modรจle fusionnรฉ
docs/creer-des-fiches.md procรฉdure dรฉtaillรฉe pour ajouter de nouvelles connaissances (procรฉdures, formations)

Entraรฎnement et qualification

  • base mistralai/Ministral-3-3B-Instruct-2512-BF16, rรฉvision d8d116d9345d21aa3df1b76bf8a9a1a29d0ced1e ;
  • LoRA BF16 rang 32, alpha 64, dropout 0,05, longueur 2048, lot effectif 32, sur NVIDIA L40S ; arrรชt anticipรฉ ร  l'รฉtape 80/100, meilleur checkpoint ร  l'รฉtape 20 ;
  • mรชme dataset et mรชmes 50 procรฉdures / 7 modules que le candidat 8B ;
  • fusionnรฉ, converti en GGUF texte avec llama.cpp (convert_hf_to_gguf.py puis llama-quantize โ€ฆ Q8_0) ;
  • qualifiรฉ sur les mรชmes 800 cas scellรฉs que le 8B, servi entiรจrement sur CPU (15 vCPU, sans GPU) : dรฉcision exacte 98,0 % (784/800), adversarial 98/100, hors domaine 100/100, abstention sรปre 215/215, latence du routeur p95 3,13 s.

Comparรฉ au service 8B/vLLM qualifiรฉ (dรฉcision exacte 98,75 %, adversarial 96/100, p95 1,21 s sur GPU ร  concurrence 4), ce candidat CPU obtient une qualitรฉ quasi identique avec une latence plus รฉlevรฉe mais sans dรฉpendance GPU.

Agrandir les connaissances (nouvelles procรฉdures, nouvelles formations)

Le modรจle ne rรฉcite jamais une procรฉdure depuis ses poids : il choisit un identifiant dans un registre fermรฉ (config/guides-v1.json, config/module-registry-v1.json), le harnais rend ensuite la fiche canonique stockรฉe dans data/procedures/ ou data/modules/. Ajouter une connaissance consiste donc ร  enrichir ces registres, pas ร  rรฉรฉcrire le modรจle :

  • corriger une fiche dรฉjร  approuvรฉe (texte d'une รฉtape, capacitรฉ manquante) ne demande aucun rรฉentraรฎnement โ€” le harnais sert la version corrigรฉe dรจs que les fichiers sont rรฉgรฉnรฉrรฉs ;
  • ajouter un nouvel identifiant bรฉnรฉficie d'une gรฉnรฉralisation mesurรฉe (95 ร  100 % sur les procรฉdures/modules holdout des campagnes scellรฉes, le modรจle raisonne sur la carte du candidat plutรดt que de la mรฉmoriser) mais un rรฉentraรฎnement reste recommandรฉ pour une fiabilitรฉ de production.

La procรฉdure complรจte โ€” blueprint de la fiche, validation contre le code Moodle rรฉel, enregistrement dans le registre de routage, requalification du routeur โ€” est dรฉtaillรฉe dans docs/creer-des-fiches.md.

Limites connues

  • Fenรชtre de contexte et route_class: "unknown". Une question du domaine MOODLE_USAGE reรงue avec route_class: "unknown" fait retomber le harnais sur les 50 procรฉdures complรจtes comme candidats, produisant un prompt d'environ 3700 tokens โ€” au-delร  des 2048 tokens vus ร  l'entraรฎnement. num_ctx a รฉtรฉ portรฉ ร  4096 dans le Modelfile pour รฉviter un รฉchec de transport ; testรฉ manuellement, le modรจle a correctement identifiรฉ la procรฉdure malgrรฉ cette longueur inhabituelle, mais avec une latence proche de 30 s et sans garantie de qualitรฉ au-delร  de cet essai ponctuel. Cette lacune de couverture affecte probablement aussi le service 8B/vLLM, qui partage le mรชme harnais.
  • Dรฉbit. Ollama sert par dรฉfaut une requรชte ร  la fois (OLLAMA_NUM_PARALLEL=1) ; la qualification a รฉtรฉ menรฉe ร  concurrence 1.
  • Statut POC. Donnรฉes de fabrication synthรฉtiques, revue mรฉtier indรฉpendante requise avant toute utilisation rรฉelle. Ne pas transmettre de donnรฉes personnelles.

Traรงabilitรฉ

Consulter merge-report.json pour l'inventaire SHA-256 du modรจle fusionnรฉ, les rรฉvisions et versions logicielles.

Downloads last month
4
GGUF
Model size
3B params
Architecture
mistral3
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for IngeniumDL/ingenium-expert-lms-3b-instruct-gguf