@mcptoolshop/backpropagate 1.4.0 → 1.6.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 +175 -122
- package/README.fr.md +178 -125
- package/README.hi.md +165 -112
- package/README.it.md +170 -117
- package/README.ja.md +169 -116
- package/README.md +67 -14
- package/README.pt-BR.md +170 -117
- package/README.zh.md +171 -118
- package/package.json +1 -1
package/README.fr.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
# Entraînez un adaptateur. Envoyez-le à Ollama. Passez à autre chose
|
|
19
19
|
|
|
20
|
-
Backpropagate est une bibliothèque Python pour
|
|
20
|
+
Backpropagate est une bibliothèque Python pour affiner les grands modèles de langage sur une seule 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 commande supplémentaire l'exporte vers Ollama afin que vous puissiez exécuter votre modèle affiné avec `ollama run`. Fonctionne parfaitement sous Windows.
|
|
21
21
|
|
|
22
22
|
```python
|
|
23
23
|
from backpropagate import Trainer
|
|
@@ -32,7 +32,7 @@ backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --oll
|
|
|
32
32
|
ollama run my-model
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
C'est tout. Il n'y a pas de fichier de configuration YAML. Il n'y a pas de
|
|
35
|
+
C'est tout. Il n'y a pas de fichier de configuration YAML. Il n'y a pas de procédure d'initialisation avec `accelerate launch`. Il n'y a pas de tutoriel séparé intitulé « Maintenant, convertissez-le au format GGUF ». Si vous avez une GPU CUDA et un fichier JSONL contenant vos données d'entraînement, il vous suffit de trois lignes pour obtenir un modèle affiné fonctionnel.
|
|
36
36
|
|
|
37
37
|
## Installation
|
|
38
38
|
|
|
@@ -47,81 +47,83 @@ uv tool install backpropagate
|
|
|
47
47
|
pip install backpropagate
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Si vous souhaitez les fonctionnalités optionnelles, remplacez l'installation par l'une
|
|
50
|
+
Si vous souhaitez les fonctionnalités optionnelles, remplacez l'installation par l'une des suivantes :
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
pipx install "backpropagate[standard]" # adds Unsloth (2x faster training) + the web UI
|
|
54
54
|
pipx install "backpropagate[full]" # adds everything: unsloth, ui, monitoring, export, etc.
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
Préférez Docker
|
|
57
|
+
Préférez-vous Docker ? `docker pull ghcr.io/mcp-tool-shop-org/backpropagate:latest` fonctionne également. Des images sont disponibles pour `linux/amd64` et `linux/arm64`, de sorte que les utilisateurs d'Apple Silicon et d'ARM Linux bénéficient d'une image native. Un fichier `compose.yaml` standard pour « Interface utilisateur dans un conteneur » se trouve à la racine du dépôt ; `docker compose up` lance l'interface utilisateur web sur `http://localhost:7860` avec un montage de volume persistant `~/.backpropagate`.
|
|
58
58
|
|
|
59
|
-
## La place de Backpropagate
|
|
59
|
+
## La place de Backpropagate dans l'écosystème
|
|
60
60
|
|
|
61
|
-
Il existe plusieurs bonnes bibliothèques pour
|
|
61
|
+
Il existe plusieurs bonnes bibliothèques pour affiner les LLM. Elles sont toutes excellentes dans différents domaines :
|
|
62
62
|
|
|
63
|
-
- **[Axolotl](https://github.com/OpenAccess-AI-Collective/axolotl)**
|
|
64
|
-
- **[LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory)**
|
|
65
|
-
- **[Unsloth](https://github.com/unslothai/unsloth)**
|
|
66
|
-
- **[torchtune](https://github.com/pytorch/torchtune)**
|
|
63
|
+
- **[Axolotl](https://github.com/OpenAccess-AI-Collective/axolotl)** : si vous aimez les configurations YAML et que vous souhaitez disposer d'une communauté de recettes à partir desquelles vous pouvez vous inspirer.
|
|
64
|
+
- **[LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory)** : si vous souhaitez utiliser DPO/PPO/RLHF et une interface graphique web.
|
|
65
|
+
- **[Unsloth](https://github.com/unslothai/unsloth)** : si vous avez besoin de l'entraînement le plus rapide possible et que vous utilisez une famille de modèles prise en charge.
|
|
66
|
+
- **[torchtune](https://github.com/pytorch/torchtune)** : si vous souhaitez utiliser les recettes PyTorch natives de Meta que vous pouvez modifier.
|
|
67
67
|
|
|
68
|
-
Backpropagate est l'option manquante
|
|
68
|
+
Backpropagate est l'option manquante : une API Python en 3 lignes pour les utilisateurs individuels disposant d'une seule GPU grand public qui souhaitent entraîner un adaptateur et l'envoyer. Pas de YAML, pas d'interface graphique, pas d'apprentissage par renforcement en ligne (PPO/GRPO), pas de multi-nœuds. Juste la boucle dont tout le monde a réellement besoin et l'étape d'exportation qui pose problème.
|
|
69
69
|
|
|
70
|
-
Si vous avez essayé l'une des bibliothèques ci-dessus et que vous avez été rebuté par la
|
|
70
|
+
Si vous avez essayé l'une des bibliothèques ci-dessus et que vous avez été rebuté par la complexité de la configuration, ou que vous avez rencontré un problème de compatibilité avec une famille de modèles, ou que vous souhaitiez des paramètres par défaut optimisés pour Windows, Backpropagate est fait pour vous.
|
|
71
71
|
|
|
72
|
-
## Ce que vous pouvez
|
|
72
|
+
## Ce que vous pouvez affiner sur une GPU grand public de 16 Go
|
|
73
73
|
|
|
74
|
-
Voici les limites pratiques sur une carte de 16
|
|
74
|
+
Voici les limites pratiques sur une carte de 16 Go (RTX 4080 / 5080 / 4070 Ti Super) :
|
|
75
75
|
|
|
76
|
-
| Modèle | Méthode |
|
|
76
|
+
| Modèle | Méthode | État |
|
|
77
77
|
|---|---|---|
|
|
78
|
-
| Qwen-3.5-4B / Phi-4-mini-3.8B / SmolLM3-3B | LoRA / QLoRA / DoRA |
|
|
79
|
-
|
|
|
80
|
-
| Qwen-2.5-7B / Llama-3.1-8B / Mistral-7B | QLoRA | Standard. Environ 7
|
|
81
|
-
| Llama-3 13B | QLoRA + échantillonnage |
|
|
82
|
-
| Mixtral 8x7B (47
|
|
78
|
+
| Qwen-3.5-4B / Phi-4-mini-3.8B / SmolLM3-3B | LoRA / QLoRA / DoRA | Facile. Longueur de séquence complète, beaucoup de marge. |
|
|
79
|
+
| SmolLM3-3B / Qwen2.5-3B / Llama-3.2-3B / Llama-3.2-1B | `mode="full"` (affinement complet) | v1.4 : passez `--mode=full` dans `backprop train` ou `Trainer(..., mode="full")`. Charge les poids en pleine précision (bf16) ; pas de 4 bits, pas d'adaptateur ; le contrôle de gradient et l'Adam paginé à 8 bits permettent de maintenir l'empreinte dans les 16 Go. |
|
|
80
|
+
| Qwen-2.5-7B / Llama-3.1-8B / Mistral-7B | QLoRA | Standard. Environ 7 à 8 Go. Paramètres par défaut de Backpropagate. |
|
|
81
|
+
| Llama-3 13B | QLoRA + échantillonnage par lots | Difficile, mais fonctionne. Utilisez des séquences plus courtes. |
|
|
82
|
+
| Mixtral 8x7B (47 milliards de paramètres au total) | — | Hors de portée : la quantification à 2 bits (AQLM / QuIP#) rompt le contrat d'adaptateur fusionnable + exportation GGUF, elle a donc été abandonnée dans le [bref aperçu de la trajectoire v1.5](docs/V1_5_BRIEF.md). Sur une carte de 16 Go, utilisez une base ≤8 milliards de paramètres. |
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
`mode="full"` prend en charge les modèles jusqu'à **4 milliards de paramètres**. Les quatre préréglages de la ligne d'affinement complet ci-dessus sont authentiques (nombre réel de paramètres de 3,08 à 3,24 milliards) et s'adaptent à une carte de 16 Go. La classe de 3,8 à 4 milliards de paramètres (Phi-4-mini-3.8B, Qwen-3.5-4B) est également acceptée, mais nécessite une carte de **24 Go ou plus** pour un affinement complet : les poids et les gradients seuls atteignent presque 16 Go avant l'optimiseur et les activations, de sorte qu'une carte de 16 Go doit utiliser `mode="lora"` pour ces modèles (ils se trouvent dans la ligne LoRA). Les modèles >4 milliards de paramètres quittent le programme avec `RUNTIME_FULL_FT_MODEL_TOO_LARGE`.
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
La quantification à 2 bits (AQLM / QuIP#) est **hors de portée**. Elle a été envisagée pour la version 1.4, puis abandonnée dans le [bref aperçu de la trajectoire v1.5](docs/V1_5_BRIEF.md) : une base à 2 bits ne peut pas être proprement réintégrée dans des poids en pleine précision, ce qui rompt le contrat d'adaptateur fusionnable → GGUF → Ollama (le but de la chaîne de traitement). Les leviers de marge que Backpropagate propose sont le **chemin de calcul FP8** (v1.5, `--fp8`, Blackwell/Hopper) et `mode="full"` pour les modèles ≤4 milliards de paramètres : les deux restent fusionnables et exportables.
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
Pour les modèles de 3 milliards de paramètres et moins, l'affinement complet (et non seulement LoRA) est possible sur 16 Go et est désormais disponible dans la version 1.4 sous la forme `mode="full"`. Passez `Trainer(..., mode="full")` ou `backprop train --mode=full --model phi-4-mini-3.8b` pour l'activer. Une barrière stricte refuse le mode pour les modèles > 4 milliards de paramètres avec `RUNTIME_FULL_FT_MODEL_TOO_LARGE`, en indiquant LoRA + les préréglages inférieurs à 4 milliards de paramètres comme options de secours. Consultez [la page du guide complet sur l'affinement](https://mcp-tool-shop-org.github.io/backpropagate/handbook/full-fine-tuning/) pour les calculs de configuration et la comparaison de la qualité de Biderman 2024 / Thinking Machines 2025. Pour les modèles de 7 milliards de paramètres et plus, l'affinement complet nécessite une GPU de 24 Go ou plus : envisagez de louer une A100 dans le cloud, ou utilisez LoRA, ce qui, selon les recherches récentes, correspond à la qualité de l'affinement complet pour la plupart des tâches post-entraînement (voir [la section anti-argumentaire](#what-backpropagate-is-not-for) pour les références).
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
## Ce que Backpropagate NE permet PAS
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
- **DPO / PPO / GRPO / ajustement des préférences** — Backpropagate ne prend en charge que l'ajustement fin supervisé en une seule étape. Pour l'apprentissage par préférences, utilisez directement TRL ou LLaMA-Factory.
|
|
94
|
-
- **Entraînement multi-nœuds** — Fonctionne uniquement avec une seule 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.
|
|
95
|
-
- **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 une GPU NVIDIA. Vous pouvez toujours exécuter le modèle entraîné sur un Mac via Ollama.
|
|
96
|
-
- **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 peuvent fonctionner, mais ne sont pas inclus dans les tests automatisés.
|
|
92
|
+
Si votre cas d'utilisation est l'un des suivants, vous obtiendrez de meilleurs résultats avec une autre bibliothèque : Backpropagate n'est pas le bon choix et essayer de le faire fonctionner coûterait plus cher que de simplement utiliser l'outil approprié. La lecture de cette section avant de commencer vous évitera de devoir installer et abandonner :
|
|
97
93
|
|
|
98
|
-
|
|
94
|
+
- **Affinage complet des paramètres des modèles 7B+** — Backpropagate utilise LoRA/QLoRA, ce qui entraîne un petit adaptateur plutôt que de mettre à jour tous les poids. Pour les modèles 7B et plus, l’affinage complet nécessite 24 Go ou plus de mémoire GPU et ne peut pas être effectué sur une carte grand public de 16 Go. Pour les modèles 3B et moins, l’affinage complet est possible avec 16 Go et est disponible dans la version 1.4 sous la forme `mode="full"` (passez `Trainer(..., mode="full")` ou `--mode=full` dans l’interface en ligne de commande ; une restriction stricte déclenche `RUNTIME_FULL_FT_MODEL_TOO_LARGE` pour les modèles > 4B et nomme LoRA + les préréglages inférieurs à 4B comme solutions de repli). Pour résumer : 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, correspond à la qualité de l’affinage complet pour la plupart des tâches post-entraînement (suivi des instructions, adaptation au domaine, personnalité/style) avec 67 % de la puissance de calcul. Ainsi, pour le travail que la plupart des utilisateurs souhaitent effectuer, vous ne perdez rien en vous en tenant à LoRA. `mode="full"` existe pour les cas où vous avez mesuré une différence de qualité et décidé d’investir davantage de puissance de calcul. Si vous avez réellement besoin d’un affinage complet d’un modèle 7B+, utilisez directement HuggingFace `transformers.Trainer` sur une carte de 24 Go ou plus.
|
|
95
|
+
- **Apprentissage par renforcement en ligne — PPO / GRPO / RLVR** — Backpropagate effectue un affinage supervisé en une seule étape, plus un affinage des préférences sans référence (ORPO est disponible dans la version 1.5 ; SimPO/KTO sont prévus). Ce que Backpropagate ne fait *pas*, c’est l’apprentissage par renforcement en ligne — PPO, GRPO ou RLVR — qui nécessite un modèle de récompense ou une boucle de génération et d’évaluation en plus de l’étape d’entraînement. Pour ces derniers, utilisez TRL ou LLaMA-Factory directement. (L’affinage des préférences sans référence s’intègre dans l’enveloppe d’une seule étape, car il n’y a pas de modèle de référence distinct à conserver en mémoire ; voir la note sur ORPO dans [Démarrage rapide](#quick-start).)
|
|
96
|
+
- **Entraînement multi-nœuds** — une seule 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.
|
|
97
|
+
- **Entraînement macOS sur le système CUDA** — Apple Silicon n’a pas CUDA, donc le chemin CUDA doit s’exécuter sur une machine Linux ou Windows avec une GPU NVIDIA. Vous pouvez toujours exécuter le modèle entraîné sur un Mac via Ollama. **Nouveau dans la version 1.5 :** un système MLX expérimental (`--backend mlx`) entraîne un adaptateur LoRA de manière native sur Apple Silicon — voir [Apple Silicon (MLX)](#apple-silicon-mlx--experimental-v15). Il est limité à LoRA-SFT et a été mis en œuvre, mais pas encore validé sur du matériel réel. Par conséquent, pour tout ce qui dépasse un LoRA SFT (ORPO, affinage complet, FP8, exécution multiple), vous devriez toujours utiliser le système CUDA.
|
|
98
|
+
- **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 pris en charge dans les tests d’intégration continue.
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
Si vous avez besoin de l’une de ces fonctionnalités, utilisez l’une des bibliothèques répertoriées ci-dessus. Elles sont plus performantes dans ce domaine.
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
## Ce que Backpropagate vous offre
|
|
103
103
|
|
|
104
|
-
|
|
105
|
-
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é.
|
|
104
|
+
Quatre éléments, dans une seule installation :
|
|
106
105
|
|
|
107
|
-
**
|
|
108
|
-
|
|
106
|
+
**1. Une véritable API en 3 lignes qui fonctionne sans fichier de configuration.**
|
|
107
|
+
L’extrait en haut de ce fichier README s’exécute de bout en bout. Pas de `accelerate config`, pas de YAML, pas de substitutions Hydra. Il suffit de `Trainer(model).train(data)` et vous avez un modèle affiné.
|
|
109
108
|
|
|
110
|
-
**
|
|
111
|
-
|
|
109
|
+
**2. Windows, qui fonctionne réellement.**
|
|
110
|
+
La plupart des bibliothèques d’apprentissage automatique considèrent Windows comme une réflexion après coup. Backpropagate est testé en priorité sur Windows + RTX 5080. La bibliothèque gère les particularités de l’exécution pour vous : elle sait comment pré-tokeniser vos données afin que le traitement parallèle de Windows ne plante pas, elle désactive automatiquement xformers sur les cartes RTX 40/50 où cela causerait des problèmes, et elle sélectionne les paramètres du chargeur de données qui ne provoquent pas d’erreurs. Vous n’avez pas besoin d’en connaître les détails. Il fonctionne simplement.
|
|
112
111
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
- 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é.
|
|
116
|
-
- 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.
|
|
117
|
-
- 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/).
|
|
112
|
+
**3. Conçu pour les exécutions sans surveillance.**
|
|
113
|
+
L’entraînement prend des heures. Vous ne voulez pas le surveiller constamment. Backpropagate est conçu pour être laissé en fonctionnement :
|
|
118
114
|
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
- Si vous manquez de mémoire GPU, il réduit automatiquement de moitié la taille du lot et réessaie — jusqu’à trois fois. Pas de réglage manuel.
|
|
116
|
+
- Si votre GPU devient trop chaud, il fait une pause jusqu’à ce que les choses se refroidissent, puis reprend.
|
|
117
|
+
- Chaque point de contrôle est écrit de manière atomique — si votre ordinateur portable plante au milieu de l’enregistrement, le point de contrôle précédent et valide reste intact.
|
|
118
|
+
- Chaque exécution d’entraînement reçoit un ID unique qui est estampillé sur chaque ligne de journal, chaque point de contrôle et chaque entrée Weights & Biases. Si quelque chose ne va pas, un seul ID permet à un mainteneur de corréler tous les éléments.
|
|
119
|
+
- Les erreurs sont accompagnées de codes stables (`RUNTIME_GPU_OOM`, `DEP_OLLAMA_REGISTRATION_FAILED`, etc.) afin que vous puissiez 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 [CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) dédiée.
|
|
120
|
+
|
|
121
|
+
**4. Une seule commande, de l’adaptateur entraîné à `ollama run`.**
|
|
122
|
+
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 au format 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.
|
|
121
123
|
|
|
122
124
|
## Démarrage rapide
|
|
123
125
|
|
|
124
|
-
Le dépôt contient un petit ensemble de données d
|
|
126
|
+
Le dépôt contient un petit ensemble de données d’exemple afin que l’extrait en haut de ce fichier README fonctionne sur une installation propre :
|
|
125
127
|
|
|
126
128
|
```bash
|
|
127
129
|
pipx install "backpropagate[standard]"
|
|
@@ -134,31 +136,80 @@ trainer.export('gguf', quantization='q4_k_m')
|
|
|
134
136
|
"
|
|
135
137
|
```
|
|
136
138
|
|
|
137
|
-
Cela entraîne un adaptateur Qwen 2.5 7B sur 5
|
|
139
|
+
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 :
|
|
138
140
|
|
|
139
141
|
```jsonl
|
|
140
142
|
{"conversations": [{"from": "human", "value": "What is Python?"}, {"from": "gpt", "value": "A programming language."}]}
|
|
141
143
|
{"conversations": [{"from": "human", "value": "Explain recursion."}, {"from": "gpt", "value": "A function that calls itself."}]}
|
|
142
144
|
```
|
|
143
145
|
|
|
144
|
-
Les formats Alpaca (`instruction` / `output`), OpenAI chat (`messages`) et texte brut fonctionnent également
|
|
146
|
+
Les formats Alpaca (`instruction` / `output`), OpenAI chat (`messages`) et texte brut fonctionnent également — Backpropagate détecte automatiquement le format.
|
|
147
|
+
|
|
148
|
+
### Réglage des préférences (ORPO, SimPO, KTO)
|
|
149
|
+
|
|
150
|
+
Nouveau dans la version 1.5 : entraînez-vous sur des préférences au lieu de simples démonstrations. ORPO est sans référence et en une seule étape — il intègre le signal de préférence dans l’étape d’affinage supervisé, il n’y a donc pas de modèle de récompense ou de référence distinct et la forme en 3 lignes reste la même. Passez `--method orpo` (CLI) ou `method="orpo"` (Python) et fournissez un ensemble de données de lignes `{prompt, chosen, rejected}` (ou simplement `{chosen, rejected}` :
|
|
151
|
+
|
|
152
|
+
```jsonl
|
|
153
|
+
{"prompt": "What is Python?", "chosen": "A high-level programming language known for readability.", "rejected": "idk look it up"}
|
|
154
|
+
{"prompt": "Explain recursion.", "chosen": "A function that calls itself with a smaller input until a base case.", "rejected": "when something repeats"}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```python
|
|
158
|
+
from backpropagate import Trainer
|
|
159
|
+
|
|
160
|
+
trainer = Trainer("Qwen/Qwen2.5-7B-Instruct", method="orpo")
|
|
161
|
+
trainer.train("preferences.jsonl", steps=100)
|
|
162
|
+
trainer.export("gguf", quantization="q4_k_m")
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
backprop train --data preferences.jsonl --method orpo --steps 100
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Le taux d’apprentissage par défaut est automatiquement réduit à `8e-6` pour ORPO (la perte est plus marquée que dans le cas de SFT simple) ; réglez `--orpo-beta` (par défaut `0.1`) pour pondérer la pénalité du rapport de cotes. ORPO utilise uniquement `mode="lora"`.
|
|
145
170
|
|
|
146
|
-
|
|
171
|
+
**Nouveauté dans la version 1.6 : SimPO et KTO.** `--method simpo` ([Meng et al. 2024](https://arxiv.org/abs/2405.14734)) ne nécessite pas de données de référence et utilise une récompense normalisée en fonction de la longueur, tout en utilisant les mêmes données appariées `{prompt, chosen, rejected}` qu’ORPO (`--simpo-beta`, `--simpo-gamma`). `--method kto` ([Ethayarajh et al. 2024](https://arxiv.org/abs/2402.01306)) utilise des données **non appariées** `{prompt, completion, label}` — évaluation positive/négative par exemple — pour la vaste catégorie de commentaires qui ne sont pas des paires A/B sélectionnées ; il équilibre automatiquement les poids de perte souhaitables/indésirables en fonction du nombre d’étiquettes. Les deux utilisent uniquement `mode="lora"` et restent dans l’enveloppe SFT sur une seule GPU (pas de modèle de référence distinct). Consultez le [guide de réglage des préférences](https://mcp-tool-shop-org.github.io/backpropagate/handbook/preference-tuning/) pour savoir lequel utiliser. Pour l’apprentissage par renforcement en ligne (PPO/GRPO), consultez [Ce que Backpropagate n’est PAS](#what-backpropagate-is-not-for).
|
|
147
172
|
|
|
148
|
-
###
|
|
173
|
+
### SFT avec suivi du raisonnement (distillation R1)
|
|
149
174
|
|
|
150
|
-
|
|
175
|
+
Nouveau dans la version 1.5 : distillez un modèle de raisonnement de manière simple. Utilisez `--reasoning-trace` (CLI) ou `Trainer(..., reasoning_trace=True)` (Python) et fournissez-lui des données qui conservent une chaîne de pensée `<think>...</think>` dans les interactions de l’assistant — la moitié SFT pure de la distillation de [DeepSeek-R1](https://arxiv.org/abs/2501.12948), sans apprentissage par renforcement requis. La rétropropagation conserve `<think>` dans l’objectif d’entraînement, supprime les données vides ou trop longues (filtrage de la longueur des données) et augmente la valeur par défaut de `max_seq_length` à 8192 pour la chaîne de pensée plus longue. Il est essentiel que `<think>` reste du **texte brut** — aucun jeton spécial, aucun redimensionnement de l’intégration — de sorte que le GGUF fusionné puisse toujours être exporté vers Ollama comme tout autre modèle affiné. Uniquement SFT. Consultez la [recette reasoning-trace](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/#reasoning-trace-sft-r1-distillation) pour la forme de l’ensemble de données et les jetons ajustables.
|
|
176
|
+
|
|
177
|
+
### Apple Silicon (MLX) — expérimental, version 1.5
|
|
178
|
+
|
|
179
|
+
Nouveau dans la version 1.5 : **une API, deux options.** CUDA reste le backend canonique et vérifié ; MLX est une deuxième option qui entraîne sur un Mac de la série M via la chaîne d’outils [`mlx_lm.lora`](https://github.com/ml-explore/mlx-lm) d’Apple (mémoire unifiée, pas de CUDA). La même structure en 3 lignes sélectionne l’option en fonction du matériel — `backend='auto'` (par défaut) redirige vers CUDA sur NVIDIA et vers MLX sur Apple Silicon, de sorte que les configurations CUDA existantes sont identiques au niveau des octets.
|
|
180
|
+
|
|
181
|
+
```python
|
|
182
|
+
from backpropagate import Trainer
|
|
183
|
+
|
|
184
|
+
# On an M-series Mac with `pip install 'backpropagate[mlx]'`:
|
|
185
|
+
trainer = Trainer("mlx-community/Qwen2.5-0.5B-Instruct-4bit", backend="mlx")
|
|
186
|
+
trainer.train("examples/quickstart.jsonl", steps=100)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
backprop train --data my_data.jsonl --backend mlx --steps 100
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Dans la version 1.5, l’option MLX est **uniquement LoRA SFT** — pas d’ORPO, pas de FP8, pas de `mode='full'`, pas d’exécution multiple sur MLX pour le moment (chacune est rejetée avec `CONFIG_INVALID_SETTING` ; utilisez `backend='cuda'`/`'auto'` sur une machine NVIDIA pour ces options). L’adaptateur résultant est un simple fichier safetensors et est exporté vers Ollama via le même chemin que l’option CUDA.
|
|
194
|
+
|
|
195
|
+
> ⚠️ **État actuel :** la version MLX incluse dans la v1.5 est **intégrée et testée (avec des simulations)**, mais **n’a pas encore été validée sur du matériel Apple Silicon réel**. `mlx-lm` est uniquement compatible avec Apple et n’a pas pu être exécuté sur le système NVIDIA utilisé pour sa création. Considérez-la comme expérimentale — la même approche a été utilisée pour le chemin FP8 dans la v1.5 (FP8 a ensuite été validé sur Blackwell dans la v1.6 ; MLX doit encore passer cette étape sur du matériel réel) — et veuillez [signaler les anomalies](#reporting-bugs) une fois qu’elle sera exécutée sur un Mac de la série M. Forcer `--backend mlx` sur un hôte non Apple génère l’erreur `CONFIG_INVALID_SETTING` ; l’absence de la chaîne d’outils `mlx_lm` sur un Mac provoque l’erreur `DEP_MLX_UNAVAILABLE`.
|
|
196
|
+
|
|
197
|
+
Pour des flux de travail de bout en bout plus complets (affiner et pousser vers HF-Hub, reprendre après une erreur de mémoire, SLAO multi-exécution sur une longue campagne, etc.), consultez la [page des recettes du manuel](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/).
|
|
198
|
+
|
|
199
|
+
### Interface utilisateur Web (facultative)
|
|
200
|
+
|
|
201
|
+
Si vous préférez cliquer plutôt que taper en Python, installez l’extra de l’interface utilisateur et lancez :
|
|
151
202
|
|
|
152
203
|
```bash
|
|
153
204
|
pipx install "backpropagate[ui]"
|
|
154
205
|
backprop ui --port 7862
|
|
155
206
|
```
|
|
156
207
|
|
|
157
|
-
Une interface
|
|
208
|
+
Une interface Web locale s’ouvre à l’adresse `http://localhost:7862` pour parcourir les ensembles de données, valider les formats et assembler une configuration d’entraînement visuellement. L’entraînement lui-même s’exécute via `backprop train` (l’entraînement piloté par l’interface utilisateur est prévu ; le bouton Démarrer affiche actuellement cette note). L’interface utilisateur est locale par défaut. Pour la rendre accessible à d’autres appareils, consultez la section [Interface utilisateur Web](#web-ui) ci-dessous pour le contrat de sécurité `--share` + `--auth`.
|
|
158
209
|
|
|
159
|
-
## Entraînement
|
|
210
|
+
## Entraînement multi-exécution
|
|
160
211
|
|
|
161
|
-
Si vous souhaitez
|
|
212
|
+
Si vous souhaitez affiner de manière incrémentale 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 :
|
|
162
213
|
|
|
163
214
|
```python
|
|
164
215
|
from backpropagate import Trainer
|
|
@@ -173,17 +224,17 @@ result = trainer.multi_run(
|
|
|
173
224
|
)
|
|
174
225
|
```
|
|
175
226
|
|
|
176
|
-
Cela
|
|
227
|
+
Cela exécute cinq passes d’entraînement, en fusionnant l’adaptateur entre les exécutions de manière à préserver les connaissances antérieures tout en intégrant de nouveaux exemples. La technique est basée sur des recherches récentes sur l’apprentissage continu — voir [Références](#references) en bas de ce fichier README.
|
|
177
228
|
|
|
178
|
-
La version
|
|
229
|
+
La version CLI :
|
|
179
230
|
|
|
180
231
|
```bash
|
|
181
232
|
backprop multi-run --data my_data.jsonl --runs 5 --steps 100 --samples 1000
|
|
182
233
|
```
|
|
183
234
|
|
|
184
|
-
## Reprise à partir d
|
|
235
|
+
## Reprise à partir d’un point de contrôle
|
|
185
236
|
|
|
186
|
-
|
|
237
|
+
Un entraînement de 5 exécutions qui plante à la 4e exécution peut être récupéré. Chaque session multi-exécution écrit son ID d’exécution dans l’historique et le manifeste des points de contrôle sur disque, de sorte que la reprise là où vous vous êtes arrêté ne nécessite qu’une seule commande :
|
|
187
238
|
|
|
188
239
|
```bash
|
|
189
240
|
backprop resume <run-id>
|
|
@@ -191,11 +242,11 @@ backprop multi-run --data ... --resume <run-id>
|
|
|
191
242
|
backprop train --data ... --resume <run-id> # single-run resume
|
|
192
243
|
```
|
|
193
244
|
|
|
194
|
-
|
|
245
|
+
Le comportement par défaut de `backprop multi-run` (sans `--resume`) détecte automatiquement une entrée en cours dans le même répertoire de sortie et la poursuit. Pour forcer un nouveau démarrage, pointez vers un nouveau répertoire de sortie.
|
|
195
246
|
|
|
196
|
-
## Historique de l
|
|
247
|
+
## Historique de l’entraînement
|
|
197
248
|
|
|
198
|
-
Chaque invocation de `backprop train` et `backprop multi-run` enregistre une ligne dans `<output>/run_history.json
|
|
249
|
+
Chaque invocation de `backprop train` et `backprop multi-run` enregistre une ligne dans `<output>/run_history.json` — modèle utilisé, ensemble de données, hyperparamètres, statut, perte finale, historique des pertes. Vous pouvez lister et examiner les exécutions passées :
|
|
199
250
|
|
|
200
251
|
```bash
|
|
201
252
|
backprop list-runs # last 20 runs
|
|
@@ -206,7 +257,7 @@ backprop show-run abcd1234 # detail view (partial ID is fine)
|
|
|
206
257
|
|
|
207
258
|
## Suivi des expériences
|
|
208
259
|
|
|
209
|
-
Backpropagate détecte automatiquement les outils de suivi
|
|
260
|
+
Backpropagate détecte automatiquement les outils de suivi des expériences installés (Weights & Biases, TensorBoard, MLflow) et les configure. Si `wandb` est installé et que vous êtes connecté, chaque exécution enregistre automatiquement les données dans W&B avec un nom d’exécution qui correspond à l’ID d’exécution sur disque — de sorte que vous pouvez effectuer une recherche dans W&B, vos journaux et `run_history.json` en utilisant un seul identifiant.
|
|
210
261
|
|
|
211
262
|
```bash
|
|
212
263
|
pip install backpropagate[monitoring] # installs wandb + psutil
|
|
@@ -214,23 +265,25 @@ wandb login # one-time setup
|
|
|
214
265
|
backprop train --data my_data.jsonl
|
|
215
266
|
```
|
|
216
267
|
|
|
217
|
-
|
|
268
|
+
Remplacez par `Trainer(report_to=["wandb"])`, `Trainer(report_to=["tensorboard"])` ou `Trainer(report_to="none")` pour vous désinscrire.
|
|
218
269
|
|
|
219
|
-
## Interface
|
|
270
|
+
## Interface utilisateur Web
|
|
220
271
|
|
|
221
|
-
L
|
|
272
|
+
L’interface Web Reflex est une option — installez-la avec `pipx install "backpropagate[ui]"` et lancez :
|
|
222
273
|
|
|
223
274
|
```bash
|
|
224
275
|
backprop ui --port 7862
|
|
225
276
|
```
|
|
226
277
|
|
|
227
|
-
L
|
|
278
|
+
L’interface utilisateur s’exécute localement à l’adresse `http://localhost:7862`. Aujourd’hui, elle couvre la moitié du flux de travail qui consiste à **parcourir / valider / configurer** — pointez-la vers un ensemble de données, vérifiez le format et les statistiques détectés automatiquement, choisissez un modèle et assemblez une configuration d’exécution. **Le lancement de l’exécution se fait à partir de la ligne de commande** (`backprop train` / `backprop multi-run`) ; le bouton Démarrer dans l’interface utilisateur affiche une note qui y fait référence. L’entraînement piloté par l’interface utilisateur est une prochaine étape prévue — jusqu’alors, l’interface utilisateur est le point d’entrée et la ligne de commande est le déclencheur.
|
|
279
|
+
|
|
280
|
+
Pour exposer l’application à d’autres appareils (d’autres personnes sur votre réseau, une URL publique, etc.), vous devez associer l’option `--share` (ou `--host`) à l’option `--auth` :
|
|
228
281
|
|
|
229
282
|
```bash
|
|
230
283
|
backprop ui --share --auth alice:hunter2
|
|
231
284
|
```
|
|
232
285
|
|
|
233
|
-
`backprop ui --share` sans `--auth`
|
|
286
|
+
L’exécution de `backprop ui --share` sans l’option `--auth` entraîne une erreur. La raison : l’option `--share` publie une URL accessible à toute personne sur Internet, et sans authentification, cela signifie que n’importe qui peut exécuter votre pipeline d’entraînement et lire votre jeton Hugging Face. Il n’est pas possible de désactiver cette fonctionnalité. Si vous ne souhaitez pas définir d’informations d’identification, utilisez plutôt le transfert de port SSH :
|
|
234
287
|
|
|
235
288
|
```bash
|
|
236
289
|
# On the client:
|
|
@@ -240,32 +293,32 @@ backprop ui # no --share
|
|
|
240
293
|
# Then open http://localhost:7860 in your local browser
|
|
241
294
|
```
|
|
242
295
|
|
|
243
|
-
Consultez [handbook/security.md](https://mcp-tool-shop-org.github.io/backpropagate/handbook/security/) pour
|
|
296
|
+
Consultez la page [handbook/security.md](https://mcp-tool-shop-org.github.io/backpropagate/handbook/security/) pour obtenir le modèle complet des menaces.
|
|
244
297
|
|
|
245
|
-
Les
|
|
298
|
+
Les écritures dans le système de fichiers à partir de l’interface utilisateur sont isolées dans un seul répertoire :
|
|
246
299
|
|
|
247
|
-
- Par défaut
|
|
248
|
-
-
|
|
249
|
-
-
|
|
300
|
+
- Par défaut : `~/.backpropagate/ui-outputs`
|
|
301
|
+
- Remplacement : définissez `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own`
|
|
302
|
+
- Le remplacement est validé à l’aide d’une liste de blocage : les chemins système ou d’identification (`/etc`, `~/.ssh`, `~/.aws`, `C:\Windows\System32`, etc.) sont refusés.
|
|
250
303
|
|
|
251
304
|
## Notes sur la plateforme
|
|
252
305
|
|
|
253
|
-
**
|
|
306
|
+
**Configuration requise :** Python 3.10+ ; GPU CUDA (8 Go ou plus de VRAM) ; PyTorch 2.0+
|
|
254
307
|
|
|
255
|
-
Python 3.10
|
|
308
|
+
Python 3.10 est pris en charge jusqu’à au moins la v1.6 ; sa prise en charge par le fournisseur initial prendra fin en octobre 2026 et il est prévu de le supprimer dans la première version après cette date. Pour les nouvelles installations, privilégiez Python 3.11 ou 3.12 — 3.11 est la version la plus testée.
|
|
256
309
|
|
|
257
|
-
Backpropagate gère les particularités de l
|
|
310
|
+
Backpropagate gère les particularités de l’exécution de l’entraînement sur différentes plateformes, mais il ne peut pas résoudre les problèmes survenant lors de l’installation. Les deux problèmes les plus courants sont les suivants :
|
|
258
311
|
|
|
259
|
-
- **
|
|
260
|
-
- **Windows + exportation GGUF.** L
|
|
312
|
+
- **Mauvaise version de CUDA.** PyTorch est publié avec un seul fichier binaire par version de CUDA. Si vous choisissez la mauvaise version, vous obtiendrez silencieusement PyTorch en mode CPU uniquement et l’entraînement sera extrêmement lent. Utilisez le sélecteur de fichiers à l’adresse <https://pytorch.org/get-started/locally/> pour votre pilote. Exécutez `nvidia-smi` pour afficher votre version de pilote/CUDA.
|
|
313
|
+
- **Windows + exportation GGUF.** L’option `[export]` crée `llama-cpp-python` à partir du code source, ce qui nécessite les outils de création de Visual Studio (composant C++) et CMake.
|
|
261
314
|
|
|
262
|
-
**macOS
|
|
315
|
+
**macOS :** la prise en charge de CUDA n’est pas disponible (pas de CUDA) ; l’exécution de `trainer.train()` avec une configuration CUDA génère l’erreur `DEP_GPU_NOT_AVAILABLE`, et vous pouvez exécuter l’adaptateur entraîné sur un Mac via Ollama. **Nouveau dans la version 1.5 :** une configuration MLX expérimentale (`--backend mlx`, `pip install 'backpropagate[mlx]'`) entraîne un adaptateur LoRA de manière native sur Apple Silicon via `mlx_lm.lora` ; uniquement pour LoRA SFT, et créé et testé, mais pas encore vérifié sur du matériel réel (voir [Apple Silicon (MLX)](#apple-silicon-mlx--experimental-v15)). Pour le chemin CUDA, ou pour ORPO / affinage complet / FP8 / exécution multiple, utilisez une machine Linux ou Windows avec CUDA.
|
|
263
316
|
|
|
264
|
-
Consultez la
|
|
317
|
+
Consultez la page [du manuel de résolution des problèmes](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 [dédiée à la résolution des problèmes de CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) pour les problèmes de pilote / VRAM / xformers / bf16 par rapport à fp16.
|
|
265
318
|
|
|
266
|
-
##
|
|
319
|
+
## CLI
|
|
267
320
|
|
|
268
|
-
Chaque API Python a un équivalent
|
|
321
|
+
Chaque API Python a un équivalent CLI :
|
|
269
322
|
|
|
270
323
|
```bash
|
|
271
324
|
backprop train --data my_data.jsonl --model Qwen/Qwen2.5-7B-Instruct --steps 100
|
|
@@ -282,80 +335,80 @@ backprop replay <run-id> # re-run with same config / dataset
|
|
|
282
335
|
backprop export-runs --format jsonl # bulk export run history
|
|
283
336
|
```
|
|
284
337
|
|
|
285
|
-
Référence complète
|
|
338
|
+
Référence complète à la page [du manuel CLI](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/), ou `backprop <sous-commande> --help`.
|
|
286
339
|
|
|
287
340
|
## Configuration
|
|
288
341
|
|
|
289
|
-
Chaque paramètre peut être
|
|
342
|
+
Chaque paramètre peut être remplacé par une variable d’environnement en utilisant le préfixe `BACKPROPAGATE_` :
|
|
290
343
|
|
|
291
344
|
| Variable | Valeur par défaut | Notes |
|
|
292
345
|
|---|---|---|
|
|
293
346
|
| `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
294
|
-
| `BACKPROPAGATE_LOG_JSON` | auto |
|
|
347
|
+
| `BACKPROPAGATE_LOG_JSON` | auto | Force l’utilisation de journaux JSON ou de la console |
|
|
295
348
|
| `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modèle par défaut |
|
|
296
|
-
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Taux d
|
|
297
|
-
| `BACKPROPAGATE_LORA__R` | `256` | Rang LoRA (valeur par défaut de la version
|
|
298
|
-
| `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` |
|
|
349
|
+
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Taux d’apprentissage |
|
|
350
|
+
| `BACKPROPAGATE_LORA__R` | `256` | Rang LoRA (valeur par défaut de la version 1.3 ; utilisez l’option `--lora-preset=fast` pour la valeur par défaut de la version 1.2.x, qui est de 16) |
|
|
351
|
+
| `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Isolation du système de fichiers de l’interface utilisateur |
|
|
299
352
|
|
|
300
|
-
Les clés imbriquées utilisent un double
|
|
353
|
+
Les clés imbriquées utilisent un double soulignement (`MODEL__NAME`, et non `MODEL_NAME`). La référence complète se trouve à la page [du manuel des variables d’environnement](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/).
|
|
301
354
|
|
|
302
|
-
##
|
|
355
|
+
## Prédéfinis de modèle
|
|
303
356
|
|
|
304
|
-
|
|
|
357
|
+
| Prédéfinis | VRAM | Licence | Notes |
|
|
305
358
|
|---|---|---|---|
|
|
306
|
-
| Qwen-3.5-4B | ~8
|
|
307
|
-
| Phi-4-mini-3.8B | ~8
|
|
308
|
-
| SmolLM3-3B | ~6
|
|
309
|
-
| Qwen 2.5 7B | ~12
|
|
310
|
-
| Qwen 2.5 3B | ~8
|
|
311
|
-
| Llama 3.2 3B | ~8
|
|
312
|
-
| Llama 3.2 1B | ~6
|
|
313
|
-
| Mistral 7B | ~12
|
|
359
|
+
| 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. |
|
|
360
|
+
| Phi-4-mini-3.8B | ~8 Go | MIT | Bon en raisonnement / mathématiques / code. Licence strictement propre. |
|
|
361
|
+
| SmolLM3-3B | ~6 Go | Apache 2.0 | Recette entièrement ouverte. Contexte natif de 64 Ko. |
|
|
362
|
+
| Qwen 2.5 7B | ~12 Go | Apache 2.0 | Valeur par défaut existante. Meilleure qualité des prédéfinis de 7 milliards de paramètres. |
|
|
363
|
+
| Qwen 2.5 3B | ~8 Go | Qwen-Research | ⚠ Licence de recherche : consultez les conditions de licence de Qwen avant une utilisation commerciale. |
|
|
364
|
+
| Llama 3.2 3B | ~8 Go | Llama Community | Alternative solide à Qwen 3B avec des réserves permissives. |
|
|
365
|
+
| Llama 3.2 1B | ~6 Go | Llama Community | Pour des expériences rapides sur des cartes de petite taille. |
|
|
366
|
+
| Mistral 7B | ~12 Go | Apache 2.0 | Comparable à Qwen 7B, modèle de chat différent. |
|
|
314
367
|
|
|
315
|
-
D
|
|
368
|
+
D’autres modèles fonctionnent souvent, mais seuls ces huit sont pris en charge dans les tests CI. Utilisez l’option `--lora-preset=quality` (valeur par défaut) pour les cibles de rang 256 / entièrement linéaires selon Biderman 2024 + Thinking Machines 2025, ou l’option `--lora-preset=fast` pour la cible héritée de rang 16 / q+v si vous avez besoin de l’empreinte de la version 1.2.x.
|
|
316
369
|
|
|
317
|
-
##
|
|
370
|
+
## Résolution des problèmes
|
|
318
371
|
|
|
319
|
-
Un bref index des
|
|
372
|
+
Un bref index des échecs les plus courants lors de la première exécution. L’index inverse complet se trouve à la page [du manuel de résolution des problèmes](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/). Pour une analyse approfondie du pilote / VRAM / précision mixte, consultez la page [de résolution des problèmes de CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/).
|
|
320
373
|
|
|
321
|
-
| Symptôme | Code d
|
|
374
|
+
| Symptôme | Code d’erreur | Solution |
|
|
322
375
|
|---|---|---|
|
|
323
|
-
| La mémoire
|
|
324
|
-
| HuggingFace renvoie 401 /
|
|
325
|
-
| `register_with_ollama` : connexion refusée. | `DEP_OLLAMA_REGISTRATION_FAILED` | Démarrez le démon : `ollama serve`. Installez
|
|
326
|
-
|
|
|
327
|
-
|
|
|
328
|
-
| `backprop ui --share`
|
|
329
|
-
| L
|
|
376
|
+
| La mémoire du GPU est épuisée au milieu de l’entraînement. | `RUNTIME_GPU_OOM` | Automatique — La rétropropagation divise par deux la taille du lot et réessaie jusqu'à 3 fois. Pour désactiver : `Trainer(oom_recovery=False)`. Pour forcer une taille plus petite : `--batch-size 1`. |
|
|
377
|
+
| HuggingFace renvoie 401 / « modèle introuvable ». | `DEP_MODEL_LOAD_FAILED` | `huggingface-cli login` et réessayer. En cas de fautes de frappe, copiez l’ID exact depuis <https://huggingface.co/models>. |
|
|
378
|
+
| `register_with_ollama` : connexion refusée. | `DEP_OLLAMA_REGISTRATION_FAILED` | Démarrez le démon : `ollama serve`. Installez à partir de <https://ollama.com>. Peut être réessayé. |
|
|
379
|
+
| Espace disque insuffisant 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 et valide est intact. |
|
|
380
|
+
| Entraînement interrompu en raison d’une surchauffe du GPU. | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | Automatique — La rétropropagation s’interrompt lorsque la température atteint le seuil et reprend lorsque le GPU refroidit. Améliorez le flux d’air si cela se reproduit. |
|
|
381
|
+
| `backprop ui --share` rejeté. | `RUNTIME_UI_AUTH_NOT_ENFORCED` | Passez `--auth user:password`, ou utilisez le transfert de port SSH à la place (voir [Interface utilisateur Web](#interface-utilisateur-web)). |
|
|
382
|
+
| L’exportation 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 création Visual C++ et de CMake. |
|
|
330
383
|
|
|
331
384
|
## Signaler des bogues
|
|
332
385
|
|
|
333
|
-
Lorsqu
|
|
386
|
+
Lorsqu’une opération échoue, Backpropagate affiche une ligne au démarrage, comme `run_started run_id=<uuid>`, et associe le même ID à chaque ligne de journal, à chaque point de contrôle et à chaque entrée Weights & Biases. **Incluez le `run_id` dans tout signalement de bogue** — cela permet à la personne chargée de la maintenance de corréler tous les éléments de cette exécution spécifique.
|
|
334
387
|
|
|
335
|
-
Un bon
|
|
388
|
+
Un bon signalement de bogue comprend :
|
|
336
389
|
|
|
337
|
-
1. **
|
|
338
|
-
2. **Le code d
|
|
339
|
-
3. **La trace
|
|
340
|
-
4. **La sortie de
|
|
390
|
+
1. **Le `run_id`** — l’UUID affiché au démarrage. Un seul UUID permet à la personne chargée de la maintenance de corréler chaque ligne de journal, chaque point de contrôle et chaque entrée Weights & Biases pour cette exécution spécifique.
|
|
391
|
+
2. **Le code d’erreur** — la ligne `[CODE_NAME]: message` dans stderr. Consultez [les codes d’erreur](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) pour obtenir le catalogue des codes stables.
|
|
392
|
+
3. **La trace d’exécution expurgée.** Stderr est automatiquement expurgé en mode non verbeux (les jetons Bearer, `sk-*`, `hf_*`, les clés AWS, les paires `password=` / `token=` / `api_key=` sont supprimés) — il est sûr de la copier-coller. Pour la trace d’exécution complète et non expurgée, réexécutez avec `BACKPROPAGATE_DEBUG=1` (ou `--verbose`) ; examinez-la avant de la publier.
|
|
393
|
+
4. **La sortie de `backprop info`.** Une seule commande affiche Python / PyTorch / CUDA / modèle GPU / VRAM / OS / extras installés — tout ce dont la personne chargée de la maintenance a besoin pour identifier une régression spécifique à une plateforme.
|
|
341
394
|
|
|
342
|
-
Le [modèle de
|
|
395
|
+
Le [modèle de signalement de bogue](https://github.com/mcp-tool-shop-org/backpropagate/issues/new?template=bug_report.yml) demande explicitement chacun de ces éléments afin d’accélérer le processus de triage. Les questions, les idées ou les messages du type « est-ce normal ? » doivent être publiés dans [les discussions GitHub](https://github.com/mcp-tool-shop-org/backpropagate/discussions). Les problèmes de sécurité doivent être signalés en privé via le [formulaire de signalement de sécurité GitHub](https://github.com/mcp-tool-shop-org/backpropagate/security/advisories/new) — consultez [SECURITY.md](SECURITY.md) pour connaître la politique et les délais de réponse.
|
|
343
396
|
|
|
344
397
|
## Confidentialité
|
|
345
398
|
|
|
346
|
-
|
|
399
|
+
Tout l’entraînement se déroule localement sur votre GPU. Backpropagate n’effectue aucune requête réseau, sauf pour télécharger des modèles depuis HuggingFace (ce que vous initiez). Pas de télémétrie, pas de dépendance au cloud.
|
|
347
400
|
|
|
348
401
|
## Références
|
|
349
402
|
|
|
350
|
-
Les
|
|
403
|
+
Les valeurs par défaut de Backpropagate et le mode d’entraînement multi-exécution sont basés sur des recherches récentes. Si vous êtes intéressé par les techniques sous-jacentes :
|
|
351
404
|
|
|
352
|
-
- **Hu et al. 2021.** *LoRA:
|
|
353
|
-
- **Biderman et al. 2024.** *LoRA
|
|
354
|
-
- **Thinking Machines 2025.** *LoRA
|
|
355
|
-
- **Kirkpatrick et al. 2017.** *
|
|
356
|
-
- **Wang et al. 2023.** *
|
|
357
|
-
- **Yadav et al. 2023.** *TIES-Merging:
|
|
358
|
-
- **Qiao & Mahdavi 2025.** *
|
|
405
|
+
- **Hu et al. 2021.** *LoRA : adaptation de faible rang des grands modèles de langage.* [arXiv:2106.09685](https://arxiv.org/abs/2106.09685) — l’article fondateur qui présente LoRA, qui est la méthode utilisée par Backpropagate pour entraîner efficacement les adaptateurs.
|
|
406
|
+
- **Biderman et al. 2024.** *LoRA apprend moins et oublie moins.* [arXiv:2405.09673](https://arxiv.org/abs/2405.09673) — preuves empiriques que LoRA avec un rang de 256 et des cibles entièrement linéaires correspond à la qualité de l’ajustement complet sur la plupart des tâches post-entraînement, pour 67 % de la puissance de calcul. Cela détermine la configuration LoRA par défaut de Backpropagate v1.3.
|
|
407
|
+
- **Thinking Machines 2025.** *LoRA sans regret.* [thinkingmachines.ai/blog/lora](https://thinkingmachines.ai/blog/lora/) — le suivi pratique qui identifie la correction de 10 fois du taux d’apprentissage par rapport à l’ajustement complet nécessaire à un rang LoRA élevé.
|
|
408
|
+
- **Kirkpatrick et al. 2017.** *Surmonter l’oubli catastrophique dans les réseaux neuronaux.* [arXiv:1612.00796](https://arxiv.org/abs/1612.00796) — la caractérisation originale de la raison pour laquelle les réseaux neuronaux « oublient » l’entraînement antérieur lorsque vous effectuez un ajustement sur de nouvelles données (EWC — consolidation du poids élastique).
|
|
409
|
+
- **Wang et al. 2023.** *Apprentissage de sous-espace orthogonal pour l’apprentissage continu de modèles de langage.* [arXiv:2310.14152](https://arxiv.org/abs/2310.14152) — O-LoRA, une approche antérieure de l’utilisation de LoRA pour l’apprentissage continu en contraignant les nouveaux adaptateurs à des sous-espaces orthogonaux.
|
|
410
|
+
- **Yadav et al. 2023.** *TIES-Merging : résolution des interférences lors de la fusion de modèles.* [arXiv:2306.01708](https://arxiv.org/abs/2306.01708) — une technique fondamentale pour fusionner plusieurs modèles ajustés sans interférence.
|
|
411
|
+
- **Qiao & Mahdavi 2025.** *Fusionner avant d’oublier : un apprentissage continu LoRA unique via une fusion continue.* [arXiv:2512.23017](https://arxiv.org/abs/2512.23017) — l’algorithme spécifique que le fusionneur multi-exécution de Backpropagate met en œuvre. Un prépublication de décembre 2025 ; Backpropagate est le premier utilisateur connu de cet article.
|
|
359
412
|
|
|
360
413
|
## Licence
|
|
361
414
|
|