CoolFace
Modelpublic

shabaw/gemma4-sagax-os27-raw

sourceHugging Facegemmaupdated 28d agoView on Hugging Face
1likes36downloads
Model Card

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 :

VarianteScore
google/gemma-4-12B-it6/6
adaptateur OS27 raw3/6

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 :

VarianteScore owner-level
google/gemma-4-12B-it44,89/100
adaptateur OS27 raw33,26/100
delta−11,63

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.

Question représentativeBaseAdaptéCe qui semble avoir été appris
Q16 — données durables pour :attribute(...)4,357,12Séparation état métier/style et invalidation déterministe
Q28 — invariants de scroll0,595,00Le scroll déplace la géométrie peinte sans muter les bounds layout
Q32 — snapping événementiel6,037,50Calcul à la fin du geste, pas de travail per-frame inutile
Q48 — alpha prémultiplié7,5010,00Contrat ONE, ONE_MINUS_SRC_ALPHA et couverture appliquée une fois
Q52 — preuve framebuffer7,5010,00Les pixels finaux prouvent shaders, blend, ordre, clipping, atlas et driver
Q73 — benchmarks comparables7,509,69Une charge système différente rend le delta non attribuable
Q75 — invalidation plutôt que TTL7,509,69Pas de rafraîchissement périodique quand toutes les mutations sont observables
Q88 — ordre ombre/fond0,006,91L’ombre doit précéder le fond, puis bordure et contenu

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.

python
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 :

AuditCiblesSondes par varianteRestitutions exactes baseRestitutions exactes adaptées
V1 rapide173700
V2 étendu8044400

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, dropout 0.05 ;
  • —loss assistant-only ;
  • —ordre chronologique déterministe ;
  • —une traversée complète ;
  • —Transformers figé au commit 83d024e1bfed0d425d20bcde2b46a56b2333906e dans pipeline/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.