Spaces:
Running
Download docs/LEARNING.md from RDS777/TARGET_SPACE: direct link, hf CLI and curl.
- Browser
- Download file 6.39 kB
-
https://huggingface.co/spaces/RDS777/TARGET_SPACE/resolve/main/docs/LEARNING.md
- Command line
-
hf download hf://spaces/RDS777/TARGET_SPACE/docs/LEARNING.md
-
curl -L -o LEARNING.md https://huggingface.co/spaces/RDS777/TARGET_SPACE/resolve/main/docs/LEARNING.md
Apprentissage continu d'UNIQUE (tout sur Hugging Face)
Obsolète depuis la v4.1 : le mode Jobs (pilote automatique, professeur, alimentation, export) est retiré. Le fonctionnement actuel est décrit dans ADR-004.
OpenCodeInstruct ─▶ job d'alimentation (CPU, chaque heure) ─┐
Space M.O.U.H. (sessions avec tests) ───────────────────────┴─▶ dataset privé RDS777/mouh-trajectories
│
┌───────────── job d'entraînement (GPU T4, relancé chaque heure s'il ne tourne pas) ◀┘
│ boucle : SFT (TRL) → porte pass@1 → GRPO récompensé par pytest (TRL) → porte → …
▼
adaptateur promu RDS777/unique-qwen2.5-coder-0.5b-lora ─▶ redémarrage du Space (générateur « UNIQUE »)
progression toutes les ~20 s ─▶ bucket privé RDS777/unique-progress ─▶ panneau en direct dans le Space
La boucle
- Alimentation (
jobs/ingest_tasks.py, CPUcpu-upgrade, chaque heure) : tranche suivante de 4 000 lignes denvidia/OpenCodeInstruct(CC BY 4.0), tests convertis en pytest, solutions ré-exécutées, seules celles qui passent sont ajoutées. - SFT (
trl.SFTTrainer, LoRA r=16, perte sur la réponse seulement) sur la tranche suivante de 2 000 exemples, en repartant de l'adaptateur en service. - Porte : pass@1 réel (tests pytest exécutés) sur un heldout figé de 100 tâches jamais vues. Promotion seulement si le candidat fait strictement mieux que l'adaptateur en service (ou que la base au départ).
- GRPO (
trl.GRPOTrainer) : 4 solutions générées par tâche, récompense = 1 si les tests passent, 0,1 si le code compile mais échoue, 0 sinon. Même porte. - Après une promotion, le Space redémarre et charge le nouvel adaptateur.
Un passage dure au plus 11 h 30 (UNIQUE_RUN_HOURS) ; le job planifié chaque heure relance la boucle dès qu'aucun passage ne tourne (jamais deux à la fois). Un passage qui démarre alors que le budget GPU du jour est épuisé s'arrête aussitôt.
Améliorations (v3) et interrupteurs de retour arrière
Chaque amélioration se coupe par une variable du Space (Settings → Variables), sans ré-uploader de fichier : le Space recrée alors le job concerné avec l'ancien comportement.
| Amélioration | Ce qu'elle fait | Interrupteur (mettre 0 pour revenir en arrière) |
|---|---|---|
| Curriculum adaptatif | GRPO choisit en priorité les tâches que l'élève réussit parfois (les seules qui donnent un signal) ; statistiques par tâche gardées d'un passage à l'autre | UNIQUE_CURRICULUM |
| Vrais échecs | les échecs d'UNIQUE pendant GRPO sont enregistrés avec leur vraie trace pytest (failures/ du dataset) |
UNIQUE_SAVE_FAILURES |
| Réflexion fondée sur les tests | 25 % des prompts GRPO demandent de corriger un échec réel à partir de sa trace | GRPO_REPAIR_FRACTION (= 0) |
| Modèle maître | job toutes les 2 h : 30 tâches nouvelles au niveau de l'élève (facile / moyen / difficile selon son score), gardées seulement si la solution passe ses tests et si les tests tuent au moins 60 % des mutants (test par mutation) ; + correction des vrais échecs, validée par pytest | UNIQUE_TEACHER (supprime le job) |
| Benchmark indépendant | HumanEval (164 tâches, jamais utilisé à l'entraînement) mesuré pour la base et pour chaque nouvel adaptateur en service ; les sessions qui partagent 13 mots consécutifs avec HumanEval sont retirées de l'entraînement | UNIQUE_BENCHMARK |
| Mémoire à long terme | recherche BM25 des 2 tâches validées les plus proches, données en exemple ; jamais la tâche elle-même ni un quasi-doublon. Mesurée avec / sans sur le heldout (panneau) | mesure : UNIQUE_MEMORY_AB ; utilisation dans le Space : UNIQUE_MEMORY=1 seulement si le panneau affiche « gain » |
Modèle maître : UNIQUE_TEACHER_MODEL (défaut Qwen/Qwen3-Coder-30B-A3B-Instruct), appelé via les Inference Providers
de Hugging Face, facturé à l'usage sur votre compte. Le jeton HF_TOKEN doit avoir le droit « Make calls to Inference
Providers ». Sans ce droit, le job du maître échoue proprement et les autres continuent.
Retour complet à la version précédente : remettre les fichiers de la version « boucle continue » (onglet Files → historique de chaque fichier), puis redémarrer le Space ; les jobs sont recréés automatiquement.
Panneau dans le Space
En haut de la page : phase en cours avec barre de progression et temps restant, budget GPU du jour, perte et récompense, score base / meilleur en service, courbe des scores avec les promotions. Rafraîchi toutes les 15 s.
Réglages (Settings → Variables and secrets)
| Variable | Défaut | Effet |
|---|---|---|
UNIQUE_AUTOTRAIN |
— | 1 = accord pour les dépenses ; sans elle, rien ne démarre |
UNIQUE_MAX_GPU_HOURS_PER_DAY |
24 |
plafond quotidien d'heures GPU (24 = non-stop) |
UNIQUE_FLAVOR |
t4-small |
matériel d'entraînement |
UNIQUE_INGEST |
1 |
0 coupe l'alimentation |
INGEST_SOURCE |
opencodeinstruct |
kodcode possible (licence CC BY-NC : non commercial) |
Le secret UNIQUE_ADMIN_KEY protège les boutons « Alimenter maintenant » et « Entraîner maintenant ».
Pour tout arrêter : suspendre les deux jobs sur huggingface.co/settings/jobs (retirer la variable ne suffit pas).
Coûts
t4-small : 0,40 $/h. En non-stop : environ 9,60 $ par jour, 290 $ par mois. L'alimentation CPU coûte quelques
centimes par jour. Réduire UNIQUE_MAX_GPU_HOURS_PER_DAY plafonne la dépense.
Limites
- Non mesuré en conditions réelles : durée d'un cycle sur T4, part des tâches qui passent la re-vérification, gain réel.
- GRPO sur un modèle de 0,5 Md n'apprend que si certaines générations réussissent déjà : sur les tâches trop dures,
toutes les récompenses sont nulles et la phase n'apporte rien (visible dans le panneau,
rewardproche de 0). - « Certifié » = passe les tests fournis. La qualité du modèle dépend de celle des tests.
- Le heldout est figé pour que les scores restent comparables ; s'il est agrandi, la base et l'adaptateur en service sont re-mesurés avant toute nouvelle promotion.