@mcptoolshop/backpropagate 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +217 -211
- package/README.fr.md +216 -210
- package/README.hi.md +216 -210
- package/README.it.md +221 -215
- package/README.ja.md +221 -215
- package/README.md +216 -210
- package/README.pt-BR.md +215 -209
- package/README.zh.md +215 -209
- package/bin/backpropagate.js +29 -196
- package/package.json +2 -5
package/README.es.md
CHANGED
|
@@ -10,144 +10,152 @@
|
|
|
10
10
|
<a href="https://github.com/mcp-tool-shop-org/backpropagate/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/backpropagate/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
11
11
|
<a href="https://pypi.org/project/backpropagate/"><img src="https://img.shields.io/pypi/v/backpropagate" alt="PyPI"></a>
|
|
12
12
|
<a href="https://codecov.io/gh/mcp-tool-shop-org/backpropagate"><img src="https://img.shields.io/codecov/c/github/mcp-tool-shop-org/backpropagate" alt="Coverage"></a>
|
|
13
|
+
<a href="https://scorecard.dev/viewer/?uri=github.com/mcp-tool-shop-org/backpropagate"><img src="https://api.scorecard.dev/projects/github.com/mcp-tool-shop-org/backpropagate/badge" alt="OpenSSF Scorecard"></a>
|
|
13
14
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
15
|
<a href="https://mcp-tool-shop-org.github.io/backpropagate/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
15
16
|
</p>
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
# Entrena un adaptador. Envíalo a Ollama. ¡Listo!
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Backpropagate es una biblioteca de Python para el ajuste fino de modelos de lenguaje grandes en una sola GPU. Tres líneas de código entrenan un modelo de 7B en una tarjeta de 16GB. Un comando más lo exporta a Ollama para que puedas ejecutar tu ajuste fino con `ollama run`. Funciona perfectamente en Windows.
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
```python
|
|
23
|
+
from backpropagate import Trainer
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
trainer = Trainer("Qwen/Qwen2.5-7B-Instruct")
|
|
26
|
+
trainer.train("my_data.jsonl", steps=100)
|
|
27
|
+
trainer.export("gguf", quantization="q4_k_m")
|
|
28
|
+
```
|
|
24
29
|
|
|
25
30
|
```bash
|
|
26
|
-
|
|
31
|
+
backprop ollama register ./output/lora --name my-model
|
|
32
|
+
ollama run my-model
|
|
27
33
|
```
|
|
28
34
|
|
|
29
|
-
|
|
30
|
-
from backpropagate import Trainer
|
|
35
|
+
Eso es todo. No hay un archivo de configuración YAML. No hay una "ceremonia" de `accelerate launch`. No hay un tutorial separado para "convertirlo a GGUF". Si tienes una GPU con CUDA y un archivo JSONL con tus datos de entrenamiento, estás a solo tres líneas de tener un ajuste fino funcional.
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
trainer.train("examples/quickstart.jsonl", steps=10)
|
|
34
|
-
trainer.export("gguf", quantization="q4_k_m") # Ready for Ollama
|
|
35
|
-
```
|
|
37
|
+
## Instalación
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
```bash
|
|
40
|
+
# Recommended: isolated Python install (no conflicts with system Python or other projects)
|
|
41
|
+
pipx install backpropagate
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
# Or via uv (faster install, same isolation)
|
|
44
|
+
uv tool install backpropagate
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
# Standard pip (if you manage your own virtualenv)
|
|
47
|
+
pip install backpropagate
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Si quieres las funciones opcionales, reemplaza la instalación con una de estas:
|
|
42
51
|
|
|
43
52
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
pipx install "backpropagate[standard]" # adds Unsloth (2x faster training) + the web UI
|
|
54
|
+
pipx install "backpropagate[full]" # adds everything: unsloth, ui, monitoring, export, etc.
|
|
46
55
|
```
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
¿Prefieres Docker? `docker pull ghcr.io/mcp-tool-shop-org/backpropagate:latest` también funciona. Las imágenes están disponibles para `linux/amd64` y `linux/arm64`, por lo que los usuarios de Apple Silicon y ARM Linux obtienen una imagen nativa. Un archivo `compose.yaml` canónico para "UI en un contenedor" se encuentra en la raíz del repositorio; `docker compose up` inicia la interfaz web en `http://localhost:7860` con un volumen persistente `~/.backpropagate` montado.
|
|
49
58
|
|
|
50
|
-
##
|
|
59
|
+
## Dónde encaja Backpropagate
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
Existen varias bibliotecas excelentes para el ajuste fino de LLM. Cada una es excelente para diferentes cosas:
|
|
53
62
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
63
|
+
- **[Axolotl](https://github.com/OpenAccess-AI-Collective/axolotl)**: si te gustan las configuraciones YAML y quieres una comunidad de recetas para copiar.
|
|
64
|
+
- **[LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory)**: si quieres una GUI web y soporte integrado para DPO/PPO/RLHF.
|
|
65
|
+
- **[Unsloth](https://github.com/unslothai/unsloth)**: si necesitas el entrenamiento más rápido posible y estás utilizando una familia de modelos compatible.
|
|
66
|
+
- **[torchtune](https://github.com/pytorch/torchtune)**: si quieres las recetas nativas de PyTorch de Meta que puedes editar.
|
|
58
67
|
|
|
59
|
-
|
|
68
|
+
Backpropagate es la opción que falta: **una API de Python de 3 líneas para usuarios individuales en una sola GPU de consumo que desean entrenar un adaptador y enviarlo.** Sin YAML, sin GUI, sin DPO/PPO, sin nodos múltiples. Solo el bucle que realmente necesita todo el mundo y el paso de exportación que dificulta las cosas.
|
|
60
69
|
|
|
61
|
-
|
|
70
|
+
Si has probado alguna de las bibliotecas anteriores y te has sentido frustrado por la "ceremonia" del archivo de configuración, o has encontrado una limitación en la familia de modelos, o querías configuraciones predeterminadas para Windows: Backpropagate es para ti.
|
|
62
71
|
|
|
63
|
-
|
|
64
|
-
|---------|----------|
|
|
65
|
-
| El ajuste fino es complejo | 3 líneas: cargar, entrenar, guardar |
|
|
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 |
|
|
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 |
|
|
72
|
+
## Lo que puedes ajustar en una GPU de consumo de 16GB
|
|
70
73
|
|
|
71
|
-
|
|
74
|
+
Aquí tienes un rango práctico en una tarjeta de 16GB (RTX 4080 / 5080 / 4070 Ti Super):
|
|
72
75
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
76
|
+
| Modelo | Método | Estado |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| Qwen-3.5-4B / Phi-4-mini-3.8B / SmolLM3-3B | LoRA / QLoRA / DoRA | Cómodo. Longitud de secuencia completa, con espacio de sobra. |
|
|
79
|
+
| Qwen-2.5-7B / Llama-3.1-8B / Mistral-7B | QLoRA | Estándar. ~7-8 GB. Configuraciones predeterminadas de Backpropagate. |
|
|
80
|
+
| Llama-3 13B | QLoRA + empaquetado de muestras | Apretado pero funciona. Usa secuencias más cortas. |
|
|
81
|
+
| Mixtral 8x7B (47B de parámetros totales) | AQLM de 2 bits + LoRA | Experimental en v1.4. El modelo más grande que puedes usar en una tarjeta de 16GB. |
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
Para modelos de 3B y menos, el ajuste fino completo (no solo LoRA) es factible en 16GB y está planeado como una opción `mode="full"` para v1.4. Para modelos de 7B o más, el ajuste fino completo requiere una GPU de 24GB o más: considera alquilar una instancia de A100 en la nube, o quédate con LoRA, que la investigación reciente muestra que coincide con la calidad del ajuste fino completo en la mayoría de las tareas posteriores al entrenamiento (consulta la sección "lo que Backpropagate no es" para obtener citas).
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
pip install backpropagate # Core only (minimal)
|
|
84
|
-
pip install backpropagate[unsloth] # + Unsloth 2x faster training
|
|
85
|
-
pip install backpropagate[ui] # + Reflex (Radix UI) web interface
|
|
86
|
-
pip install backpropagate[standard] # unsloth + ui (recommended)
|
|
87
|
-
pip install backpropagate[full] # Everything
|
|
88
|
-
```
|
|
85
|
+
## Lo que Backpropagate NO es
|
|
89
86
|
|
|
90
|
-
|
|
91
|
-
|-------|-------------|--------------|
|
|
92
|
-
| `unsloth` | Entrenamiento 2 veces más rápido, 50% menos de VRAM | unsloth |
|
|
93
|
-
| `ui` | Interfaz web Reflex (Radix UI) | reflex>=0.9.2, fastapi>=0.115 |
|
|
94
|
-
| `validation` | Validación de configuración de Pydantic | pydantic, pydantic-settings |
|
|
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 |
|
|
98
|
-
| `logging` | Registro estructurado | structlog |
|
|
99
|
-
| `security` | Autenticación JWT + generación de tokens | PyJWT, cryptography |
|
|
100
|
-
| `production` | unsloth + ui + validación + registro + seguridad | (paquete) |
|
|
87
|
+
La honestidad ayuda a todos. Backpropagate no hace estas cosas, e intentar que lo haga sería una experiencia peor que buscar la herramienta adecuada:
|
|
101
88
|
|
|
102
|
-
**
|
|
89
|
+
- **Ajuste fino completo de parámetros para modelos de 7B+** — Backpropagate utiliza LoRA/QLoRA, que entrena un adaptador pequeño en lugar de actualizar cada peso. Para modelos de 7B y superiores, el ajuste fino completo requiere 24 GB+ de memoria de GPU y no cabe en una tarjeta de consumo de 16 GB. Para modelos de 3B y menos, el ajuste fino completo SÍ es posible con 16 GB; se planea una opción `mode="full"` para la versión 1.4. En resumen: 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 el 67% de la capacidad de cómputo; por lo tanto, para el trabajo que la mayoría de los usuarios realmente desean, no se pierde nada al usar LoRA. Si realmente necesita el ajuste fino completo de un modelo de 7B+, utilice `transformers.Trainer` de HuggingFace directamente en una tarjeta de 24 GB+.
|
|
90
|
+
- **DPO / PPO / GRPO / ajuste de preferencias** — Backpropagate solo realiza un ajuste fino supervisado en una sola etapa. Para el aprendizaje por preferencias, utilice TRL directamente o LLaMA-Factory.
|
|
91
|
+
- **Entrenamiento en múltiples nodos** — solo una GPU en una sola máquina. El uso de múltiples GPU en una sola máquina funciona (a través de `accelerate launch`), pero no está oficialmente soportado.
|
|
92
|
+
- **Entrenamiento en macOS** — Apple Silicon no tiene CUDA, por lo que el entrenamiento debe ejecutarse en una máquina con Linux o Windows con una GPU NVIDIA. Aún puede ejecutar el modelo entrenado en una Mac a través de Ollama.
|
|
93
|
+
- **Cualquier cosa fuera de las familias de modelos 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 automatizadas.
|
|
103
94
|
|
|
104
|
-
|
|
95
|
+
Si necesita alguna de estas funciones, utilice una de las bibliotecas mencionadas anteriormente. Son mejores en eso.
|
|
105
96
|
|
|
106
|
-
|
|
97
|
+
## Lo que Backpropagate le ofrece:
|
|
107
98
|
|
|
108
|
-
|
|
109
|
-
- **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.
|
|
99
|
+
Cuatro cosas, en una sola instalación:
|
|
112
100
|
|
|
113
|
-
|
|
101
|
+
**1. Una API real de 3 líneas que funciona sin un archivo de configuración.**
|
|
102
|
+
El fragmento de código que se encuentra al principio de este archivo README se ejecuta de principio a fin. No requiere `accelerate config`, ni YAML, ni anulaciones de Hydra. Simplemente `Trainer(model).train(data)` y tendrá un modelo ajustado.
|
|
114
103
|
|
|
115
|
-
|
|
104
|
+
**2. Funcionalidad que realmente funciona en Windows.**
|
|
105
|
+
La mayoría de las bibliotecas de aprendizaje automático tratan a Windows como una opción secundaria. Backpropagate se prueba exhaustivamente en Windows + RTX 5080. La biblioteca se encarga de las peculiaridades del entorno de ejecución: sabe cómo pre-tokenizar sus datos para que el procesamiento multiproceso de Windows no se bloquee, desactiva automáticamente xformers en las tarjetas RTX 40/50 donde podría fallar, y selecciona la configuración del cargador de datos que no causa problemas. No tiene que saber nada de esto. Simplemente funciona.
|
|
116
106
|
|
|
117
|
-
|
|
107
|
+
**3. Diseñado para ejecuciones no supervisadas.**
|
|
108
|
+
El entrenamiento lleva horas. No quiere tener que vigilarlo constantemente. Backpropagate está diseñado para que se pueda dejar funcionando:
|
|
118
109
|
|
|
119
|
-
|
|
110
|
+
- Si se queda sin memoria de GPU, reduce automáticamente el tamaño del lote e intenta de nuevo, hasta tres veces. No requiere ajuste manual.
|
|
111
|
+
- Si la GPU se calienta demasiado, se pausa hasta que se enfría y luego continúa.
|
|
112
|
+
- Cada punto de control se guarda de forma atómica: si su computadora portátil se bloquea durante el guardado, el punto de control anterior y válido sigue intacto.
|
|
113
|
+
- Cada ejecución de entrenamiento recibe un ID único que se imprime en cada línea de registro, cada punto de control y cada entrada de Weights & Biases. Si algo sale mal, un solo ID permite a un desarrollador correlacionar todo.
|
|
114
|
+
- Los errores vienen con códigos estables (`RUNTIME_GPU_OOM`, `DEP_OLLAMA_REGISTRATION_FAILED`, etc.) para que pueda buscar en sus registros y en la [guía de solución de problemas](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) para encontrar la solución. Los fallos específicos de CUDA tienen una [página de solución de problemas de CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) dedicada.
|
|
120
115
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
| `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 |
|
|
126
|
-
| `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` |
|
|
128
|
-
| `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
|
-
| `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modelo predeterminado |
|
|
130
|
-
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Tasa de aprendizaje |
|
|
131
|
-
| `BACKPROPAGATE_LORA__R` | `16` | Rango de LoRA |
|
|
116
|
+
**4. Un solo comando para pasar del adaptador entrenado a `ollama run`.**
|
|
117
|
+
Muchas bibliotecas entrenan un modelo. Pocas de ellas le permiten continuar una vez que realmente quiere usarlo. Backpropagate exporta a GGUF (el formato que utiliza Ollama) y registra un modelo de Ollama con un solo comando. Pasa de "entrenamiento completado" a "puedo chatear con mi modelo ajustado" en aproximadamente 30 segundos.
|
|
132
118
|
|
|
133
|
-
|
|
119
|
+
## Cómo empezar
|
|
134
120
|
|
|
135
|
-
|
|
121
|
+
El repositorio incluye un conjunto de datos de ejemplo pequeño para que el fragmento de código que se muestra al principio de este archivo README se ejecute correctamente en una instalación limpia:
|
|
136
122
|
|
|
137
|
-
|
|
123
|
+
```bash
|
|
124
|
+
pipx install "backpropagate[standard]"
|
|
138
125
|
|
|
139
|
-
|
|
126
|
+
python -c "
|
|
140
127
|
from backpropagate import Trainer
|
|
128
|
+
trainer = Trainer('Qwen/Qwen2.5-7B-Instruct')
|
|
129
|
+
trainer.train('examples/quickstart.jsonl', steps=10)
|
|
130
|
+
trainer.export('gguf', quantization='q4_k_m')
|
|
131
|
+
"
|
|
132
|
+
```
|
|
141
133
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
134
|
+
Esto entrena un adaptador Qwen 2.5 de 7B con 5 conversaciones cortas en formato ShareGPT, y luego exporta el resultado a GGUF. Para sus propios datos, formatee su archivo JSONL con un ejemplo por línea:
|
|
135
|
+
|
|
136
|
+
```jsonl
|
|
137
|
+
{"conversations": [{"from": "human", "value": "What is Python?"}, {"from": "gpt", "value": "A programming language."}]}
|
|
138
|
+
{"conversations": [{"from": "human", "value": "Explain recursion."}, {"from": "gpt", "value": "A function that calls itself."}]}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
También funcionan los formatos de Alpaca (`instruction` / `output`), OpenAI chat (`messages`) y texto sin formato; Backpropagate detecta automáticamente el formato.
|
|
142
|
+
|
|
143
|
+
Para flujos de trabajo más completos (ajuste fino y publicación en Hugging Face Hub, reanudación después de errores de memoria, ejecuciones múltiples de SLAO durante una campaña larga, etc.), consulte la [página de recetas del manual](https://mcp-tool-shop-org.github.io/backpropagate/handbook/recipes/).
|
|
144
|
+
|
|
145
|
+
### Interfaz web (opcional)
|
|
146
|
+
|
|
147
|
+
Si prefiere hacer clic en lugar de escribir código Python, instale el paquete de la interfaz de usuario y ejecútelo:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
pipx install "backpropagate[ui]"
|
|
151
|
+
backprop ui --port 7862
|
|
146
152
|
```
|
|
147
153
|
|
|
148
|
-
|
|
154
|
+
Se abre una interfaz web local en `http://localhost:7862`, donde puede seleccionar un conjunto de datos, elegir un modelo, entrenar y exportar. La interfaz de usuario solo funciona localmente de forma predeterminada. Para permitir el acceso desde otros dispositivos, consulte la sección [Interfaz web](#web-ui) a continuación para obtener información sobre el contrato de seguridad `--share` + `--auth`.
|
|
155
|
+
|
|
156
|
+
## Entrenamiento con múltiples ejecuciones
|
|
149
157
|
|
|
150
|
-
|
|
158
|
+
Si desea realizar un ajuste fino incremental en varios conjuntos de datos, por ejemplo, si recibe nuevos datos de entrenamiento cada semana y desea agregarlos sin olvidar lo que aprendió antes, el modo `multi_run` de Backpropagate es para usted:
|
|
151
159
|
|
|
152
160
|
```python
|
|
153
161
|
from backpropagate import Trainer
|
|
@@ -159,198 +167,196 @@ result = trainer.multi_run(
|
|
|
159
167
|
num_runs=5,
|
|
160
168
|
steps_per_run=100,
|
|
161
169
|
samples_per_run=1000,
|
|
162
|
-
merge_mode="slao", # Single LoRA Continual Learning via Asymmetric Merging
|
|
163
170
|
)
|
|
164
171
|
```
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
### Exportación a Ollama
|
|
169
|
-
|
|
170
|
-
```python
|
|
171
|
-
# Export to GGUF
|
|
172
|
-
result = trainer.export("gguf", quantization="q4_k_m")
|
|
173
|
-
|
|
174
|
-
# Register with Ollama separately
|
|
175
|
-
from backpropagate import register_with_ollama
|
|
176
|
-
register_with_ollama(result.path, "my-finetuned-model")
|
|
177
|
-
# ollama run my-finetuned-model
|
|
178
|
-
```
|
|
173
|
+
Esto realiza cinco pasadas de entrenamiento, fusionando el adaptador entre cada ejecución de una manera que preserva el conocimiento previo al tiempo que incorpora nuevos ejemplos. Esta técnica se basa en investigaciones recientes sobre aprendizaje continuo; consulte la sección [Referencias](#references) al final de este archivo README.
|
|
179
174
|
|
|
180
|
-
|
|
175
|
+
La versión de la línea de comandos:
|
|
181
176
|
|
|
182
177
|
```bash
|
|
183
|
-
backprop
|
|
184
|
-
backprop multi-run --data my_data.jsonl --runs 5 --steps 100
|
|
185
|
-
backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --ollama-name my-model
|
|
186
|
-
backprop ui --port 7862
|
|
187
|
-
backprop info
|
|
188
|
-
backprop list-runs # v1.1.0: query past training runs
|
|
189
|
-
backprop show-run <run-id> # v1.1.0: detail view
|
|
190
|
-
backprop resume <run-id> # v1.1.0: resume a crashed multi-run
|
|
191
|
-
backprop push ./output/lora --repo me/my-model # v1.1.0: push adapter to HF Hub
|
|
178
|
+
backprop multi-run --data my_data.jsonl --runs 5 --steps 100 --samples 1000
|
|
192
179
|
```
|
|
193
180
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
### Reanudación desde el punto de control (v1.1.0)
|
|
181
|
+
## Reanudar desde un punto de control
|
|
197
182
|
|
|
198
|
-
Una ejecución
|
|
183
|
+
Una ejecución de entrenamiento de 5 pasadas que se interrumpe en la pasada 4 se puede recuperar. Cada sesión de entrenamiento con múltiples ejecuciones escribe su ID de ejecución en el historial y el manifiesto del punto de control almacenados en el disco, por lo que para reanudar desde donde lo dejó, solo necesita un comando:
|
|
199
184
|
|
|
200
185
|
```bash
|
|
201
|
-
backprop resume <run-id>
|
|
202
|
-
backprop multi-run --data ... --resume <run-id>
|
|
203
|
-
backprop train --data ... --resume <run-id>
|
|
186
|
+
backprop resume <run-id>
|
|
187
|
+
backprop multi-run --data ... --resume <run-id>
|
|
188
|
+
backprop train --data ... --resume <run-id> # single-run resume
|
|
204
189
|
```
|
|
205
190
|
|
|
206
|
-
El comportamiento predeterminado de `backprop multi-run` (sin `--resume`) detecta automáticamente una
|
|
191
|
+
El comportamiento predeterminado de `backprop multi-run` (sin `--resume`) detecta automáticamente una ejecución en curso en el mismo directorio de salida y la continúa. Para forzar un inicio limpio, especifique un directorio de salida nuevo.
|
|
207
192
|
|
|
208
|
-
|
|
193
|
+
## Historial de entrenamiento
|
|
209
194
|
|
|
210
|
-
|
|
211
|
-
|
|
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:
|
|
195
|
+
Cada invocación de `backprop train` y `backprop multi-run` registra una fila en `<output>/run_history.json`, que incluye el modelo utilizado, el conjunto de datos, los hiperparámetros, el estado, la pérdida final y el historial de pérdidas. Puede enumerar e inspeccionar ejecuciones anteriores:
|
|
213
196
|
|
|
214
197
|
```bash
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
backprop
|
|
198
|
+
backprop list-runs # last 20 runs
|
|
199
|
+
backprop list-runs --status failed # filter by status
|
|
200
|
+
backprop list-runs --json --limit 100 # machine-readable
|
|
201
|
+
backprop show-run abcd1234 # detail view (partial ID is fine)
|
|
218
202
|
```
|
|
219
203
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
### Historial de entrenamiento
|
|
204
|
+
## Seguimiento de experimentos
|
|
223
205
|
|
|
224
|
-
|
|
206
|
+
Backpropagate detecta automáticamente los sistemas de seguimiento de experimentos instalados (Weights & Biases, TensorBoard, MLflow) y los integra. Si `wandb` está instalado y ha iniciado sesión, cada ejecución se registra automáticamente en W&B con un nombre de ejecución que coincide con el ID de ejecución almacenado en el disco, lo que le permite buscar en W&B, sus registros y `run_history.json` utilizando un único identificador.
|
|
225
207
|
|
|
226
208
|
```bash
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
backprop
|
|
230
|
-
backprop show-run abcd1234 # detail view (partial run_id ok)
|
|
209
|
+
pip install backpropagate[monitoring] # installs wandb + psutil
|
|
210
|
+
wandb login # one-time setup
|
|
211
|
+
backprop train --data my_data.jsonl
|
|
231
212
|
```
|
|
232
213
|
|
|
233
|
-
|
|
214
|
+
Puede anular este comportamiento con `Trainer(report_to=["wandb"])`, `Trainer(report_to=["tensorboard"])` o `Trainer(report_to="none")` para desactivarlo.
|
|
234
215
|
|
|
235
|
-
|
|
216
|
+
## Interfaz web
|
|
236
217
|
|
|
237
|
-
|
|
218
|
+
La interfaz web de Reflex es opcional; instálela con `pipx install "backpropagate[ui]"` y ejecútela:
|
|
238
219
|
|
|
239
220
|
```bash
|
|
240
221
|
backprop ui --port 7862
|
|
241
222
|
```
|
|
242
223
|
|
|
243
|
-
Para
|
|
224
|
+
La interfaz de usuario se ejecuta localmente en `http://localhost:7862`. Para permitir el acceso desde otros dispositivos (otras personas en su red, una URL pública, etc.), debe combinar `--share` (o `--host`) con `--auth`:
|
|
244
225
|
|
|
245
226
|
```bash
|
|
246
227
|
backprop ui --share --auth alice:hunter2
|
|
247
228
|
```
|
|
248
229
|
|
|
249
|
-
`backprop ui --share` sin `--auth`
|
|
230
|
+
`backprop ui --share` sin `--auth` genera un error. La razón es que `--share` publica una URL a la que cualquier persona en Internet puede acceder, y sin autenticación, eso significa que cualquier persona puede controlar su canal de entrenamiento y leer su token de Hugging Face. No hay forma de desactivar esta función; si no desea establecer credenciales, utilice el reenvío de puertos SSH en su lugar:
|
|
250
231
|
|
|
251
|
-
|
|
232
|
+
```bash
|
|
233
|
+
# On the client:
|
|
234
|
+
ssh -L 7860:localhost:7860 <your-training-host>
|
|
235
|
+
# On the server:
|
|
236
|
+
backprop ui # no --share
|
|
237
|
+
# Then open http://localhost:7860 in your local browser
|
|
238
|
+
```
|
|
252
239
|
|
|
253
|
-
|
|
240
|
+
Consulte [handbook/security.md](https://mcp-tool-shop-org.github.io/backpropagate/handbook/security/) para obtener información detallada sobre el modelo de amenazas.
|
|
241
|
+
|
|
242
|
+
Las escrituras en el sistema de archivos desde la interfaz de usuario están restringidas a un solo directorio:
|
|
254
243
|
|
|
255
244
|
- Predeterminado: `~/.backpropagate/ui-outputs`
|
|
256
|
-
- Para sobrescribir: `BACKPROPAGATE_UI__OUTPUT_DIR=/
|
|
257
|
-
- La sobrescritura
|
|
245
|
+
- Para sobrescribir: establezca `BACKPROPAGATE_UI__OUTPUT_DIR=/ruta/propia`
|
|
246
|
+
- La sobrescritura se valida mediante una lista de denegación; se rechazan las rutas del sistema o de credenciales (`/etc`, `~/.ssh`, `~/.aws`, `C:\Windows\System32`, etc.).
|
|
258
247
|
|
|
259
|
-
##
|
|
248
|
+
## Notas sobre la plataforma
|
|
260
249
|
|
|
261
|
-
|
|
250
|
+
**Requisitos:** Python 3.10+ · GPU con CUDA (8GB+ de VRAM) · PyTorch 2.0+
|
|
262
251
|
|
|
263
|
-
|
|
264
|
-
- Desactivación automática de xformers para series RTX 40/50
|
|
265
|
-
- Configuración segura del cargador de datos
|
|
266
|
-
- Probado en RTX 5080 (16GB de VRAM)
|
|
252
|
+
Python 3.10 llegará al final de su vida útil en octubre de 2026, y Backpropagate planea eliminar el soporte para 3.10 en la versión 1.4. Para nuevas instalaciones, prefiera Python 3.11 o 3.12; 3.11 es la versión más probada.
|
|
267
253
|
|
|
268
|
-
|
|
254
|
+
Backpropagate gestiona las peculiaridades del entorno de ejecución al entrenar en diferentes plataformas, pero no puede solucionar problemas de instalación. Los dos problemas más comunes son:
|
|
269
255
|
|
|
270
|
-
|
|
271
|
-
|
|
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 |
|
|
256
|
+
- **Controlador CUDA incorrecto.** PyTorch se publica con un binario por cada versión de CUDA. Si elige el incorrecto, obtendrá una versión de PyTorch solo para CPU, y el entrenamiento será extremadamente lento. Utilice el selector de controladores en <https://pytorch.org/get-started/locally/> para su controlador. Ejecute `nvidia-smi` para ver la versión de su controlador/CUDA.
|
|
257
|
+
- **Windows + exportación GGUF.** La opción `[export]` compila `llama-cpp-python` desde el código fuente, lo que requiere Visual Studio Build Tools (componente C++) y CMake.
|
|
277
258
|
|
|
278
|
-
|
|
259
|
+
**macOS:** El entrenamiento con GPU no está soportado (no hay CUDA). Puede ejecutar el adaptador entrenado en un Mac a través de Ollama, pero `trainer.train()` genera un error `DEP_GPU_NOT_AVAILABLE`. Utilice una máquina con Linux o Windows con CUDA para el entrenamiento.
|
|
279
260
|
|
|
261
|
+
Consulte la [página del manual de solución de problemas](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/) para obtener una guía completa sobre la solución de problemas de instalación, y la [página de solución de problemas de CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/) dedicada para problemas de controlador/VRAM/xformers/bf16-vs-fp16.
|
|
262
|
+
|
|
263
|
+
## Interfaz de línea de comandos
|
|
264
|
+
|
|
265
|
+
Cada API de Python tiene un equivalente de línea de comandos (CLI):
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
backprop train --data my_data.jsonl --model Qwen/Qwen2.5-7B-Instruct --steps 100
|
|
269
|
+
backprop multi-run --data my_data.jsonl --runs 5 --steps 100
|
|
270
|
+
backprop export ./output/lora --format gguf --quantization q4_k_m --ollama --ollama-name my-model
|
|
271
|
+
backprop ui --port 7862
|
|
272
|
+
backprop info # environment + version snapshot
|
|
273
|
+
backprop list-runs # past training runs
|
|
274
|
+
backprop show-run <run-id> # detail view
|
|
275
|
+
backprop resume <run-id> # resume a crashed run
|
|
276
|
+
backprop push ./output/lora --repo me/my-model # push adapter to HuggingFace Hub
|
|
277
|
+
backprop diff-runs <run-a> <run-b> # diff two runs side by side
|
|
278
|
+
backprop replay <run-id> # re-run with same config / dataset
|
|
279
|
+
backprop export-runs --format jsonl # bulk export run history
|
|
280
280
|
```
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
281
|
+
|
|
282
|
+
Consulte la referencia completa en [la página de referencia del CLI](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/), o `backprop <subcomando> --help`.
|
|
283
|
+
|
|
284
|
+
## Configuración
|
|
285
|
+
|
|
286
|
+
Cada configuración se puede sobrescribir con una variable de entorno utilizando el prefijo `BACKPROPAGATE_`:
|
|
287
|
+
|
|
288
|
+
| Variable | Valor predeterminado | Notas |
|
|
289
|
+
|---|---|---|
|
|
290
|
+
| `BACKPROPAGATE_LOG_LEVEL` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
291
|
+
| `BACKPROPAGATE_LOG_JSON` | automático | Forzar registros JSON o de consola |
|
|
292
|
+
| `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modelo predeterminado |
|
|
293
|
+
| `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Tasa de aprendizaje |
|
|
294
|
+
| `BACKPROPAGATE_LORA__R` | `256` | Rango LoRA (valor predeterminado de la versión 1.3; use `--lora-preset=fast` para el valor predeterminado de la versión 1.2.x, que es 16) |
|
|
295
|
+
| `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Sistema de archivos de la interfaz de usuario (sandbox) |
|
|
296
|
+
|
|
297
|
+
Las claves anidadas utilizan doble guion bajo (`MODEL__NAME`, no `MODEL_NAME`). La referencia completa se encuentra en [la página del manual de variables de entorno](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/).
|
|
298
|
+
|
|
299
|
+
## Preajustes de modelos
|
|
300
|
+
|
|
301
|
+
| Preajuste | VRAM | Licencia | Notas |
|
|
302
|
+
|---|---|---|---|
|
|
303
|
+
| Qwen-3.5-4B | ~8GB | Apache 2.0 | Valor predeterminado recomendado para modelos de menos de 5B. La mejor calidad para este tamaño. |
|
|
304
|
+
| Phi-4-mini-3.8B | ~8GB | MIT | Excelente para razonamiento, matemáticas y código. Licencia limpia. |
|
|
305
|
+
| SmolLM3-3B | ~6GB | Apache 2.0 | Receta completamente abierta. Contexto nativo de 64K. |
|
|
306
|
+
| Qwen 2.5 7B | ~12GB | Apache 2.0 | Valor predeterminado existente. La mejor calidad de los modelos heredados de 7B. |
|
|
307
|
+
| Qwen 2.5 3B | ~8GB | Qwen-Research | ⚠ licencia de investigación; consulte los términos de la licencia de Qwen antes de usarlo comercialmente. |
|
|
308
|
+
| Llama 3.2 3B | ~8GB | Llama Community | Una alternativa sólida a Qwen 3B con algunas restricciones. |
|
|
309
|
+
| Llama 3.2 1B | ~6GB | Llama Community | Ideal para experimentos rápidos en tarjetas pequeñas. |
|
|
310
|
+
| Mistral 7B | ~12GB | Apache 2.0 | Comparable a Qwen 7B, pero con una plantilla de chat diferente. |
|
|
311
|
+
|
|
312
|
+
Otros modelos pueden funcionar, pero solo estos ocho están incluidos en las pruebas automatizadas (CI). Utilice `--lora-preset=quality` (predeterminado) para obtener un rango de 256 / objetivos de línea recta, según Biderman 2024 + Thinking Machines 2025, o `--lora-preset=fast` para obtener el rango de 16 / objetivo q+v de la versión 1.2.x si necesita la huella de la versión 1.2.x.
|
|
306
313
|
|
|
307
314
|
## Resolución de problemas
|
|
308
315
|
|
|
309
|
-
Un índice breve de los fallos más comunes al
|
|
316
|
+
Un índice breve de los fallos más comunes al ejecutarlo por primera vez. 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/). Para obtener información detallada sobre el controlador/VRAM/precisión mixta, consulte la [página de solución de problemas de CUDA](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting-cuda/).
|
|
310
317
|
|
|
311
|
-
| Síntoma | Código | Solución |
|
|
312
|
-
|
|
313
|
-
| La GPU se queda sin memoria durante el entrenamiento. | `RUNTIME_GPU_OOM` |
|
|
314
|
-
|
|
|
315
|
-
| 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>. |
|
|
318
|
+
| Síntoma | Código de error | Solución |
|
|
319
|
+
|---|---|---|
|
|
320
|
+
| La GPU se queda sin memoria durante el entrenamiento. | `RUNTIME_GPU_OOM` | Automatic — Backpropagate reduce la mitad del tamaño del lote e intenta 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`. |
|
|
321
|
+
| HuggingFace devuelve 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>. |
|
|
316
322
|
| `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
323
|
| 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
|
-
|
|
|
319
|
-
| `backprop ui --share` es rechazado. | `INPUT_AUTH_REQUIRED` |
|
|
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. |
|
|
324
|
+
| Entrenamiento pausado debido a sobrecalentamiento de la GPU. | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | Automatic — Backpropagate pausa cuando se alcanza el umbral de temperatura y reanuda cuando la GPU se enfría. Mejore el flujo de aire si esto ocurre con frecuencia. |
|
|
325
|
+
| `backprop ui --share` es rechazado. | `INPUT_AUTH_REQUIRED` | Utilice `--auth user:password` o, en su lugar, use el reenvío de puertos SSH (consulte [Interfaz de usuario web](#web-ui)). |
|
|
321
326
|
| 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
327
|
|
|
323
328
|
## Informar de errores
|
|
324
329
|
|
|
325
|
-
Cuando algo falla, Backpropagate imprime una línea `run_started run_id=<uuid
|
|
330
|
+
Cuando algo falla, Backpropagate imprime una línea al inicio, como `run_started run_id=<uuid>`, y asocia el mismo ID a cada línea de registro, a cada punto de control y a cada entrada de Weights & Biases. **Incluya el `run_id` en cualquier informe de error**; esto permite al responsable del mantenimiento correlacionar todo para esa ejecución específica.
|
|
326
331
|
|
|
327
332
|
Un buen informe de error incluye:
|
|
328
333
|
|
|
329
|
-
1.
|
|
330
|
-
2. **El código de error
|
|
331
|
-
3. **La línea de comandos
|
|
332
|
-
4. **Versiones de Python / PyTorch, modelo de GPU, sistema operativo
|
|
334
|
+
1. **El `run_id`**: el UUID que se imprime al inicio.
|
|
335
|
+
2. **El código de error**: la línea `[CODE_NAME]: message` en stderr. Consulte [códigos de error](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) para ver el catálogo.
|
|
336
|
+
3. **La línea de comandos con información sensible eliminada**. El stderr se elimina automáticamente (los tokens Bearer, `sk-*`, `hf_*`, las claves de AWS, los pares `password=` / `token=` se eliminan), por lo que es seguro pegarlo. Para obtener el rastreo completo y sin eliminar información, vuelva a ejecutar con `--verbose`, pero revise antes de publicarlo.
|
|
337
|
+
4. **Versiones de Python / PyTorch, modelo de GPU, sistema operativo**. `backprop info` imprime todo esto de una vez.
|
|
338
|
+
|
|
339
|
+
Las preguntas, ideas o discusiones sobre si algo es "esperado" deben realizarse en [GitHub Discussions](https://github.com/mcp-tool-shop-org/backpropagate/discussions). Los problemas de seguridad deben informarse de forma privada a través del formulario [GitHub Security Advisory](https://github.com/mcp-tool-shop-org/backpropagate/security/advisories/new); consulte [SECURITY.md](SECURITY.md) para ver la política.
|
|
333
340
|
|
|
334
341
|
## Privacidad
|
|
335
342
|
|
|
336
343
|
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
344
|
|
|
338
|
-
##
|
|
345
|
+
## Referencias
|
|
339
346
|
|
|
340
|
-
|
|
341
|
-
|----------|-------|-------|
|
|
342
|
-
| A. Seguridad | 6/8 | SECURITY.md, modelo de confianza, sin secretos/telemetría, safe_path(). Se omiten los elementos de MCP. |
|
|
343
|
-
| B. Manejo de errores | 5/7 | Estructura de excepciones (`código`/`mensaje`/`indicación`/`causa`/`reintentable`) a través del registro ERROR_CODES; códigos de salida de la CLI: 0/1/2/3; no se muestran rastreos de pila sin `--verbose`; correlación con `run_id`; salida de error estándar (stderr) censurada; bloqueo mediante `--share` + `--auth`. MCP/escritorio/VS Code omitidos. |
|
|
344
|
-
| C. Documentación para operadores | 4/7 | README, CHANGELOG, LICENCIA, --help. Registro/MCP/elementos complejos omitidos. |
|
|
345
|
-
| D. Higiene del proceso de entrega | 6/9 | verify.sh, versión=etiqueta, 5 analizadores en CI, dependabot, python_requires, compilación limpia. |
|
|
346
|
-
| 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). |
|
|
347
|
+
Los valores predeterminados de Backpropagate y el modo de entrenamiento con múltiples ejecuciones se basan en investigaciones recientes. Si está interesado en las técnicas subyacentes:
|
|
348
348
|
|
|
349
|
-
|
|
349
|
+
- **Hu et al. 2021.** *LoRA: Low-Rank Adaptation of Large Language Models.* [arXiv:2106.09685](https://arxiv.org/abs/2106.09685) — el artículo fundamental que introduce LoRA, que es la forma en que Backpropagate entrena adaptadores de manera eficiente.
|
|
350
|
+
- **Biderman et al. 2024.** *LoRA Learns Less and Forgets Less.* [arXiv:2405.09673](https://arxiv.org/abs/2405.09673) — evidencia empírica de que LoRA con un rango de 256 y objetivos totalmente lineales coincide con la calidad del ajuste fino completo en la mayoría de las tareas posteriores al entrenamiento, utilizando el 67% de la capacidad de cómputo. Define la configuración predeterminada de LoRA de la versión 1.3 de Backpropagate.
|
|
351
|
+
- **Thinking Machines 2025.** *LoRA Without Regret.* [thinkingmachines.ai/blog/lora](https://thinkingmachines.ai/blog/lora/) — el seguimiento práctico que identifica la corrección de 10 veces la tasa de aprendizaje con respecto al ajuste fino completo necesaria para rangos LoRA altos.
|
|
352
|
+
- **Kirkpatrick et al. 2017.** *Overcoming catastrophic forgetting in neural networks.* [arXiv:1612.00796](https://arxiv.org/abs/1612.00796) — la caracterización original de por qué las redes neuronales "olvidan" el entrenamiento anterior cuando se ajustan a nuevos datos (EWC — Elastic Weight Consolidation).
|
|
353
|
+
- **Wang et al. 2023.** *Orthogonal Subspace Learning for Language Model Continual Learning.* [arXiv:2310.14152](https://arxiv.org/abs/2310.14152) — O-LoRA, un enfoque anterior para usar LoRA para el aprendizaje continuo, restringiendo los nuevos adaptadores a subespacios ortogonales.
|
|
354
|
+
- **Yadav et al. 2023.** *TIES-Merging: Resolving Interference When Merging Models.* [arXiv:2306.01708](https://arxiv.org/abs/2306.01708) — una técnica fundamental para fusionar múltiples modelos ajustados sin interferencia.
|
|
355
|
+
- **Qiao & Mahdavi 2025.** *Merge before Forget: A Single LoRA Continual Learning via Continual Merging.* [arXiv:2512.23017](https://arxiv.org/abs/2512.23017) — el algoritmo específico que implementa el fusionador de múltiples ejecuciones de Backpropagate. Un preprint de diciembre de 2025; Backpropagate es el primer adoptador conocido en un entorno de producción.
|
|
350
356
|
|
|
351
357
|
## Licencia
|
|
352
358
|
|
|
353
|
-
MIT
|
|
359
|
+
MIT — consulte [LICENSE](LICENSE).
|
|
354
360
|
|
|
355
361
|
---
|
|
356
362
|
|