Spaces:
Running
Running
|
Download docs/LEARNING.md from RDS777/TARGET_SPACE: direct link, hf CLI and curl.
- Browser
- Download file 4.89 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
4.89 kB
| # Apprentissage automatique d'UNIQUE | |
| ``` | |
| Space M.O.U.H. ──(chaque session avec tests)──▶ dataset privé RDS777/mouh-trajectories | |
| ▲ │ | |
| │ redémarrage après promotion ▼ job HF planifié (t4-small, hebdomadaire) | |
| └──── adaptateur promu ◀── porte pass@1 ◀── LoRA sur Qwen/Qwen2.5-Coder-0.5B-Instruct | |
| RDS777/unique-qwen2.5-coder-0.5b-lora | |
| ``` | |
| ## Ce qui est automatique | |
| 1. **Collecte.** Chaque session du Space qui contient des tests est écrite localement, puis poussée dans le dataset | |
| privé toutes les 10 minutes (`CommitScheduler`). Une case à cocher dans l'interface permet de l'exclure. | |
| 2. **Sélection.** Le job ne garde que les sessions certifiées dont les tests importent `solution` et contiennent | |
| un `assert`. Il les dédoublonne et les découpe par tâche (90 % train, 10 % heldout) ; une tâche n'est jamais des deux côtés. | |
| 3. **Exemples.** Pour chaque session, un exemple de génération (énoncé + tests vers code certifié) et un exemple | |
| de réparation par tentative ratée (code faux + diagnostics vers code certifié). | |
| 4. **Seuil.** Sans au moins `MIN_NEW_EXAMPLES` (50) nouveaux exemples depuis le dernier cycle, le job s'arrête en | |
| quelques minutes sans charger de modèle. | |
| 5. **Porte.** Le job exécute réellement les tests du heldout pour la base, l'adaptateur promu actuel et le candidat. | |
| Le candidat n'est promu que s'il fait passer **strictement plus** de tâches que les deux, avec au moins | |
| `MIN_HELDOUT` (15) tâches. Sinon seules ses métriques sont gardées (`runs/*.json`). | |
| 6. **Mise en service.** Après une promotion, le job redémarre le Space, qui charge le nouvel adaptateur | |
| (générateur « UNIQUE » dans la liste). | |
| ## Mise en place (une fois, uniquement sur huggingface.co) | |
| 1. **Jeton** : huggingface.co/settings/tokens → *Create new token* → type **Write** → copier. | |
| 2. **Fichiers** : page du Space → onglet *Files* → *Contribute* → *Upload files* → glisser les dossiers | |
| `mouh`, `jobs`, `docs`, `tests` et les fichiers `app.py`, `requirements.txt` du paquet → *Commit*. | |
| 3. **Réglages** : page du Space → *Settings* → *Variables and secrets* : | |
| - *New secret* `HF_TOKEN` = le jeton ; | |
| - *New secret* `UNIQUE_ADMIN_KEY` = un mot de passe de votre choix (pour le bouton « Lancer un cycle maintenant ») ; | |
| - *New variable* `MOUH_DATASET_REPO` = `RDS777/mouh-trajectories` ; | |
| - *New variable* `UNIQUE_ADAPTER_REPO` = `RDS777/unique-qwen2.5-coder-0.5b-lora` ; | |
| - *New variable* `UNIQUE_AUTOTRAIN` = `1` (c'est l'accord pour les dépenses GPU). | |
| 4. Le Space redémarre et **crée lui-même** le job planifié (lundi 03:17 UTC, `t4-small`). Vérifiez dans le panneau | |
| « Apprentissage automatique d'UNIQUE » du Space (bouton *Actualiser*) et sur huggingface.co/settings/jobs. | |
| Réglages facultatifs (variables du Space) : `UNIQUE_SCHEDULE` (expression CRON), `UNIQUE_FLAVOR`, `UNIQUE_TIMEOUT`, | |
| `MOUH_RECORD_DEFAULT=0` (journalisation décochée par défaut). Pour arrêter : supprimer `UNIQUE_AUTOTRAIN` ne suffit pas, | |
| il faut aussi suspendre ou supprimer le job sur huggingface.co/settings/jobs. | |
| ## Coûts | |
| `t4-small` coûte 0,40 $/h, facturé à la seconde. Un cycle sous le seuil dure quelques minutes (installation des | |
| dépendances comprise). Un cycle complet avec 0,5 Md de paramètres et quelques centaines d'exemples tient en | |
| général dans l'heure, mais ce n'est pas mesuré : regardez la durée réelle du premier cycle dans `runs/*.json`. | |
| ## Limites à connaître | |
| - **Le volume est le vrai goulot.** Il faut environ 150 tâches certifiées distinctes pour atteindre 15 tâches de heldout, | |
| donc une première promotion. Tant que le Space n'est utilisé qu'à la main, cela n'arrivera pas vite. | |
| La prochaine étape utile est d'alimenter le Space en lot avec des tâches munies de tests. | |
| - **Certifié ne veut pas dire correct.** Le code certifié passe les tests fournis, rien de plus. Des tests faibles | |
| produisent des exemples faibles ; le filtre écarte seulement les cas les plus évidents. | |
| - **Space public = données ouvertes à tous.** N'importe qui peut soumettre des tâches qui entreront dans l'entraînement. | |
| Rendez le Space privé, ou décochez la journalisation par défaut (variable `MOUH_RECORD_DEFAULT=0`). | |
| - **Le heldout grandit avec le temps.** La porte réévalue la base et l'adaptateur actuel sur le heldout du moment : | |
| la comparaison est toujours faite sur les mêmes tâches. Sur 15 à 30 tâches, l'intervalle de confiance reste large | |
| (`ci95` dans les métriques). | |
| - **Inférence CPU.** Sur le matériel gratuit du Space (2 vCPU), une réponse de 512 jetons peut prendre une minute ou plus. | |
| - Le code généré pendant l'évaluation est exécuté dans le conteneur éphémère du job, sans autre bac à sable. | |