@mcptoolshop/backpropagate 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +217 -211
- package/README.fr.md +216 -210
- package/README.hi.md +216 -210
- package/README.it.md +221 -215
- package/README.ja.md +221 -215
- package/README.md +216 -210
- package/README.pt-BR.md +215 -209
- package/README.zh.md +215 -209
- package/bin/backpropagate.js +29 -196
- package/package.json +2 -5
package/README.fr.md
CHANGED
|
@@ -10,144 +10,152 @@
|
|
|
10
10
|
<a href="https://github.com/mcp-tool-shop-org/backpropagate/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/backpropagate/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
11
11
|
<a href="https://pypi.org/project/backpropagate/"><img src="https://img.shields.io/pypi/v/backpropagate" alt="PyPI"></a>
|
|
12
12
|
<a href="https://codecov.io/gh/mcp-tool-shop-org/backpropagate"><img src="https://img.shields.io/codecov/c/github/mcp-tool-shop-org/backpropagate" alt="Coverage"></a>
|
|
13
|
+
<a href="https://scorecard.dev/viewer/?uri=github.com/mcp-tool-shop-org/backpropagate"><img src="https://api.scorecard.dev/projects/github.com/mcp-tool-shop-org/backpropagate/badge" alt="OpenSSF Scorecard"></a>
|
|
13
14
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
15
|
<a href="https://mcp-tool-shop-org.github.io/backpropagate/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
# Entraînez un adaptateur. Envoyez-le à Ollama. Passez à autre chose
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Backpropagate est une bibliothèque Python pour l'ajustement fin de grands modèles de langage sur un seul GPU. Trois lignes de code suffisent pour entraîner un modèle de 7 milliards de paramètres sur une carte de 16 Go. Une seule commande permet de l'exporter vers Ollama, ce qui vous permet d'utiliser la commande `ollama run` pour exécuter votre modèle ajusté. Il fonctionne parfaitement sous Windows.
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
```python
|
|
23
|
+
from backpropagate import Trainer
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
trainer = Trainer("Qwen/Qwen2.5-7B-Instruct")
|
|
26
|
+
trainer.train("my_data.jsonl", steps=100)
|
|
27
|
+
trainer.export("gguf", quantization="q4_k_m")
|
|
28
|
+
```
|
|
24
29
|
|
|
25
30
|
```bash
|
|
26
|
-
|
|
31
|
+
backprop ollama register ./output/lora --name my-model
|
|
32
|
+
ollama run my-model
|
|
27
33
|
```
|
|
28
34
|
|
|
29
|
-
|
|
30
|
-
from backpropagate import Trainer
|
|
35
|
+
C'est tout. Il n'y a pas de fichier de configuration YAML. Il n'y a pas de "cérémonie" `accelerate launch`. Il n'y a pas de tutoriel séparé pour "convertir ensuite en GGUF". Si vous avez un GPU CUDA et un fichier JSONL contenant vos données d'entraînement, vous n'êtes qu'à trois lignes d'un ajustement fin fonctionnel.
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
trainer.train("examples/quickstart.jsonl", steps=10)
|
|
34
|
-
trainer.export("gguf", quantization="q4_k_m") # Ready for Ollama
|
|
35
|
-
```
|
|
37
|
+
## Installation
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
```bash
|
|
40
|
+
# Recommended: isolated Python install (no conflicts with system Python or other projects)
|
|
41
|
+
pipx install backpropagate
|
|
42
|
+
|
|
43
|
+
# Or via uv (faster install, same isolation)
|
|
44
|
+
uv tool install backpropagate
|
|
38
45
|
|
|
39
|
-
|
|
46
|
+
# Standard pip (if you manage your own virtualenv)
|
|
47
|
+
pip install backpropagate
|
|
48
|
+
```
|
|
40
49
|
|
|
41
|
-
|
|
50
|
+
Si vous souhaitez les fonctionnalités optionnelles, remplacez l'installation par l'une de ces options :
|
|
42
51
|
|
|
43
52
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
pipx install "backpropagate[standard]" # adds Unsloth (2x faster training) + the web UI
|
|
54
|
+
pipx install "backpropagate[full]" # adds everything: unsloth, ui, monitoring, export, etc.
|
|
46
55
|
```
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
Préférez Docker ? La commande `docker pull ghcr.io/mcp-tool-shop-org/backpropagate:latest` fonctionne également. Des images sont disponibles pour `linux/amd64` et `linux/arm64`, ce qui permet aux utilisateurs d'Apple Silicon et d'ARM Linux d'utiliser une image native. Un fichier `compose.yaml` standard pour "l'interface utilisateur dans un conteneur" se trouve à la racine du dépôt. La commande `docker compose up` lance l'interface utilisateur web sur `http://localhost:7860` avec un volume persistant `~/.backpropagate`.
|
|
49
58
|
|
|
50
|
-
##
|
|
59
|
+
## La place de Backpropagate
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
Il existe plusieurs bonnes bibliothèques pour l'ajustement fin des LLM. Chacune est excellente pour des choses différentes :
|
|
53
62
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
- **[Axolotl](https://github.com/OpenAccess-AI-Collective/axolotl)** — si vous aimez les configurations YAML et que vous souhaitez avoir une communauté de recettes à suivre.
|
|
64
|
+
- **[LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory)** — si vous voulez une interface utilisateur web et une prise en charge intégrée de DPO/PPO/RLHF.
|
|
65
|
+
- **[Unsloth](https://github.com/unslothai/unsloth)** — si vous avez besoin de la formation la plus rapide possible et que vous utilisez un modèle pris en charge.
|
|
66
|
+
- **[torchtune](https://github.com/pytorch/torchtune)** — si vous voulez les recettes PyTorch natives de Meta que vous pouvez modifier.
|
|
58
67
|
|
|
59
|
-
|
|
68
|
+
Backpropagate est l'option manquante : **une API Python en 3 lignes pour les utilisateurs individuels sur un seul GPU grand public, qui souhaitent entraîner un adaptateur et le distribuer.** Pas de YAML, pas d'interface utilisateur graphique, pas de DPO/PPO, pas de configuration multi-nœuds. Juste la boucle dont tout le monde a réellement besoin et l'étape d'exportation qui est un obstacle.
|
|
60
69
|
|
|
61
|
-
|
|
70
|
+
Si vous avez essayé l'une des bibliothèques ci-dessus et que vous avez été rebuté par la "cérémonie" des fichiers de configuration, ou si vous avez rencontré un problème de compatibilité avec un modèle, ou si vous vouliez des paramètres par défaut adaptés à Windows, Backpropagate est fait pour vous.
|
|
62
71
|
|
|
63
|
-
|
|
64
|
-
|---------|----------|
|
|
65
|
-
| L'affinage est complexe | 3 lignes : chargement, entraînement, sauvegarde |
|
|
66
|
-
| Windows est un cauchemar | Prise en charge complète de Windows |
|
|
67
|
-
| La gestion de la VRAM est difficile | Ajustement automatique de la taille des lots, surveillance du GPU |
|
|
68
|
-
| L'exportation des modèles est déroutante | Exportation GGUF en un clic + enregistrement automatique avec Ollama |
|
|
69
|
-
| Les longues exécutions entraînent l'oubli | Entraînement SLAO sur plusieurs exécutions |
|
|
72
|
+
## Ce que vous pouvez ajuster finement sur un GPU grand public de 16 Go
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
Voici les limites pratiques sur une carte de 16 Go (RTX 4080 / 5080 / 4070 Ti Super) :
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
76
|
+
| Modèle | Méthode | Statut |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| Qwen-3.5-4B / Phi-4-mini-3.8B / SmolLM3-3B | LoRA / QLoRA / DoRA | Confortable. Longueur de séquence complète, avec de la marge. |
|
|
79
|
+
| Qwen-2.5-7B / Llama-3.1-8B / Mistral-7B | QLoRA | Standard. Environ 7-8 Go. Les paramètres par défaut de Backpropagate. |
|
|
80
|
+
| Llama-3 13B | QLoRA + échantillonnage | Juste limite, mais fonctionne. Utilisez des séquences plus courtes. |
|
|
81
|
+
| Mixtral 8x7B (47 milliards de paramètres au total) | AQLM 2 bits + LoRA | Expérimental en v1.4. Le plus grand modèle que vous puissiez utiliser sur une carte de 16 Go. |
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
Pour les modèles de 3 milliards de paramètres et moins, un ajustement fin complet (et non seulement LoRA) est possible sur 16 Go et est prévu comme une option `mode="full"` pour la version 1.4. Pour les modèles de 7 milliards de paramètres et plus, un ajustement fin complet nécessite un GPU de 24 Go ou plus. Envisagez de louer un A100 dans le cloud, ou utilisez LoRA, qui, selon les recherches récentes, offre une qualité équivalente à l'ajustement fin complet pour la plupart des tâches post-entraînement (voir la section "ce que Backpropagate n'est pas" pour les références).
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
pip install backpropagate # Core only (minimal)
|
|
84
|
-
pip install backpropagate[unsloth] # + Unsloth 2x faster training
|
|
85
|
-
pip install backpropagate[ui] # + Reflex (Radix UI) web interface
|
|
86
|
-
pip install backpropagate[standard] # unsloth + ui (recommended)
|
|
87
|
-
pip install backpropagate[full] # Everything
|
|
88
|
-
```
|
|
85
|
+
## Ce que Backpropagate N'EST PAS
|
|
89
86
|
|
|
90
|
-
|
|
91
|
-
|-------|-------------|--------------|
|
|
92
|
-
| `unsloth` | Entraînement 2 fois plus rapide, 50 % de VRAM en moins | unsloth |
|
|
93
|
-
| `ui` | Interface web Reflex (Radix UI) | reflex>=0.9.2, fastapi>=0.115 |
|
|
94
|
-
| `validation` | Validation de configuration Pydantic | pydantic, pydantic-settings |
|
|
95
|
-
| `export` | Exportation GGUF pour Ollama | llama-cpp-python |
|
|
96
|
-
| `monitoring` | WandB + surveillance du système (intégré au trainer depuis la version 1.1.0) | wandb, psutil |
|
|
97
|
-
| `observability` | Traçage OpenTelemetry | opentelemetry-api, opentelemetry-sdk |
|
|
98
|
-
| `logging` | Journalisation structurée | structlog |
|
|
99
|
-
| `security` | Authentification JWT + génération de jetons | PyJWT, cryptography |
|
|
100
|
-
| `production` | unsloth + ui + validation + journalisation + sécurité | (ensemble) |
|
|
87
|
+
Une description honnête aide tout le monde. Backpropagate ne fait pas ces choses, et essayer de le faire le ferait vivre une expérience pire que celle de chercher l'outil approprié :
|
|
101
88
|
|
|
102
|
-
**
|
|
89
|
+
- **Affinage précis des modèles de plus de 7 milliards de paramètres** — Backpropagate utilise LoRA/QLoRA, qui entraîne un petit adaptateur au lieu de mettre à jour chaque poids. Pour les modèles de 7 milliards de paramètres et plus, l'affinage complet nécessite 24 Go de mémoire GPU et ne tient pas sur une carte grand public de 16 Go. Pour les modèles de 3 milliards de paramètres et moins, l'affinage complet est possible avec 16 Go ; une option `mode="full"` est prévue pour la version 1.4. L'essentiel : des recherches récentes ([Biderman 2024](https://arxiv.org/abs/2405.09673), [Thinking Machines 2025](https://thinkingmachines.ai/blog/lora/)) montrent que LoRA, avec une configuration appropriée, offre une qualité d'affinage comparable à l'affinage complet pour la plupart des tâches post-entraînement (suivi d'instructions, adaptation au domaine, personnalité/style), tout en utilisant 67 % moins de ressources de calcul. Ainsi, pour la plupart des tâches que les utilisateurs souhaitent réellement effectuer, vous ne perdez rien en utilisant LoRA. Si vous avez réellement besoin d'un affinage complet d'un modèle de plus de 7 milliards de paramètres, utilisez directement le module `transformers.Trainer` de HuggingFace sur une carte de 24 Go ou plus.
|
|
90
|
+
- **DPO / PPO / GRPO / affinage par préférences** — Backpropagate effectue uniquement un affinage supervisé en une seule étape. Pour l'apprentissage par préférences, utilisez directement TRL ou LLaMA-Factory.
|
|
91
|
+
- **Entraînement multi-nœuds** — uniquement un GPU sur une seule machine. L'utilisation de plusieurs GPU sur une seule machine est possible (via `accelerate launch`), mais n'est pas officiellement prise en charge.
|
|
92
|
+
- **Entraînement sur macOS** — Apple Silicon ne dispose pas de CUDA, l'entraînement doit donc être effectué sur une machine Linux ou Windows avec un GPU NVIDIA. Vous pouvez toujours exécuter le modèle entraîné sur un Mac via Ollama.
|
|
93
|
+
- **Tout ce qui se trouve en dehors des familles de modèles testées** — Qwen 2.5 / 3.5 (7B / 4B), Phi-4-mini-3.8B, SmolLM3-3B, Llama 3.2 (3B / 1B), Mistral 7B. D'autres modèles fonctionnent souvent, mais ne sont pas inclus dans les tests d'intégration continue.
|
|
103
94
|
|
|
104
|
-
|
|
95
|
+
Si vous avez besoin de ces fonctionnalités, utilisez l'une des bibliothèques mentionnées ci-dessus. Elles sont plus adaptées à cela.
|
|
105
96
|
|
|
106
|
-
|
|
97
|
+
## Ce que Backpropagate vous offre :
|
|
107
98
|
|
|
108
|
-
|
|
109
|
-
- **Windows.** Visual Studio Build Tools (C++) et CMake sont requis pour l'extension `[export]` (construction de `llama-cpp-python` à partir du code source). La version de `bitsandbytes` est maintenant disponible nativement pour Windows (>= 0.43) ; les anciens guides mentionnant `bitsandbytes-windows` sont obsolètes.
|
|
110
|
-
- **macOS.** L'entraînement sur GPU **n'est pas pris en charge** ; il n'y a pas de CUDA. Vous pouvez installer Backpropagate pour exécuter l' *inférence* sur un fichier GGUF exporté via Ollama, mais `trainer.train()` génère une erreur `DEP_GPU_NOT_AVAILABLE`. Utilisez une machine avec CUDA pour l'entraînement.
|
|
111
|
-
- **Linux.** La plupart des distributions fonctionnent sans problème. Si vous utilisez la version binaire PyPI, notez que la version Linux utilise torch uniquement pour le CPU (afin de respecter la limite de 2 Go des fichiers joints sur GitHub) ; installez d'abord la version CUDA correspondante à partir de pytorch.org.
|
|
99
|
+
Quatre éléments, dans une seule installation :
|
|
112
100
|
|
|
113
|
-
|
|
101
|
+
**1. Une API simple en 3 lignes qui fonctionne sans fichier de configuration.**
|
|
102
|
+
Le code en haut de ce fichier README est exécutable de bout en bout. Pas de `accelerate config`, pas de YAML, pas de surcharge Hydra. Il suffit de `Trainer(model).train(data)` et vous avez un modèle affiné.
|
|
114
103
|
|
|
115
|
-
|
|
104
|
+
**2. Une compatibilité Windows qui fonctionne réellement.**
|
|
105
|
+
La plupart des bibliothèques de machine learning traitent Windows comme une option secondaire. Backpropagate est testé de manière approfondie sur Windows + RTX 5080. La bibliothèque gère les particularités de l'environnement d'exécution : elle sait comment prétraiter vos données pour éviter les plantages liés au multiprocessing de Windows, elle désactive automatiquement xformers sur les cartes RTX 40/50 où cela entraînerait des problèmes, et elle sélectionne les paramètres du chargeur de données qui évitent les erreurs. Vous n'avez pas besoin de connaître ces détails. Tout simplement, cela fonctionne.
|
|
116
106
|
|
|
117
|
-
|
|
107
|
+
**3. Conçu pour les exécutions automatisées.**
|
|
108
|
+
L'entraînement prend des heures. Vous ne voulez pas devoir le surveiller en permanence. Backpropagate est conçu pour fonctionner en arrière-plan :
|
|
118
109
|
|
|
119
|
-
|
|
110
|
+
- Si vous manquez de mémoire GPU, il réduit automatiquement la taille du lot et retente, jusqu'à trois fois. Pas de réglages manuels nécessaires.
|
|
111
|
+
- Si votre GPU devient trop chaud, il met en pause jusqu'à ce que la température redescende, puis reprend.
|
|
112
|
+
- Chaque point de contrôle est enregistré de manière atomique : si votre ordinateur portable plante pendant la sauvegarde, le dernier point de contrôle valide est toujours conservé.
|
|
113
|
+
- Chaque exécution d'entraînement reçoit un identifiant unique qui est ajouté à chaque ligne de journal, à chaque point de contrôle et à chaque entrée Weights & Biases. Si quelque chose ne va pas, cet identifiant permet à un développeur de corréler toutes les informations.
|
|
114
|
+
- Les erreurs sont accompagnées de codes stables (`RUNTIME_GPU_OOM`, `DEP_OLLAMA_REGISTRATION_FAILED`, etc.), ce qui vous permet de rechercher dans vos journaux et dans le [guide de dépannage](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) pour trouver la solution. Les erreurs spécifiques à CUDA ont une [page de dépannage dédiée](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/).
|
|
120
115
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
| `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
124
|
-
| `BACKPROPAGATE_LOG_JSON` | auto | Force les journaux en JSON (`true`) ou sur la console (`false`) |
|
|
125
|
-
| `BACKPROPAGATE_LOG_FILE` | non défini | Chemin vers le répertoire où les journaux sont enregistrés |
|
|
126
|
-
| `BACKPROPAGATE_DEFER_FEATURE_DETECTION` | non défini | Ignore la détection des dépendances optionnelles au démarrage pour un démarrage plus rapide de l'interface en ligne de commande |
|
|
127
|
-
| `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE` | `true` | Lorsque `true`, refuse `backprop ui --share` sans l'option `--auth` |
|
|
128
|
-
| `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Répertoire de base pour toutes les opérations d'écriture sur le système de fichiers de l'interface utilisateur ; liste de contrôle d'accès validée |
|
|
129
|
-
| `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modèle par défaut |
|
|
130
|
-
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Taux d'apprentissage |
|
|
131
|
-
| `BACKPROPAGATE_LORA__R` | `16` | Rang LoRA |
|
|
116
|
+
**4. Une seule commande pour passer d'un adaptateur entraîné à `ollama run`.**
|
|
117
|
+
De nombreuses bibliothèques entraînent un modèle. Peu d'entre elles vous facilitent la tâche lorsque vous souhaitez réellement l'utiliser. Backpropagate exporte vers GGUF (le format utilisé par Ollama) et enregistre un modèle Ollama en une seule commande. Vous passez de "entraînement terminé" à "je peux discuter avec mon modèle affiné" en environ 30 secondes.
|
|
132
118
|
|
|
133
|
-
|
|
119
|
+
## Démarrage rapide
|
|
134
120
|
|
|
135
|
-
|
|
121
|
+
Le dépôt contient un petit ensemble de données d'exemple afin que le code du début de ce fichier README puisse être exécuté sur une installation propre :
|
|
136
122
|
|
|
137
|
-
|
|
123
|
+
```bash
|
|
124
|
+
pipx install "backpropagate[standard]"
|
|
138
125
|
|
|
139
|
-
|
|
126
|
+
python -c "
|
|
140
127
|
from backpropagate import Trainer
|
|
128
|
+
trainer = Trainer('Qwen/Qwen2.5-7B-Instruct')
|
|
129
|
+
trainer.train('examples/quickstart.jsonl', steps=10)
|
|
130
|
+
trainer.export('gguf', quantization='q4_k_m')
|
|
131
|
+
"
|
|
132
|
+
```
|
|
141
133
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
134
|
+
Cela entraîne un adaptateur Qwen 2.5 7B sur 5 courtes conversations au format ShareGPT, puis exporte le résultat au format GGUF. Pour vos propres données, formatez votre fichier JSONL avec un exemple par ligne :
|
|
135
|
+
|
|
136
|
+
```jsonl
|
|
137
|
+
{"conversations": [{"from": "human", "value": "What is Python?"}, {"from": "gpt", "value": "A programming language."}]}
|
|
138
|
+
{"conversations": [{"from": "human", "value": "Explain recursion."}, {"from": "gpt", "value": "A function that calls itself."}]}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Les formats Alpaca (`instruction` / `output`), OpenAI chat (`messages`) et texte brut fonctionnent également. Backpropagate détecte automatiquement le format.
|
|
142
|
+
|
|
143
|
+
Pour des flux de travail plus complets (affinage et publication sur le Hub Hugging Face, reprise après une erreur de mémoire, exécution multiple de SLAO sur une longue période, etc.), consultez la [page des recettes du manuel](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/).
|
|
144
|
+
|
|
145
|
+
### Interface utilisateur web (facultatif)
|
|
146
|
+
|
|
147
|
+
Si vous préférez cliquer plutôt que taper du code Python, installez le module d'interface utilisateur et lancez-le :
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
pipx install "backpropagate[ui]"
|
|
151
|
+
backprop ui --port 7862
|
|
146
152
|
```
|
|
147
153
|
|
|
148
|
-
|
|
154
|
+
Une interface web locale s'ouvre à l'adresse `http://localhost:7862`, où vous pouvez spécifier un ensemble de données, choisir un modèle, effectuer un entraînement et exporter le résultat. L'interface utilisateur est par défaut accessible uniquement localement. Pour la rendre accessible à d'autres appareils, consultez la section [Interface utilisateur web](#web-ui) ci-dessous pour connaître le contrat de sécurité `--share` + `--auth`.
|
|
155
|
+
|
|
156
|
+
## Entraînement en plusieurs étapes
|
|
149
157
|
|
|
150
|
-
|
|
158
|
+
Si vous souhaitez effectuer un affinage incrémental sur plusieurs ensembles de données (par exemple, si vous recevez de nouvelles données d'entraînement chaque semaine et que vous souhaitez les ajouter sans oublier ce que vous avez appris auparavant), le mode `multi_run` de Backpropagate est fait pour vous :
|
|
151
159
|
|
|
152
160
|
```python
|
|
153
161
|
from backpropagate import Trainer
|
|
@@ -159,198 +167,196 @@ result = trainer.multi_run(
|
|
|
159
167
|
num_runs=5,
|
|
160
168
|
steps_per_run=100,
|
|
161
169
|
samples_per_run=1000,
|
|
162
|
-
merge_mode="slao", # Single LoRA Continual Learning via Asymmetric Merging
|
|
163
170
|
)
|
|
164
171
|
```
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
### Exportation vers Ollama
|
|
169
|
-
|
|
170
|
-
```python
|
|
171
|
-
# Export to GGUF
|
|
172
|
-
result = trainer.export("gguf", quantization="q4_k_m")
|
|
173
|
-
|
|
174
|
-
# Register with Ollama separately
|
|
175
|
-
from backpropagate import register_with_ollama
|
|
176
|
-
register_with_ollama(result.path, "my-finetuned-model")
|
|
177
|
-
# ollama run my-finetuned-model
|
|
178
|
-
```
|
|
173
|
+
Cela effectue cinq passes d'entraînement, en fusionnant l'adaptateur entre chaque passe de manière à préserver les connaissances antérieures tout en intégrant de nouveaux exemples. Cette technique est basée sur des recherches récentes en matière d'apprentissage continu. Consultez la section [Références](#references) en bas de ce fichier README.
|
|
179
174
|
|
|
180
|
-
|
|
175
|
+
La version en ligne de commande :
|
|
181
176
|
|
|
182
177
|
```bash
|
|
183
|
-
backprop
|
|
184
|
-
backprop multi-run --data my_data.jsonl --runs 5 --steps 100
|
|
185
|
-
backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --ollama-name my-model
|
|
186
|
-
backprop ui --port 7862
|
|
187
|
-
backprop info
|
|
188
|
-
backprop list-runs # v1.1.0: query past training runs
|
|
189
|
-
backprop show-run <run-id> # v1.1.0: detail view
|
|
190
|
-
backprop resume <run-id> # v1.1.0: resume a crashed multi-run
|
|
191
|
-
backprop push ./output/lora --repo me/my-model # v1.1.0: push adapter to HF Hub
|
|
178
|
+
backprop multi-run --data my_data.jsonl --runs 5 --steps 100 --samples 1000
|
|
192
179
|
```
|
|
193
180
|
|
|
194
|
-
|
|
181
|
+
## Reprise à partir d'un point de contrôle
|
|
195
182
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
Un cycle d'entraînement interrompu à la quatrième étape peut désormais être repris. Chaque session d'entraînement enregistre son identifiant (`run_id`) à la fois dans le fichier `run_history.json` et dans le fichier de manifeste des points de contrôle sur le disque, ce qui permet de reprendre l'entraînement en une seule commande.
|
|
183
|
+
Une session d'entraînement en cinq étapes qui se bloque à la quatrième étape peut être reprise. Chaque session d'entraînement en plusieurs étapes enregistre son ID de session dans l'historique et le manifeste du point de contrôle, ce qui vous permet de reprendre là où vous vous étiez arrêté en une seule commande :
|
|
199
184
|
|
|
200
185
|
```bash
|
|
201
|
-
backprop resume <run-id>
|
|
202
|
-
backprop multi-run --data ... --resume <run-id>
|
|
203
|
-
backprop train --data ... --resume <run-id>
|
|
186
|
+
backprop resume <run-id>
|
|
187
|
+
backprop multi-run --data ... --resume <run-id>
|
|
188
|
+
backprop train --data ... --resume <run-id> # single-run resume
|
|
204
189
|
```
|
|
205
190
|
|
|
206
|
-
Par défaut,
|
|
207
|
-
|
|
208
|
-
Lorsqu'une session d'entraînement est reprise, le dernier point de contrôle associé à cet `run_id` est chargé dans le modèle, l'état de fusion SLAO est restauré à partir du répertoire `slao/` situé à côté du point de contrôle, et le cycle d'entraînement reprend à partir de `last_completed_run + 1`. L'état de la ligne d'historique passe à `running`, ce qui permet à la commande `backprop list-runs --status running` d'afficher la session en cours.
|
|
191
|
+
Par défaut, `backprop multi-run` (sans `--resume`) détecte automatiquement une session en cours dans le même répertoire de sortie et la reprend. Pour forcer un démarrage propre, spécifiez un nouveau répertoire de sortie.
|
|
209
192
|
|
|
210
|
-
|
|
193
|
+
## Historique de l'entraînement
|
|
211
194
|
|
|
212
|
-
|
|
195
|
+
Chaque invocation de `backprop train` et `backprop multi-run` enregistre une ligne dans `<output>/run_history.json`, contenant des informations sur le modèle utilisé, l'ensemble de données, les hyperparamètres, l'état, la perte finale et l'historique des pertes. Vous pouvez afficher et examiner les sessions précédentes :
|
|
213
196
|
|
|
214
197
|
```bash
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
backprop
|
|
198
|
+
backprop list-runs # last 20 runs
|
|
199
|
+
backprop list-runs --status failed # filter by status
|
|
200
|
+
backprop list-runs --json --limit 100 # machine-readable
|
|
201
|
+
backprop show-run abcd1234 # detail view (partial ID is fine)
|
|
218
202
|
```
|
|
219
203
|
|
|
220
|
-
|
|
204
|
+
## Suivi des expériences
|
|
221
205
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
Chaque invocation de `backprop train` et `backprop multi-run` enregistre une ligne dans le fichier `<output>/run_history.json` contenant l'identifiant de l'exécution, le modèle, le jeu de données, les hyperparamètres, l'état, la perte finale, l'historique des pertes et, pour les exécutions multiples, le calendrier de fusion SLAO. Pour afficher les exécutions récentes, utilisez la commande appropriée.
|
|
206
|
+
Backpropagate détecte automatiquement les outils de suivi d'expériences installés (Weights & Biases, TensorBoard, MLflow) et les configure. Si `wandb` est installé et que vous êtes connecté, chaque session enregistre automatiquement les données sur W&B avec un nom de session correspondant à l'ID de session enregistré sur le disque. Vous pouvez ainsi effectuer une recherche sur W&B, vos journaux et `run_history.json` en utilisant un seul identifiant.
|
|
225
207
|
|
|
226
208
|
```bash
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
backprop
|
|
230
|
-
backprop show-run abcd1234 # detail view (partial run_id ok)
|
|
209
|
+
pip install backpropagate[monitoring] # installs wandb + psutil
|
|
210
|
+
wandb login # one-time setup
|
|
211
|
+
backprop train --data my_data.jsonl
|
|
231
212
|
```
|
|
232
213
|
|
|
233
|
-
|
|
214
|
+
Pour ne pas utiliser ces outils, utilisez `Trainer(report_to=["wandb"])`, `Trainer(report_to=["tensorboard"])` ou `Trainer(report_to="none")`.
|
|
234
215
|
|
|
235
|
-
|
|
216
|
+
## Interface web
|
|
236
217
|
|
|
237
|
-
|
|
218
|
+
L'interface web Reflex est facultative. Pour l'installer, utilisez `pipx install "backpropagate[ui]"` et lancez-la :
|
|
238
219
|
|
|
239
220
|
```bash
|
|
240
221
|
backprop ui --port 7862
|
|
241
222
|
```
|
|
242
223
|
|
|
243
|
-
|
|
224
|
+
L'interface utilisateur s'exécute localement à l'adresse `http://localhost:7862`. Pour la rendre accessible à d'autres appareils (autres personnes sur votre réseau, une URL publique, etc.), vous devez utiliser les options `--share` (ou `--host`) en combinaison avec `--auth` :
|
|
244
225
|
|
|
245
226
|
```bash
|
|
246
227
|
backprop ui --share --auth alice:hunter2
|
|
247
228
|
```
|
|
248
229
|
|
|
249
|
-
|
|
230
|
+
`backprop ui --share` sans `--auth` génère une erreur. La raison est que `--share` publie une URL que toute personne sur Internet peut atteindre, et sans authentification, cela signifie que toute personne peut contrôler votre pipeline d'entraînement et lire votre jeton HuggingFace. Il n'y a pas d'option pour désactiver cette fonctionnalité. Si vous ne souhaitez pas définir de crédentielles, utilisez plutôt le transfert de port SSH :
|
|
250
231
|
|
|
251
|
-
|
|
232
|
+
```bash
|
|
233
|
+
# On the client:
|
|
234
|
+
ssh -L 7860:localhost:7860 <your-training-host>
|
|
235
|
+
# On the server:
|
|
236
|
+
backprop ui # no --share
|
|
237
|
+
# Then open http://localhost:7860 in your local browser
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Consultez [handbook/security.md](https://mcp-tool-shop-org.github.io/backpropagate/handbook/security/) pour connaître le modèle de menace complet.
|
|
252
241
|
|
|
253
242
|
Les opérations d'écriture sur le système de fichiers via l'interface utilisateur sont limitées à un seul répertoire :
|
|
254
243
|
|
|
255
244
|
- Par défaut : `~/.backpropagate/ui-outputs`
|
|
256
|
-
- Pour modifier : `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own`
|
|
257
|
-
-
|
|
245
|
+
- Pour modifier : définissez `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own`
|
|
246
|
+
- La modification est validée par une liste de contrôle — les chemins système ou d'informations d'identification (`/etc`, `~/.ssh`, `~/.aws`, `C:\Windows\System32`, etc.) sont refusés.
|
|
258
247
|
|
|
259
|
-
##
|
|
248
|
+
## Notes sur la plateforme
|
|
260
249
|
|
|
261
|
-
|
|
250
|
+
**Prérequis :** Python 3.10+ · GPU CUDA (8 Go+ de VRAM) · PyTorch 2.0+
|
|
262
251
|
|
|
263
|
-
|
|
264
|
-
- Désactivation automatique de xformers pour les séries RTX 40/50.
|
|
265
|
-
- Paramètres de dataloader sécurisés.
|
|
266
|
-
- Testé sur RTX 5080 (16 Go de VRAM).
|
|
252
|
+
Python 3.10 atteindra la fin de son cycle de vie en octobre 2026, et Backpropagate prévoit de supprimer le support de Python 3.10 dans la version 1.4. Pour les nouvelles installations, privilégiez Python 3.11 ou 3.12 — Python 3.11 est la version la plus testée.
|
|
267
253
|
|
|
268
|
-
|
|
254
|
+
Backpropagate gère les particularités de l'exécution sur différentes plateformes, mais il ne peut pas résoudre les problèmes d'installation. Les deux problèmes les plus courants sont :
|
|
269
255
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
| Qwen 2.5 7B | ~12 Go | Moyenne | Meilleure |
|
|
273
|
-
| Qwen 2.5 3B | ~8 Go | Rapide | Bonne |
|
|
274
|
-
| Llama 3.2 3B | ~8 Go | Rapide | Bonne |
|
|
275
|
-
| Llama 3.2 1B | ~6 Go | Très rapide | Basique |
|
|
276
|
-
| Mistral 7B | ~12 Go | Moyenne | Bonne |
|
|
256
|
+
- **Mauvais fichier "wheel" CUDA.** PyTorch est publié avec une version binaire par version de CUDA. Si vous choisissez la mauvaise version, vous obtenez silencieusement une version de PyTorch qui n'utilise que le processeur, et l'entraînement est extrêmement lent. Utilisez le sélecteur de "wheel" à l'adresse <https://pytorch.org/get-started/locally/> pour votre pilote. Exécutez `nvidia-smi` pour voir votre version de pilote / CUDA.
|
|
257
|
+
- **Windows + exportation GGUF.** L'option `[export]` construit `llama-cpp-python` à partir du code source, ce qui nécessite les outils de construction Visual Studio (composant C++) et CMake.
|
|
277
258
|
|
|
278
|
-
|
|
259
|
+
**macOS :** L'entraînement sur GPU n'est pas pris en charge (pas de CUDA). Vous pouvez exécuter l'adaptateur entraîné sur un Mac via Ollama, mais `trainer.train()` génère une erreur `DEP_GPU_NOT_AVAILABLE`. Utilisez une machine Linux ou Windows avec CUDA pour l'entraînement lui-même.
|
|
279
260
|
|
|
261
|
+
Consultez la [page du manuel de dépannage](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) pour obtenir un guide complet de résolution des problèmes d'installation, et la [page de dépannage CUDA dédiée](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) pour les problèmes liés aux pilotes / VRAM / xformers / bf16-vs-fp16.
|
|
262
|
+
|
|
263
|
+
## Interface en ligne de commande
|
|
264
|
+
|
|
265
|
+
Chaque API Python a un équivalent en ligne de commande (CLI) :
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
backprop train --data my_data.jsonl --model Qwen/Qwen2.5-7B-Instruct --steps 100
|
|
269
|
+
backprop multi-run --data my_data.jsonl --runs 5 --steps 100
|
|
270
|
+
backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --ollama-name my-model
|
|
271
|
+
backprop ui --port 7862
|
|
272
|
+
backprop info # environment + version snapshot
|
|
273
|
+
backprop list-runs # past training runs
|
|
274
|
+
backprop show-run <run-id> # detail view
|
|
275
|
+
backprop resume <run-id> # resume a crashed run
|
|
276
|
+
backprop push ./output/lora --repo me/my-model # push adapter to HuggingFace Hub
|
|
277
|
+
backprop diff-runs <run-a> <run-b> # diff two runs side by side
|
|
278
|
+
backprop replay <run-id> # re-run with same config / dataset
|
|
279
|
+
backprop export-runs --format jsonl # bulk export run history
|
|
280
280
|
```
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
281
|
+
|
|
282
|
+
Référence complète disponible sur la [page de référence du CLI](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/), ou `backprop <sous-commande> --help`.
|
|
283
|
+
|
|
284
|
+
## Configuration
|
|
285
|
+
|
|
286
|
+
Chaque paramètre peut être modifié via une variable d'environnement en utilisant le préfixe `BACKPROPAGATE_` :
|
|
287
|
+
|
|
288
|
+
| Variable | Valeur par défaut | Notes |
|
|
289
|
+
|---|---|---|
|
|
290
|
+
| `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
291
|
+
| `BACKPROPAGATE_LOG_JSON` | auto | Forcer les journaux JSON ou console |
|
|
292
|
+
| `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modèle par défaut |
|
|
293
|
+
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Taux d'apprentissage |
|
|
294
|
+
| `BACKPROPAGATE_LORA__R` | `256` | Rang LoRA (valeur par défaut de la version 1.3 ; utilisez `--lora-preset=fast` pour la valeur par défaut de la version 1.2.x, qui est 16) |
|
|
295
|
+
| `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Espace de stockage du système de fichiers de l'interface utilisateur |
|
|
296
|
+
|
|
297
|
+
Les clés imbriquées utilisent un double tiret bas (`MODEL__NAME`, et non `MODEL_NAME`). La référence complète est disponible sur la [page des variables d'environnement du manuel](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/).
|
|
298
|
+
|
|
299
|
+
## Modèles préconfigurés
|
|
300
|
+
|
|
301
|
+
| Modèle | VRAM | Licence | Notes |
|
|
302
|
+
|---|---|---|---|
|
|
303
|
+
| Qwen-3.5-4B | ~8 Go | Apache 2.0 | Valeur par défaut recommandée pour les modèles de moins de 5 milliards de paramètres. Meilleure qualité pour cette taille. |
|
|
304
|
+
| Phi-4-mini-3.8B | ~8 Go | MIT | Excellent pour le raisonnement, les mathématiques et la programmation. Licence très permissive. |
|
|
305
|
+
| SmolLM3-3B | ~6 Go | Apache 2.0 | Recette entièrement ouverte. Contexte natif de 64 Ko. |
|
|
306
|
+
| Qwen 2.5 7B | ~12 Go | Apache 2.0 | Valeur par défaut existante. Meilleure qualité parmi les anciens modèles 7B. |
|
|
307
|
+
| Qwen 2.5 3B | ~8 Go | Qwen-Research | ⚠ Licence de recherche — consultez les conditions de licence de Qwen avant toute utilisation commerciale. |
|
|
308
|
+
| Llama 3.2 3B | ~8 Go | Llama Community | Alternative intéressante à Qwen 3B avec des conditions d'utilisation permissives. |
|
|
309
|
+
| Llama 3.2 1B | ~6 Go | Llama Community | Idéal pour les premières expérimentations sur de petites cartes. |
|
|
310
|
+
| Mistral 7B | ~12 Go | Apache 2.0 | Comparable à Qwen 7B, mais avec un modèle de conversation différent. |
|
|
311
|
+
|
|
312
|
+
D'autres modèles peuvent fonctionner, mais seuls ces huit sont intégrés dans les tests automatisés (CI). Utilisez `--lora-preset=quality` (par défaut) pour obtenir un rang de 256 / des cibles "all-linear" selon Biderman 2024 + Thinking Machines 2025, ou `--lora-preset=fast` pour obtenir l'empreinte de la version 1.2.x avec un rang de 16 / des cibles q+v si vous avez besoin de cette empreinte.
|
|
306
313
|
|
|
307
314
|
## Dépannage
|
|
308
315
|
|
|
309
|
-
Un bref index des erreurs les plus courantes
|
|
316
|
+
Un bref index des erreurs les plus courantes lors de la première exécution. L'index inversé complet est disponible sur la [page du manuel de dépannage](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/). Pour une analyse approfondie des pilotes / VRAM / précision mixte, consultez la [page de dépannage CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/).
|
|
310
317
|
|
|
311
|
-
| Symptôme | Code | Solution |
|
|
312
|
-
|
|
313
|
-
| La mémoire de la GPU est épuisée pendant l'entraînement. | `RUNTIME_GPU_OOM` |
|
|
314
|
-
|
|
|
315
|
-
| Faute de frappe dans le nom du modèle. | `INPUT_VALIDATION_FAILED` ou `DEP_MODEL_LOAD_FAILED`. | Vérifiez l'identifiant `org/name` sur <https://huggingface.co/models>. |
|
|
318
|
+
| Symptôme | Code d'erreur | Solution |
|
|
319
|
+
|---|---|---|
|
|
320
|
+
| La mémoire de la GPU est épuisée pendant l'entraînement. | `RUNTIME_GPU_OOM` | Automatic — Backpropagate réduit la taille du lot de moitié et tente jusqu'à 3 fois. Pour désactiver cette fonctionnalité : `Trainer(oom_recovery=False)`. Pour forcer une taille plus petite : `--batch-size 1`. |
|
|
321
|
+
| HuggingFace renvoie 401 / "modèle introuvable" | `DEP_MODEL_LOAD_FAILED` | Utilisez `huggingface-cli login` et réessayez. En cas de faute de frappe, copiez l'identifiant exact depuis <https://huggingface.co/models>. |
|
|
316
322
|
| `register_with_ollama` : connexion refusée. | `DEP_OLLAMA_REGISTRATION_FAILED` | Démarrez le démon : `ollama serve`. Installez depuis <https://ollama.com>. Opération pouvant être répétée. |
|
|
317
323
|
| Le disque est plein lors de la sauvegarde du point de contrôle. | `STATE_CHECKPOINT_INVALID` | Les écritures atomiques laissent un répertoire `.partial` en cas de plantage ; il est sûr de le supprimer. Le point de contrôle précédent est intact. |
|
|
318
|
-
| L'entraînement est interrompu
|
|
319
|
-
| `backprop ui --share` est refusé. | `INPUT_AUTH_REQUIRED` |
|
|
320
|
-
| "Chevauchement" des exécutions multiples lors de la validation. | `CONFIG_INVALID` (Étape A, backend B-001). | Réduisez `--samples` en dessous de la taille du pool d'entraînement, augmentez la taille du jeu de données ou désactivez la validation. |
|
|
324
|
+
| L'entraînement est interrompu en raison de la surchauffe du GPU. | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | Automatic — Backpropagate met l'entraînement en pause lorsque la température atteint un seuil et le reprend lorsque le GPU refroidit. Améliorez la circulation de l'air si cela se produit fréquemment. |
|
|
325
|
+
| `backprop ui --share` est refusé. | `INPUT_AUTH_REQUIRED` | Utilisez l'option `--auth user:password`, ou utilisez plutôt le transfert de port SSH (voir [Interface Web](#web-ui)). |
|
|
321
326
|
| L'export GGUF a échoué lors de la première tentative. | `RUNTIME_GGUF_EXPORT_FAILED` | `pip install backpropagate[export]`; sous Windows, vous avez également besoin des outils de construction Visual C++ et de CMake. |
|
|
322
327
|
|
|
323
328
|
## Signaler des bogues
|
|
324
329
|
|
|
325
|
-
Lorsqu'une erreur se produit, Backpropagate affiche une ligne `run_started run_id=<uuid
|
|
330
|
+
Lorsqu'une erreur se produit, Backpropagate affiche une ligne au démarrage, comme `run_started run_id=<uuid>`, et associe cet ID à chaque ligne de journal, à chaque point de contrôle et à chaque entrée Weights & Biases. **Incluez l'ID de la session (`run_id`) dans tout rapport de bug** ; cela permet à un développeur de corréler tous les éléments pour cette exécution spécifique.
|
|
326
331
|
|
|
327
332
|
Un bon rapport de bogue comprend :
|
|
328
333
|
|
|
329
|
-
1.
|
|
330
|
-
2. **Le code d'erreur**
|
|
331
|
-
3. **La ligne de commande masquée.** La sortie
|
|
332
|
-
4. **Versions de Python / PyTorch, modèle
|
|
334
|
+
1. **L'ID de la session (`run_id`)** : l'UUID affiché au démarrage.
|
|
335
|
+
2. **Le code d'erreur** : la ligne `[CODE_NAME]: message` dans la sortie d'erreur standard (stderr). Consultez [la liste des codes d'erreur](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) pour plus d'informations.
|
|
336
|
+
3. **La ligne de commande masquée.** La sortie d'erreur standard est automatiquement masquée (les jetons Bearer, les chaînes commençant par `sk-*`, `hf_*`, les clés AWS, les paires `password=` / `token=` sont supprimées) ; vous pouvez la copier sans problème. Pour obtenir la trace complète et non masquée, relancez l'exécution avec l'option `--verbose`, mais examinez-la avant de la publier.
|
|
337
|
+
4. **Versions de Python / PyTorch, modèle du GPU, système d'exploitation.** La commande `backprop info` affiche toutes ces informations en une seule fois.
|
|
338
|
+
|
|
339
|
+
Les questions, les suggestions ou les discussions sur le fait de savoir si un comportement est normal doivent être posées sur [GitHub Discussions](https://github.com/mcp-tool-shop-org/backpropagate/discussions). Les problèmes de sécurité doivent être signalés de manière privée via le formulaire [GitHub Security Advisory](https://github.com/mcp-tool-shop-org/backpropagate/security/advisories/new) ; consultez le fichier [SECURITY.md](SECURITY.md) pour connaître la politique.
|
|
333
340
|
|
|
334
341
|
## Confidentialité
|
|
335
342
|
|
|
336
343
|
Toute l'exécution se fait localement sur votre GPU. Backpropagate ne fait aucune requête réseau, sauf pour télécharger les modèles depuis HuggingFace (ce que vous initiez). Pas de télémétrie, pas de dépendance au cloud.
|
|
337
344
|
|
|
338
|
-
##
|
|
345
|
+
## Références
|
|
339
346
|
|
|
340
|
-
|
|
341
|
-
|----------|-------|-------|
|
|
342
|
-
| A. Sécurité | 6/8 | SECURITY.md, modèle de confiance, pas de secrets/télémétrie, safe_path(). Les éléments MCP sont ignorés. |
|
|
343
|
-
| B. Gestion des erreurs | 5/7 | Structure des exceptions (code/message/indice/cause/pouvant être retentée) via le registre ERROR_CODES ; codes de sortie de la CLI : 0/1/2/3 ; pas de traces de pile brutes sans l'option `--verbose` ; corrélation par `run_id` ; stderr masqué ; blocage via `--share` + `--auth`. MCP/bureau/vscode ignorés. |
|
|
344
|
-
| C. Documentation pour les opérateurs | 4/7 | README, CHANGELOG, LICENSE, --help. Journalisation/MCP/éléments complexes ignorés. |
|
|
345
|
-
| D. Hygiène de la livraison | 6/9 | verify.sh, version=tag, 5 scanners dans l'intégration continue, dependabot, python_requires, build propre. |
|
|
346
|
-
| E. Identité | 4/4 | Logo, traductions, page d'accueil, métadonnées. |
|
|
347
|
-
| **Total** | **25/31** | 14 éléments ignorés avec justification. `shipcheck audit` réussit à 100 %. Date de l'audit : 2026-05-21 (la ligne B a été réévaluée après les travaux de la phase B et les codes de sortie de la CLI de la phase A). |
|
|
347
|
+
Les paramètres par défaut de Backpropagate et son mode d'entraînement multi-sessions sont basés sur des recherches récentes. Si vous souhaitez en savoir plus sur les techniques utilisées :
|
|
348
348
|
|
|
349
|
-
|
|
349
|
+
- **Hu et al. 2021.** *LoRA: Low-Rank Adaptation of Large Language Models.* [arXiv:2106.09685](https://arxiv.org/abs/2106.09685) — l'article fondateur qui présente LoRA, la technique utilisée par Backpropagate pour entraîner efficacement les adaptateurs.
|
|
350
|
+
- **Biderman et al. 2024.** *LoRA Learns Less and Forgets Less.* [arXiv:2405.09673](https://arxiv.org/abs/2405.09673) — des preuves empiriques que LoRA avec un rang de 256 et des cibles linéaires atteint une qualité équivalente à un réglage fin complet pour la plupart des tâches après l'entraînement, tout en utilisant 67 % moins de ressources de calcul. Cela influence la configuration LoRA par défaut de Backpropagate (v1.3).
|
|
351
|
+
- **Thinking Machines 2025.** *LoRA Without Regret.* [thinkingmachines.ai/blog/lora](https://thinkingmachines.ai/blog/lora/) — une suite pratique qui identifie la correction du taux d'apprentissage 10 fois par rapport au réglage fin complet nécessaire pour les rangs LoRA élevés.
|
|
352
|
+
- **Kirkpatrick et al. 2017.** *Overcoming catastrophic forgetting in neural networks.* [arXiv:1612.00796](https://arxiv.org/abs/1612.00796) — la caractérisation originale de la raison pour laquelle les réseaux neuronaux "oublient" les entraînements précédents lors du réglage fin sur de nouvelles données (EWC — Elastic Weight Consolidation).
|
|
353
|
+
- **Wang et al. 2023.** *Orthogonal Subspace Learning for Language Model Continual Learning.* [arXiv:2310.14152](https://arxiv.org/abs/2310.14152) — O-LoRA, une approche antérieure utilisant LoRA pour l'apprentissage continu en contraignant les nouveaux adaptateurs à des sous-espaces orthogonaux.
|
|
354
|
+
- **Yadav et al. 2023.** *TIES-Merging: Resolving Interference When Merging Models.* [arXiv:2306.01708](https://arxiv.org/abs/2306.01708) — une technique fondamentale pour fusionner plusieurs modèles réglés finement sans interférence.
|
|
355
|
+
- **Qiao & Mahdavi 2025.** *Merge before Forget: A Single LoRA Continual Learning via Continual Merging.* [arXiv:2512.23017](https://arxiv.org/abs/2512.23017) — l'algorithme spécifique implémenté par le module de fusion multi-sessions de Backpropagate. Il s'agit d'une prépublication de décembre 2025 ; Backpropagate est le premier utilisateur connu de cet article.
|
|
350
356
|
|
|
351
357
|
## Licence
|
|
352
358
|
|
|
353
|
-
MIT — voir [LICENSE](LICENSE)
|
|
359
|
+
MIT — voir [LICENSE](LICENSE).
|
|
354
360
|
|
|
355
361
|
---
|
|
356
362
|
|