@mcptoolshop/backpropagate 1.6.0 → 1.7.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 +32 -21
- package/README.fr.md +36 -25
- package/README.hi.md +36 -25
- package/README.it.md +32 -21
- package/README.ja.md +32 -21
- package/README.md +33 -22
- package/README.pt-BR.md +32 -21
- package/README.zh.md +34 -23
- package/package.json +1 -1
package/README.es.md
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
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>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# Ajusta un modelo QLoRA de 32B o un modelo completo de 7B en una sola GPU. Luego, intégralo en Ollama
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Realiza el ajuste fino de modelos de lenguaje grandes en una **única** GPU, dimensionada según la tarjeta que realmente tienes. Tres líneas de código Python para ajustar un modelo QLoRA de 7B a 34B en una sola tarjeta de consumo de 32 GB (RTX 5090); una opción: `--full-ft-offload` — realiza el ajuste fino completo de un modelo de la clase 7B descargando el estado del optimizador a la RAM del host. Un comando más exporta a Ollama y, luego, `ollama run` ejecuta tu modelo ajustado. Se adapta fácilmente hasta los 16 GB. Funciona perfectamente en Windows.
|
|
21
21
|
|
|
22
22
|
```python
|
|
23
23
|
from backpropagate import Trainer
|
|
@@ -69,33 +69,38 @@ Backpropagate es la opción que faltaba: **una API de Python de 3 líneas para u
|
|
|
69
69
|
|
|
70
70
|
Si probaste una de las bibliotecas anteriores y te frustraste con la "ceremonia" del archivo de configuración, o te encontraste con una limitación de la familia de modelos, o querías opciones predeterminadas para Windows, Backpropagate es para ti.
|
|
71
71
|
|
|
72
|
-
##
|
|
72
|
+
## Qué puedes ajustar en una sola GPU
|
|
73
73
|
|
|
74
|
-
Aquí tienes el rango práctico en una
|
|
74
|
+
Backpropagate dimensiona la ejecución según tu tarjeta. Aquí tienes el rango práctico en una GPU de consumo de **32 GB** (RTX 5090) con 64 GB de RAM del host: este es el equipo en el que se realiza el ajuste:
|
|
75
75
|
|
|
76
|
-
|
|
|
76
|
+
| Tamaño del modelo | Método | Estado en una tarjeta de 32 GB |
|
|
77
77
|
|---|---|---|
|
|
78
|
-
| Qwen
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
78
|
+
| 7B (Qwen 2.5 7B / Llama-3.1-8B / Mistral 7B) | QLoRA | Cómodo: ~7–8 GB. Longitud completa de la secuencia, mucho margen. |
|
|
79
|
+
| **14B** (Qwen2.5-14B) | QLoRA | **El punto óptimo para el uso diario: ~8,5 GB**, según lo medido. rank/alpha 32, paged 8-bit AdamW, 4096 ctx. |
|
|
80
|
+
| 24B (Mistral-Small-24B) | QLoRA | ~18 GB. Encaja con margen en 4096 ctx. |
|
|
81
|
+
| **32B** (Qwen2.5-32B) | QLoRA | **Apenas encaja: ~26 GB** con `max_len 2048` + paged 8-bit AdamW. Límite máximo. |
|
|
82
|
+
| ≤6B | `mode="full"` (ajuste fino completo) | Ajuste fino completo solo en GPU: pesos bf16, sin adaptador. El límite consciente de la tarjeta es de 6B en 32 GB. |
|
|
83
|
+
| **Clase 7B** (Qwen 2.5 7B / Llama-3.1-8B / Mistral 7B) | `mode="full" --full-ft-offload` | **Ajuste fino completo mediante la descarga a la CPU FSDP2:** descarga los parámetros y el optimizador a 64 GB de RAM del host. Más lento (limitado por el ancho de banda); Linux/WSL2. |
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
Dos cosas para las que la mayoría de las bibliotecas de una sola GPU te dirigen a otro lugar: **QLoRA de 24–34B** y **ajuste fino completo en una sola tarjeta de la clase 7B**. Backpropagate lo hace en una sola tarjeta de consumo y, luego, exporta el resultado directamente a Ollama.
|
|
85
86
|
|
|
86
|
-
|
|
87
|
+
**El límite del ajuste fino completo es consciente de la tarjeta.** Se deriva de la aritmética de memoria de entrenamiento de 4 sumandos (pesos + gradientes + optimizador + activaciones) en relación con tu VRAM *detectada*: **16 GB → 4B, 24 GB → 5B, 32 GB → 6B** solo en GPU. `--full-ft-offload` lo amplía a la **clase 7B** descargando los parámetros y el estado del optimizador a la RAM del host mediante FSDP2 `fully_shard` + `CPUOffloadPolicy` (más lento, limitado por el ancho de banda PCIe/CPU; requiere ~64 GB de RAM del host y un backend NCCL, es decir, Linux/WSL2). Anula explícitamente el límite con `--full-ft-ceiling-billions`. Un modelo que supere incluso el límite de descarga finalizará con `RUNTIME_FULL_FT_MODEL_TOO_LARGE`, indicando la solución (`--full-ft-offload` o LoRA/QLoRA). Consulta [la página completa del manual de ajuste fino](https://mcp-tool-shop-org.github.io/backpropagate/handbook/full-fine-tuning/) para ver las matemáticas de VRAM y la comparación de calidad de Biderman 2024 / Thinking Machines 2025.
|
|
87
88
|
|
|
88
|
-
|
|
89
|
+
### Se adapta a 16 GB
|
|
90
|
+
|
|
91
|
+
El rango de 16 GB (RTX 4080 / 5080 / 4070 Ti Super) sigue siendo excelente: QLoRA de 7B en ~7–8 GB y un verdadero ajuste fino completo de un modelo genuino de ~3B (SmolLM3-3B, Qwen2.5-3B, Llama-3.2-3B/1B) dentro de 16 GB mediante `mode="full"` (pesos bf16 + checkpointing de gradiente + paged 8-bit AdamW). El mismo código selecciona el tamaño del lote y el límite de ajuste fino completo que se ajustan a la tarjeta que detecta; no hay opciones para cambiar entre equipos.
|
|
92
|
+
|
|
93
|
+
La cuantización de 2 bits (AQLM / QuIP#) queda **fuera del alcance**: una base de 2 bits no se puede fusionar limpiamente con los pesos de precisión completa, lo que interrumpe el contrato de adaptador fusionable → GGUF → Ollama (el objetivo principal de la canalización). En su lugar, Backpropagate ofrece las opciones: QLoRA, `mode="full"`, `--full-ft-offload` y la ruta de cálculo FP8 (`--fp8`, Blackwell/Hopper); todas ellas siguen siendo fusionables y exportables.
|
|
89
94
|
|
|
90
95
|
## Para lo que NO sirve Backpropagate
|
|
91
96
|
|
|
92
97
|
Si tu caso de uso es el siguiente, te irá mejor con una biblioteca diferente; Backpropagate no es la opción correcta e intentar que funcione costaría más que simplemente utilizar la herramienta adecuada. Leer esta sección antes de comenzar te ahorrará el ciclo de instalación y abandono:
|
|
93
98
|
|
|
94
|
-
- **Ajuste fino
|
|
95
|
-
- **RL en línea: PPO / GRPO / RLVR** — Backpropagate realiza un ajuste fino
|
|
96
|
-
- **Entrenamiento
|
|
97
|
-
- **Entrenamiento en macOS con CUDA** — Apple Silicon no tiene CUDA, por lo que la ruta de CUDA
|
|
98
|
-
- **Cualquier
|
|
99
|
+
- **Ajuste fino con todos los parámetros más allá del límite de descarga (≈13B+)** — Propague hacia atrás ajustes finos completos hasta **~6B en GPU pura y ~7B mediante `--full-ft-offload`** en una tarjeta de 32 GB (vea [el rango](#qué-puede-ajustar-en-una-sola-GPU)). Un ajuste fino *verdaderamente completo* de un modelo de 13B+ va más allá de eso; requiere FSDP multi-GPU o una tarjeta más grande (utilice `transformers.Trainer` en varias GPU, o alquile una A100/H100). Sin embargo, antes de invertir esos recursos computacionales: investigaciones recientes ([Biderman 2024](https://arxiv.org/abs/2405.09673), [Thinking Machines 2025](https://thinkingmachines.ai/blog/lora/)) muestran que LoRA, con la configuración correcta, iguala la calidad del ajuste fino completo en la mayoría de las tareas posteriores al entrenamiento (seguimiento de instrucciones, adaptación de dominio, personalidad/estilo) con aproximadamente el 67% de los recursos computacionales; por lo tanto, QLoRA hasta 34B, que Backpropagate realiza en una sola tarjeta, no pierde nada para el trabajo que la mayoría de los usuarios realmente desean.
|
|
100
|
+
- **RL en línea: PPO / GRPO / RLVR** — Backpropagate realiza un ajuste fino SFT de una sola etapa más un ajuste de preferencias sin referencia (ORPO en v1.5; SimPO + KTO en v1.6). Lo que *no* hace es el aprendizaje por refuerzo en línea: PPO, GRPO o RLVR, lo cual requiere un modelo de recompensa o un ciclo de generación y puntuación además del paso de entrenamiento. Para estos casos, utilice TRL directamente o LLaMA-Factory. (El ajuste de preferencias sin referencia se ajusta al rango de una sola etapa porque no hay un modelo de referencia separado que mantener en la memoria; vea la nota sobre ORPO en [Inicio rápido](#inicio-rápido)).
|
|
101
|
+
- **Entrenamiento multi-nodo** — solo GPU única en una máquina. El uso de varias GPU en una misma máquina funciona (mediante `accelerate launch`), pero no está oficialmente soportado.
|
|
102
|
+
- **Entrenamiento en macOS con CUDA** — Apple Silicon no tiene CUDA, por lo que la ruta de CUDA se ejecuta en un equipo Linux o Windows con una GPU NVIDIA. Aún puede ejecutar el modelo entrenado en un Mac a través de Ollama. Una ruta MLX **experimental y sin verificar** (`--backend mlx`) entrena un adaptador LoRA de forma nativa en Apple Silicon; vea [Apple Silicon (MLX)](#apple-silicon-mlx--vista-previa-sin-verificar). Solo es para LoRA-SFT y **no ha sido verificado en hardware real** (sin soporte), por lo que, para cualquier cosa más allá de un LoRA SFT (ORPO, ajuste fino completo, FP8, ejecución múltiple), utilice la ruta CUDA.
|
|
103
|
+
- **Cualquier modelo fuera de las familias probadas** — Qwen 2.5 / 3.5 (7B / 4B), Phi-4-mini-3.8B, SmolLM3-3B, Llama 3.2 (3B / 1B), Mistral 7B. Otros modelos a menudo funcionan, pero no están incluidos en las pruebas de CI.
|
|
99
104
|
|
|
100
105
|
Si necesita alguna de estas cosas, utilice una de las bibliotecas enumeradas anteriormente. Son mejores para ello.
|
|
101
106
|
|
|
@@ -174,7 +179,9 @@ La tasa de aprendizaje predeterminada se reduce automáticamente a `8e-6` para O
|
|
|
174
179
|
|
|
175
180
|
Nuevo en v1.5: destile un modelo de razonamiento de forma sencilla. Pase `--reasoning-trace` (CLI) o `Trainer(..., reasoning_trace=True)` (Python) y proporcione trazas que mantengan una cadena de pensamiento `<think>...</think>` dentro del turno del asistente; la mitad de SFT puro de la destilación de [DeepSeek-R1](https://arxiv.org/abs/2501.12948), no se requiere RL. La retropropagación mantiene `<think>` en el objetivo de entrenamiento, elimina las trazas vacías o demasiado largas (filtrado de la longitud de la traza) y aumenta el valor predeterminado de `max_seq_length` a 8192 para la cadena de pensamiento más larga. Lo más importante es que `<think>` permanece como **texto sin formato**; no hay tokens especiales, no se cambia el tamaño del embedding; por lo tanto, el GGUF combinado aún se exporta a Ollama como cualquier otro ajuste fino. Solo SFT. Consulte la [receta de trazado de razonamiento](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/#reasoning-trace-sft-r1-distillation) para conocer el formato del conjunto de datos y el rango de tokens ajustable.
|
|
176
181
|
|
|
177
|
-
### Apple Silicon (MLX) —
|
|
182
|
+
### Apple Silicon (MLX) — vista previa sin verificar
|
|
183
|
+
|
|
184
|
+
> ⚠️ **Vista previa sin verificar: no forma parte del conjunto de funciones compatibles.** La ruta MLX se construye y se prueba a nivel de unidad, pero **no** ha sido verificada en hardware Apple Silicon real (`mlx-lm` solo es para Apple y no puede ejecutarse en los equipos NVIDIA en los que se desarrolla Backpropagate). Considere todo lo siguiente como experimental, úselo bajo su propio riesgo y [informe sobre cualquier anomalía](#informar-sobre-errores) si lo ejecuta en un Mac de la serie M.
|
|
178
185
|
|
|
179
186
|
Nuevo en v1.5: **una API, dos vías**. CUDA sigue siendo el backend canónico y verificado; MLX es una segunda vía que se entrena en un Mac de la serie M a través del conjunto de herramientas [`mlx_lm.lora`](https://github.com/ml-explore/mlx-lm) de Apple (memoria unificada, sin CUDA). La misma estructura de 3 líneas selecciona la vía según el hardware: `backend='auto'` (el valor predeterminado) dirige el flujo a CUDA en NVIDIA y a MLX en Apple Silicon, por lo que los sistemas CUDA existentes son idénticos a nivel de bytes.
|
|
180
187
|
|
|
@@ -192,7 +199,7 @@ backprop train --data my_data.jsonl --backend mlx --steps 100
|
|
|
192
199
|
|
|
193
200
|
En v1.5, la vía MLX es **solo LoRA SFT**; no hay ORPO, no hay FP8, no hay `mode='full'`, no hay ejecución múltiple en MLX todavía (cada una se rechaza con `CONFIG_INVALID_SETTING`; use `backend='cuda'`/`'auto'` en un sistema NVIDIA para esas opciones). El adaptador resultante es un archivo safetensors simple y se exporta a Ollama a través de la misma ruta que la vía CUDA.
|
|
194
201
|
|
|
195
|
-
>
|
|
202
|
+
> Forzar `--backend mlx` en un host que no sea Apple genera el error `CONFIG_INVALID_SETTING`; la falta de una cadena de herramientas `mlx_lm` en un Mac genera `DEP_MLX_UNAVAILABLE`.
|
|
196
203
|
|
|
197
204
|
Para obtener más flujos de trabajo de principio a fin (ajuste fino y carga en HF Hub, reanudación después de que se agota la memoria, SLAO de ejecución múltiple en una campaña larga, etc.), consulte la [página de recetas del manual](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/).
|
|
198
205
|
|
|
@@ -364,8 +371,12 @@ Las claves anidadas utilizan doble guion bajo (`MODEL__NAME`, no `MODEL_NAME`).
|
|
|
364
371
|
| Llama 3.2 3B | ~8 GB | Llama Community | Una alternativa sólida a Qwen 3B con advertencias permisivas. |
|
|
365
372
|
| Llama 3.2 1B | ~6 GB | Llama Community | Para experimentos rápidos en tarjetas pequeñas. |
|
|
366
373
|
| Mistral 7B | ~12 GB | Apache 2.0 | Comparable a Qwen 7B, plantilla de chat diferente. |
|
|
374
|
+
| Llama-3.1-8B | ~7-8 GB (QLoRA) | Llama-3.1-Community | 8B QLoRA, 128K de contexto nativo (la cláusula de >700M de usuarios activos mensuales requiere una licencia Meta separada). |
|
|
375
|
+
| **Qwen2.5-14B** | ~8.5 GB (QLoRA) | Apache 2.0 | **El punto óptimo para el uso diario con 32 GB** — rango/alfa 32, AdamW de 8 bits paginado, 4096 ctx. |
|
|
376
|
+
| Mistral-Small-24B | ~18 GB (QLoRA) | Apache 2.0 | 24B QLoRA en una tarjeta de 32 GB con margen de 4096 ctx. |
|
|
377
|
+
| **Qwen2.5-32B** | ~26 GB (QLoRA) | Apache 2.0 | **Límite superior del rango de 32 GB** — apenas cabe con `max_len 2048` + AdamW de 8 bits paginado. |
|
|
367
378
|
|
|
368
|
-
Otros modelos a menudo funcionan
|
|
379
|
+
Otros modelos a menudo funcionan; las filas anteriores son los ajustes preestablecidos seleccionados: el nivel de 14B–32B está ajustado con QLoRA para una tarjeta de 32 GB (el rango medido). Utilice `--lora-preset=quality` (predeterminado) para objetivos de rango 256 / todos los lineales según Biderman 2024 + Thinking Machines 2025, o `--lora-preset=fast` para el objetivo de rango 16 / q+v heredado si necesita la huella de v1.2.x.
|
|
369
380
|
|
|
370
381
|
## Solución de problemas
|
|
371
382
|
|
package/README.fr.md
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
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>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# Ajustez finement un modèle QLoRA de 32 milliards de paramètres ou un modèle complet de 7 milliards de paramètres sur une seule carte graphique (GPU). Déployez-le sur Ollama
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Effectuez une rétropropagation pour ajuster finement les grands modèles de langage sur une **seule** carte graphique, dimensionnée en fonction de la carte dont vous disposez réellement. Trois lignes de code Python pour un modèle QLoRA de 7 à 34 milliards de paramètres sur une seule carte grand public de 32 Go (RTX 5090) ; un seul indicateur — `--full-ft-offload` — permet d’effectuer un ajustement fin complet d’un modèle de classe 7B en déplaçant l’état de l’optimiseur vers la mémoire vive de l’hôte. Une commande supplémentaire exporte les données vers Ollama, puis `ollama run` lance votre modèle affiné. L’opération est facilement adaptable pour fonctionner avec une carte de 16 Go. Performances optimales sous Windows.
|
|
21
21
|
|
|
22
22
|
```python
|
|
23
23
|
from backpropagate import Trainer
|
|
@@ -69,33 +69,38 @@ Backpropagate est l'option manquante : une API Python en 3 lignes pour les uti
|
|
|
69
69
|
|
|
70
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 ajuster finement sur une seule carte graphique
|
|
73
73
|
|
|
74
|
-
Voici les limites pratiques sur une carte de
|
|
74
|
+
La rétropropagation adapte l’exécution à votre carte. Voici les limites pratiques sur une carte graphique grand public de **32 Go** (RTX 5090) avec 64 Go de mémoire vive : c’est la configuration sur laquelle elle est optimisée :
|
|
75
75
|
|
|
76
|
-
|
|
|
76
|
+
| Taille du modèle | Méthode | État sur une carte de 32 Go |
|
|
77
77
|
|---|---|---|
|
|
78
|
-
| Qwen
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
78
|
+
| 7B (Qwen 2.5 7B / Llama-3.1-8B / Mistral 7B) | QLoRA | Facile — environ 7 à 8 Go. Longueur de séquence complète, beaucoup de marge. |
|
|
79
|
+
| **14B** (Qwen2.5-14B) | QLoRA | **La configuration idéale pour une utilisation quotidienne — environ 8,5 Go**, mesuré. Rang/alpha 32, paged 8-bit AdamW, 4096 ctx. |
|
|
80
|
+
| 24B (Mistral-Small-24B) | QLoRA | Environ 18 Go. S’adapte avec une marge à 4096 ctx. |
|
|
81
|
+
| **32B** (Qwen2.5-32B) | QLoRA | **S’adapte tout juste — environ 26 Go** avec `max_len 2048` + paged 8-bit AdamW. Limite supérieure. |
|
|
82
|
+
| ≤6B | `mode="full"` (affinement complet) | Ajustement fin complet sur GPU uniquement — poids bf16, pas d’adaptateur. La limite tenant compte de la carte est de 6 milliards de paramètres sur une carte de 32 Go. |
|
|
83
|
+
| **Modèle de classe 7B** (Qwen 2.5 7B / Llama-3.1-8B / Mistral 7B) | `mode="full" --full-ft-offload` | **Ajustement fin complet via FSDP2 avec déchargement sur le CPU** — les paramètres et l’optimiseur sont transférés vers la mémoire vive de l’hôte (64 Go). Plus lent (limité par la bande passante) ; Linux/WSL2. |
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
Deux opérations pour lesquelles la plupart des bibliothèques à carte graphique unique vous renvoient vers d’autres solutions — **QLoRA de 24 à 34 milliards de paramètres** et **ajustement fin complet sur une seule carte de modèle de classe 7B** — Backpropagate effectue ces opérations sur une seule carte grand public, puis exporte le résultat directement vers Ollama.
|
|
85
86
|
|
|
86
|
-
La
|
|
87
|
+
**La limite pour l’ajustement fin complet tient compte de la carte.** Elle est dérivée du calcul de la mémoire d’entraînement à quatre termes (poids + gradients + optimiseur + activations) par rapport à votre VRAM *détectée* : **16 Go → 4 milliards, 24 Go → 5 milliards, 32 Go → 6 milliards** sur GPU uniquement. `--full-ft-offload` augmente cette limite à **modèle de classe 7B** en déplaçant les paramètres et l’état de l’optimiseur vers la mémoire vive via FSDP2 `fully_shard` + `CPUOffloadPolicy` (plus lent, limité par la bande passante PCIe/CPU ; nécessite environ 64 Go de mémoire vive et une implémentation NCCL, c’est-à-dire Linux/WSL2). Définissez explicitement la limite avec `--full-ft-ceiling-billions`. Un modèle dépassant même la limite du déchargement se termine par `RUNTIME_FULL_FT_MODEL_TOO_LARGE`, en indiquant la solution ( `--full-ft-offload` ou LoRA/QLoRA). Consultez [la page complète sur l’ajustement fin](https://mcp-tool-shop-org.github.io/backpropagate/handbook/full-fine-tuning/) pour les calculs de la VRAM et la comparaison de qualité Biderman 2024 / Thinking Machines 2025.
|
|
87
88
|
|
|
88
|
-
|
|
89
|
+
### S’adapte à une carte de 16 Go
|
|
90
|
+
|
|
91
|
+
La limite d’une carte de 16 Go (RTX 4080 / 5080 / 4070 Ti Super) reste optimale : QLoRA de 7B à environ 7–8 Go, et véritable ajustement fin complet d’un modèle authentique d’environ 3 milliards de paramètres (SmolLM3-3B, Qwen2.5-3B, Llama-3.2-3B/1B) dans les 16 Go via `mode="full"` (poids bf16 + contrôle des gradients + paged 8-bit AdamW). Le même code sélectionne la taille du lot et la limite de l’ajustement fin complet qui s’adaptent à la carte détectée, sans indicateurs à modifier entre les configurations.
|
|
92
|
+
|
|
93
|
+
La quantification sur 2 bits (AQLM / QuIP#) est **hors de portée** — une base quantifiée sur 2 bits ne peut pas être fusionnée proprement avec des poids en pleine précision, ce qui rompt le contrat d’adaptateur fusionnable → GGUF → Ollama (le but principal du processus). Les leviers que Backpropagate propose à la place — QLoRA, `mode="full"`, `--full-ft-offload` et le chemin de calcul FP8 (`--fp8`, Blackwell/Hopper) — restent fusionnables et exportables.
|
|
89
94
|
|
|
90
95
|
## Ce que Backpropagate NE permet PAS
|
|
91
96
|
|
|
92
97
|
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 :
|
|
93
98
|
|
|
94
|
-
- **
|
|
95
|
-
- **Apprentissage par renforcement en ligne — PPO / GRPO / RLVR** — Backpropagate effectue un
|
|
96
|
-
- **Entraînement multi-nœuds** —
|
|
97
|
-
- **Entraînement macOS
|
|
98
|
-
- **Tout
|
|
99
|
+
- **Affinement complet des paramètres au-delà du seuil de déchargement (≈13B+)** — Effectuer une rétropropagation d’un affinement complet jusqu’à **~6 Go de GPU pur et ~7 Go via `--full-ft-offload`** sur une carte de 32 Go (voir [l’enveloppe](#what-you-can-fine-tune-on-one-gpu)). Un affinement *véritablement complet* d’un modèle de 13B+ dépasse cette limite : il nécessite un FSDP multi-GPU ou une carte plus grande (utiliser `transformers.Trainer` sur plusieurs GPU, ou louer une A100/H100). Avant de dépenser ces ressources de calcul, cependant : 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 correcte, offre une qualité d’affinement comparable à celle de l’affinement complet pour la plupart des tâches post-entraînement (suivi des instructions, adaptation au domaine, personnalité/style) en utilisant environ 67 % des ressources de calcul. Ainsi, QLoRA jusqu’à 34B, ce que Backpropagate effectue sur une seule carte, ne présente aucun inconvénient pour les tâches que la plupart des utilisateurs souhaitent effectuer.
|
|
100
|
+
- **Apprentissage par renforcement en ligne — PPO / GRPO / RLVR** — Backpropagate effectue un affinement SFT en une seule étape, ainsi qu’un ajustement de préférence sans référence (ORPO dans v1.5 ; SimPO + KTO dans v1.6). Ce que cela 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 cas, utilisez TRL directement ou LLaMA-Factory. (L’ajustement de préférence sans référence correspond à 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 [Quick Start](#quick-start).)
|
|
101
|
+
- **Entraînement multi-nœuds** — un seul 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.
|
|
102
|
+
- **Entraînement macOS avec CUDA** — Apple Silicon ne dispose pas de CUDA, donc le chemin CUDA s’exécute sur une machine Linux ou Windows dotée d’un GPU NVIDIA. Vous pouvez toujours exécuter le modèle entraîné sur un Mac via Ollama. Un rail MLX **expérimental et non vérifié** (`--backend mlx`) entraîne un adaptateur LoRA de manière native sur Apple Silicon — voir [Apple Silicon (MLX)](#apple-silicon-mlx--unverified-preview). Il n’effectue qu’un affinement SFT avec LoRA et **n’a pas été vérifié en conditions réelles** (pas de prise en charge), donc pour tout ce qui dépasse un affinement SFT avec LoRA (ORPO, affinement complet, FP8, exécution multiple), vous devez utiliser le rail CUDA.
|
|
103
|
+
- **Tout modèle autre que ceux testés** — 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 CI.
|
|
99
104
|
|
|
100
105
|
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
106
|
|
|
@@ -145,7 +150,7 @@ Cela entraîne un adaptateur Qwen 2.5 7B sur 5 courtes conversations au format
|
|
|
145
150
|
|
|
146
151
|
Les formats Alpaca (`instruction` / `output`), OpenAI chat (`messages`) et texte brut fonctionnent également — Backpropagate détecte automatiquement le format.
|
|
147
152
|
|
|
148
|
-
###
|
|
153
|
+
### Ajustement de préférence (ORPO, SimPO, KTO)
|
|
149
154
|
|
|
150
155
|
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
156
|
|
|
@@ -166,15 +171,17 @@ trainer.export("gguf", quantization="q4_k_m")
|
|
|
166
171
|
backprop train --data preferences.jsonl --method orpo --steps 100
|
|
167
172
|
```
|
|
168
173
|
|
|
169
|
-
Le taux d’apprentissage par défaut
|
|
174
|
+
Le taux d’apprentissage par défaut diminue automatiquement à `8e-6` pour ORPO (la perte est plus marquée que pour un simple SFT) ; ajustez `--orpo-beta` (par défaut `0.1`) pour pondérer la pénalité du rapport de cotes. ORPO utilise uniquement le mode `"lora"`.
|
|
170
175
|
|
|
171
|
-
**Nouveauté dans
|
|
176
|
+
**Nouveauté dans v1.6 — SimPO et KTO.** `--method simpo` ([Meng et al. 2024](https://arxiv.org/abs/2405.14734)) est sans référence, avec une récompense normalisée en fonction de la longueur, et utilise les mêmes données appariées `{prompt, chosen, rejected}` que 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}` — évaluations positives/négatives par exemple — pour la vaste classe de commentaires qui ne sont pas des paires A/B organisées ; il équilibre automatiquement les pondérations de perte souhaitables/indésirables en fonction du nombre d’étiquettes. Les deux utilisent uniquement le mode `"lora"` et restent dans l’enveloppe SFT avec un seul GPU (pas de modèle de référence distinct). Consultez le [manuel sur l’ajustement de préférence](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 ne permet PAS](#what-backpropagate-is-not-for).
|
|
172
177
|
|
|
173
178
|
### SFT avec suivi du raisonnement (distillation R1)
|
|
174
179
|
|
|
175
180
|
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
181
|
|
|
177
|
-
### Apple Silicon (MLX) —
|
|
182
|
+
### Apple Silicon (MLX) — aperçu non vérifié
|
|
183
|
+
|
|
184
|
+
> ⚠️ **Aperçu non vérifié — ne fait pas partie de l’ensemble des fonctionnalités prises en charge.** Le rail MLX est construit et testé avec des tests unitaires, mais n’a **pas** été vérifié en conditions réelles sur Apple Silicon (mlx-lm est spécifique à Apple et ne peut pas s’exécuter sur les machines NVIDIA sur lesquelles Backpropagate est développé). Considérez tout ce qui suit comme expérimental, utilisez-le à vos propres risques et [signalez les anomalies](#reporting-bugs) si vous l’exécutez sur un Mac de la série M.
|
|
178
185
|
|
|
179
186
|
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
187
|
|
|
@@ -192,7 +199,7 @@ backprop train --data my_data.jsonl --backend mlx --steps 100
|
|
|
192
199
|
|
|
193
200
|
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
201
|
|
|
195
|
-
>
|
|
202
|
+
> Forcer `--backend mlx` sur un hôte non Apple génère une erreur `CONFIG_INVALID_SETTING` ; l’absence d’une chaîne d’outils `mlx_lm` sur un Mac déclenche `DEP_MLX_UNAVAILABLE`.
|
|
196
203
|
|
|
197
204
|
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
205
|
|
|
@@ -305,7 +312,7 @@ Les écritures dans le système de fichiers à partir de l’interface utilisate
|
|
|
305
312
|
|
|
306
313
|
**Configuration requise :** Python 3.10+ ; GPU CUDA (8 Go ou plus de VRAM) ; PyTorch 2.0+
|
|
307
314
|
|
|
308
|
-
Python 3.10 est pris en charge jusqu’à au moins la
|
|
315
|
+
Python 3.10 est pris en charge jusqu’à au moins la version 1.6 ; il atteindra sa fin de vie en octobre 2026 et sera supprimé dans la première version après cette date. Pour les nouvelles installations, préférez Python 3.11 ou 3.12 — 3.11 est la version la plus testée.
|
|
309
316
|
|
|
310
317
|
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 :
|
|
311
318
|
|
|
@@ -364,8 +371,12 @@ Les clés imbriquées utilisent un double soulignement (`MODEL__NAME`, et non `M
|
|
|
364
371
|
| Llama 3.2 3B | ~8 Go | Llama Community | Alternative solide à Qwen 3B avec des réserves permissives. |
|
|
365
372
|
| Llama 3.2 1B | ~6 Go | Llama Community | Pour des expériences rapides sur des cartes de petite taille. |
|
|
366
373
|
| Mistral 7B | ~12 Go | Apache 2.0 | Comparable à Qwen 7B, modèle de chat différent. |
|
|
374
|
+
| Llama-3.1-8B | ~7 à 8 Go (QLoRA) | Llama-3.1-Community | 8B QLoRA, contexte natif de 128 k (la clause des >700 millions d’utilisateurs actifs mensuels nécessite une licence Meta distincte). |
|
|
375
|
+
| **Qwen2.5-14B** | ~8,5 Go (QLoRA) | Apache 2.0 | **Le point idéal pour un usage quotidien avec 32 Go** — rang/alpha 32, AdamW à 8 bits paginé, 4096 ctx. |
|
|
376
|
+
| Mistral-Small-24B | ~18 Go (QLoRA) | Apache 2.0 | 24B QLoRA sur une carte de 32 Go avec une marge de 4096 ctx. |
|
|
377
|
+
| **Qwen2.5-32B** | ~26 Go (QLoRA) | Apache 2.0 | **Au sommet de l’enveloppe des 32 Go** — s’adapte tout juste à `max_len 2048` + AdamW à 8 bits paginé. |
|
|
367
378
|
|
|
368
|
-
D’autres modèles fonctionnent souvent
|
|
379
|
+
D’autres modèles fonctionnent souvent ; les lignes ci-dessus sont les préréglages organisés — la couche de 14B à 32B est affinée avec QLoRA pour une carte de 32 Go (l’enveloppe mesurée). Utilisez `--lora-preset=quality` (par défaut) pour les cibles de rang 256 / toutes linéaires, comme indiqué dans Biderman 2024 + Thinking Machines 2025, ou `--lora-preset=fast` pour la cible héritée de rang 16 / q+v si vous avez besoin de l’empreinte de v1.2.x.
|
|
369
380
|
|
|
370
381
|
## Résolution des problèmes
|
|
371
382
|
|
package/README.hi.md
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
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>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# 32B QLoRA या 7B एंड-टू-एंड मॉडल को एक GPU पर फाइन-ट्यून करें। इसे ओलामा में भेजें।
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
एकल GPU पर बड़े भाषा मॉडलों का फाइन-ट्यूनिंग बैकप्रोपेगेट करें, जो आपके पास मौजूद कार्ड के आकार के अनुसार हो। तीन पंक्तियों वाला पायथन QLoRA एक 7B–34B मॉडल को एक 32 GB उपभोक्ता कार्ड (RTX 5090) पर चलाता है; एक फ़्लैग — `--full-ft-offload` — 7B-क्लास मॉडल का पूर्ण फाइन-ट्यूनिंग करता है, जिसके लिए ऑप्टिमाइज़र स्टेट को होस्ट RAM में भेजा जाता है। एक और कमांड ओलामा में निर्यात करता है, फिर `ollama run` के साथ आपका फाइन-ट्यून चलाता है। यह आसानी से 16 GB तक स्केल हो सकता है। विंडोज पर उत्कृष्ट प्रदर्शन।
|
|
21
21
|
|
|
22
22
|
```python
|
|
23
23
|
from backpropagate import Trainer
|
|
@@ -69,33 +69,38 @@ LLM को ठीक करने के लिए कई अच्छी ला
|
|
|
69
69
|
|
|
70
70
|
यदि आपने ऊपर दी गई लाइब्रेरी में से किसी एक को आज़माया और कॉन्फ़िगरेशन-फ़ाइल समारोह से निराश हो गए, या मॉडल-परिवार की कमी का सामना किया, या विंडोज-प्रथम डिफ़ॉल्ट्स चाहते थे - तो बैकप्रोपैगेट आपके लिए है।
|
|
71
71
|
|
|
72
|
-
## आप
|
|
72
|
+
## आप एक GPU पर क्या फाइन-ट्यून कर सकते हैं।
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
बैकप्रोपेगेट आपके कार्ड के अनुसार रन का आकार निर्धारित करता है। यहां 32 GB उपभोक्ता GPU (RTX 5090) और 64 GB होस्ट RAM पर व्यावहारिक सीमा दी गई है — जिस डिवाइस पर इसे ट्यून किया गया है:
|
|
75
75
|
|
|
76
|
-
| मॉडल | विधि | स्थिति |
|
|
76
|
+
| मॉडल का आकार | विधि | 32 GB कार्ड पर स्थिति |
|
|
77
77
|
|---|---|---|
|
|
78
|
-
| Qwen
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
78
|
+
| 7B (Qwen 2.5 7B / Llama-3.1-8B / Mistral 7B) | QLoRA | आरामदायक — ~7–8 GB। पूर्ण अनुक्रम लंबाई, बहुत अधिक जगह। |
|
|
79
|
+
| **14B** (Qwen2.5-14B) | QLoRA | **दैनिक उपयोग के लिए सबसे अच्छा — ~8.5 GB**, मापा गया। रैंक/अल्फा 32, पेज किया हुआ 8-बिट AdamW, 4096 ctx। |
|
|
80
|
+
| 24B (Mistral-Small-24B) | QLoRA | ~18 GB। 4096 ctx पर पर्याप्त जगह के साथ फिट बैठता है। |
|
|
81
|
+
| **32B** (Qwen2.5-32B) | QLoRA | **बस फिट बैठता है — ~26 GB**, `max_len 2048` + पेज किया हुआ 8-बिट AdamW पर। सीमा का शीर्ष। |
|
|
82
|
+
| ≤6B | `mode="full"` (पूर्ण फाइन-ट्यूनिंग) | शुद्ध-GPU पूर्ण FT — bf16 वजन, कोई एडाप्टर नहीं। कार्ड-जागरूक सीमा 32 GB पर 6B है। |
|
|
83
|
+
| **7B-क्लास** (Qwen 2.5 7B / Llama-3.1-8B / Mistral 7B) | `mode="full" --full-ft-offload` | **FSDP2 CPU-ऑफलोड के माध्यम से पूर्ण फाइन-ट्यूनिंग** — पैरामीटर + ऑप्टिमाइज़र को 64 GB होस्ट RAM में भेजता है। धीमा (बैंडविड्थ-बाउंड); लिनक्स/WSL2। |
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
दो चीजें जिनके लिए अधिकांश एकल-GPU लाइब्रेरी आपको कहीं और भेजती हैं — **24–34B QLoRA** और **एकल-कार्ड 7B-क्लास पूर्ण फाइन-ट्यूनिंग** — बैकप्रोपेगेट इसे एक उपभोक्ता कार्ड पर करता है, फिर परिणाम को सीधे ओलामा में निर्यात करता है।
|
|
85
86
|
|
|
86
|
-
|
|
87
|
+
**पूर्ण-FT सीमा कार्ड-जागरूक है।** यह आपके *पता लगाए गए* VRAM के विरुद्ध 4-एडेंड प्रशिक्षण-मेमोरी अंकगणित (वजन + ग्रेडिएंट + ऑप्टिमाइज़र + सक्रियण) से प्राप्त होती है: **16 GB → 4B, 24 GB → 5B, 32 GB → 6B** शुद्ध-GPU। `--full-ft-offload` इसे FSDP2 `fully_shard` + `CPUOffloadPolicy` के माध्यम से पैरामीटर + ऑप्टिमाइज़र स्टेट को होस्ट RAM में भेजकर **7B-क्लास** तक बढ़ाता है (धीमा, PCIe/CPU-बैंडविड्थ-बाउंड; लगभग 64 GB होस्ट RAM और एक NCCL बैकएंड की आवश्यकता होती है, यानी लिनक्स/WSL2)। `--full-ft-ceiling-billions` के साथ स्पष्ट रूप से सीमा को ओवरराइड करें। यहां तक कि ऑफलोड सीमा से आगे का मॉडल भी `RUNTIME_FULL_FT_MODEL_TOO_LARGE` के साथ बाहर निकल जाता है, जो रिकवरी (`--full-ft-offload`, या LoRA/QLoRA`) का नाम बताता है। VRAM गणित + बिडरमैन 2024 / थिंकिंग मशीन्स 2025 गुणवत्ता तुलना के लिए [पूर्ण फाइन-ट्यूनिंग हैंडबुक पृष्ठ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/full-fine-tuning/) देखें।
|
|
87
88
|
|
|
88
|
-
|
|
89
|
+
### 16 GB तक स्केल होता है
|
|
90
|
+
|
|
91
|
+
16 GB सीमा (RTX 4080 / 5080 / 4070 Ti Super) अभी भी उत्कृष्ट है: ~7–8 GB पर 7B QLoRA, और `mode="full"` के माध्यम से 16 GB के भीतर एक वास्तविक ~3B (SmolLM3-3B, Qwen2.5-3B, Llama-3.2-3B/1B) का सच्चा पूर्ण फाइन-ट्यूनिंग (bf16 वजन + ग्रेडिएंट चेकपॉइंटिंग + पेज किया हुआ 8-बिट AdamW)। समान कोड बैच आकार और पूर्ण-FT सीमा को चुनता है जो भी कार्ड फिट बैठता है — डिवाइसों के बीच बदलने के लिए कोई फ़्लैग नहीं।
|
|
92
|
+
|
|
93
|
+
2-बिट क्वांटाइजेशन (AQLM / QuIP#) **दायरे से बाहर** रहता है — 2-बिट बेस को पूर्ण-सटीक वजन में वापस मर्ज नहीं किया जा सकता है, जिससे मर्ज करने योग्य एडाप्टर → GGUF → ओलामा निर्यात अनुबंध टूट जाता है (पाइपलाइन का पूरा बिंदु)। बैकप्रोपेगेट के पास अन्य सुविधाएँ हैं — QLoRA, `mode="full"`, `--full-ft-offload`, और FP8 कंप्यूट पथ (`--fp8`, ब्लैकवेल/हॉपर`) — ये सभी मर्ज करने योग्य और निर्यात करने योग्य रहते हैं।
|
|
89
94
|
|
|
90
95
|
## बैकप्रोपैगेट किसके लिए नहीं है
|
|
91
96
|
|
|
92
97
|
यदि आपका उपयोग मामला नीचे दिया गया है, तो आपको किसी अन्य लाइब्रेरी के साथ बेहतर अनुभव होगा - बैकप्रोपैगेट सही विकल्प नहीं है और इसे काम करने की कोशिश करने से सही उपकरण तक पहुंचने से अधिक खर्च आएगा। शुरू करने से पहले इस अनुभाग को पढ़ने से इंस्टॉलेशन-और-वापस जाने के चक्र से बचा जा सकता है:
|
|
93
98
|
|
|
94
|
-
-
|
|
95
|
-
- **ऑनलाइन RL — PPO / GRPO / RLVR** — बैकप्रोपगेट सिंगल-स्टेज SFT प्लस संदर्भ-मुक्त प्राथमिकता ट्यूनिंग
|
|
96
|
-
- **मल्टी-नोड प्रशिक्षण** — केवल एक मशीन पर एक GPU। एक मशीन पर मल्टी-GPU काम करता है ( `accelerate launch` के माध्यम से) लेकिन आधिकारिक तौर पर समर्थित नहीं है।
|
|
97
|
-
- **CUDA रेल पर macOS प्रशिक्षण** — Apple
|
|
98
|
-
-
|
|
99
|
+
- **पूर्ण-पैरामीटर फाइन-ट्यूनिंग, ऑफलोड सीमा से आगे (≈13B+)** — पूर्ण-फाइन-ट्यून को अधिकतम ~6B शुद्ध-GPU और ~7B-क्लास तक `--full-ft-offload` के माध्यम से 32 GB कार्ड पर बैकप्रोपगेट करें (देखें [द एनवेलप](#what-you-can-fine-tune-on-one-gpu))। 13B+ मॉडल का *वास्तविक पूर्ण* फाइन-ट्यून इससे आगे है - इसके लिए मल्टी-GPU FSDP या एक बड़ा कार्ड चाहिए (कई GPU पर `transformers.Trainer` का उपयोग करें, या A100/H100 किराए पर लें)। उस कंप्यूटिंग शक्ति को खर्च करने से पहले: हालिया शोध ([बिडरमैन 2024](https://arxiv.org/abs/2405.09673), [थिंकिंग मशीन्स 2025](https://thinkingmachines.ai/blog/lora/)) दर्शाता है कि सही कॉन्फ़िगरेशन पर LoRA अधिकांश पोस्ट-ट्रेनिंग कार्यों (निर्देश-अनुपालन, डोमेन अनुकूलन, व्यक्तित्व/शैली) पर पूर्ण फाइन-ट्यूनिंग गुणवत्ता से मेल खाता है - लगभग 67% कंप्यूटिंग शक्ति के साथ - इसलिए QLoRA को अधिकतम 34B तक उपयोग करें, जिसे बैकप्रोपगेट एक कार्ड पर करता है, और इससे अधिकांश ऑपरेटरों द्वारा किए जाने वाले कार्यों में कोई कमी नहीं होगी।
|
|
100
|
+
- **ऑनलाइन RL — PPO / GRPO / RLVR** — बैकप्रोपगेट सिंगल-स्टेज SFT प्लस संदर्भ-मुक्त प्राथमिकता ट्यूनिंग (v1.5 में ORPO; v1.6 में SimPO + KTO) करता है। यह जो *नहीं* करता है, वह ऑनलाइन सुदृढीकरण सीखना है - PPO, GRPO या RLVR - जिसके लिए एक इनाम मॉडल या प्रशिक्षण चरण के शीर्ष पर पीढ़ी-और-स्कोरिंग लूप की आवश्यकता होती है। उनके लिए, सीधे TRL या LLaMA-फ़ैक्टरी का उपयोग करें। (संदर्भ-मुक्त प्राथमिकता ट्यूनिंग सिंगल-स्टेज एनवेलप में फिट बैठता है क्योंकि मेमोरी में रखने के लिए कोई अलग संदर्भ मॉडल नहीं है; [क्विक स्टार्ट](#quick-start) के तहत ORPO नोट देखें)।
|
|
101
|
+
- **मल्टी-नोड प्रशिक्षण** — केवल एक मशीन पर एक GPU। एक मशीन पर मल्टी-GPU काम करता है ( `accelerate launch` के माध्यम से), लेकिन आधिकारिक तौर पर समर्थित नहीं है।
|
|
102
|
+
- **CUDA रेल पर macOS प्रशिक्षण** — Apple सिलिकॉन में CUDA नहीं है, इसलिए CUDA पथ NVIDIA GPU वाले Linux या Windows बॉक्स पर चलता है। आप अभी भी प्रशिक्षित मॉडल को Ollama के माध्यम से Mac पर चला सकते हैं। एक **प्रायोगिक, अप्रमाणित-पूर्वावलोकन** MLX रेल (`--backend mlx`) Apple सिलिकॉन पर मूल रूप से LoRA एडाप्टर को प्रशिक्षित करता है - [Apple सिलिकॉन (MLX)](#apple-silicon-mlx--unverified-preview) देखें। यह केवल LoRA-SFT है और **वास्तविक सिलिकॉन पर डॉगफूड-प्रमाणित नहीं** है (कोई समर्थन नहीं), इसलिए LoRA SFT (ORPO, पूर्ण फाइन-ट्यून, FP8, मल्टी-रन) से परे किसी भी चीज़ के लिए आप CUDA रेल चाहते हैं।
|
|
103
|
+
- **परीक्षित मॉडल परिवारों के बाहर कुछ भी** — Qwen 2.5 / 3.5 (7B / 4B), Phi-4-mini-3.8B, SmolLM3-3B, Llama 3.2 (3B / 1B), Mistral 7B। अन्य मॉडल अक्सर काम करते हैं लेकिन CI में पिन नहीं किए जाते हैं।
|
|
99
104
|
|
|
100
105
|
यदि आपको इनमें से किसी भी चीज़ की आवश्यकता है, तो ऊपर सूचीबद्ध पुस्तकालयों में से किसी एक का उपयोग करें। वे इसमें बेहतर हैं।
|
|
101
106
|
|
|
@@ -145,7 +150,7 @@ trainer.export('gguf', quantization='q4_k_m')
|
|
|
145
150
|
|
|
146
151
|
अल्पाका (`instruction` / `output`), OpenAI चैट (`messages`), और कच्चे पाठ प्रारूप भी काम करते हैं — बैकप्रोपगेट प्रारूप का स्वचालित रूप से पता लगाता है।
|
|
147
152
|
|
|
148
|
-
###
|
|
153
|
+
### प्राथमिकता ट्यूनिंग (ORPO, SimPO, KTO)
|
|
149
154
|
|
|
150
155
|
v1.5 में नया: सादे प्रदर्शनों के बजाय प्राथमिकताओं पर प्रशिक्षित करें। ORPO संदर्भ-मुक्त और सिंगल-स्टेज है — यह प्राथमिकता संकेत को SFT चरण में जोड़ता है, इसलिए कोई अलग इनाम या संदर्भ मॉडल नहीं है और 3-लाइन आकार अपरिवर्तित रहता है। `--method orpo` (CLI) या `method="orpo"` (Python) पास करें और `{prompt, chosen, rejected}` (या केवल `{chosen, rejected}`) पंक्तियों के एक डेटासेट को फीड करें:
|
|
151
156
|
|
|
@@ -166,15 +171,17 @@ trainer.export("gguf", quantization="q4_k_m")
|
|
|
166
171
|
backprop train --data preferences.jsonl --method orpo --steps 100
|
|
167
172
|
```
|
|
168
173
|
|
|
169
|
-
|
|
174
|
+
डिफ़ॉल्ट शिक्षण दर स्वचालित रूप से ORPO के लिए `8e-6` तक कम हो जाती है (हानि साधारण SFT की तुलना में अधिक तीव्र होती है); `--orpo-beta` को ट्यून करें (डिफ़ॉल्ट `0.1`) ताकि ऑड्स-अनुपात दंड को भार दिया जा सके। ORPO केवल `mode="lora"` है।
|
|
170
175
|
|
|
171
|
-
**v1.6 में नया —
|
|
176
|
+
**v1.6 में नया — SimPO और KTO।** `--method simpo` ([मेंग एट अल. 2024](https://arxiv.org/abs/2405.14734)) संदर्भ-मुक्त है, जिसमें लंबाई-मानकीकृत इनाम होता है और यह ORPO के समान युग्मित `{prompt, chosen, rejected}` डेटा लेता है (`--simpo-beta`, `--simpo-gamma`)। `--method kto` ([एथयाराज एट अल. 2024](https://arxiv.org/abs/2402.01306)) **युग्मित नहीं** `{prompt, completion, label}` डेटा लेता है - प्रति-उदाहरण थम्स-अप/डाउन - प्रतिक्रिया के उस बड़े वर्ग के लिए जो क्यूरेटेड A/B जोड़े नहीं हैं; यह आपके लेबल गणना से वांछनीय/अवांछनीय हानि भार को स्वचालित रूप से संतुलित करता है। दोनों केवल `mode="lora"` हैं और सिंगल-GPU SFT एनवेलप में रहते हैं (कोई अलग संदर्भ मॉडल नहीं)। [प्राथमिकता-ट्यूनिंग हैंडबुक](https://mcp-tool-shop-org.github.io/backpropagate/handbook/preference-tuning/) देखें कि किसका उपयोग करना है। ऑनलाइन RL (PPO/GRPO) के लिए, [बैकप्रोपगेट क्या नहीं है](#what-backpropagate-is-not-for) देखें।
|
|
172
177
|
|
|
173
178
|
### तर्क-आधारित SFT (R1 डिस्टिलेशन)
|
|
174
179
|
|
|
175
180
|
v1.5 में नया: तर्क मॉडल को आसानी से डिस्टिल करें। `--reasoning-trace` (CLI) या `Trainer(..., reasoning_trace=True)` (Python) पास करें और ऐसे ट्रेस प्रदान करें जो सहायक के टर्न के अंदर `<think>...</think>` श्रृंखला-आधारित विचार को बनाए रखें — यह [DeepSeek-R1](https://arxiv.org/abs/2501.12948) डिस्टिलेशन का शुद्ध-SFT आधा हिस्सा है, RL की आवश्यकता नहीं है। बैकप्रोपैगेट प्रशिक्षण लक्ष्य में `<think>` को बनाए रखता है, खाली/अत्यधिक लंबे ट्रेस को हटा देता है (ट्रेस-लंबाई फ़िल्टरिंग), और लंबे CoT के लिए डिफ़ॉल्ट `max_seq_length` को 8192 तक बढ़ाता है। महत्वपूर्ण रूप से, `<think>` **सादा पाठ** रहता है — कोई विशेष टोकन नहीं, कोई एम्बेडिंग आकार परिवर्तन नहीं — इसलिए मर्ज किया गया GGUF अभी भी किसी अन्य फाइन-ट्यून की तरह Ollama में निर्यात होता है। केवल SFT। डेटासेट आकार और समायोज्य टोकन बैंड के लिए [reasoning-trace recipe](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/#reasoning-trace-sft-r1-distillation) देखें।
|
|
176
181
|
|
|
177
|
-
###
|
|
182
|
+
### Apple सिलिकॉन (MLX) — अप्रमाणित पूर्वावलोकन
|
|
183
|
+
|
|
184
|
+
> ⚠️ **अप्रमाणित पूर्वावलोकन - समर्थित सुविधा सेट का हिस्सा नहीं।** MLX रेल को बनाया और यूनिट-परीक्षण किया गया है, लेकिन इसे वास्तविक Apple सिलिकॉन पर डॉगफूड-प्रमाणित नहीं किया गया है (`mlx-lm` केवल Apple के लिए है और बैकप्रोपगेट जिस पर विकसित किया गया है, NVIDIA रिग्स पर नहीं चल सकता)। नीचे दी गई हर चीज को प्रयोगात्मक मानें, अपने जोखिम पर उपयोग करें, और यदि आप इसे M-श्रृंखला Mac पर चलाते हैं तो [विसंगतियों की रिपोर्ट करें](#reporting-bugs)।
|
|
178
185
|
|
|
179
186
|
v1.5 में नया: **एक API, दो रेल।** CUDA डिफ़ॉल्ट, सत्यापित बैकएंड बना रहता है; MLX एक दूसरी रेल है जो Apple के [`mlx_lm.lora`](https://github.com/ml-explore/mlx-lm) टूलचेन के माध्यम से M-श्रृंखला Mac पर प्रशिक्षित होती है (एकीकृत मेमोरी, कोई CUDA नहीं)। समान 3-पंक्ति आकार हार्डवेयर द्वारा रेल का चयन करता है — `backend='auto'` (डिफ़ॉल्ट) NVIDIA पर CUDA और Apple सिलिकॉन पर MLX पर रूट करता है, इसलिए मौजूदा CUDA सेटअप बाइट-दर-बाइट समान हैं:
|
|
180
187
|
|
|
@@ -192,7 +199,7 @@ backprop train --data my_data.jsonl --backend mlx --steps 100
|
|
|
192
199
|
|
|
193
200
|
v1.5 में MLX रेल **केवल LoRA SFT है** — कोई ORPO नहीं, कोई FP8 नहीं, कोई `mode='full'` नहीं, अभी तक MLX पर कोई मल्टी-रन नहीं (प्रत्येक को `CONFIG_INVALID_SETTING` के साथ अस्वीकार कर दिया जाता है; उन कार्यों के लिए NVIDIA बॉक्स पर `backend='cuda'`/`'auto'` का उपयोग करें)। परिणामी एडाप्टर सादा सेफ़टेंसर है और उसी पथ के माध्यम से CUDA रेल की तरह Ollama में निर्यात होता है।
|
|
194
201
|
|
|
195
|
-
>
|
|
202
|
+
> गैर-Apple होस्ट पर `--backend mlx` को जबरदस्ती लागू करने से `CONFIG_INVALID_SETTING` त्रुटि आती है; Mac पर लापता `mlx_lm` टूलचेन से `DEP_MLX_UNAVAILABLE` उत्पन्न होता है।
|
|
196
203
|
|
|
197
204
|
अधिक एंड-टू-एंड वर्कफ़्लो (फाइन-ट्यून-एंड-पुश-टू-HF-हब, OOM के बाद फिर से शुरू करें, लंबे अभियान में मल्टी-रन SLAO, आदि) के लिए [हैंडबुक रेसिपी पेज](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/) देखें।
|
|
198
205
|
|
|
@@ -305,7 +312,7 @@ UI से फ़ाइल सिस्टम में लिखी जाने
|
|
|
305
312
|
|
|
306
313
|
**आवश्यकताएं:** Python 3.10+ · CUDA GPU (8GB+ VRAM) · PyTorch 2.0+
|
|
307
314
|
|
|
308
|
-
|
|
315
|
+
Python 3.10 को कम से कम v1.6 तक समर्थित किया गया है; यह अक्टूबर 2026 में अपस्ट्रीम जीवन के अंत तक पहुंचता है और इसके बाद पहले रिलीज में इसे हटाने की योजना बनाई गई है। नए इंस्टॉलेशन के लिए, Python 3.11 या 3.12 को प्राथमिकता दें - 3.11 सबसे अधिक परीक्षण किया गया न्यूनतम संस्करण है।
|
|
309
316
|
|
|
310
317
|
Backpropagate विभिन्न प्लेटफ़ॉर्म पर प्रशिक्षण के दौरान आने वाली रनटाइम संबंधी विशिष्टताओं को संभालता है, लेकिन यह इंस्टॉलेशन के समय आने वाली समस्याओं को ठीक नहीं कर सकता है। दो सबसे आम समस्याएं हैं:
|
|
311
318
|
|
|
@@ -364,8 +371,12 @@ backprop export-runs --format jsonl # bulk export run history
|
|
|
364
371
|
| Llama 3.2 3B | ~8GB | Llama Community | अनुमति देने वाली शर्तों के साथ Qwen 3B का एक ठोस विकल्प। |
|
|
365
372
|
| Llama 3.2 1B | ~6GB | Llama Community | छोटे कार्ड पर त्वरित प्रयोगों के लिए। |
|
|
366
373
|
| Mistral 7B | ~12GB | Apache 2.0 | Qwen 7B के समान, अलग चैट टेम्पलेट। |
|
|
374
|
+
| Llama-3.1-8B | ~7-8GB (QLoRA) | Llama-3.1-Community | 8B QLoRA, 128K मूल संदर्भ ( >700M-MAU खंड के लिए एक अलग मेटा लाइसेंस की आवश्यकता है)। |
|
|
375
|
+
| **Qwen2.5-14B** | ~8.5GB (QLoRA) | Apache 2.0 | **32 GB दैनिक-ड्राइवर स्वीट स्पॉट** — रैंक/अल्फा 32, पेज्ड 8-बिट AdamW, 4096 ctx। |
|
|
376
|
+
| Mistral-Small-24B | ~18GB (QLoRA) | Apache 2.0 | 4096-ctx हेडरूम के साथ 32 GB कार्ड पर 24B QLoRA। |
|
|
377
|
+
| **Qwen2.5-32B** | ~26GB (QLoRA) | Apache 2.0 | **32 GB एनवेलप का शीर्ष** — यह `max_len 2048` + पेज्ड 8-बिट AdamW पर बस फिट बैठता है। |
|
|
367
378
|
|
|
368
|
-
अन्य मॉडल अक्सर काम करते
|
|
379
|
+
अन्य मॉडल अक्सर काम करते हैं; ऊपर दी गई पंक्तियाँ क्यूरेटेड प्रीसेट हैं - 14B–32B टियर को 32 GB कार्ड के लिए QLoRA-ट्यून किया गया है (मापा एनवेलप)। Biderman 2024 + Thinking Machines 2025 के अनुसार रैंक-256 / सभी-रैखिक लक्ष्यों के लिए `--lora-preset=quality` (डिफ़ॉल्ट) पास करें, या यदि आपको v1.2.x फ़ुटप्रिंट की आवश्यकता है तो विरासत रैंक-16 / q+v लक्ष्य के लिए `--lora-preset=fast`।
|
|
369
380
|
|
|
370
381
|
## समस्या निवारण
|
|
371
382
|
|