@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.it.md CHANGED
@@ -14,9 +14,9 @@
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
- **Messa a punto di modelli linguistici di grandi dimensioni (LLM) senza interfaccia grafica in 3 righe di codice. Impostazioni predefinite intelligenti, gestione automatica delle dimensioni dei batch in base alla VRAM, addestramento SLAO multi-sessione e esportazione GGUF con un solo clic per Ollama.**
17
+ **Messa a punto di LLM senza interfaccia utente in 3 righe. Impostazioni predefinite intelligenti, dimensionamento automatico dei batch in base alla VRAM, addestramento SLAO multi-sessione e esportazione GGUF con un solo clic per Ollama.**
18
18
 
19
- *SLAO è Single LoRA Continual Learning via Asymmetric Merging: una tecnica di fusione tra sessioni di addestramento che previene la perdita di informazioni durante le sessioni di messa a punto prolungate (articolo: [https://arxiv.org/abs/2512.23017](https://arxiv.org/abs/2512.23017)).*
19
+ *SLAO è Single LoRA Continual Learning via Asymmetric Merging: una tecnica di unione tra sessioni di addestramento che previene la perdita di informazioni durante le sessioni di messa a punto prolungate (articolo: [https://arxiv.org/abs/2512.23017]).*
20
20
 
21
21
  *Addestra modelli linguistici di grandi dimensioni con 3 righe di codice. Esportali su Ollama con un'altra riga.*
22
22
 
@@ -34,9 +34,9 @@ trainer.train("examples/quickstart.jsonl", steps=10)
34
34
  trainer.export("gguf", quantization="q4_k_m") # Ready for Ollama
35
35
  ```
36
36
 
37
- Il repository include un piccolo file `examples/quickstart.jsonl` (5 esempi in formato ShareGPT) in modo che lo snippet di codice precedente possa essere eseguito completamente su un'installazione pulita. Per il tuo addestramento, consulta la sezione [Formato del dataset](#dataset-format) qui sotto.
37
+ Il repository include un piccolo file `examples/quickstart.jsonl` (5 esempi in formato ShareGPT) in modo che lo snippet precedente possa essere eseguito completamente su un'installazione pulita. Per il tuo addestramento, consulta la sezione [Formato del dataset](#dataset-format) sottostante.
38
38
 
39
- ### Percorso senza codice: Interfaccia utente
39
+ ### Percorso senza codice: Interfaccia web
40
40
 
41
41
  Preferisci un'interfaccia utente anziché una REPL Python? Installa gli extra necessari ed esegui:
42
42
 
@@ -45,36 +45,36 @@ pip install backpropagate[standard]
45
45
  backprop ui --port 7862
46
46
  ```
47
47
 
48
- L'interfaccia Reflex (Radix UI) ti consente di selezionare un file JSONL, scegliere un modello, addestrare e esportare: non è richiesta alcuna conoscenza di Python. L'interfaccia utente è progettata per funzionare principalmente in locale; per l'accesso tramite internet, consulta la sezione [Interfaccia utente](#web-ui) qui sotto per le opzioni di sicurezza `--share` + `--auth` e le opzioni di tunneling supportate (Cloudflare Tunnel, ngrok).
48
+ L'interfaccia Reflex (Radix UI) ti consente di puntare a un file JSONL, selezionare un modello, addestrare e esportare: non è richiesta alcuna conoscenza di Python. L'interfaccia utente è progettata per funzionare principalmente in locale; per l'accesso tramite internet, consulta la sezione [Interfaccia web](#web-ui) sottostante per il contratto di sicurezza `--share` + `--auth` e le opzioni di tunneling supportate (Cloudflare Tunnel, ngrok).
49
49
 
50
50
  ## Formato del dataset
51
51
 
52
- Il tuo file di addestramento in formato JSONL deve contenere un esempio per riga. Il formato più semplice è la conversazione ShareGPT:
52
+ Il tuo file di addestramento JSONL dovrebbe contenere un esempio per riga. Il formato più semplice è la chat 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
- Sono supportati anche i formati Alpaca (`instruction`/`output`), OpenAI chat (`messages`) e testo semplice. Consulta il file `examples/quickstart.jsonl` per un punto di partenza.
59
+ Sono supportati anche i formati Alpaca (`instruction`/`output`), OpenAI chat (`messages`) e testo semplice. Consulta `examples/quickstart.jsonl` per un punto di partenza.
60
60
 
61
- ## Perché propagare l'errore?
61
+ ## Perché propagare il gradiente?
62
62
 
63
63
  | Problema | Soluzione |
64
64
  |---------|----------|
65
65
  | La messa a punto è complessa | 3 righe: caricamento, addestramento, salvataggio |
66
66
  | Windows è un incubo | Supporto completo per Windows |
67
- | La gestione della VRAM è difficile | Dimensioni dei batch automatiche, monitoraggio della GPU |
68
- | L'esportazione del modello è confusa | Esportazione GGUF con un solo clic + registrazione automatica con Ollama |
67
+ | La gestione della VRAM è difficile | Dimensionamento automatico dei batch, monitoraggio della GPU |
68
+ | L'esportazione del modello è complicata | Esportazione GGUF con un solo clic + registrazione automatica con Ollama |
69
69
  | Le sessioni di addestramento prolungate causano la perdita di informazioni | Addestramento SLAO multi-sessione |
70
70
 
71
71
  ## Caratteristiche principali
72
72
 
73
- - **Senza interfaccia grafica per design**: Progettato per pipeline CI/CD, flussi di lavoro automatizzati ed esecuzione programmatica.
73
+ - **Senza interfaccia utente per design**: Progettato per pipeline CI/CD, flussi di lavoro automatizzati ed esecuzione programmatica.
74
74
  - **Impostazioni predefinite intelligenti**: Configura automaticamente gli iperparametri ottimali in base all'hardware e al dataset.
75
75
  - **Addestramento SLAO multi-sessione**: Strategie di addestramento avanzate per prevenire la perdita di informazioni durante le sessioni di addestramento prolungate.
76
76
  - **Supporto completo per Windows**: Testato e ottimizzato per gli ambienti Windows, evitando i problemi comuni di PyTorch/CUDA.
77
- - **Esportazione semplificata**: Esportazione con un solo clic nel formato GGUF e registrazione automatica con Ollama.
77
+ - **Esportazione semplice**: Esportazione con un solo clic nel formato GGUF e registrazione automatica con Ollama.
78
78
  - **Architettura modulare**: Installa solo le dipendenze necessarie (ad esempio, `[unsloth]`, `[ui]`, `[export]`).
79
79
 
80
80
  ## Installazione
@@ -89,12 +89,11 @@ pip install backpropagate[full] # Everything
89
89
 
90
90
  | Extra | Descrizione | Dipendenze |
91
91
  |-------|-------------|--------------|
92
- | `unsloth` | Addestramento 2 volte più veloce, 50% in meno di VRAM | unsloth |
93
- | `ui` | Interfaccia utente web Reflex (Radix UI) | reflex>=0.9.2, fastapi>=0.115 |
92
+ | `unsloth` | Addestramento 2 volte più veloce, 50% di VRAM in meno | unsloth |
93
+ | `ui` | Interfaccia web Reflex (Radix UI) | reflex>=0.9.2, fastapi>=0.115 |
94
94
  | `validation` | Validazione della configurazione Pydantic | pydantic, pydantic-settings |
95
95
  | `export` | Esportazione GGUF per Ollama | llama-cpp-python |
96
96
  | `monitoring` | WandB + monitoraggio del sistema (integrato automaticamente nel trainer dalla versione 1.1.0) | wandb, psutil |
97
- | `observability` | Tracciamento OpenTelemetry | opentelemetry-api, opentelemetry-sdk |
98
97
  | `logging` | Logging strutturato | structlog |
99
98
  | `security` | Autenticazione JWT + generazione di token | PyJWT, cryptography |
100
99
  | `production` | unsloth + ui + validation + logging + security | (bundle) |
@@ -103,20 +102,20 @@ pip install backpropagate[full] # Everything
103
102
 
104
103
  ### Prerequisiti della piattaforma
105
104
 
106
- Backpropagate gestisce le problematiche specifiche dell'ambiente di esecuzione (multiprocessing, xformers su RTX 40/50, worker del dataloader su Windows). **Non** gestisce i problemi relativi all'installazione sulla piattaforma; risolvete prima quelli:
105
+ Backpropagate gestisce le peculiarità del runtime (multiprocessing, xformers su RTX 40/50, worker del dataloader su Windows). Non gestisce i problemi di installazione specifici della piattaforma: risolvili prima.
107
106
 
108
- - **Versione del toolkit CUDA.** PyTorch viene rilasciato in base alla versione di CUDA; scegliere la versione sbagliata installa silenziosamente solo la versione per CPU. Utilizzate lo strumento di selezione all'indirizzo <https://pytorch.org/get-started/locally/> per ottenere il comando `pip install torch ...` corretto per il vostro driver. Eseguite `nvidia-smi` per visualizzare la versione del vostro driver/CUDA.
109
- - **Windows.** Sono necessari Visual Studio Build Tools (C++) e CMake per l'extra `[export]` (costruzione di `llama-cpp-python` da sorgente). Il pacchetto `bitsandbytes` è ora disponibile nativamente per Windows (>= 0.43); le guide più vecchie che menzionano `bitsandbytes-windows` sono obsolete.
110
- - **macOS.** L'addestramento con GPU **non è supportato**; non è disponibile CUDA. È possibile installare Backpropagate per eseguire l'inferenza su un file GGUF esportato tramite Ollama, ma `trainer.train()` genera un'eccezione `DEP_GPU_NOT_AVAILABLE`. Utilizzate una macchina con CUDA per l'addestramento.
111
- - **Linux.** La maggior parte delle distribuzioni funziona immediatamente. Se state utilizzando la versione binaria distribuita tramite PyPI, tenete presente che la build per Linux utilizza solo la versione per CPU di torch (per rimanere al di sotto del limite di 2 GB per gli asset di rilascio di GitHub); installate prima la versione CUDA corrispondente da pytorch.org.
107
+ - **Versione del toolkit CUDA.** PyTorch viene distribuito in base alla versione di CUDA; scegliere la versione sbagliata installa silenziosamente solo la versione per CPU. Utilizzare lo strumento di selezione all'indirizzo <https://pytorch.org/get-started/locally/> per ottenere il comando `pip install torch ...` corretto per il proprio driver. Eseguire `nvidia-smi` per visualizzare la versione del driver/CUDA.
108
+ - **Windows.** Sono necessari Visual Studio Build Tools (C++) e CMake per l'estensione `[export]` (la compilazione di `llama-cpp-python` avviene dal codice sorgente). La versione per Windows di `bitsandbytes` è ora disponibile nativamente (>= 0.43); le guide precedenti che menzionano `bitsandbytes-windows` sono obsolete.
109
+ - **macOS.** L'addestramento con GPU **non è supportato**; non è disponibile CUDA. È possibile installare Backpropagate per eseguire l'inferenza su un file GGUF tramite Ollama, ma `trainer.train()` genera l'errore `DEP_GPU_NOT_AVAILABLE`. Utilizzare una macchina con GPU per l'addestramento.
110
+ - **Linux.** La maggior parte delle distribuzioni funziona immediatamente. Se si utilizza la versione binaria distribuita tramite PyPI, si noti che la versione per Linux utilizza solo la versione per CPU di torch (per rimanere al di sotto del limite di 2 GB per gli asset di rilascio di GitHub); installare prima la versione CUDA corrispondente da pytorch.org.
112
111
 
113
- Per la risoluzione dei problemi di installazione, consultate [la pagina della guida alla risoluzione dei problemi](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/).
112
+ Per la risoluzione dei problemi di installazione, consultare [la pagina della guida alla risoluzione dei problemi](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/).
114
113
 
115
114
  ## Configurazione
116
115
 
117
- Tutte le impostazioni possono essere sovrascritte tramite variabili d'ambiente utilizzando il prefisso `BACKPROPAGATE_` (ad esempio, `BACKPROPAGATE_LOG_LEVEL=debug`). Un file `.env` nella directory principale del progetto viene caricato automaticamente quando viene installato l'extra `[validation]`.
116
+ Tutte le impostazioni possono essere sovrascritte tramite variabili d'ambiente utilizzando il prefisso `BACKPROPAGATE_` (ad esempio, `BACKPROPAGATE_LOG_LEVEL=debug`). Un file `.env` nella directory principale del progetto viene caricato automaticamente quando viene installata l'estensione `[validation]`.
118
117
 
119
- Impostazioni comuni (consultate [il riferimento completo delle variabili d'ambiente](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/) per tutti i dettagli):
118
+ Impostazioni comuni (vedere [il riferimento completo alle variabili d'ambiente](https://mcp-tool-shop-org.github.io/backpropagate/handbook/env-vars/) per tutte le opzioni):
120
119
 
121
120
  | Variabile | Valore predefinito | Note |
122
121
  |----------|---------|-------|
@@ -124,8 +123,8 @@ Impostazioni comuni (consultate [il riferimento completo delle variabili d'ambie
124
123
  | `BACKPROPAGATE_LOG_JSON` | auto | Forza i log in formato JSON (`true`) o nella console (`false`) |
125
124
  | `BACKPROPAGATE_LOG_FILE` | non impostato | Percorso per salvare i log |
126
125
  | `BACKPROPAGATE_DEFER_FEATURE_DETECTION` | non impostato | Salta il rilevamento delle dipendenze opzionali all'avvio per un avvio più rapido della CLI |
127
- | `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE` | `true` | Quando impostato su `true`, rifiuta `backprop ui --share` senza l'opzione `--auth` |
128
- | `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Directory di base per tutte le scritture del filesystem dell'interfaccia utente; con convalida della whitelist |
126
+ | `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE` | `true` | Se impostato su `true`, rifiuta `backprop ui --share` senza l'opzione `--auth` |
127
+ | `BACKPROPAGATE_UI__OUTPUT_DIR` | `~/.backpropagate/ui-outputs` | Directory di base per tutte le scritture del file system dell'interfaccia utente; con convalida della whitelist |
129
128
  | `BACKPROPAGATE_MODEL__NAME` | `Qwen/Qwen2.5-7B-Instruct` | Modello predefinito |
130
129
  | `BACKPROPAGATE_TRAINING__LEARNING_RATE` | `2e-4` | Learning rate (tasso di apprendimento) |
131
130
  | `BACKPROPAGATE_LORA__R` | `16` | LoRA rank (grado di LoRA) |
@@ -145,9 +144,9 @@ trainer.save("./my-model")
145
144
  trainer.export("gguf", quantization="q4_k_m")
146
145
  ```
147
146
 
148
- `Qwen/Qwen2.5-7B-Instruct` è il valore predefinito; questo è il valore che `Trainer()` restituisce quando viene chiamato senza un argomento del modello (vedere [`config.py`](backpropagate/config.py) `ModelConfig.name`). Gli esempi precedenti utilizzavano `unsloth/Qwen2.5-7B-Instruct-bnb-4bit` quantizzato; abbiamo modificato il valore predefinito per utilizzare i pesi ufficiali di Qwen per una maggiore affidabilità ([CHANGELOG v0.1.3](CHANGELOG.md)). È possibile utilizzare entrambi i modelli.
147
+ `Qwen/Qwen2.5-7B-Instruct` è il valore predefinito; questo è il valore che `Trainer()` restituisce quando viene chiamato senza un argomento del modello (vedere [`config.py`](backpropagate/config.py) `ModelConfig.name`). Gli esempi precedenti utilizzavano `unsloth/Qwen2.5-7B-Instruct-bnb-4bit` (versione quantizzata), ma siamo passati ai pesi ufficiali di Qwen per una maggiore affidabilità ([CHANGELOG v1.1.0](CHANGELOG.md#110---2026-05-21)). Entrambi i modelli funzionano.
149
148
 
150
- ### Addestramento SLAO multi-esecuzione
149
+ ### Addestramento multi-run SLAO
151
150
 
152
151
  ```python
153
152
  from backpropagate import Trainer
@@ -191,11 +190,11 @@ backprop resume <run-id> # v1.1.0: resume a crashed multi
191
190
  backprop push ./output/lora --repo me/my-model # v1.1.0: push adapter to HF Hub
192
191
  ```
193
192
 
194
- Consultate [il riferimento della CLI](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/) per tutti i sottocomandi e i flag, oppure eseguite `backprop <sottocomando> --help`.
193
+ Consultare [il riferimento della CLI](https://mcp-tool-shop-org.github.io/backpropagate/handbook/cli-reference/) per tutti i sottocomandi e i flag, oppure eseguire `backprop <sottocomando> --help`.
195
194
 
196
195
  ### Ripresa da checkpoint (v1.1.0)
197
196
 
198
- Un'esecuzione multi-run che si interrompe al run 4 è ora recuperabile. Ogni sessione multi-run scrive il suo `run_id` sia in `run_history.json` che nel manifest delle checkpoint salvate su disco, quindi per riprendere da dove si era interrotto, è sufficiente un comando.
197
+ Un addestramento multi-run di 5 iterazioni che si interrompe all'iterazione 4 può ora essere ripreso. Ogni sessione di addestramento multi-run scrive il suo `run_id` sia in `run_history.json` che nel manifest del checkpoint su disco, quindi per riprendere da dove si era interrotto, è sufficiente 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
- Il comportamento predefinito di `backprop multi-run` (senza `--resume`) rileva automaticamente un'esecuzione in corso per la stessa directory di output e la continua. Per forzare una nuova sessione, utilizzare `resume_from="off"` (API Python) oppure omettere `--resume` e avviare in una nuova directory di output.
205
+ Il comportamento predefinito di `backprop multi-run` (senza `--resume`) rileva automaticamente una sessione in corso per la stessa directory di output e la continua. Per forzare l'avvio di una nuova sessione, utilizzare `resume_from="off"` (API Python) oppure omettere `--resume` e specificare una nuova directory di output.
207
206
 
208
- Quando una multi-run viene ripresa, l'ultima checkpoint per quel `run_id` viene caricata nel modello, lo stato del merger SLAO viene ripristinato dalla directory `slao/` accanto alla checkpoint, e il ciclo di esecuzione continua da `last_completed_run + 1`. Lo stato della voce nella cronologia viene riportato a `running`, quindi `backprop list-runs --status running` mostra la sessione in corso.
207
+ Quando una sessione multi-run viene ripresa, il checkpoint più recente per quell'ID di esecuzione viene caricato nel modello, lo stato di fusione SLAO viene ripristinato dalla directory `slao/` accanto al checkpoint e il ciclo di esecuzione continua da `last_completed_run + 1`. Lo stato della voce nella cronologia viene riportato a `running`, quindi `backprop list-runs --status running` mostra la sessione attiva.
209
208
 
210
- ### Tracciamento degli esperimenti (v1.1.0)
209
+ ### Monitoraggio degli esperimenti (v1.1.0)
211
210
 
212
- `Trainer` rileva automaticamente i tracker di esperimenti installati (`wandb`, `tensorboard`, `mlflow`) e li integra con i `transformers.TrainingArguments` sottostanti. Il valore predefinito `report_to="auto"` utilizza qualsiasi libreria importabile:
211
+ `Trainer` rileva automaticamente i sistemi di monitoraggio degli esperimenti installati (`wandb`, `tensorboard`, `mlflow`) e li integra con i parametri di training di `transformers`. Il valore predefinito `report_to="auto"` utilizza qualsiasi sistema importabile:
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
- Per disabilitare esplicitamente, utilizzare `Trainer(report_to=["wandb"])`, `Trainer(report_to=["tensorboard"])` oppure `Trainer(report_to="none")`. Per MLflow, installare `pip install mlflow`; per TensorBoard, installare `pip install tensorboard`. Il nome dell'esecuzione W&B è `backprop-<run_id_prefix>`, quindi un operatore può utilizzare `grep` su W&B, i nostri log e `run_history.json` utilizzando lo stesso identificatore.
219
+ Per disabilitare esplicitamente queste funzionalità, utilizzare `Trainer(report_to=["wandb"])`, `Trainer(report_to=["tensorboard"])` oppure `Trainer(report_to="none")`. Per MLflow, installare `pip install mlflow`; per TensorBoard, installare `pip install tensorboard`. Il nome dell'esecuzione W&B è `backprop-<run_id_prefix>`, consentendo agli operatori di effettuare ricerche in W&B, nei log e in `run_history.json` utilizzando lo stesso identificatore.
221
220
 
222
221
  ### Cronologia dell'addestramento
223
222
 
224
- Ogni invocazione di `backprop train` e `backprop multi-run` registra una riga in `<output>/run_history.json` con il `run_id`, il modello, il dataset, gli iperparametri, lo stato, la perdita finale, la cronologia delle perdite e, per le multi-run, la cronologia del merger SLAO. Per visualizzare le esecuzioni recenti:
223
+ Ogni invocazione di `backprop train` e `backprop multi-run` registra una riga in `<output>/run_history.json` contenente l'ID dell'esecuzione, il modello, il dataset, gli iperparametri, lo stato, la perdita finale, la cronologia delle perdite e, per le esecuzioni multi-run, la cronologia della fusione SLAO. Per visualizzare le esecuzioni recenti, utilizzare:
225
224
 
226
225
  ```bash
227
226
  backprop list-runs # most recent 20 runs, all statuses
@@ -230,40 +229,38 @@ 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
- La cronologia delle esecuzioni viene mantenuta anche tra i processi: la scheda "Runs" nell'interfaccia web è una visualizzazione separata in memoria; la cronologia salvata su disco è la fonte di verità per `list-runs` / `show-run` / `resume`.
232
+ La cronologia delle esecuzioni viene mantenuta tra i processi: la scheda "Runs" nell'interfaccia web è una visualizzazione separata in memoria; la cronologia salvata su disco è la fonte di verità per `list-runs` / `show-run` / `resume`.
234
233
 
235
234
  ### Interfaccia web
236
235
 
237
- Avviare l'interfaccia Reflex localmente:
236
+ Per avviare l'interfaccia Reflex localmente:
238
237
 
239
238
  ```bash
240
239
  backprop ui --port 7862
241
240
  ```
242
241
 
243
- Per esporre un URL accessibile da Internet, è necessario associare `--share` a `--auth`:
242
+ Per rendere disponibile un URL accessibile da Internet, è necessario associare `--share` a `--auth`:
244
243
 
245
244
  ```bash
246
245
  backprop ui --share --auth alice:hunter2
247
246
  ```
248
247
 
249
- `backprop ui --share` senza `--auth` termina con il codice `1` e l'errore strutturato `[INPUT_AUTH_REQUIRED]`. La motivazione è che `--share` pubblica un URL `*.gradio.live` che chiunque su Internet può raggiungere, e senza autenticazione, ciò significa che chiunque può controllare la pipeline di addestramento.
248
+ L'esecuzione del comando `backprop ui --share` senza l'opzione `--auth` genera un codice di errore `1` e il messaggio di errore strutturato `[RUNTIME_UI_AUTH_NOT_ENFORCED]`. La motivazione è che l'opzione `--share` rende disponibile un URL pubblico a cui chiunque su Internet può accedere, e senza autenticazione, ciò significa che chiunque può controllare il vostro processo di addestramento. Non è possibile disabilitare questa funzionalità; se non desiderate impostare le credenziali, utilizzate invece il port forwarding tramite SSH: `ssh -L 7860:localhost:7860 <host>`, quindi accedete a `http://localhost:7860` localmente. Consultare il documento [handbook/security.md](site/src/content/docs/handbook/security.md) per una descrizione completa del modello di rischio.
250
249
 
251
- Per disabilitare esplicitamente (ad esempio, in un ambiente di sviluppo interno), impostare la variabile d'ambiente `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false`. Verrà visualizzato un avviso ben visibile ad ogni avvio, e c'è un periodo di grazia di 5 secondi prima che l'interfaccia utente non autenticata venga caricata, quindi è possibile premere `Ctrl-C` se qualcosa non sembra corretto.
252
-
253
- Le scritture sul file system dall'interfaccia utente sono limitate a una singola directory:
250
+ Le operazioni di scrittura sul file system dall'interfaccia utente sono limitate a una singola directory:
254
251
 
255
252
  - Predefinito: `~/.backpropagate/ui-outputs`
256
253
  - Override: `BACKPROPAGATE_UI__OUTPUT_DIR=/path/you/own`
257
- - L'override è **validato tramite una lista di esclusione**: i percorsi di sistema/credenziali (`/etc`, `/var`, `~/.ssh`, `~/.aws`, `C:\Windows\System32`, ecc.) vengono rifiutati con `[UI_OUTPUT_DIR_FORBIDDEN]`.
254
+ - L'override è **validato tramite una lista di esclusione**: i percorsi di sistema/credenziali (`/etc`, `/var`, `~/.ssh`, `~/.aws`, `C:\Windows\System32`, ecc.) vengono rifiutati con l'errore `[UI_OUTPUT_DIR_FORBIDDEN]`.
258
255
 
259
256
  ## Supporto per Windows
260
257
 
261
258
  Backpropagate è progettato per funzionare su Windows senza modifiche:
262
259
 
263
- - Pre-tokenizzazione per evitare crash dovuti all'uso di multiprocessing
260
+ - Pre-tokenizzazione per evitare arresti anomali dovuti all'elaborazione parallela
264
261
  - Disabilitazione automatica di xformers per le serie RTX 40/50
265
262
  - Impostazioni del dataloader sicure
266
- - Testato su RTX 5080 (16GB di VRAM)
263
+ - Testato su RTX 5080 (16GB VRAM)
267
264
 
268
265
  ## Modelli predefiniti
269
266
 
@@ -272,7 +269,7 @@ Backpropagate è progettato per funzionare su Windows senza modifiche:
272
269
  | Qwen 2.5 7B | ~12GB | Media | Ottima |
273
270
  | Qwen 2.5 3B | ~8GB | Veloce | Buona |
274
271
  | Llama 3.2 3B | ~8GB | Veloce | Buona |
275
- | Llama 3.2 1B | ~6GB | Velocissimo | Base |
272
+ | Llama 3.2 1B | ~6GB | Più veloce | Base |
276
273
  | Mistral 7B | ~12GB | Media | Buona |
277
274
 
278
275
  ## Architettura
@@ -299,36 +296,36 @@ 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'implementazione di Gradio v1.0 (`ui_gradio_legacy.py` + `theme_gradio_legacy.py`) è stata mantenuta fino alla versione v1.1.x come riferimento ed è stata rimossa nella versione v1.2.0.
303
+
307
304
  ## Risoluzione dei problemi
308
305
 
309
- Un breve indice degli errori più comuni che si verificano all'avvio. L'indice completo è disponibile nella [pagina del manuale di risoluzione dei problemi](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/); ogni codice riportato di seguito è documentato nella sezione [codici di errore](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/).
306
+ Un breve elenco dei problemi più comuni riscontrati all'avvio. L'indice completo è disponibile nella [pagina della guida alla risoluzione dei problemi](https://mcp-tool-shop-org.github.io/backpropagate/handbook/troubleshooting/); ogni codice riportato di seguito è documentato nella sezione [codici di errore](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/).
310
307
 
311
308
  | Sintomo | Codice | Soluzione |
312
309
  |---------|------|-----|
313
310
  | La GPU esaurisce la memoria durante l'addestramento. | `RUNTIME_GPU_OOM` | Il meccanismo di ripristino automatico OOM (B-002) riduce automaticamente la dimensione del batch fino a 3 volte. Per disabilitarlo: `Trainer(oom_recovery=False)`. Per forzare una dimensione inferiore: `--batch-size 1`. |
314
- | Il servizio HF Hub restituisce un errore 401 / "modello non trovato". | `DEP_MODEL_LOAD_FAILED` | Eseguire `huggingface-cli login` e riprovare. In caso di errori di battitura, copiare l'ID esatto da <https://huggingface.co/models>. |
311
+ | Il servizio HF Hub restituisce un errore 401 / "modello non trovato". | `DEP_MODEL_LOAD_FAILED` | Eseguire il comando `huggingface-cli login` e riprovare. In caso di errori di battitura, copiare l'ID esatto da <https://huggingface.co/models>. |
315
312
  | Errore nel nome del modello. | `INPUT_VALIDATION_FAILED` o `DEP_MODEL_LOAD_FAILED`. | Verificare l'identificatore `org/name` su <https://huggingface.co/models>. |
316
- | Impossibile connettersi a `register_with_ollama`. | `DEP_OLLAMA_REGISTRATION_FAILED` | Avviare il demone: `ollama serve`. Installare da <https://ollama.com>. Operazione riprovare. |
317
- | Disco pieno durante il salvataggio del checkpoint. | `STATE_CHECKPOINT_INVALID` | In caso di crash, le scritture atomiche lasciano una directory `.partial` che può essere eliminata in sicurezza. Il checkpoint valido precedente è intatto. |
318
- | L'addestramento viene interrotto/annullato a causa del surriscaldamento della GPU. | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | B-003: il monitor si interrompe quando si supera la soglia di temperatura NVML; riprende automaticamente quando la GPU si raffredda. Migliorare il flusso d'aria o ridurre il carico sostenuto. |
319
- | `backprop ui --share` viene rifiutato. | `INPUT_AUTH_REQUIRED` | Fornire `--auth user:password` oppure impostare `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false` per disabilitare questa funzionalità (con un avviso). |
320
- | "Sovrapposizione" di esecuzioni multiple durante la validazione. | `CONFIG_INVALID` (Backend Stage A B-001). | Ridurre il valore di `--samples` al di sotto della dimensione del pool di addestramento, aumentare le dimensioni del dataset o disabilitare la validazione. |
313
+ | Rifiuto della connessione `register_with_ollama`. | `DEP_OLLAMA_REGISTRATION_FAILED` | Avviare il demone: `ollama serve`. Installare da <https://ollama.com>. Operazione riprovabile. |
314
+ | Disco pieno durante il salvataggio del checkpoint. | `STATE_CHECKPOINT_INVALID` | In caso di crash, vengono creati file `.partial`. È sicuro eliminarli. Il checkpoint precedente e valido è intatto. |
315
+ | L'addestramento viene interrotto/annullato a causa del surriscaldamento della GPU. | `RUNTIME_GPU_TEMPERATURE_CRITICAL` | B-003: il monitor si interrompe quando viene superata la soglia di temperatura NVML; riprende automaticamente quando la GPU si raffredda. Migliorare il flusso d'aria o ridurre il carico sostenuto. |
316
+ | Richiesta di `backprop ui --share` rifiutata. | `INPUT_AUTH_REQUIRED` | Passare l'argomento `--auth user:password` oppure impostare `BACKPROPAGATE_SECURITY__REQUIRE_AUTH_FOR_SHARE=false` per disabilitare la funzione (con un avviso). |
317
+ | "Sovrapposizione" di esecuzioni multiple durante la validazione. | `CONFIG_INVALID` (backend Stage A B-001). | Ridurre il valore di `--samples` al di sotto della dimensione del pool di addestramento, aumentare le dimensioni del dataset o disabilitare la validazione. |
321
318
  | Esportazione GGUF non riuscita al primo tentativo. | `RUNTIME_GGUF_EXPORT_FAILED` | Eseguire `pip install backpropagate[export]`; su Windows è necessario anche Visual C++ Build Tools + CMake. |
322
319
 
323
320
  ## Segnalazione di bug
324
321
 
325
- Quando si verifica un errore, Backpropagate stampa una riga `run_started run_id=<uuid>` all'avvio e associa lo stesso ID ai manifest dei checkpoint, alla cronologia di unione SLAO e alle righe del log strutturato. Includere l'`run_id` in qualsiasi segnalazione di bug: questo consente all'amministratore di correlare ogni riga del log, ogni checkpoint e ogni unione per quella specifica esecuzione.
322
+ Quando si verifica un errore, Backpropagate stampa una riga `run_started run_id=<uuid>` all'avvio e associa lo stesso ID ai manifest dei checkpoint, alla cronologia delle unioni SLAO e alle righe del log strutturato. Includere l'`run_id` in qualsiasi segnalazione di bug: questo consente all'amministratore di correlare ogni riga del log, ogni checkpoint e ogni unione per quella specifica esecuzione.
326
323
 
327
324
  Una segnalazione di bug efficace include:
328
325
 
329
326
  1. **`run_id`** — l'UUID stampato all'avvio (disponibile anche come `TrainingRun.run_id` e `RunResult.run_id`).
330
- 2. **Il codice di errore** — la riga `[CODE_NAME]: message` nell'output di errore standard (stderr); consultare la [sezione dei codici di errore](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) per l'elenco completo.
331
- 3. **La riga di comando senza informazioni sensibili.** L'output di errore standard (stderr) viene automaticamente oscurato in modalità non dettagliata (i token di autorizzazione, le stringhe che iniziano con `sk-*`, `hf_*`, le chiavi AWS, le coppie `password=/token=/api_key=` vengono rimosse) e può essere incollata in sicurezza. Per ottenere la traccia completa e non oscurata, eseguire nuovamente il comando con l'opzione `--verbose`, ma esaminare l'output prima di pubblicarlo.
327
+ 2. **Il codice di errore** — la riga `[CODE_NAME]: message` nella sezione stderr; consultare la [sezione codici di errore](https://mcp-tool-shop-org.github.io/backpropagate/handbook/error-codes/) per l'elenco completo.
328
+ 3. **La riga di comando, opportunamente oscurata.** Nella modalità non dettagliata, la sezione stderr viene oscurata automaticamente (i token Bearer, `sk-*`, `hf_*`, le chiavi AWS, le coppie `password=/token=/api_key=` vengono rimosse); è quindi sicuro copiarla. Per ottenere il traceback completo e non oscurato, eseguire nuovamente il comando con l'opzione `--verbose`, ma esaminare il contenuto prima di pubblicarlo.
332
329
  4. **Versioni di Python / PyTorch, modello della GPU, sistema operativo.** Il comando `backprop info` stampa tutte queste informazioni in un'unica volta.
333
330
 
334
331
  ## Privacy
@@ -339,12 +336,12 @@ Tutto l'addestramento avviene localmente sulla GPU. Backpropagate non effettua r
339
336
 
340
337
  | Categoria | Punteggio | Note |
341
338
  |----------|-------|-------|
342
- | A. Sicurezza | 6/8 | SECURITY.md, modello affidabile, nessuna informazione sensibile/telemetria, safe_path(). Gli elementi MCP sono esclusi. |
339
+ | A. Sicurezza | 6/8 | SECURITY.md, modello affidabile, nessuna informazione sensibile/telemetria, safe_path(). Elementi MCP esclusi. |
343
340
  | B. Gestione degli errori | 5/7 | Struttura delle eccezioni (`codice`/`messaggio`/`suggerimento`/`causa`/`riprovabile`) tramite il registro ERROR_CODES; codici di uscita della CLI: 0/1/2/3; nessuna traccia dello stack non elaborata senza l'opzione `--verbose`; correlazione `run_id`; output di errore standard oscurato; controllo di accesso con `--share`+`--auth`. MCP/desktop/vscode esclusi. |
344
341
  | C. Documentazione per gli operatori | 4/7 | README, CHANGELOG, LICENZA, --help. Logging/MCP/funzionalità complesse esclusi. |
345
342
  | D. Igiene del rilascio | 6/9 | verify.sh, versione=tag, 5 scanner nell'integrazione continua, dependabot, python_requires, build pulito. |
346
343
  | E. Identità | 4/4 | Logo, traduzioni, pagina di destinazione, metadati. |
347
- | **Total** | **25/31** | 14 elementi esclusi con motivazione · `shipcheck audit` supera il 100% · Data dell'audit: 2026-05-21 (la riga B è stata riclassificata dopo la fase B e il lavoro sui codici di uscita della CLI). |
344
+ | **Total** | **25/31** | 14 elementi esclusi con motivazione · `shipcheck audit` supera il 100% · Data dell'audit: 2026-05-21 (la riga B è stata riclassificata dopo la fase B + il lavoro sui codici di uscita della CLI). |
348
345
 
349
346
  Storia del design e a cosa corrisponde ogni elemento: vedere [ROADMAP.md](ROADMAP.md) — tutti gli elementi delle settimane 1-4 sono inclusi nella versione 1.1.0.
350
347