@mcptoolshop/backpropagate 1.1.1 → 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 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 gráfica en 3 líneas. Configuraciones predeterminadas inteligentes, ajuste automático del tamaño de los lotes según la VRAM, entrenamiento SLAO en múltiples ejecuciones y exportación a GGUF con un solo clic para Ollama.**
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 Single LoRA Continual Learning via Asymmetric Merging, una técnica de combinación entre ejecuciones que evita el olvido catastrófico durante las campañas de ajuste fino prolongadas ([artículo](https://arxiv.org/abs/2512.23017)).*
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
- ## Inicio rápido
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 extremo a extremo en una instalación limpia. Para su propio entrenamiento, consulte el formato de conjunto de datos [Dataset Format](#dataset-format) a continuación.
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
- ¿Prefiere una interfaz gráfica en lugar de una terminal de Python? Instale el paquete correspondiente y ejecute:
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) le permite seleccionar un archivo JSONL, elegir un modelo, entrenar y exportar, sin necesidad de Python. La interfaz es local; para acceder desde Internet, consulte la sección [Web UI](#web-ui) a continuación, donde se explica el contrato de seguridad `--share` + `--auth` y las opciones de túnel admitidas (Cloudflare Tunnel, ngrok).
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
- Su archivo de entrenamiento en formato JSONL debe tener un ejemplo por línea. El formato más sencillo es el chat de ShareGPT:
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. Consulte `examples/quickstart.jsonl` para obtener un punto de partida que se puede copiar.
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 de los lotes, monitoreo de la GPU |
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 prolongadas causan olvido | Entrenamiento SLAO en múltiples 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 gráfica:** 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 su hardware y conjunto de datos.
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:** Instale solo las dependencias que necesita (por ejemplo, `[unsloth]`, `[ui]`, `[export]`).
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
- | Paquetes adicionales | Descripción | Dependencias |
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 + monitoreo del sistema (integrado automáticamente en el entrenador en v1.1.0) | wandb, psutil |
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 se encarga de las peculiaridades de la ejecución (multiproceso, xformers en RTX 40/50, trabajadores del cargador de datos en Windows). **No** se encarga de los problemas de instalación relacionados con la plataforma; resuélvalos primero:
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 modelo GGUF exportado a través de Ollama, pero `trainer.train()` genera un error `DEP_GPU_NOT_AVAILABLE`. Utilice una máquina con CUDA para el entrenamiento.
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 lanzamiento de GitHub); instale primero el paquete CUDA correspondiente de pytorch.org.
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 más detallada, consulte [la página del manual de solución de problemas](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/).
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` | auto | Fuerza registros en formato JSON (`true`) o en la consola (`false`) |
125
- | `BACKPROPAGATE_LOG_FILE` | no definido | Ruta para guardar los registros |
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` | Cuando es `true`, rechaza `backprop ui --share` sin `--auth` |
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` pre-cuantizado; hemos cambiado el valor predeterminado a los pesos oficiales de Qwen para una mejor fiabilidad ([REGISTRO DE CAMBIOS v0.1.3](CHANGELOG.md)). Cualquier modelo funciona.
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 el punto de control (v1.1.0)
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 es recuperable. Cada sesión de ejecución multi-ejecución escribe su `run_id` tanto en `run_history.json` como en el manifiesto de puntos de control en el disco, por lo que para reanudar desde donde lo dejó, solo necesita un comando:
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 entrada en curso para el mismo directorio de salida y la continúa. Para forzar una sesión limpia, pase `resume_from="off"` (API de Python) o omita `--resume` y comience en un directorio de salida nuevo.
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-ejecución, el último punto de control para ese `run_id` se carga en el modelo, el estado de fusión SLAO se restaura desde el directorio `slao/` junto al punto de control, y el bucle de ejecución continúa desde `last_completed_run + 1`. El estado de la entrada de historial cambia de nuevo a `running`, por lo que `backprop list-runs --status running` muestra la sesión activa.
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 rastreadores de experimentos instalados (`wandb`, `tensorboard`, `mlflow`) y los integra en los `transformers.TrainingArguments` subyacentes. El valor predeterminado `report_to="auto"` selecciona lo que sea importable:
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 optar explícitamente por no usarlo, 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.
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-ejecución, la línea de tiempo de fusión SLAO. Para ver las ejecuciones recientes:
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 `Runs` en la interfaz web es una vista en memoria; el historial en el disco es la fuente de verdad para `list-runs` / `show-run` / `resume`.
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` termina con el código `1` y el error estructurado `[INPUT_AUTH_REQUIRED]`. La razón: `--share` publica una URL `*.gradio.live` que cualquier persona en Internet puede acceder, y sin autenticación, eso significa que cualquier persona puede controlar su canal de entrenamiento.
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
- Para optar explícitamente por no usarlo (por ejemplo, en un entorno de desarrollo interno), establezca la variable de entorno `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false`. Se imprimirá una advertencia audible en cada inicio, y hay un período de gracia de 5 segundos antes de que la interfaz de usuario sin autenticación se active, por lo que puede presionar `Ctrl-C` si parece incorrecta.
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 de multiprocesamiento
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 | Medio | Mejor |
273
- | Qwen 2.5 3B | ~8GB | Rápido | Bueno |
274
- | Llama 3.2 3B | ~8GB | Rápido | Bueno |
275
- | Llama 3.2 1B | ~6GB | Más rápido | Básico |
276
- | Mistral 7B | ~12GB | Medio | Bueno |
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
- ├── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
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 resolució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/).
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 descargas de Hugging Face devuelve un error 401 / "modelo no encontrado". | `DEP_MODEL_LOAD_FAILED` | Ejecute `huggingface-cli login` e inténtelo de nuevo. Para corregir errores tipográficos, copie el ID exacto de <https://huggingface.co/models>. |
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 conjunto de entrenamiento, aumente el conjunto de datos o desactive la validación. |
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, la historia 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.
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 sin información confidencial.** La salida de error en modo no detallado se borra 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 información confidencial, vuelva a ejecutar con `--verbose`, pero revise antes de publicarlo.
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 rendimiento
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 (la fila B fue reevaluada después de la etapa B y el trabajo de códigos de salida de la CLI). |
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 le modèle par défaut ; la valeur `Trainer()` est résolue lorsque celle-ci est appelée sans argument de modèle (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é le modèle par défaut pour utiliser les poids officiels de Qwen afin d'améliorer la fiabilité ([CHANGELOG v0.1.3](CHANGELOG.md)). N'importe quel modèle fonctionne.
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
- La commande `backprop ui --share` sans l'option `--auth` renvoie un code d'erreur `1` et un message d'erreur structuré `[INPUT_AUTH_REQUIRED]`. La raison est que l'option `--share` publie une URL `*.gradio.live` que toute personne sur Internet peut consulter, et sans authentification, cela signifie que toute personne peut contrôler votre pipeline d'entraînement.
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
- ├── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
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` डिफ़ॉल्ट है - जब किसी मॉडल तर्क के बिना `Trainer()` को कॉल किया जाता है तो यह मान लागू होता है (देखें [`config.py`](backpropagate/config.py) `ModelConfig.name`)। पुराने उदाहरणों में प्री-क्वांटाइज्ड `unsloth/Qwen2.5-7B-Instruct-bnb-4bit` का उपयोग किया गया था; हमने बेहतर विश्वसनीयता के लिए डिफ़ॉल्ट को आधिकारिक Qwen वेट पर बदल दिया है ([CHANGELOG v0.1.3](CHANGELOG.md))। दोनों मॉडल काम करते हैं।
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` बिना `--auth` के कोड `1` के साथ समाप्त होता है और एक संरचित त्रुटि `[INPUT_AUTH_REQUIRED]` प्रदर्शित होती है। इसका कारण यह है कि `--share` एक `*.gradio.live` URL प्रकाशित करता है जिसे इंटरनेट पर कोई भी एक्सेस कर सकता है, और बिना प्रमाणीकरण के, इसका मतलब है कि कोई भी आपके प्रशिक्षण पाइपलाइन को चला सकता है।
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
- ├── ui_security.py # Rate limiting, CSRF, file validation (framework-agnostic)
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/) पर प्रलेखित है।