shabaw/gemma4-sagax-os27-raw
gemma4-sagax-os27-raw
An experiment in training Gemma 4 on a single 35M-token, months-long software-development conversation.
Que transmet réellement au modèle une conversation unique de 35 millions de tokens retraçant plusieurs mois de développement d’un même projet ?
Cette release est une expérience contrôlée autour de cette question. google/gemma-4-12B-it a été adapté par QLoRA sur 33 942 messages GoodMorning/os27.layer conservés dans l’ordre chronologique : demandes, réponses, appels d’outils, diagnostics, erreurs, corrections, décisions architecturales et validations accumulés pendant plusieurs mois.
L’hypothèse était qu’un historique aussi long pourrait transmettre plus que des faits locaux : une continuité de travail, de la persévérance, des réflexes d’ownership, une discipline de performance et une manière de valider avant de conclure.
Le résultat est instructif mais globalement négatif. L’adaptateur apprend réellement certaines doctrines répétées — invalidation événementielle, preuve framebuffer, alpha prémultiplié, contrôle des benchmarks, invariants de scroll — mais apprend aussi la verbosité, des erreurs historiques et des contrats devenus obsolètes. Sur 100 questions owner-level, il obtient 27 gains, 7 égalités et 66 régressions.
Baseline QLoRA expérimentale — résultat négatif publié par transparence, et non amélioration générale démontrée.
📖 Rapport narratif complet : [ce qu’une conversation de plusieurs mois transmet réellement — analyse des 27 gains, 7 égalités et 66 pertes](evaluations/os27-owner-grading/GAINS_EQUALITIES_LOSSES.md).
Le corpus privé, les mmap tokenisés, les secrets et les réponses brutes aux questionnaires d’évaluation ne sont pas distribués dans ce dépôt.
Résultats vérifiés
- 33 942 messages source ;
- 34 948 991 tokens parcourus dans 17 065 blocs chronologiques de 2 048 tokens maximum ;
- 5 903 871 tokens supervisés : sorties assistant, raisonnement assistant présent dans la source et appels d’outils assistant ;
- messages utilisateur, résultats d’outils et BOS visibles comme contexte, mais masqués dans la loss ;
- une époque, sans shuffle,
drop_last=false; - 987 mises à jour optimiseur, seed 27, learning rate
1e-4, accumulation 8 ; - loss moyenne
1.0683517018883493, aucune NaN ; - run principal : 20 610,43 s sur A100 80 Go ;
- pic VRAM : 23 121 828 864 octets.
Limitation de qualité importante
Sur le petit benchmark externe déterministe inclus :
Le jeu de six cas est trop petit pour mesurer la qualité générale et la base le saturait. Une seconde évaluation owner-level de 100 questions sur les contrats internes os27.layer confirme néanmoins une régression :
Sur ces 100 questions, l’adaptateur progresse sur 27, reste égal sur 7 et régresse sur 66. Les fabrications annotées passent de 3 à 10 et les contradictions de 3 à 5. Les cinq dimensions baissent : exactitude factuelle, architecture, diagnostic, performance et communication.
Une dérive de longueur est également observée : 71 405 tokens générés contre 40 632 pour la base, et 86/100 réponses adaptées atteignent la limite de 768 tokens, contre 0/100 pour la base. Les réponses brutes et le corrigé détaillé restent privés ; les agrégats et le protocole de notation publiables figurent dans evaluations/os27-owner-grading/.
Ces résultats ne démontrent pas que toute adaptation conversationnelle est nuisible. Ils montrent que cette SFT raw, issue d’une conversation unique et entraînée sans filtrage des erreurs/états obsolètes ni replay général, ne doit pas remplacer le modèle de base. La release est publiée comme baseline négative reproductible pour informer les itérations distillées futures.
What did it actually learn?
Malgré la régression globale, l’adaptateur n’a pas échoué uniformément : il améliore 27 questions, reste égal sur 7 et régresse sur 66. Les gains les plus crédibles se concentrent sur des règles locales, fortement répétées dans la conversation et souvent associées à des preuves concrètes.
Ces exemples suggèrent que la conversation a bien transmis :
- une doctrine de performance événementielle ;
- des réflexes de validation framebuffer ;
- certains invariants de layout/scroll ;
- quelques contrats renderer précis ;
- une méthode de comparaison et de preuve.
Mais un gain numérique n’est pas toujours une maîtrise. Sur les 27 gains, l’analyse distingue 8 gains solides, 6 gains partiels mais utiles et 13 gains relatifs ou fragiles. Par exemple, certaines réponses reconnaissent davantage le vocabulaire du projet tout en conservant une contradiction ou un détail obsolète.
➡️ Lire l’analyse naturelle complète des 27 gains, 7 égalités et 66 pertes.
Chargement
L’accès au modèle de base Gemma peut nécessiter l’acceptation préalable de ses conditions sur Hugging Face.
import torch
from peft import PeftModel
from transformers import AutoModelForMultimodalLM, AutoProcessor, BitsAndBytesConfig
base_model_id = "google/gemma-4-12B-it"
adapter_id = "shabaw/gemma4-sagax-os27-raw"
processor = AutoProcessor.from_pretrained(
adapter_id,
subfolder="processor",
)
quantization = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
base = AutoModelForMultimodalLM.from_pretrained(
base_model_id,
quantization_config=quantization,
dtype=torch.bfloat16,
device_map={"": 0},
low_cpu_mem_usage=True,
)
model = PeftModel.from_pretrained(base, adapter_id)
model.eval()Le chargement PEFT et l’inférence ont été vérifiés sur les six cas du benchmark après entraînement.
Contenu du dépôt
adapter_model.safetensors,adapter_config.json: adaptateur PEFT directement chargeable ;training_metadata.json: configuration et métriques du run ;processor/: tokenizer, processor et chat template exacts utilisés ;dataset/manifest.json: compteurs, identité et preuve agrégée de couverture, sans contenu du corpus ;benchmarks/: cas, sorties et rapports base/adaptateur ;evaluations/os27-owner-grading/: rapport narratif complet, rapports et agrégats publiables de la notation 100 questions ;evaluations/privacy-audit/: synthèse et rapports expurgés des sondes de restitution exacte ;pipeline/: tokenisation, entraînement et benchmark reproductibles ;environment/packages.txt: versions du runtime ;logs/train-main.log: métriques du run, sans dump massif du corpus ;REPORT.md: rapport complet ;SHA256SUMS: intégrité du bundle publié.
Données et confidentialité
Le dataset est une conversation privée unique et n’est pas publié. Le manifest expose seulement des compteurs, paramètres de sérialisation et hashes nécessaires à l’audit. Deux audits comparatifs de restitution sensible par prompts n’ont observé aucune restitution exacte sur les cibles sélectionnées :
La V2 couvre 888 générations totales, avec attaques génériques, répétitions gloutonnes/échantillonnées, préfixes, cloze et Base64. Ce résultat est rassurant pour les sondes exécutées, mais ne prouve ni l’absence de mémorisation ni l’absence de fuite approximative ou sémantique. Les rapports publiés sont expurgés : aucune cible, aucun prompt et aucune génération brute n’y figurent.
Entraînement
- QLoRA NF4, double quantification, calcul BF16 ;
- LoRA
r=16,alpha=32, dropout0.05; - loss assistant-only ;
- ordre chronologique déterministe ;
- une traversée complète ;
- Transformers figé au commit
83d024e1bfed0d425d20bcde2b46a56b2333906edanspipeline/requirements.txt.
Les détails complets, limites et coûts figurent dans `REPORT.md`.
Usage responsable
Cet adaptateur peut reproduire des biais, erreurs, habitudes et connaissances spécialisées de la conversation source. Ne pas l’utiliser comme autorité factuelle ou agent autonome sans validation, sandbox et tests adaptés. Ne pas interpréter la faible loss d’entraînement comme une preuve de généralisation.
