Maurice 1
Maurice est l'assistant de Dodo. Ce modèle de langue tourne entièrement sur l'iPhone, de l'iPhone 11 à aujourd'hui, et rien ne quitte l'appareil.
| Version | 1.1 (12 novembre 2026) |
| Paramètres | 0,8 milliard |
| Fichier | maurice-1-IQ4_XS.gguf, 517 Mo (GGUF, compression IQ4_XS) |
| Moteur | llama.cpp (llama.rn dans l'app) |
| Langue | français ; l'anglais et le japonais viendront avec une version suivante |
| Licence | Apache 2.0 |
Ce qu'il sait faire
Il lit une phrase dite à Dodo et la transforme en actions, dans le format JSON qu'attend l'app (src/pipeline/interpret.ts) :
- les rappels, avec leur objet et leur moment ;
- les refus : ce que Dodo ne sait pas faire (réveil, musique, message, maison connectée, recherche sur internet), avec la raison.
Il résume aussi une réunion transcrite (src/voice/meeting.ts) : un titre, de 3 à 6 points essentiels, les décisions et ce qui reste à faire.
Il garde enfin les talents d'un petit assistant généraliste. Il reformule une note et répond à une question simple.
Résultats
Les mesures portent sur des exemples mis de côté avant l'entraînement. Le modèle reçoit les consignes exactes de l'app, avec le schéma JSON imposé. Le script de mesure est eval_maurice.py.
| Mesure | Modèle actuel de l'app (Qwen 3.5 0.8B) | Maurice 1.1 | Exemples |
|---|---|---|---|
| Rappels reconnus | 30,4 % | 96,7 % | 92 |
| Moment du rappel retrouvé (mots en commun) | 5,2 % | 76,1 % | 92 |
| Demandes impossibles refusées | 2,0 % | 98,5 % | 200 |
| Refus avec la bonne raison | 0,0 % | 90,0 % | 200 |
| Résumés au bon format (3 à 6 points) | 95,0 % | 100 % | 60 |
| Résumés sans décision inventée | 1,7 % | 100 % | 60 |
| Connaissances générales (MMMLU français, 600 questions) | 33,8 % | 24,5 % | 600 |
| Durée du test des tâches, sur le Mac | 410 s | 62 s | — |
Limites
- Ses connaissances générales baissent. Au MMMLU en français, Maurice tombe au niveau du hasard (25 %), contre 33,8 % pour le modèle de départ. Il répond encore normalement à une question générale, mais moins juste. Ne le prenez pas comme source de faits.
- Les actions propres à Dodo ne sont pas apprises. Pour créer une île, un archipel, une note ou lancer un pomodoro, aucun jeu ouvert n'existe. Maurice suit alors les consignes et les exemples donnés dans
PLAN_INSTRUCTIONS, sans entraînement dédié. - Les résumés viennent de débats. Il a appris à résumer sur des débats politiques (FREDSum), pas sur des réunions de travail.
- Une phrase seule à la fois. Il n'a été entraîné que sur des demandes en une phrase et des premières questions de conversation.
- Les vitesses sont mesurées sur le Mac (M5 Pro). Elles ne sont pas encore mesurées sur iPhone, et pas du tout sur un iPhone ancien.
Comment il a été fait
Maurice 1 est une version modifiée de Qwen 3.5 0.8B (Alibaba Cloud, Qwen Team), publiée sous licence Apache 2.0 : https://huggingface.co/Qwen/Qwen3.5-0.8B. Les poids d'origine ont été modifiés par un affinage LoRA (rang 16, échelle 8, toutes les couches), fusionné dans les poids. La licence Apache 2.0 du modèle d'origine s'applique à ce modèle dérivé (fichier LICENSE de Qwen joint au modèle).
Les exemples d'entraînement ont tous été annotés ou écrits par des humains, aucun par un modèle de langue :
| Jeu | Licence | Ce qu'il apporte | Exemples |
|---|---|---|---|
| MASSIVE fr-FR (Amazon) | CC BY 4.0 | demandes à un assistant : rappels (calendar_set avec un moment) et demandes impossibles | 1 197 (397 rappels, 800 refus) |
| FREDSum (Linagora) | CC BY-SA 4.0 | débats français transcrits, passages résumés par des annotateurs | 501 |
| OpenAssistant oasst2 | Apache 2.0 | meilleures réponses humaines, en français et en anglais | 729 |
- L'entraînement se fait avec mlx-lm sur un Mac M5 Pro de 24 Go : un passage, un exemple à la fois, 8 par pas d'apprentissage, taux 5e-5, séquences d'au plus 1 024 jetons. Il dure environ 4 h.
- La fusion se fait dans les fichiers d'origine (
merge_lora.py), puis le modèle est converti par llama.cpp. La fusion de mlx-lm donne un modèle cassé pour Qwen 3.5.
Refaire Maurice
zsh models/dodo/maurice/supervise.sh maurice-1-1 # avec SETS=<jeux>, voir train.sh pour les étapes
Les étapes :
build_data.pypuisfit_length.pyconstruisent les jeux ;lora.yamlrègle l'entraînement ;supervise.shentraîne, et reprend seul si la mémoire du Mac déborde ;finish.shfusionne, exporte et mesure.
mmmlu_fr.py mesure les connaissances générales.
Historique
- Maurice 1.0 : refusé. Il répondait à tout par une action de Dodo (MMMLU français 21,5 %). L'échelle LoRA de 20 modifiait les poids d'environ 40 %.
- Maurice 1.1 : ajoute les conversations humaines d'OpenAssistant et passe l'échelle LoRA à 8.