@mcptoolshop/backpropagate 1.1.0 → 1.2.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 +51 -54
- package/README.fr.md +5 -8
- package/README.hi.md +5 -8
- package/README.it.md +58 -61
- package/README.ja.md +73 -76
- package/README.md +5 -8
- package/README.pt-BR.md +5 -8
- package/README.zh.md +5 -8
- package/bin/backpropagate.js +1 -1
- package/package.json +2 -2
package/README.es.md
CHANGED
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
<a href="https://mcp-tool-shop-org.github.io/backpropagate/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
15
15
|
</p>
|
|
16
16
|
|
|
17
|
-
**Ajuste fino de LLM sin interfaz
|
|
17
|
+
**Ajuste fino de LLM sin interfaz en 3 líneas. Configuraciones predeterminadas inteligentes, ajuste automático del tamaño del lote según la VRAM, entrenamiento SLAO en múltiples ejecuciones y exportación a GGUF con un solo clic para Ollama.**
|
|
18
18
|
|
|
19
|
-
*SLAO es
|
|
19
|
+
*SLAO es el aprendizaje continuo de LoRA mediante una fusión asimétrica, una técnica que evita el olvido catastrófico durante las campañas de ajuste fino prolongadas ([artículo](https://arxiv.org/abs/2512.23017)).*
|
|
20
20
|
|
|
21
21
|
*Entrena LLM con 3 líneas de código. Exporte a Ollama con una línea más.*
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## Cómo empezar
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
26
|
pip install backpropagate[standard]
|
|
@@ -34,29 +34,29 @@ trainer.train("examples/quickstart.jsonl", steps=10)
|
|
|
34
34
|
trainer.export("gguf", quantization="q4_k_m") # Ready for Ollama
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
El repositorio incluye un pequeño archivo `examples/quickstart.jsonl` (5 ejemplos en formato ShareGPT) para que el fragmento de código anterior se ejecute de
|
|
37
|
+
El repositorio incluye un pequeño archivo `examples/quickstart.jsonl` (5 ejemplos en formato ShareGPT) para que el fragmento de código anterior se ejecute de principio a fin en una instalación limpia. Para tu propio entrenamiento, consulta el formato de conjunto de datos [Dataset Format](#dataset-format) a continuación.
|
|
38
38
|
|
|
39
39
|
### Opción sin código: Interfaz web
|
|
40
40
|
|
|
41
|
-
¿
|
|
41
|
+
¿Prefieres una interfaz gráfica en lugar de una terminal de Python? Instala los componentes adicionales y ejecuta:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
44
|
pip install backpropagate[standard]
|
|
45
45
|
backprop ui --port 7862
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
La interfaz de Reflex (Radix UI)
|
|
48
|
+
La interfaz de Reflex (Radix UI) te permite seleccionar un archivo JSONL, elegir un modelo, entrenar y exportar, sin necesidad de Python. La interfaz es local; para acceder desde Internet, consulta la sección [Web UI](#web-ui) a continuación, donde encontrarás el contrato de seguridad `--share` + `--auth` y las opciones de túnel admitidas (Cloudflare Tunnel, ngrok).
|
|
49
49
|
|
|
50
50
|
## Formato del conjunto de datos
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Tu archivo de entrenamiento en formato JSONL debe tener un ejemplo por línea. El formato más sencillo es el chat de ShareGPT:
|
|
53
53
|
|
|
54
54
|
```jsonl
|
|
55
55
|
{"conversations": [{"from": "human", "value": "What is Python?"}, {"from": "gpt", "value": "A programming language."}]}
|
|
56
56
|
{"conversations": [{"from": "human", "value": "Explain recursion."}, {"from": "gpt", "value": "A function that calls itself."}]}
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
También se admiten formatos Alpaca (`instruction`/`output`), OpenAI chat (`messages`) y texto sin formato.
|
|
59
|
+
También se admiten formatos Alpaca (`instruction`/`output`), OpenAI chat (`messages`) y texto sin formato. Consulta `examples/quickstart.jsonl` para obtener un punto de partida que puedes copiar.
|
|
60
60
|
|
|
61
61
|
## ¿Por qué propagar hacia atrás?
|
|
62
62
|
|
|
@@ -64,18 +64,18 @@ También se admiten formatos Alpaca (`instruction`/`output`), OpenAI chat (`mess
|
|
|
64
64
|
|---------|----------|
|
|
65
65
|
| El ajuste fino es complejo | 3 líneas: cargar, entrenar, guardar |
|
|
66
66
|
| Windows es un problema | Soporte completo para Windows |
|
|
67
|
-
| La gestión de la VRAM es difícil | Ajuste automático del tamaño
|
|
67
|
+
| La gestión de la VRAM es difícil | Ajuste automático del tamaño del lote, monitorización de la GPU |
|
|
68
68
|
| La exportación de modelos es confusa | Exportación a GGUF con un solo clic + registro automático en Ollama |
|
|
69
|
-
| Las ejecuciones
|
|
69
|
+
| Las ejecuciones largas provocan el olvido | Entrenamiento SLAO en múltiples ejecuciones |
|
|
70
70
|
|
|
71
71
|
## Características principales
|
|
72
72
|
|
|
73
|
-
- **Diseñado para funcionar sin interfaz
|
|
74
|
-
- **Configuraciones predeterminadas inteligentes:** Configura automáticamente los hiperparámetros óptimos según
|
|
73
|
+
- **Diseñado para funcionar sin interfaz:** Ideal para pipelines de CI/CD, flujos de trabajo automatizados y ejecución programática.
|
|
74
|
+
- **Configuraciones predeterminadas inteligentes:** Configura automáticamente los hiperparámetros óptimos según tu hardware y conjunto de datos.
|
|
75
75
|
- **Entrenamiento SLAO en múltiples ejecuciones:** Estrategias de entrenamiento avanzadas para evitar el olvido catastrófico durante las ejecuciones prolongadas.
|
|
76
|
-
- **Soporte completo para Windows:** Probado y optimizado para entornos Windows, evitando problemas comunes de PyTorch/CUDA.
|
|
76
|
+
- **Soporte completo para Windows:** Probado y optimizado para entornos Windows, evitando los problemas comunes de PyTorch/CUDA.
|
|
77
77
|
- **Exportación sencilla:** Exportación con un solo clic al formato GGUF y registro automático en Ollama.
|
|
78
|
-
- **Arquitectura modular:**
|
|
78
|
+
- **Arquitectura modular:** Instala solo las dependencias que necesitas (por ejemplo, `[unsloth]`, `[ui]`, `[export]`).
|
|
79
79
|
|
|
80
80
|
## Instalación
|
|
81
81
|
|
|
@@ -87,14 +87,13 @@ pip install backpropagate[standard] # unsloth + ui (recommended)
|
|
|
87
87
|
pip install backpropagate[full] # Everything
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
|
|
|
90
|
+
| Componentes adicionales | Descripción | Dependencias |
|
|
91
91
|
|-------|-------------|--------------|
|
|
92
92
|
| `unsloth` | Entrenamiento 2 veces más rápido, 50% menos de VRAM | unsloth |
|
|
93
93
|
| `ui` | Interfaz web Reflex (Radix UI) | reflex>=0.9.2, fastapi>=0.115 |
|
|
94
94
|
| `validation` | Validación de configuración de Pydantic | pydantic, pydantic-settings |
|
|
95
95
|
| `export` | Exportación a GGUF para Ollama | llama-cpp-python |
|
|
96
|
-
| `monitoring` | WandB +
|
|
97
|
-
| `observability` | Trazado de OpenTelemetry | opentelemetry-api, opentelemetry-sdk |
|
|
96
|
+
| `monitoring` | WandB + monitorización del sistema (integrado automáticamente en el entrenador en v1.1.0) | wandb, psutil |
|
|
98
97
|
| `logging` | Registro estructurado | structlog |
|
|
99
98
|
| `security` | Autenticación JWT + generación de tokens | PyJWT, cryptography |
|
|
100
99
|
| `production` | unsloth + ui + validación + registro + seguridad | (paquete) |
|
|
@@ -103,14 +102,14 @@ pip install backpropagate[full] # Everything
|
|
|
103
102
|
|
|
104
103
|
### Requisitos de la plataforma
|
|
105
104
|
|
|
106
|
-
Backpropagate
|
|
105
|
+
Backpropagate gestiona las peculiaridades del entorno de ejecución (multiproceso, xformers en RTX 40/50, trabajadores del cargador de datos en Windows). No gestiona los problemas de instalación de la plataforma; soluciona esos problemas primero:
|
|
107
106
|
|
|
108
107
|
- **Versión del kit de herramientas CUDA.** PyTorch se publica por versión de CUDA; elegir la versión incorrecta instala silenciosamente solo la versión de torch para CPU. Utilice el selector en <https://pytorch.org/get-started/locally/> para obtener el comando exacto `pip install torch ...` para su controlador. Ejecute `nvidia-smi` para ver la versión de su controlador/CUDA.
|
|
109
108
|
- **Windows.** Visual Studio Build Tools (C++) y CMake son necesarios para el extra `[export]` (las compilaciones de `llama-cpp-python` se realizan desde el código fuente). El paquete `bitsandbytes` se publica ahora de forma nativa para Windows (>= 0.43); las guías anteriores que mencionan `bitsandbytes-windows` están desactualizadas.
|
|
110
|
-
- **macOS.** El entrenamiento con GPU **no está soportado**; no hay CUDA. Puede instalar Backpropagate para ejecutar la *inferencia* en un
|
|
111
|
-
- **Linux.** La mayoría de las distribuciones funcionan sin problemas. Si está utilizando la versión binaria de PyPI, tenga en cuenta que la compilación de Linux utiliza solo la versión de torch para CPU (para mantenerse dentro del límite de 2 GB de archivos adjuntos de
|
|
109
|
+
- **macOS.** El entrenamiento con GPU **no está soportado**; no hay CUDA. Puede instalar Backpropagate para ejecutar la *inferencia* en un archivo GGUF a través de Ollama, pero `trainer.train()` genera un error `DEP_GPU_NOT_AVAILABLE`. Utilice una máquina con CUDA para el entrenamiento.
|
|
110
|
+
- **Linux.** La mayoría de las distribuciones funcionan sin problemas. Si está utilizando la versión binaria de PyPI, tenga en cuenta que la compilación de Linux utiliza solo la versión de torch para CPU (para mantenerse dentro del límite de 2 GB de archivos adjuntos de GitHub); instálela primero con el paquete CUDA correspondiente de pytorch.org.
|
|
112
111
|
|
|
113
|
-
Para la resolución de problemas de instalación
|
|
112
|
+
Para la resolución de problemas de instalación, consulte [la página del manual de solución de problemas](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/).
|
|
114
113
|
|
|
115
114
|
## Configuración
|
|
116
115
|
|
|
@@ -121,10 +120,10 @@ Parámetros comunes (consulte [la referencia completa de las variables de entorn
|
|
|
121
120
|
| Variable | Valor predeterminado | Notas |
|
|
122
121
|
|----------|---------|-------|
|
|
123
122
|
| `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
124
|
-
| `BACKPROPAGATE_LOG_JSON` |
|
|
125
|
-
| `BACKPROPAGATE_LOG_FILE` | no definido | Ruta para
|
|
123
|
+
| `BACKPROPAGATE_LOG_JSON` | automático | Fuerza registros en formato JSON (`true`) o en la consola (`false`) |
|
|
124
|
+
| `BACKPROPAGATE_LOG_FILE` | no definido | Ruta para copiar los registros |
|
|
126
125
|
| `BACKPROPAGATE_DEFER_FEATURE_DETECTION` | no definido | Omite la detección de dependencias opcionales al inicio para un inicio más rápido de la interfaz de línea de comandos. |
|
|
127
|
-
| `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE` | `true` |
|
|
126
|
+
| `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE` | `true` | Si es `true`, rechaza `backprop ui --share` sin `--auth` |
|
|
128
127
|
| `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Directorio base para todas las escrituras del sistema de archivos de la interfaz de usuario; validado por denylist. |
|
|
129
128
|
| `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modelo predeterminado |
|
|
130
129
|
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Tasa de aprendizaje |
|
|
@@ -145,7 +144,7 @@ trainer.save("./my-model")
|
|
|
145
144
|
trainer.export("gguf", quantization="q4_k_m")
|
|
146
145
|
```
|
|
147
146
|
|
|
148
|
-
`Qwen/Qwen2.5-7B-Instruct` es el valor predeterminado canónico; el valor `Trainer()` se resuelve cuando se llama sin un argumento de modelo (consulte [`config.py`](backpropagate/config.py) `ModelConfig.name`). Los ejemplos anteriores utilizaban `unsloth/Qwen2.5-7B-Instruct-bnb-4bit`
|
|
147
|
+
`Qwen/Qwen2.5-7B-Instruct` es el valor predeterminado canónico; el valor `Trainer()` se resuelve cuando se llama sin un argumento de modelo (consulte [`config.py`](backpropagate/config.py) `ModelConfig.name`). Los ejemplos anteriores utilizaban `unsloth/Qwen2.5-7B-Instruct-bnb-4bit` cuantizado; hemos cambiado el valor predeterminado a los pesos oficiales de Qwen para una mejor fiabilidad ([REGISTRO DE CAMBIOS v1.1.0](CHANGELOG.md#110---2026-05-21)). Puede utilizar cualquiera de los dos modelos.
|
|
149
148
|
|
|
150
149
|
### Entrenamiento multi-ejecución SLAO
|
|
151
150
|
|
|
@@ -193,9 +192,9 @@ backprop push ./output/lora --repo me/my-model # v1.1.0: push adapter to HF Hub
|
|
|
193
192
|
|
|
194
193
|
Consulte [la referencia de la interfaz de línea de comandos](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/) para cada subcomando y opción, o ejecute `backprop <subcomando> --help`.
|
|
195
194
|
|
|
196
|
-
### Reanudación desde
|
|
195
|
+
### Reanudación desde un punto de control (v1.1.0)
|
|
197
196
|
|
|
198
|
-
Una ejecución multi-ejecución que falla en la ejecución 4 ahora
|
|
197
|
+
Una ejecución multi-ejecución de 5 ejecuciones que falla en la ejecución 4 ahora se puede recuperar. Cada sesión de ejecución multi-ejecución escribe su `run_id` tanto en `run_history.json` como en el manifiesto de punto de control en el disco, por lo que para reanudar donde lo dejó, solo necesita un comando:
|
|
199
198
|
|
|
200
199
|
```bash
|
|
201
200
|
backprop resume <run-id> # picks up the in-progress session
|
|
@@ -203,13 +202,13 @@ backprop multi-run --data ... --resume <run-id> # explicit form
|
|
|
203
202
|
backprop train --data ... --resume <run-id> # single-run resume (continues run_id)
|
|
204
203
|
```
|
|
205
204
|
|
|
206
|
-
El comportamiento predeterminado de `backprop multi-run` (sin `--resume`) detecta automáticamente una
|
|
205
|
+
El comportamiento predeterminado de `backprop multi-run` (sin `--resume`) detecta automáticamente si existe una ejecución en curso para el mismo directorio de salida y la continúa. Para forzar una sesión limpia, use `resume_from="off"` (API de Python) o omita `--resume` y comience en un directorio de salida nuevo.
|
|
207
206
|
|
|
208
|
-
Cuando se reanuda una ejecución multi-
|
|
207
|
+
Cuando se reanuda una ejecución multi-run, se carga el último checkpoint para ese `run_id` en el modelo, el estado de fusión SLAO se restaura desde el directorio `slao/` junto al checkpoint, y el bucle de ejecución continúa desde `last_completed_run + 1`. El estado de la entrada del historial cambia a `running`, por lo que `backprop list-runs --status running` muestra la sesión activa.
|
|
209
208
|
|
|
210
209
|
### Seguimiento de experimentos (v1.1.0)
|
|
211
210
|
|
|
212
|
-
`Trainer` detecta automáticamente los
|
|
211
|
+
`Trainer` detecta automáticamente los sistemas de seguimiento de experimentos instalados (`wandb`, `tensorboard`, `mlflow`) y los integra con los `transformers.TrainingArguments` subyacentes. El valor predeterminado `report_to="auto"` utiliza cualquier sistema que se pueda importar:
|
|
213
212
|
|
|
214
213
|
```bash
|
|
215
214
|
pip install backpropagate[monitoring] # installs wandb + psutil
|
|
@@ -217,11 +216,11 @@ wandb login # one-time
|
|
|
217
216
|
backprop train --data my_data.jsonl # W&B run gets the same run_id prefix as the on-disk history
|
|
218
217
|
```
|
|
219
218
|
|
|
220
|
-
Para
|
|
219
|
+
Para desactivar explícitamente, use `Trainer(report_to=["wandb"])`, `Trainer(report_to=["tensorboard"])` o `Trainer(report_to="none")`. Para MLflow, instale `pip install mlflow`; para TensorBoard, instale `pip install tensorboard`. El nombre de la ejecución de W&B es `backprop-<run_id_prefix>`, lo que permite a un operador buscar en W&B, nuestros registros y `run_history.json` utilizando el mismo identificador.
|
|
221
220
|
|
|
222
221
|
### Historial de entrenamiento
|
|
223
222
|
|
|
224
|
-
Cada invocación de `backprop train` y `backprop multi-run` registra una fila en `<output>/run_history.json` con el `run_id`, el modelo, el conjunto de datos, los hiperparámetros, el estado, la pérdida final, el historial de pérdidas y, para las ejecuciones multi-
|
|
223
|
+
Cada invocación de `backprop train` y `backprop multi-run` registra una fila en `<output>/run_history.json` con el `run_id`, el modelo, el conjunto de datos, los hiperparámetros, el estado, la pérdida final, el historial de pérdidas y, para las ejecuciones multi-run, la línea de tiempo de la fusión SLAO. Para ver las ejecuciones recientes:
|
|
225
224
|
|
|
226
225
|
```bash
|
|
227
226
|
backprop list-runs # most recent 20 runs, all statuses
|
|
@@ -230,7 +229,7 @@ backprop list-runs --json --limit 100 # machine-readable
|
|
|
230
229
|
backprop show-run abcd1234 # detail view (partial run_id ok)
|
|
231
230
|
```
|
|
232
231
|
|
|
233
|
-
El historial de ejecuciones persiste entre procesos; la pestaña
|
|
232
|
+
El historial de ejecuciones persiste entre procesos; la pestaña "Runs" en la interfaz web es una vista en memoria; el historial en disco es la fuente de verdad para `list-runs` / `show-run` / `resume`.
|
|
234
233
|
|
|
235
234
|
### Interfaz web
|
|
236
235
|
|
|
@@ -246,11 +245,9 @@ Para exponer una URL accesible desde Internet, debe combinar `--share` con `--au
|
|
|
246
245
|
backprop ui --share --auth alice:hunter2
|
|
247
246
|
```
|
|
248
247
|
|
|
249
|
-
`backprop ui --share` sin `--auth`
|
|
248
|
+
El comando `backprop ui --share` sin la opción `--auth` finaliza con el código `1` y el siguiente mensaje de error estructurado: `[RUNTIME_UI_AUTH_NOT_ENFORCED]`. La razón es que la opción `--share` publica una URL pública a la que cualquier persona en internet puede acceder, y sin autenticación, esto significa que cualquiera puede controlar su proceso de entrenamiento. No existe una opción para desactivar esta característica; si no desea establecer credenciales, utilice el reenvío de puertos SSH en su lugar: `ssh -L 7860:localhost:7860 <host>`, y luego abra `http://localhost:7860` localmente. Consulte el documento [handbook/security.md](site/src/content/docs/handbook/security.md) para obtener información completa sobre el modelo de amenazas.
|
|
250
249
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
Las escrituras en el sistema de archivos desde la interfaz de usuario están aisladas en un solo directorio:
|
|
250
|
+
Las escrituras en el sistema de archivos desde la interfaz de usuario están restringidas a un solo directorio:
|
|
254
251
|
|
|
255
252
|
- Predeterminado: `~/.backpropagate/ui-outputs`
|
|
256
253
|
- Para sobrescribir: `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own`
|
|
@@ -260,7 +257,7 @@ Las escrituras en el sistema de archivos desde la interfaz de usuario están ais
|
|
|
260
257
|
|
|
261
258
|
Backpropagate está diseñado para funcionar en Windows de forma predeterminada:
|
|
262
259
|
|
|
263
|
-
- Pre-tokenización para evitar fallos
|
|
260
|
+
- Pre-tokenización para evitar fallos en el procesamiento paralelo
|
|
264
261
|
- Desactivación automática de xformers para series RTX 40/50
|
|
265
262
|
- Configuración segura del cargador de datos
|
|
266
263
|
- Probado en RTX 5080 (16GB de VRAM)
|
|
@@ -269,11 +266,11 @@ Backpropagate está diseñado para funcionar en Windows de forma predeterminada:
|
|
|
269
266
|
|
|
270
267
|
| Preajuste | VRAM | Velocidad | Calidad |
|
|
271
268
|
|--------|------|-------|---------|
|
|
272
|
-
| Qwen 2.5 7B | ~12GB |
|
|
273
|
-
| Qwen 2.5 3B | ~8GB |
|
|
274
|
-
| Llama 3.2 3B | ~8GB |
|
|
275
|
-
| Llama 3.2 1B | ~6GB |
|
|
276
|
-
| Mistral 7B | ~12GB |
|
|
269
|
+
| Qwen 2.5 7B | ~12GB | Media | Óptima |
|
|
270
|
+
| Qwen 2.5 3B | ~8GB | Rápida | Buena |
|
|
271
|
+
| Llama 3.2 3B | ~8GB | Rápida | Buena |
|
|
272
|
+
| Llama 3.2 1B | ~6GB | La más rápida | Básica |
|
|
273
|
+
| Mistral 7B | ~12GB | Media | Buena |
|
|
277
274
|
|
|
278
275
|
## Arquitectura
|
|
279
276
|
|
|
@@ -299,43 +296,43 @@ backpropagate/
|
|
|
299
296
|
│ ├── chrome.py # Header / LeftNav / SideRail / Footer
|
|
300
297
|
│ ├── pages/ # Train / Multi-Run / Export / Dataset
|
|
301
298
|
│ └── components/ # Bp* primitives (status pill, sparkline, event log…)
|
|
302
|
-
|
|
303
|
-
├── ui_gradio_legacy.py # DEPRECATED — preserved as v1.0 reference; removed in v1.2
|
|
304
|
-
└── theme_gradio_legacy.py # DEPRECATED — same
|
|
299
|
+
└── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
|
|
305
300
|
```
|
|
306
301
|
|
|
302
|
+
La implementación de Gradio de la versión 1.0 (`ui_gradio_legacy.py` + `theme_gradio_legacy.py`) se conservó hasta la versión 1.1.x como referencia y se eliminó en la versión 1.2.0.
|
|
303
|
+
|
|
307
304
|
## Resolución de problemas
|
|
308
305
|
|
|
309
|
-
Un índice breve de los fallos más comunes al inicio. El índice inverso completo se encuentra en [la página del manual de
|
|
306
|
+
Un índice breve de los fallos más comunes al inicio. El índice inverso completo se encuentra en [la página del manual de solución de problemas](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/); cada código que se muestra a continuación está documentado en [códigos de error](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/).
|
|
310
307
|
|
|
311
308
|
| Síntoma | Código | Solución |
|
|
312
309
|
|---------|------|-----|
|
|
313
|
-
| La GPU se queda sin memoria durante el entrenamiento. | `RUNTIME_GPU_OOM` | La recuperación automática de errores de memoria (B-002) reduce automáticamente el tamaño del lote hasta 3 veces. Para desactivar esta función: `Trainer(oom_recovery=False)`. Para forzar un tamaño de lote más pequeño: `--batch-size 1`. |
|
|
314
|
-
| El centro de
|
|
310
|
+
| La GPU se queda sin memoria durante el entrenamiento. | `RUNTIME_GPU_OOM` | La recuperación automática de errores de memoria (OOM) (B-002) reduce automáticamente el tamaño del lote hasta 3 veces. Para desactivar esta función: `Trainer(oom_recovery=False)`. Para forzar un tamaño de lote más pequeño: `--batch-size 1`. |
|
|
311
|
+
| El centro de Hugging Face devuelve un error 401 / "modelo no encontrado". | `DEP_MODEL_LOAD_FAILED` | Ejecute `huggingface-cli login` e inténtelo de nuevo. Si hay errores tipográficos, copie el ID exacto de <https://huggingface.co/models>. |
|
|
315
312
|
| Error tipográfico en el nombre del modelo. | `INPUT_VALIDATION_FAILED` o `DEP_MODEL_LOAD_FAILED`. | Verifique el identificador `org/name` en <https://huggingface.co/models>. |
|
|
316
313
|
| `register_with_ollama` rechaza la conexión. | `DEP_OLLAMA_REGISTRATION_FAILED` | Inicie el demonio: `ollama serve`. Instálelo desde <https://ollama.com>. Se puede volver a intentar. |
|
|
317
314
|
| El disco se llena durante el guardado del punto de control. | `STATE_CHECKPOINT_INVALID` | Las escrituras atómicas dejan un directorio `.partial` en caso de fallo; es seguro eliminarlo. El punto de control anterior y válido está intacto. |
|
|
318
315
|
| El entrenamiento se pausa/interrumpe debido al sobrecalentamiento de la GPU. | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | B-003: el monitor se pausa debido al umbral de temperatura de NVML; se reanuda automáticamente a medida que la GPU se enfría. Mejore el flujo de aire o reduzca la carga sostenida. |
|
|
319
316
|
| `backprop ui --share` es rechazado. | `INPUT_AUTH_REQUIRED` | Pase `--auth user:password` o configure `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false` para desactivar esta función (con una advertencia). |
|
|
320
|
-
| "Superposición de validación" en múltiples ejecuciones. | `CONFIG_INVALID` (Etapa A, backend B-001). | Reduzca `--samples` por debajo del tamaño del
|
|
317
|
+
| "Superposición de validación" en múltiples ejecuciones. | `CONFIG_INVALID` (Etapa A, backend B-001). | Reduzca `--samples` por debajo del tamaño del grupo de entrenamiento, aumente el conjunto de datos o desactive la validación. |
|
|
321
318
|
| La exportación a GGUF falló en el primer intento. | `RUNTIME_GGUF_EXPORT_FAILED` | `pip install backpropagate[export]`; en Windows, también necesita Visual C++ Build Tools + CMake. |
|
|
322
319
|
|
|
323
320
|
## Informar de errores
|
|
324
321
|
|
|
325
|
-
Cuando algo falla, Backpropagate imprime una línea `run_started run_id=<uuid>` al inicio y asocia el mismo ID a los manifiestos de puntos de control,
|
|
322
|
+
Cuando algo falla, Backpropagate imprime una línea `run_started run_id=<uuid>` al inicio y asocia el mismo ID a los manifiestos de puntos de control, el historial de combinación de SLAO y las líneas de registro estructuradas. Incluya el `run_id` en cualquier informe de error; esto permite a un mantenedor correlacionar cada línea de registro, cada punto de control y cada combinación para esa ejecución específica.
|
|
326
323
|
|
|
327
324
|
Un buen informe de error incluye:
|
|
328
325
|
|
|
329
326
|
1. **`run_id`** — el UUID impreso al inicio (también disponible como `TrainingRun.run_id` y `RunResult.run_id`).
|
|
330
327
|
2. **El código de error** — la línea `[CODE_NAME]: message` en stderr es lo que debe buscar; consulte [códigos de error](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) para ver el catálogo.
|
|
331
|
-
3. **La línea de comandos
|
|
328
|
+
3. **La línea de comandos con información sensible eliminada.** La salida de error en modo no detallado se elimina automáticamente (los tokens Bearer, `sk-*`, `hf_*`, las claves de AWS, los pares `password=/token=/api_key=` se eliminan); es seguro pegarla. Para obtener el rastreo completo y sin eliminar, vuelva a ejecutar con `--verbose`, pero revise antes de publicarlo.
|
|
332
329
|
4. **Versiones de Python / PyTorch, modelo de GPU, sistema operativo.** `backprop info` imprime todo esto de una vez.
|
|
333
330
|
|
|
334
331
|
## Privacidad
|
|
335
332
|
|
|
336
333
|
Todo el entrenamiento se realiza localmente en su GPU. Backpropagate no realiza solicitudes de red excepto para descargar modelos de HuggingFace (lo cual usted inicia). No hay telemetría, ni dependencia de la nube.
|
|
337
334
|
|
|
338
|
-
## Tabla de
|
|
335
|
+
## Tabla de puntuación
|
|
339
336
|
|
|
340
337
|
| Categoría | Puntuación | Notas |
|
|
341
338
|
|----------|-------|-------|
|
|
@@ -344,7 +341,7 @@ Todo el entrenamiento se realiza localmente en su GPU. Backpropagate no realiza
|
|
|
344
341
|
| C. Documentación para operadores | 4/7 | README, CHANGELOG, LICENCIA, --help. Registro/MCP/elementos complejos omitidos. |
|
|
345
342
|
| D. Higiene del proceso de entrega | 6/9 | verify.sh, versión=etiqueta, 5 analizadores en CI, dependabot, python_requires, compilación limpia. |
|
|
346
343
|
| E. Identidad | 4/4 | Logotipo, traducciones, página de inicio, metadatos. |
|
|
347
|
-
| **Total** | **25/31** | 14 elementos omitidos con justificación. `shipcheck audit` pasa el 100%. Fecha de auditoría: 2026-05-21 (
|
|
344
|
+
| **Total** | **25/31** | 14 elementos omitidos con justificación. `shipcheck audit` pasa el 100%. Fecha de auditoría: 2026-05-21 (La fila B fue reevaluada después de la etapa B y el trabajo de códigos de salida de la CLI). |
|
|
348
345
|
|
|
349
346
|
Historial de diseño y correspondencia de cada elemento: consulte [ROADMAP.md](ROADMAP.md). Todos los elementos de las semanas 1 a 4 se incluyen en la versión 1.1.0.
|
|
350
347
|
|
package/README.fr.md
CHANGED
|
@@ -94,7 +94,6 @@ pip install backpropagate[full] # Everything
|
|
|
94
94
|
| `validation` | Validation de configuration Pydantic | pydantic, pydantic-settings |
|
|
95
95
|
| `export` | Exportation GGUF pour Ollama | llama-cpp-python |
|
|
96
96
|
| `monitoring` | WandB + surveillance du système (intégré au trainer depuis la version 1.1.0) | wandb, psutil |
|
|
97
|
-
| `observability` | Traçage OpenTelemetry | opentelemetry-api, opentelemetry-sdk |
|
|
98
97
|
| `logging` | Journalisation structurée | structlog |
|
|
99
98
|
| `security` | Authentification JWT + génération de jetons | PyJWT, cryptography |
|
|
100
99
|
| `production` | unsloth + ui + validation + journalisation + sécurité | (ensemble) |
|
|
@@ -145,7 +144,7 @@ trainer.save("./my-model")
|
|
|
145
144
|
trainer.export("gguf", quantization="q4_k_m")
|
|
146
145
|
```
|
|
147
146
|
|
|
148
|
-
`Qwen/Qwen2.5-7B-Instruct` est
|
|
147
|
+
`Qwen/Qwen2.5-7B-Instruct` est la valeur par défaut standard. Lorsque la fonction `Trainer()` est appelée sans argument de modèle, c'est cette valeur qui est utilisée (voir [`config.py`](backpropagate/config.py) `ModelConfig.name`). Les exemples précédents utilisaient la version quantifiée `unsloth/Qwen2.5-7B-Instruct-bnb-4bit`; nous avons modifié la valeur par défaut pour utiliser les poids officiels de Qwen afin d'améliorer la fiabilité ([CHANGELOG v1.1.0](CHANGELOG.md#110---2026-05-21)). Les deux modèles fonctionnent.
|
|
149
148
|
|
|
150
149
|
### Entraînement SLAO multi-exécution
|
|
151
150
|
|
|
@@ -246,9 +245,7 @@ Pour rendre l'URL accessible via Internet, vous devez combiner les options `--sh
|
|
|
246
245
|
backprop ui --share --auth alice:hunter2
|
|
247
246
|
```
|
|
248
247
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
Pour désactiver explicitement cette fonctionnalité (par exemple, dans un environnement de développement interne), définissez la variable d'environnement `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false`. Un avertissement important s'affiche à chaque lancement, et il existe une période de grâce de 5 secondes avant que l'interface utilisateur non authentifiée ne s'active, ce qui vous permet d'utiliser `Ctrl-C` si quelque chose ne vous semble pas correct.
|
|
248
|
+
L'exécution de la commande `backprop ui --share` sans l'option `--auth` se termine avec le code d'erreur `1` et l'erreur structurée `[RUNTIME_UI_AUTH_NOT_ENFORCED]`. La raison est la suivante : l'option `--share` publie une URL publique que toute personne sur Internet peut consulter, et sans authentification, cela signifie que n'importe qui peut contrôler votre processus de formation. Il n'y a pas de possibilité de désactivation de cette fonctionnalité ; si vous ne souhaitez pas définir de crédentielles, utilisez plutôt le transfert de port SSH : `ssh -L 7860:localhost:7860 <hôte>`, puis ouvrez `http://localhost:7860` localement. Consultez le document [handbook/security.md](site/src/content/docs/handbook/security.md) pour une description complète du modèle de menace.
|
|
252
249
|
|
|
253
250
|
Les opérations d'écriture sur le système de fichiers via l'interface utilisateur sont limitées à un seul répertoire :
|
|
254
251
|
|
|
@@ -299,11 +296,11 @@ backpropagate/
|
|
|
299
296
|
│ ├── chrome.py # Header / LeftNav / SideRail / Footer
|
|
300
297
|
│ ├── pages/ # Train / Multi-Run / Export / Dataset
|
|
301
298
|
│ └── components/ # Bp* primitives (status pill, sparkline, event log…)
|
|
302
|
-
|
|
303
|
-
├── ui_gradio_legacy.py # DEPRECATED — preserved as v1.0 reference; removed in v1.2
|
|
304
|
-
└── theme_gradio_legacy.py # DEPRECATED — same
|
|
299
|
+
└── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
|
|
305
300
|
```
|
|
306
301
|
|
|
302
|
+
L'implémentation Gradio de la version 1.0 (`ui_gradio_legacy.py` + `theme_gradio_legacy.py`) a été conservée jusqu'à la version 1.1.x à titre de référence et a été supprimée dans la version 1.2.0.
|
|
303
|
+
|
|
307
304
|
## Dépannage
|
|
308
305
|
|
|
309
306
|
Un bref index des erreurs les plus courantes rencontrées au démarrage. L'index complet se trouve sur la page du manuel de dépannage : [https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/); chaque code ci-dessous est documenté dans la section [codes d'erreur](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/).
|
package/README.hi.md
CHANGED
|
@@ -94,7 +94,6 @@ pip install backpropagate[full] # Everything
|
|
|
94
94
|
| `validation` | पायडैंटिक का कॉन्फ़िगरेशन सत्यापन। | pydantic, pydantic-सेटिंग्स |
|
|
95
95
|
| `export` | ओलामा के लिए जीजीयूएफ प्रारूप में डेटा का निर्यात। | llama-cpp-python |
|
|
96
96
|
| `monitoring` | वैंडबी (WandB) और सिस्टम मॉनिटरिंग (संस्करण 1.1.0 में ट्रेनर में स्वचालित रूप से एकीकृत)। | wandb, psutil |
|
|
97
|
-
| `observability` | ओपनटेलमेट्री ट्रेसिंग। | opentelemetry-api, opentelemetry-sdk |
|
|
98
97
|
| `logging` | संरचित लॉगिंग। | स्ट्रक्टलॉग (structlog) एक ऐसा उपकरण है। |
|
|
99
98
|
| `security` | JWT प्रमाणीकरण (ऑथेंटिकेशन) और टोकन निर्माण। | PyJWT, क्रिप्टोग्राफी। |
|
|
100
99
|
| `production` | अनस्लोथ + यूआई (यूजर इंटरफेस) + सत्यापन + लॉगिंग + सुरक्षा। | (गुच्छा) |
|
|
@@ -145,7 +144,7 @@ trainer.save("./my-model")
|
|
|
145
144
|
trainer.export("gguf", quantization="q4_k_m")
|
|
146
145
|
```
|
|
147
146
|
|
|
148
|
-
`Qwen/Qwen2.5-7B-Instruct` डिफ़ॉल्ट है
|
|
147
|
+
`Qwen/Qwen2.5-7B-Instruct` डिफ़ॉल्ट विकल्प है — `Trainer()` फ़ंक्शन को बिना किसी मॉडल तर्क के कॉल करने पर यही मान निर्धारित होता है (देखें [`config.py`](backpropagate/config.py) में `ModelConfig.name`)। पुराने उदाहरणों में पहले से क्वांटाइज किया गया `unsloth/Qwen2.5-7B-Instruct-bnb-4bit` उपयोग किया गया था; हमने बेहतर विश्वसनीयता के लिए डिफ़ॉल्ट को आधिकारिक Qwen मॉडल भार में बदल दिया ([CHANGELOG v1.1.0](CHANGELOG.md#110---2026-05-21))। दोनों मॉडल काम करते हैं।
|
|
149
148
|
|
|
150
149
|
### मल्टी-रन SLAO प्रशिक्षण
|
|
151
150
|
|
|
@@ -246,9 +245,7 @@ backprop ui --port 7862
|
|
|
246
245
|
backprop ui --share --auth alice:hunter2
|
|
247
246
|
```
|
|
248
247
|
|
|
249
|
-
`backprop ui --share`
|
|
250
|
-
|
|
251
|
-
स्पष्ट रूप से बाहर निकलने के लिए (उदाहरण के लिए, एक आंतरिक विकास वातावरण में), पर्यावरण चर `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false` सेट करें। प्रत्येक लॉन्च पर एक चेतावनी प्रदर्शित होगी - और अनधिकृत UI के बाइंड होने से पहले 5 सेकंड का अनुग्रह काल होता है, इसलिए यदि यह गलत दिखता है तो आप `Ctrl-C` दबा सकते हैं।
|
|
248
|
+
`backprop ui --share` कमांड, `--auth` विकल्प के बिना चलाने पर, कोड `1` के साथ और एक संरचित त्रुटि संदेश `[RUNTIME_UI_AUTH_NOT_ENFORCED]` प्रदर्शित करता है। इसका कारण यह है कि `--share` एक सार्वजनिक यूआरएल प्रकाशित करता है, जिसे इंटरनेट पर कोई भी व्यक्ति एक्सेस कर सकता है। प्रमाणीकरण (ऑथ) के बिना, इसका मतलब है कि कोई भी व्यक्ति आपके प्रशिक्षण प्रक्रिया को नियंत्रित कर सकता है। यदि आप प्रमाणीकरण सेट नहीं करना चाहते हैं, तो एसएसएच पोर्ट-फॉरवर्डिंग का उपयोग करें: `ssh -L 7860:localhost:7860 <होस्ट>` और फिर `http://localhost:7860` को स्थानीय रूप से खोलें। पूर्ण खतरे के मॉडल के लिए, [handbook/security.md](site/src/content/docs/handbook/security.md) देखें।
|
|
252
249
|
|
|
253
250
|
UI से किए गए फ़ाइल सिस्टम लेखन को एक ही डायरेक्टरी तक सीमित कर दिया गया है:
|
|
254
251
|
|
|
@@ -299,11 +296,11 @@ backpropagate/
|
|
|
299
296
|
│ ├── chrome.py # Header / LeftNav / SideRail / Footer
|
|
300
297
|
│ ├── pages/ # Train / Multi-Run / Export / Dataset
|
|
301
298
|
│ └── components/ # Bp* primitives (status pill, sparkline, event log…)
|
|
302
|
-
|
|
303
|
-
├── ui_gradio_legacy.py # DEPRECATED — preserved as v1.0 reference; removed in v1.2
|
|
304
|
-
└── theme_gradio_legacy.py # DEPRECATED — same
|
|
299
|
+
└── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
|
|
305
300
|
```
|
|
306
301
|
|
|
302
|
+
v1.0 Gradio कार्यान्वयन (`ui_gradio_legacy.py` + `theme_gradio_legacy.py`) को v1.1.x तक संदर्भ के रूप में रखा गया था और v1.2.0 में हटा दिया गया।
|
|
303
|
+
|
|
307
304
|
## समस्या निवारण
|
|
308
305
|
|
|
309
306
|
सबसे आम शुरुआती विफलताओं का एक संक्षिप्त विवरण। पूर्ण रिवर्स इंडेक्स [समस्या निवारण पुस्तिका पृष्ठ](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) पर उपलब्ध है; नीचे दिया गया प्रत्येक कोड [त्रुटि कोड](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) पर प्रलेखित है।
|