F.A.I.T.H. — Settimana 3: Diablo stabile, energia misurata e codice scritto con l'AI stessa

Dopo il ferro delle settimane 1 e 2, Diablo lavora davvero: case chiuso, due GPU stabili, Qwen3 in produzione, modulo energetico con lettura dalla presa. Buona parte del codice descritto qui è stato scritto con Cline su questa macchina. Il filo conduttore resta uno: i tuoi dati restano tuoi — e da fine settimana apriamo l'accesso graduato tramite lista d'attesa.

In questa pagina / On this page

Versione tecnica — diario di laboratorio, settimana 3

Punto di partenza: dove avevamo lasciato Diablo

La settimana 2 si era chiusa con tre risultati concreti: controller RAID finalmente raffreddato, filesystem riportato in uno stato coerente dopo gli errori EXT4, e una prima RTX 3060 dichiarata morta dopo tutti i test possibili. Il log del kernel era pieno di Xid 79 e reset PCIe anche solo nei primi minuti di carico: non c'era niente da fare con il software.

La settimana 3 parte quindi da uno slot PCIe libero, un nodo termicamente sotto controllo e un array RAID6 che non sta più urlando. Non è molto, ma è abbastanza per ricominciare.

Da lunedì a mercoledì: burn-in della seconda RTX 3060

La seconda GPU è arrivata lunedì. Il protocollo di accettazione questa volta era esplicito: nessuna fiducia a priori, verifica su bus PCIe, temperatura a riposo, kernel log pulito e carico progressivo fino alla stabilità confermata su oltre 40 ore di uptime misto.

lspci | egrep 'NVIDIA|VGA'
# 01:00.0 VGA compatible controller: NVIDIA GeForce RTX 3060 (rev a1)
# 02:00.0 VGA compatible controller: NVIDIA GeForce RTX 3060 (rev a1)

nvidia-smi
# GPU 0 e 1: ~40–42°C a riposo, nessun processo, ~17–18W ciascuna

dmesg | grep -i nvidia | grep -i 'error\|xid\|reset' | tail -n 20
# (nessun output — kernel log pulito)

Due schede viste correttamente, temperature di riposo sotto i 45°C, nessun Xid, nessun reset PCIe. Il contrasto con la scheda della settimana scorsa era immediato e definitivo.

watch -n 2 nvidia-smi
python run_gpu_stress.py
watch -n 10 'storcli /c0 show temperature | grep -i temp'

Mercoledì sera: nessuna anomalia. La scheda è dichiarata sana.

Da giovedì a domenica: case chiuso e macchina in produzione

Da giovedì il case è rimasto fisicamente chiuso, con entrambe le GPU funzionanti dentro. La macchina non è più un banco di test aperto: è un nodo che lavora.

Diablo si accende via Wake-on-LAN quando serve e si spegne quando non c'è lavoro attivo. Tenere acceso hardware da oltre 300W in idle perché "potrebbe servire" non è sostenibile — e va contro il senso del progetto.

Diablo con le due RTX 3060 montate e case chiuso
Diablo con entrambe le GPU montate: da giovedì il case resta chiuso e la macchina lavora in condizioni reali.

I modelli: Qwen3 e Cline su 8B

Il parco modelli si è consolidato intorno alla famiglia Qwen3 — il modello più leggero che completa correttamente ogni task:

ModelloDimensioneUso principale
qwen3:8b5.2 GBCline quotidiano, task veloci, Plan/Act
qwen2.5-coder:14b9.0 GBCode generation strutturato
qwen2.5-coder:32b19 GBContesto lungo, ragionamento profondo
qwen3-coder:30b18 GBTask complessi multi-file

Cline gira su qwen3:8b: un modello da 5 GB consuma una frazione di un 32B per lo stesso task elementare. Su un progetto che ha nel consumo energetico il tema centrale, questo conta.

VS Code con Cline attivo su F.A.I.T.H., modello qwen3:8b e diff sul codice del progetto
Cline in Plan/Act su DiabloArc: modelli Qwen locali, diff sul codice F.A.I.T.H. — niente API esterne nel loop di sviluppo.

Il modulo energetico: misurare per confrontare

F.A.I.T.H. rende visibile il costo fisico dell'AI: GPU via NVML, CPU via psutil, assorbimento dalla presa quando disponibile tramite smart plug Meross in LAN (ordine di grandezza ~150W sotto carico GPU reale, non solo stima software).

Ogni operazione viene tracciata: tipo di task, modello, durata, energia in kWh, costo in euro, CO₂ equivalente. A fine sessione è possibile scaricare un report PDF con badge di efficienza e confronto con stime cloud per lo stesso workload.

In parallelo, la ricerca web passa da SearXNG locale a sintesi Ollama: risultati e risposta restano sul nodo, senza API esterne per il testo.

Report energetico F.A.I.T.H. con operazioni loggate, Wh, costi e confronto cloud
Report energetico F.A.I.T.H.: operazioni tracciate, Wh, costi, CO₂ e confronto con stime cloud per lo stesso carico di lavoro.

Il punto che conta: i tuoi dati restano tuoi

Con l'AI in cloud, i dati escono dalla tua rete. Con F.A.I.T.H. il modello gira su Diablo: documenti, domande e risposte elaborati localmente. Nessun servizio terzo obbligatorio nel percorso dati.

Per contratti, bilanci, dati medici o progetti non pubblici, spostare il confine del controllo dalla policy di un fornitore alla macchina che hai davanti ha senso concreto.

Cline che scrive F.A.I.T.H.

Buona parte del codice — incluso il modulo energetico — è stato scritto con Cline su questa macchina, modelli Qwen locali, ciclo Plan/Act. L'AI locale partecipa al proprio sviluppo senza inviare il codebase a API esterne.


Versione narrativa — quando la macchina smette di essere un cantiere

C'è un momento, in ogni progetto che parte dal recupero, in cui le cose smettono di essere un cantiere e cominciano ad assomigliare a qualcosa che funziona davvero. Per Diablo, questa è stata quella settimana.

Non è arrivata con un annuncio. È arrivata giovedì, quando ho avvitato il pannello del case e non l'ho più riaperto. Due GPU stabili, temperatura sotto controllo, log pulito. Una macchina che lavora.

Nelle settimane precedenti la domanda era "funziona ancora?". Questa settimana è diventata "cosa facciamo oggi?" — la differenza tra un esperimento e un'infrastruttura.

F.A.I.T.H. non è nata per essere il modo più economico di fare AI. È nata per rispondere a una domanda raramente posta con onestà: quanto costa davvero usare l'intelligenza artificiale — in energia, calore, infrastruttura fisica, non solo in abbonamento?

Questa settimana abbiamo iniziato a mettere i numeri sul tavolo: riposo, carico, euro, CO₂, confronto con stime cloud. Non per dire che il locale vince sempre — sarebbe disonesto — ma per rendere visibile ciò che di solito resta nascosto.

Poi la domanda ancora più concreta: dove finiscono i tuoi dati? Con F.A.I.T.H. restano sul rack. Il documento, la domanda, la risposta: elaborati lì, senza server intermedio obbligatorio.

Il dettaglio che mi ha colpito di più: il modulo che misura l'energia è stato scritto con Cline, qui, con modelli locali. L'AI locale costruisce lo strumento che misura l'AI locale. Il cerchio si chiude senza mandare il codice fuori rete.

Non è un risultato definitivo. È un punto di partenza concreto — anche quando parti da hardware che il mercato aveva già archiviato.


Technical version — week 3 lab notes

Week 1 covered reuse and RAID cooling; week 2 closed the filesystem and declared the first RTX 3060 dead after relentless Xid 79 events. Week 3 starts with a free PCIe slot, a thermally controlled node and a quiet RAID6 array — enough to move on.

The second GPU passed strict acceptance: clean dmesg, idle temps below 45°C, progressive stress, 40+ hours mixed uptime. By Wednesday the board was healthy; from Thursday the case stayed closed — a production node, not an open bench.

Wake-on-LAN keeps idle waste down. The model stack centers on Qwen3; Cline runs on qwen3:8b for everyday work because a 5 GB model draws a fraction of a 32B for the same simple task.

The energy module tracks real wall draw when the Meross plug is available, plus NVML/psutil, PDF reports and cloud comparisons. Web search uses local SearXNG plus Ollama synthesis — no external LLM API for the answer text.

VS Code with Cline on F.A.I.T.H., local qwen3:8b and project diff
Cline Plan/Act on DiabloArc: local Qwen models editing the F.A.I.T.H. codebase without external APIs.
F.A.I.T.H. energy report with logged operations and cloud comparison
Energy report: logged operations, Wh, costs, CO₂ and cloud comparison for the same workload.
Your data stays on your network. Uploads and inference run on Diablo; no mandatory third-party data path.

Much of the codebase — including the energy module — was written with Cline on this machine using local Qwen models (Plan/Act), closing the sustainability loop: reused hardware, local data, local development.


Narrative version — when the machine stops being a construction site

In reuse-driven projects, there is a moment when things stop looking like a construction site. For Diablo, that was this week — closed case, two stable GPUs, clean logs, real work.

F.A.I.T.H. was built to ask what AI really costs in physical terms, and where your data go when you hand them to a cloud service. This week we started measuring our own stack honestly and keeping inference on the machine in the rack.

The detail that mattered most: the energy module that measures local AI was written with local AI on the same box. Not a finale — a concrete starting point on hardware the market had written off.