[{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/categories/application/","section":"Categories","summary":"","title":"Application","type":"categories"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/en/tags/automation/","section":"Tags","summary":"","title":"Automation","type":"tags"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/automazione/","section":"Tags","summary":"","title":"Automazione","type":"tags"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/blog/","section":"Blog","summary":"","title":"Blog","type":"blog"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/hermes/","section":"Tags","summary":"","title":"Hermes","type":"tags"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/karpathy/","section":"Tags","summary":"","title":"Karpathy","type":"tags"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/llm-wiki/","section":"Tags","summary":"","title":"Llm-Wiki","type":"tags"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/nextcloud/","section":"Tags","summary":"","title":"Nextcloud","type":"tags"},{"content":"Lo ammetto, io odio le \u0026ldquo;scartoffie\u0026rdquo; e credo che molti di voi saranno dello stesso avviso. Tuttavia, dobbiamo conviverci: contratti, fatture, bollette e documenti di ogni tipo fanno parte della vita reale.\nDi sicuro qui l\u0026rsquo;AI può venirci incontro: i documenti sono essenzialmente testo e gli LLM sono piuttosto abili nel trattamento del testo. Lo saranno anche i modelli locali? Lo scopriremo presto.\nIl risultato, subito # Prima di raccontare come ci sono arrivato, ecco cosa ottengo oggi. Scrivo una domanda su Telegram al mio agente e ricevo la risposta in pochi secondi, con tanto di fonti (informazioni personali e/o confidenziali sono state oscurate):\nUser: in which room Anna ***** was and in which year? How much was her rent? check the affitti wiki . Assistant: Done — answer from the wiki (log entry appended): Anna *****, at via ** **********, **, in 2019–2020 (contract 01/10/2019–30/09/2020, terminated early by mutual agreement on 30/06/2020). Room: no individual room — her contract was for the entire apartment, let jointly (in solido) to five students (A, B, C, D, E). Per-room (\u0026#34;stanza\u0026#34;) contracts only began from Nov 2020. Rent: €****/month (€*****/year) for the whole apartment, shared by the five; deposit €****. Sources: [[tenant-anna]], [[lease-xx-xxxxxxxxx-2019]], [[property-xx-xxxxxxxxx-xx]] (registered contract, Agenzia Entrate 15/10/2019, cedolare secca). Notate un dettaglio: la domanda partiva da un presupposto sbagliato (una \u0026ldquo;stanza\u0026rdquo; che non esisteva) e l\u0026rsquo;agente lo ha corretto, spiegando da quando sono iniziati i contratti per camera. Trovare la stessa informazione a mano avrebbe significato aprire un PDF dopo l\u0026rsquo;altro.\nIl problema # Mi sono dedicato alla gestione dei contratti di affitto di alcuni appartamenti che impegnano una considerevole quantità di tempo da parte della mia famiglia, specialmente mia moglie. Uno di questi appartamenti in particolare, locato a studenti, genera la maggior parte delle scartoffie: infatti, esiste un contratto per camera. Si sa, gli studenti vanno e vengono, in continuazione ci sono disdette, nuovi contratti, rinnovi e con 4 camere la generazione di scartoffie è notevole così come il ricordarsi delle varie scadenze.\nQuello che voglio ottenere è un sistema che quando vengono aggiunti i documenti che ho citato costruisca e aggiorni una base di conoscenza e che possa essere interrogata. Non si tratta di un database nel senso tradizionale, ma di qualcosa di simile ad un approccio Retrieval-augmented generation (RAG) senza la necessità/complessità dovuta all\u0026rsquo;embedding.\nA. Karpathy, uno dei più influenti ricercatori del settore, ha proposto il pattern della llm-wiki. Invece di recuperare documenti a ogni domanda come nel RAG tradizionale, è l’LLM stesso a costruire e mantenere una knowledge base in markdown, persistente e che si arricchisce nel tempo. In pratica si mettono le fonti grezze in una cartella e il modello scrive ed indicizza un wiki che poi si può interrogare, producendo riassunti delle fonti, voci sui concetti, articoli e backlink. Anche gli output come slide, grafici e risposte vengono archiviati nel wiki come nuovi articoli, così la conoscenza si accumula invece di ripartire da zero a ogni sessione.\nCosa ho fatto # Lo dico subito candidamente: non ho inventato nulla, ho semplicemente collegato degli elementi fra loro.\nIl cuore del sistema è Hermes, la piattaforma agentica che gira in una VM dedicata sul mio PC per l\u0026rsquo;AI locale e che usa Qwen3.8-27B come modello; ho descritto tutto lo stack nel post precedente.\nI documenti in PDF vengono prima archiviati nel mio Nextcloud. Ogni 6 ore, un cron job sulla VM di Hermes copia quella cartella nella cartella \u0026lsquo;affitti/\u0026rsquo; nella home dell\u0026rsquo;utente:\n# cloning affitti folder: 0 */6 * * * rclone copy remote-cloud:\u0026#34;\u0026lt;Nextcloud_path\u0026gt;\u0026#34; ~/affitti Hermes dispone di una skill \u0026rsquo;llm-wiki\u0026rsquo; pronta all\u0026rsquo;uso. Ho aperto una sessione di chat e ho iniziato a chiedere a Hermes di fare quello che desidero. Riporto alcuni estratti della chat; le informazioni personali e/o confidenziali sono state oscurate.\nBasta una riga per creare la struttura della wiki:\nUser: vai nella cartella \u0026#39;affitti/\u0026#39; e crea una llm-wiki. Assistant: Done. Initialized the llm-wiki at /home/hermes/affitti: affitti/ ├── SCHEMA.md # domain: rentals — contracts, tenants, landlords, market data ├── index.md # sectioned catalog (currently 0 pages) ├── log.md # init entry logged ├── raw/{articles,papers,transcripts,assets}/ ├── entities/ # properties, tenants, landlords ├── concepts/ # lease terms, rent increases, maintenance rules, utilities ├── comparisons/ # e.g. rent levels across properties └── queries/ Poi ho chiesto di collegare i PDF alla wiki tramite link simbolici, senza copiarli, e di non iniziare subito l\u0026rsquo;importazione. La parte interessante è come ha risposto: prima di darmi un parere è andato a guardare com\u0026rsquo;erano organizzate le cartelle e ha capito da solo che si trattava di una cartella sincronizzata, in cui non deve mai scrivere.\nAssistant: Good question. Let me look at the actual nextcloud layout before I commit to a recommendation. `Appartamento XYZ` — via *******, 4 PDFs (contract, registration, 2 proroghe) `Appartamento ABC` — via *******, ~50 PDFs organized by year (affitto 2017 … affitto 2026) There\u0026#39;s also a .sync_*.db file, confirming this is a managed sync dir — so we must never write into it. My recommendation: yes, symlinks are the right solution — better than copying: [...] Read-only stays read-only. [...] anything written into the nextcloud folder (including a symlink created inside it) could be picked up by the sync client and re-uploaded. So the links go in the wiki, never in nextcloud. Ha creato i link, ha aggiunto la regola in SCHEMA.md e solo allora ha aspettato il mio via. Ho iniziato con l\u0026rsquo;appartamento più piccolo:\nUser: start with \u0026#39;Appartamento XYZ\u0026#39; Assistant: ****** ingested. All 4 PDFs were read through the symlink (none copied/modified); the main contract\u0026#39;s body is a scanned image with no text layer, but page 1 (asseverazione) plus the 3 Entrate receipts contained all the key data. Created 7 pages: [...] Open questions (flagged on the pages, worth answering when you see the signed proroghe): Did the rent change at the proroghe? The receipts don\u0026#39;t restate it — assumed still €***. Which landlord opted for cedolare secca, and does it carry to the proroghe? 2+1 renewal/proroga rules and deadlines — the receipts don\u0026#39;t contain them. Le \u0026ldquo;open questions\u0026rdquo; sono la cosa che ho apprezzato di più: invece di inventare ciò che nei documenti non c\u0026rsquo;è, l\u0026rsquo;agente lo dichiara e lo segnala nelle pagine. Ho risposto alle prime due domande e le pagine della wiki sono state aggiornate citando la mia conferma come fonte.\nDi default, la skill genera testo in inglese; bisogna dire ad Hermes che tutti i documenti vanno redatti in italiano: sorry not to have mentioned before, but the wiki text must be in Italian as the input documents.\nHo continuato così fino a fargli digerire tutti i documenti disponibili in quel momento: 60 PDF trasformati in 54 pagine wiki, in circa 4 ore.\nRenderlo automatico # Voglio che regolarmente Hermes controlli se ci sono nuovi documenti ed aggiorni di conseguenza la wiki. Inoltre, voglio che vengano fatti dei controlli affinché tutto il sapere sia consistente (funzionalità di lint o health-check tipica della llm-wiki). Eventuali aggiornamenti o inconsistenze devono essermi segnalati, via Telegram, perché possa prenderne subito visione ed intervenire.\nDi nuovo ho usato il cron, ma non quello di sistema (Unix). Hermes dispone di un sottosistema cron gestito in autonomia. In figura potete vedere il prompt con cui viene invocato l\u0026rsquo;agente di default, i giorni e l\u0026rsquo;orario di attivazione, le skill da includere e la cartella dove l\u0026rsquo;agente avrà accesso. Seguendo lo stesso principio, ho realizzato un secondo cron che gira al sabato mattina per il lint della wiki.\nPerché scrivo le istruzioni in inglese? Prompt, skill e istruzioni per l\u0026rsquo;agente li scrivo quasi sempre in inglese, per due buoni motivi:\nla maggioranza del testo usato per allenare un modello è in inglese (o in cinese!), dunque mi aspetto che risponda meglio in questa lingua; l\u0026rsquo;inglese è di solito più diretto e conciso dell\u0026rsquo;italiano, quindi si risparmiano token che le GPU dovrebbero elaborare inutilmente, con un guadagno anche in tempo. Come si usa? # Karpathy, nel suo template originale, utilizzava Obsidian per navigare la wiki. In realtà, si può usare qualunque cosa in grado di leggere file markdown.\nIo invece ho un altro approccio: non visualizzo la wiki, ma utilizzo esclusivamente la chat con l\u0026rsquo;agente, principalmente via Telegram. Quando ho bisogno di qualcosa, lo chiedo direttamente, come nell\u0026rsquo;esempio che avete visto all\u0026rsquo;inizio.\nLimiti e miglioramenti # Usando documenti markdown, la scalabilità dell\u0026rsquo;approccio llm-wiki classico è limitata. Realisticamente, fino a ~100 file sorgenti e centinaia di pagine wiki le prestazioni sono buone anche con un LLM locale di modeste dimensioni come Qwen3.8-27B, che è proprio quello che uso. Ecco quindi la risposta alla domanda iniziale: sì, per questo compito un modello locale è più che adeguato. Oltre quella soglia, bisogna affidarsi a qualcosa di meglio di un file di indice.\nConclusioni # Per il mio caso specifico, la wiki è più che sufficiente. Non devo più rovistare tra cartelle di PDF per ritrovare una data, un importo o il nome di un inquilino di qualche anno fa: lo chiedo su Telegram e la risposta arriva in pochi secondi, con le fonti. E quando una scadenza si avvicina o un nuovo documento non torna con il resto, è Hermes a ricordarmelo ogni sabato mattina.\nLe scartoffie continuo a odiarle, ma almeno adesso se ne occupa qualcun altro.\n","date":"18 ottobre 2026","externalUrl":null,"permalink":"/blog/2026/10/18/affitti_wiki/","section":"Blog","summary":"Lo ammetto, io odio le “scartoffie” e credo che molti di voi saranno dello stesso avviso. Tuttavia, dobbiamo conviverci: contratti, fatture, bollette e documenti di ogni tipo fanno parte della vita reale.\nDi sicuro qui l’AI può venirci incontro: i documenti sono essenzialmente testo e gli LLM sono piuttosto abili nel trattamento del testo. Lo saranno anche i modelli locali? Lo scopriremo presto.\n","title":"Odio le scartoffie: così un agente AI gestisce i miei affitti","type":"blog"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/rag/","section":"Tags","summary":"","title":"Rag","type":"tags"},{"content":"Da qualche tempo ho in casa un’intelligenza artificiale che gira interamente su macchine mie, nel mio home-lab. Niente abbonamenti, niente dati che escono dalla mia rete. Non è arrivata tutta in una volta: ho cominciato con un PC configurato in un modo, poi si è evoluto in un altro modo e via così. Questo blog nasce per raccontare quell’evoluzione e, soprattutto, quello che ci ho costruito sopra.\nSono un informatico, e l’AI mi ha attratto fin da subito, sia come oggetto di studio sia come strumento di lavoro. La svolta, per me, è arrivata con i modelli a pesi aperti, in particolare quelli cinesi: per la prima volta un modello scaricabile ed eseguibile in locale era abbastanza capace da essere utile davvero, e non soltanto una curiosità da laboratorio o da nerd. Da lì è nata l’idea di costruirmi un’AI privata, senza spendere una follia.\nViene spontaneo chiedersi perché darsi tanta pena, quando un abbonamento ad Anthropic o OpenAI offre i modelli migliori al mondo senza alcuna manutenzione. È una domanda legittima, e per molti la risposta giusta è proprio l’abbonamento. Ma esistono buone ragioni per percorrere l’altra strada. La prima è la privacy: ci sono dati che non affiderei mai a un servizio esterno, e in locale il problema semplicemente non si pone. La seconda è il controllo: scelgo io il modello, la versione e la configurazione, e nessuno può cambiarmeli sotto il naso o chiudere il servizio o farmi pagare il doppio da un giorno all’altro. La terza, per un informatico forse la più seducente, è la possibilità di capire: un modello che gira in casa si può osservare, misurare, mettere alla prova. Quanto ai costi, conviene essere onesti: l’hardware ha un prezzo e l’elettricità non è gratis, specialmente qui in Italia. Il vantaggio non sta tanto nel risparmio quanto nel sapere esattamente quanto si spende, senza sorprese.\nBisogna anche sapere cosa non aspettarsi. Un modello locale su hardware tutto sommato modesto non raggiunge un modello di frontiera, e in locale si usano quasi sempre modelli quantizzati, cioè compressi per occupare meno memoria, con un inevitabile calo di qualità rispetto all’originale. Il software che orchestra il modello può compensare in parte, ma il divario resta. Eppure il progresso è rapidissimo: modelli di dimensioni contenute riescono oggi in compiti che fino a pochi mesi prima sembravano fuori portata. Le versioni 3.6 e 3.8 dei modelli della famiglia Qwen ne sono l\u0026rsquo;esempio lampante.\nValutare in modo oggettivo la qualità di un modello è un problema tutt’altro che banale, e non ho la pretesa di risolverlo. Qui adotterò un criterio più semplice e, credo, più onesto: un modello è abbastanza buono se fa funzionare i casi d’uso che mi interessano in modo sistematico e affidabile. Le classifiche contano poco; conta che il lavoro venga fatto, tutte le volte che serve.\nNelle pagine che seguono parlerò quindi di tre cose: dell’hardware, e di come si è evoluto nel tempo cercando di tenere a bada la spesa; del software, di quali strumenti uso e di come li configuro; e dei casi d’uso, di ciò che ho costruito e di quanto funziona davvero. Su quest’ultimo punto ho una posizione precisa. In rete si vedono molti esempi in cui un LLM viene scomodato per recapitare ogni mattina le notizie di Hacker News o le previsioni del tempo: dimostrazioni simpatiche, ma per cose del genere basta uno script. A me interessa altro. Mi interessano i compiti noiosi che rubano tempo, e quelli in cui l’AI offre un aiuto reale, qualcosa che senza di lei non avrei fatto o avrei fatto peggio. Per esempio, gestire le bollette di più appartamenti e collezionarne i dati e gli importi in un DB dove ho tutto sotto controllo automaticamente è una di quelle cose che mi risparmia tempo prezioso ogni mese.\nSe l’idea ti incuriosisce, cominciamo da qui.\n","date":"18 ottobre 2026","externalUrl":null,"permalink":"/","section":"SchifanoIA","summary":"","title":"SchifanoIA","type":"page"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"18 ottobre 2026","externalUrl":null,"permalink":"/tags/telegram/","section":"Tags","summary":"","title":"Telegram","type":"tags"},{"content":" Sopra: Palazzo Schifanoia\nA Ferrara, la mia città, in pieno centro storico, al numero 23 di via Scandiana, sorge Palazzo Schifanoia. Lo fece costruire nel 1385 Alberto V d\u0026rsquo;Este, e il nome dice già tutto: \u0026ldquo;schivar la noia\u0026rdquo;. Non era una sede di governo né una fortezza, ma un luogo pensato per il riposo e lo svago della corte, un rifugio dove staccare dagli affari e dedicarsi a ciò che rende la vita più piacevole.\nQualche decennio più tardi Borso d\u0026rsquo;Este lo ampliò e fece affrescare il Salone dei Mesi, uno dei cicli pittorici più straordinari del Rinascimento: dodici mesi in cui si intrecciano la vita quotidiana, gli dei dell\u0026rsquo;Olimpo e le costellazioni dello zodiaco. Ma il luogo a cui sono più affezionato è un altro: il giardino. Seduto a un tavolino del caffè, all\u0026rsquo;ombra degli alberi secolari e circondato da piante fiorite, ho sempre la stessa sensazione: la mente si calma, e allo stesso tempo si accende la voglia di immaginare e di costruire qualcosa.\nHo scelto questo nome per tre ragioni.\nLa prima è proprio quella sensazione. Questo blog, per me, è uno spazio di otium nel senso latino del termine: non ozio, ma tempo sottratto agli obblighi e dedicato a ciò che nutre la mente, esattamente come lo era il palazzo per gli Estensi.\nLa seconda è più personale. Di giorno lavoro come dipendente nel settore IT, tra pipeline di big data e processi aziendali che di creativo hanno ben poco: il mio negotium, per restare in tema. Schifanoia è la mia boccata d\u0026rsquo;ossigeno: il posto dove la tecnologia torna a essere curiosità, sperimentazione, riflessione e, sì, anche divertimento.\nLa terza, lo ammetto, è un gioco di parole non proprio brillantissimo: \u0026ldquo;Schifanoia\u0026rdquo; finisce proprio con IA. Un\u0026rsquo;AI di casa, nata per schivare la noia.\n","date":"1 ottobre 2026","externalUrl":null,"permalink":"/schifanoia/","section":"SchifanoIA","summary":"","title":"Perché Schifanoia?","type":"page"},{"content":"","date":"1 luglio 2026","externalUrl":null,"permalink":"/tags/benchmark/","section":"Tags","summary":"","title":"Benchmark","type":"tags"},{"content":"","date":"1 luglio 2026","externalUrl":null,"permalink":"/tags/proxmox/","section":"Tags","summary":"","title":"Proxmox","type":"tags"},{"content":" Il software perfetto, come l\u0026rsquo;hardware perfetto, non esiste: dipende da cosa si vuole ottenere.\nPrivilegio stabilità e affidabilità e uso sempre software open-source o, nel caso degli LLM, modelli open-weights. Nell\u0026rsquo;AI tutto cambia a velocità vertiginosa: inseguire ogni novità è impossibile e anche poco utile, ma capita spesso di dover provare una nuova versione di qualcosa o di toccare un parametro delicato. Basta un niente e si rompe tutto, irrimediabilmente. Senza una rete di sicurezza robusta, il PC resta fuori uso finché non si trova il tempo per sistemarlo.\nIl sistema operativo # Proxmox è la mia scelta per il sistema operativo (OS) da dedicare al PC di inferenza. La possibilità di isolare specifiche applicazioni o servizi in container LXC o VM, insieme a snapshot e backup, mette ragionevolmente al riparo dai problemi che ho citato. Gli snapshot e i backup possono essere salvati in locale, sullo stesso disco su cui è installato Proxmox. Tuttavia, per una maggiore affidabilità, è opportuno utilizzare una share remota su un NAS o, meglio ancora, un servizio di backup dedicato come Proxmox Backup Server (PBS). Ho optato proprio per quest\u0026rsquo;ultima soluzione, creando una VM dedicata a PBS sul mio NAS Synology.\nProxmox è un sistema di una certa complessità e sono il primo a non usarne molte funzionalità avanzate. Ad esempio, ho disabilitato tutti i servizi di High Availability (HA): pur avendo più macchine con Proxmox, non uso il clustering e tanto meno l\u0026rsquo;HA. Per una panoramica pratica di come installare Proxmox sul vostro server AI, vi rimando alla guida di digitalspaceport.\nMotori di inferenza # Per l\u0026rsquo;inferenza esistono due tipologie di software:\norientati all\u0026rsquo;inferenza personale, cioè per un singolo utente. Llama.cpp e i suoi derivati ne sono l\u0026rsquo;esempio tipico.\norientati all\u0026rsquo;inferenza enterprise, tipicamente nei datacenter. Qui si privilegiano le prestazioni con molte richieste in parallelo. Il supporto hardware punta soprattutto alle GPU di fascia alta, dove NVIDIA è di casa. vLLM e SGLang sono le soluzioni di riferimento di questa categoria.\nHo adottato vLLM perché supporta nativamente la quantizzazione NVFP4 sulle GPU Blackwell e il tensor parallel su più GPU, e perché ha una comunità più estesa. Per una questione di efficienza, vLLM gira all\u0026rsquo;interno di un container LXC (Debian 13) a cui è concesso l\u0026rsquo;accesso alle GPU del sistema. In questo modo l\u0026rsquo;accesso è più diretto, veloce ed economico: non ci sono strati software aggiuntivi come il kernel e i driver di una VM con il suo OS. Per avviare il server di inferenza con il modello selezionato uso Docker, con un file docker-compose.yml per ogni modello o versione di modello che voglio provare. Trovate il file docker-compose.yml da usare come template sul mio git.\nLLM # Come ho già raccontato in precedenza, il modello che ho adottato è Qwen3.8-27B. Preferisco un unico modello, molto capace per le sue dimensioni, con un contesto (KV cache) il più ampio possibile, utile per le sessioni degli agenti. Questo significa che anche le richieste più semplici invocano sempre un LLM che occupa tutte le risorse del sistema locale. Qwen3.8 gestisce image-to-text, video-to-text e text-to-text: restano quindi escluse la generazione di immagini, il text-to-audio e l\u0026rsquo;audio-to-text, a meno di implementarli via CPU.\nIn alternativa, si può adottare un approccio diverso e più sofisticato: un LLM compatto fa da router e smista le richieste a modelli con dimensioni, capacità e specializzazioni diverse. Questa soluzione, però, richiede risorse extra (GPU o NPU) che il mio hardware al momento non ha.\nPoiché le due RTX 5060 Ti della macchina di inferenza sono di classe Blackwell, la quantizzazione di Qwen adottata è NVFP4. Esistono decine di quantizzazioni NVFP4 di questo modello e ne ho testate diverse, fra cui:\nnvidia/Qwen3.8-27B-NVFP4: 21.9 GB unsloth/Qwen3.8-27B-NVFP4: 23.4 GB gittensor-model-hub/Qwen3.8-27B-NVFP4-RTX5090: 17.9 GB Non a caso ho riportato la dimensione di ogni modello. In media, una quantizzazione NVFP4 occupa più spazio di una INT4, e 22-24 GB iniziano a essere troppi per avere anche una KV cache generosa. Per questo ho scelto il modello di gittensor: per quanto sia stato pensato per una singola RTX 5090, funziona perfettamente in configurazione tensor parallel. Nella mia configurazione non posso sfruttare completamente i 32 GB di VRAM, perché su ogni GPU devono restare delle strutture dati per il contesto CUDA, i buffer NCCL e i CUDA Graph. Di conseguenza, non raggiungo i 262K token di KV cache, ma un rispettabile 237K.\nNon scenderò nei dettagli di come Gittensor sia riuscito a ridurre la dimensione del modello in NVFP4 mantenendo una qualità pari (o superiore) a quella dei concorrenti, almeno stando ai benchmark. Su questo il mio approccio è pragmatico: un modello è efficace se porta a termine, in modo sistematico, i compiti che gli affido.\nHermes # Ho adottato Hermes come piattaforma agentica locale. Online troverete innumerevoli risorse per l\u0026rsquo;installazione, la configurazione e l\u0026rsquo;utilizzo.\nPer una questione di sicurezza, ho installato Hermes in una VM (Ubuntu 26.04.1 LTS) con un utente non sudoer. Oltre a Qwen3.8-27B locale, ho definito al suo interno un agente (o profilo) che ha accesso a Claude Code tramite il mio abbonamento Pro. Questa funzionalità è molto interessante perché consente ad Hermes di usare direttamente Claude Code, il programma da console, e quindi i modelli Anthropic senza passare dalle costose API.\nMettiamo tutto assieme # flowchart TB subgraph HW[\"PC di inferenza: Intel i7-3770 + 2x RTX 5060 Ti 16 GB (Blackwell)\"] subgraph PVE[\"Proxmox\"] subgraph LXC[\"Container LXC: Debian 13 (accesso diretto alle GPU)\"] subgraph DOCKER[\"Docker (un docker-compose.yml per modello)\"] VLLM[\"vLLM\ntensor parallel su 2 GPU\"] LLM[\"Qwen3.8-27B NVFP4 (gittensor, 17.9 GB)\nKV cache: 237K token\"] VLLM --- LLM end end subgraph VM[\"VM: Ubuntu 26.04.1 LTS (utente non sudoer)\"] HERMES[\"Hermes\npiattaforma agentica\"] CC[\"Claude Code\"] HERMES -- \"profilo Claude\" --\u003e CC end end end HERMES -- \"profilo locale\n(API vLLM)\" --\u003e VLLM CC -- \"abbonamento Pro\" --\u003e ANT[\"Modelli Anthropic\n(cloud)\"] subgraph NAS[\"NAS Synology\"] PBS[\"VM Proxmox Backup Server\"] end PVE -. \"snapshot e backup\ndi LXC e VM\" .-\u003e PBS Lo schema presenta l\u0026rsquo;architettura generale del sistema e riassume l\u0026rsquo;hardware e il software coinvolti.\nTestiamo il modello # Finalmente, dopo tante chiacchiere, vediamo un po\u0026rsquo; di numeri. Ho distinto due casi estremi:\ncold: ogni prompt è diverso, quindi il prefill viene rieseguito completamente e il prefix caching di vLLM non aiuta. Simula richieste del tutto indipendenti, cioè il caso peggiore. warm: tutte le richieste condividono il prefisso e cambia solo un suffisso di S token (S = 1K). Simula il turno di un agente, con il risultato di un tool e un nuovo messaggio. I parametri di interesse sono tre:\nTime to first token (TTFT): il tempo mediano necessario a generare il primo token. Generation speed: i token generati al secondo (1000 diviso il tempo mediano per token, in ms). Prefill speed: la dimensione del contesto divisa per il TTFT. Nel caso warm è una velocità effettiva, perché gran parte del prompt è già in cache. Ognuno ha un grafico dedicato, con le misure al crescere del contesto da 1K a 225K token (nel caso warm, da 2K). Trovate il mio script di test sempre sul mio git.\nCosa dicono i numeri # Il prefix caching fa tutta la differenza. Nel caso cold il TTFT cresce con il contesto, e oltre i 64K anche più che in proporzione: 0,6 secondi a 1K, 10 secondi a 16K, 50 secondi a 64K, oltre due minuti a 128K e circa 5 minuti a 225K. Nel caso warm, invece, il primo token arriva in meno di 2 secondi fino a 64K e in 5-7 secondi anche con i contesti più lunghi. È questo che rende utilizzabili le sessioni agentiche: a ogni turno il modello rielabora solo la parte nuova, non l\u0026rsquo;intera conversazione.\nLa generazione cala dolcemente. La velocità resta intorno ai 42 token al secondo fino a 8K, scende a circa 39 a 64K e a 32 a 225K: a ogni token generato il modello deve consultare una KV cache sempre più grande. Cold e warm sono praticamente identici, come ci si aspetta: la cache accelera la lettura del prompt, non la scrittura della risposta.\nIl prefill a freddo è il vero collo di bottiglia. Senza cache, le due RTX 5060 Ti elaborano circa 1.500-1.700 token al secondo fino a 32K; poi la velocità cala a 1.300 a 64K, 1.000 a 128K e circa 800 a 225K. Nel caso warm la velocità effettiva sale fino a 25.000-40.000 token al secondo, ma non è un miracolo dell\u0026rsquo;hardware: semplicemente, quasi tutto il prompt è già in cache.\nIn pratica: incollare da zero un documento lungo costa caro, ma una conversazione che cresce un turno alla volta resta fluida anche con centinaia di migliaia di token di contesto. Conviene quindi evitare tutto ciò che invalida la cache, come modificare il system prompt o l\u0026rsquo;elenco dei tool a metà sessione.\nConsiderazioni finali # Proxmox, vLLM e Hermes formano uno stack forse non banale da mettere in piedi, ma solido: ogni componente è isolato, salvato con snapshot e backup e sostituibile senza rischiare di compromettere il resto del sistema. Posso provare un nuovo modello o una nuova versione di vLLM sapendo che, se qualcosa va storto, tornare indietro è questione di minuti.\nSul fronte delle prestazioni, un modello da 27B su due GPU di fascia media genera fra 32 e 42 token al secondo e, grazie al prefix caching, risponde in pochi secondi anche con contesti oltre i 200K token. Per un uso personale e agentico è un risultato più che soddisfacente, soprattutto considerando il costo e le limitazioni dell\u0026rsquo;hardware.\n","date":"1 luglio 2026","externalUrl":null,"permalink":"/blog/2026/07/01/aipc_software/","section":"Blog","summary":" Il software perfetto, come l’hardware perfetto, non esiste: dipende da cosa si vuole ottenere.\nPrivilegio stabilità e affidabilità e uso sempre software open-source o, nel caso degli LLM, modelli open-weights. Nell’AI tutto cambia a velocità vertiginosa: inseguire ogni novità è impossibile e anche poco utile, ma capita spesso di dover provare una nuova versione di qualcosa o di toccare un parametro delicato. Basta un niente e si rompe tutto, irrimediabilmente. Senza una rete di sicurezza robusta, il PC resta fuori uso finché non si trova il tempo per sistemarlo.\n","title":"Proxmox, vLLM e Hermes: il software del mio PC per l'AI locale","type":"blog"},{"content":"","date":"1 luglio 2026","externalUrl":null,"permalink":"/tags/qwen/","section":"Tags","summary":"","title":"Qwen","type":"tags"},{"content":"","date":"1 luglio 2026","externalUrl":null,"permalink":"/categories/software/","section":"Categories","summary":"","title":"Software","type":"categories"},{"content":"","date":"1 luglio 2026","externalUrl":null,"permalink":"/tags/vllm/","section":"Tags","summary":"","title":"Vllm","type":"tags"},{"content":"","date":"5 giugno 2026","externalUrl":null,"permalink":"/categories/hardware/","section":"Categories","summary":"","title":"Hardware","type":"categories"},{"content":"Come tutti gli informatici o gli appassionati di questa materia, ho accumulato nel tempo un numero impressionante di componenti come CPU, memorie, dischi, case, alimentatori e schede di ogni tipo.\nTutto ciò che ha più di 10 anni viene considerato obsoleto, tuttavia, questi componenti sono ancora perfettamente funzionanti e in grado di far girare quasi qualunque cosa dignitosamente. Vale anche per i modelli AI? Decisamente no!\nMa c\u0026rsquo;è una scappatoia: quello che serve è la GPU, l\u0026rsquo;LLM gira esclusivamente lì. Il resto della macchina non ha bisogno di chissà quale sofisticazione.\nIl piano # L\u0026rsquo;idea è quindi semplice: possiamo riutilizzare vecchi componenti che potremmo già possedere e concentrare la spesa nella GPU. In questo modo possiamo permetterci un\u0026rsquo;AI personale senza spendere una follia.\nIn realtà anche la GPU potrebbe essere di seconda mano. Si può leggere un po\u0026rsquo; ovunque che la RTX 3090 di NVidia è ancora una scelta eccellente, ma mantiene prezzi elevatissimi (ad oggi ~1000€) così come i suoi consumi di corrente. Inoltre, una singola 3090 potrebbe essere stretta con i suoi 24GB di VRAM.\nNon esiste solo NVidia, ma con essa si semplifica il processo: tutti i software, specialmente quelli per machine learning, inferenza e tutto ciò che serve per l\u0026rsquo;AI locale hanno il massimo supporto se l\u0026rsquo;hardware è NVidia in quanto utilizzano le librerie proprietarie CUDA.\nRequisiti e scelte # Per costruire la mia macchina di inferenza locale bisogna definire quelli che per me sono i requisiti minimi per far girare un modello sufficientemente capace per i miei utilizzi.\nIl 14 agosto 2026 sono stati pubblicati i pesi di Qwen3.8-27B che con la stessa dimensione della precedente versione 3.6 ha ulteriormente migliorato le prestazioni ed è ancora imbattuto fra i modelli di pari dimensione, almeno secondo il mio personale parere. Qwen3.8-27B è dunque il modello che ho scelto per l\u0026rsquo;inferenza locale.\nOspitare un LLM da 27B significa occupare ~18-23GB di VRAM sulla GPU a seconda della quantizzazione adottata (int4, fp4). Poi bisogna sommare la dimensione della KV cache che volendo supportare l\u0026rsquo;intera finestra di contesto nativa (262K token) ammonta a ~8 GiB = 8.6 GB. Ne segue che 32GB di VRAM sono il requisito minimo.\nIl problema è che l\u0026rsquo;unico prodotto consumer di NVidia con 32GB è la RTX 5090 che oltre che essere introvabile, ha un prezzo proibitivo che non sto neppure a riportare. Ho scelto quindi di ripiegare su una configurazione a doppia GPU con 2 schede RTX 5060 Ti da 16GB ciascuna da usare in parallelo (\u0026rsquo;tensor parallel\u0026rsquo;). Vedremo in seguito che ci sono sia vantaggi che svantaggi in questa configurazione. Tuttavia la considero il compromesso migliore nel rapporto prestazioni e consumi (TDP 180W e 3W in idle) ed essendo di generazione \u0026lsquo;Blackwell\u0026rsquo; supporta nativamente la quantizzazione NVFP4. Vi rimando alla documentazione di NVidia per apprezzare le differenze fra le varie codifiche in virgola mobile a 4-bit.\nLa configurazione finale # Il PC che ho utilizzato era stato creato inizialmente come PC da gaming, ma visto l\u0026rsquo;utilizzo o forse dovrei dire il non utilizzo, l\u0026rsquo;ho destinato all\u0026rsquo;inferenza locale.\nLa configurazione ed i costi sono riassunti in tabella.\nComponente Modello Già in possesso Costo (€) CPU Intel Core i7-3770 \u0026#x2705; 0 CPU cooler Thermalright sl-100 \u0026#x2705; 0 Main Board Gigabyte GA-Z77X-UD3H \u0026#x274c; 79 RAM 32GB DDR3 (4x8GB) \u0026#x2705; 0 SSD Samsung 860 EVO mSATA 500GB \u0026#x2705; 0 PSU be quiet! Pure Power 12M 650W \u0026#x2705; 0 Case very old Cooler Master case \u0026#x2705; 0 GPU (x2) Asus DUAL RTX 5060 Ti OC \u0026#x274c; 580*2 Il costo per rendere adeguato il PC all\u0026rsquo;inferenza è stato di 1239€. Il prezzo è simile o inferiore ad una soluzione a singola scheda AMD o Intel con tutte le complicazioni del caso.\nHo preferito cambiare scheda madre ed utilizzarne una (GA-Z77X-UD3H) che potesse allocare 8 lane per entrambi i connettori PCIe 16x. Si tratta di PCIe 3.0 invece del 5.0 supportato dalla RTX 5060.\nÈ tanto? È poco? Dipende. Giustificare una spesa è una funzione di molti parametri il cui peso è dato dalle situazioni personali. Nel mio caso, questa spesa è senza alcun ritorno economico: per passione ed interesse personale e ritengo che sia la spesa minima possibile.\nConsumi # Per un server all\u0026rsquo;interno di un home lab il consumo in idle assume un\u0026rsquo;importanza rilevante: la maggior parte del tempo infatti la macchina non è impegnata.\nPer quanto non si parli di software in questo post, è importante sapere che questa macchina usa Proxmox. I consumi sono stati misurati avendo attivi:\n1 container LXC (Debian GNU/Linux 13 trixie) per il motore di inferenza con accesso alle GPU 1 VM Linux Ubuntu 26.04.1 LTS per l\u0026rsquo;ambiente degli agenti (Hermes) Sopra: Consumo a riposo RTX 5060 Ti.\nCon \u0026rsquo;nvtop\u0026rsquo; il consumo delle 5060 Ti risulta molto basso: 3W per GPU. Il consumo massimo è stato limitato a 160W (vs. 180W nativi).\nSopra: Consumo a riposo intero sistema.\nIl consumo dell\u0026rsquo;intero sistema in idle, misurato all\u0026rsquo;ingresso dell\u0026rsquo;alimentatore, risulta di 44W. Considerando che a livello BIOS sono stati attivati tutti i C-state della CPU, l\u0026rsquo;audio e il controller SATA Marvell 88SE9172 sono stati disabilitati, ritengo che in assoluto non sia un consumo basso per fare nulla. Magari il mio server principale (HP Elitedesk 800 mini G9), che consuma 6-8W in idle, mi ha abituato troppo bene!\nPer chi non si accontenta, forse si può ottenere qualcosa in più spegnendo tutte le porte SATA (solo una è usata dall\u0026rsquo;SSD) e spegnendo la iGPU Intel rendendo così il sistema headless. Tuttavia, da un sistema del 2012(!) con RAM DDR3 non si possono chiedere miracoli.\nInvece, il massimo consumo durante l\u0026rsquo;inferenza che ho osservato è di 294W. Non ho mai visto superare i 120W da ogni singola scheda, dunque si potrebbe limitare ulteriormente la potenza delle GPU fino a 140W senza penalizzare le prestazioni.\nCosto del consumo # Immaginiamo che il sistema sia sempre in idle e che le ore spese nell\u0026rsquo;inferenza siano trascurabili nell\u0026rsquo;ambiente casalingo. Consideriamo inoltre un costo al kWh di 0,25 € compreso di tasse, oneri e quant\u0026rsquo;altro. Otteniamo:\n44 W⋅24 h1000⋅30 giorni=31,68 kWh \\frac{44\\,\\text{W} \\cdot 24\\,\\text{h}}{1000} \\cdot 30\\,\\text{giorni} = 31{,}68\\,\\text{kWh} 100044W⋅24h​⋅30giorni=31,68kWh31,68 kWh⋅0,25 EUR/kWh=7,92 EUR 31{,}68\\,\\text{kWh} \\cdot 0{,}25\\,\\text{EUR/kWh} = 7{,}92\\,\\text{EUR} 31,68kWh⋅0,25EUR/kWh=7,92EUR 7,92€ al mese è la spesa minima di corrente necessaria per avere una AI locale con questa macchina. In presenza di un impianto fotovoltaico, mediamente il costo si dimezza nell\u0026rsquo;arco dell\u0026rsquo;anno. Il confronto con il mio abbonamento PRO di Anthropic è impietoso: 18€ al mese. Poco più del doppio per avere diversi ordini di grandezza di capacità in più! Ma se desiderate una AI locale, dovete andare oltre il mero conto economico.\nConsiderazioni finali e limiti # Con 1239€ e un PC del 2012 ho ottenuto una macchina con 32GB di VRAM, in grado di ospitare Qwen3.8-27B in NVFP4 con una KV cache generosa e con consumi a riposo contenuti. Il compromesso, però, c\u0026rsquo;è e va detto chiaramente: il collo di bottiglia potenziale è il bus PCIe 3.0.\nLe RTX 5060 Ti usano 8 lane PCIe 5.0, che corrispondono a circa 32 GB/s per direzione. Sulla GA-Z77X-UD3H le stesse 8 lane lavorano in PCIe 3.0: circa 8 GB/s, un quarto della banda per cui le schede sono state progettate.\nQuanto pesa questa limitazione? Meno di quanto si possa pensare, ma esiste:\nDurante la generazione il modello e la KV cache risiedono interamente in VRAM, quindi la banda che conta è quella della memoria della GPU, non quella del bus. Il tensor parallel, invece, impone alle due GPU di scambiarsi i risultati intermedi a ogni layer. Le schede consumer non hanno NVLink, quindi questo traffico passa dal bus PCIe e anche dalla memoria della CPU (la libreria NCCL non usa la modalità P2P, ma SHM). Per ogni token generato i dati scambiati sono pochi e conta soprattutto la latenza. Durante il prefill di un prompt lungo, invece, i volumi crescono ed è lì che il PCIe 3.0 potrebbe farsi sentire. Il caricamento del modello è lento a causa dell\u0026rsquo;SSD mSATA (circa 550 MB/s): servono decine di secondi per leggere quasi 18GB. Succede però solo all\u0026rsquo;avvio del server di inferenza. Avrei potuto evitare il problema con una piattaforma più moderna, ma avrei dovuto cambiare anche CPU e RAM, con una spesa ben diversa. Per un uso personale, in cui conta più avere un modello capace e un contesto ampio che la massima velocità, ritengo che il compromesso sia accettabile.\nLe impressioni, però, contano poco: servono i numeri. Nel prossimo post, dedicato al software, metterò alla prova questa configurazione e vedremo quanto questi limiti pesino davvero sulle prestazioni.\n","date":"5 giugno 2026","externalUrl":null,"permalink":"/blog/2026/06/05/game2aipc/","section":"Blog","summary":"Come tutti gli informatici o gli appassionati di questa materia, ho accumulato nel tempo un numero impressionante di componenti come CPU, memorie, dischi, case, alimentatori e schede di ogni tipo.\nTutto ciò che ha più di 10 anni viene considerato obsoleto, tuttavia, questi componenti sono ancora perfettamente funzionanti e in grado di far girare quasi qualunque cosa dignitosamente. Vale anche per i modelli AI? Decisamente no!\nMa c’è una scappatoia: quello che serve è la GPU, l’LLM gira esclusivamente lì. Il resto della macchina non ha bisogno di chissà quale sofisticazione.\n","title":"Un computer economico ma efficace","type":"blog"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"Mi chiamo Gian Paolo Jesi e tutto è cominciato con un triangolo.\nDa bambino avevo un Commodore 64 e la programmazione mi affascinava, anche se ne avevo un\u0026rsquo;idea piuttosto confusa. Un giorno il mio migliore amico, armato di qualche rudimento di BASIC imparato a scuola, mi scrisse un programma che calcolava l\u0026rsquo;area di un triangolo. Io ero convinto che programmare significasse \u0026ldquo;far ragionare il computer\u0026rdquo;, un po\u0026rsquo; come su Star Trek. Invece bastava base * altezza / 2. Rimasi a bocca aperta, e da lì non ho più smesso.\nLa strada però non è stata dritta. Vengo dal liceo classico, poi mi sono laureato in Informatica e ho fatto un dottorato sui sistemi distribuiti, tra Bologna e Amsterdam. Ho passato tredici anni nella ricerca, in Italia e all\u0026rsquo;estero, e nel 2018 sono passato al privato, sempre in ricerca e sviluppo, ma finalmente più vicino a casa.\nOggi, con l\u0026rsquo;intelligenza artificiale, il computer somiglia un po\u0026rsquo; di più a quello che immaginavo da bambino. Per questo ho voluto costruirmene una in casa, per capire come funziona davvero e cosa sa fare. Di questo parla il blog: trovi il progetto raccontato nella pagina principale e il perché del nome in Perché Schifanoia?.\nLontano dalla tastiera mi trovi in sella alla moto, con un libro in mano o davanti a un film, possibilmente sul divano di casa con l\u0026rsquo;impianto acceso.\nCome lavoro su questo blog # Gli articoli li scrivo io, di mio pugno. Uso l\u0026rsquo;AI per rileggerli e correggerli e per aiutarmi a gestire il sito: mi sembrava onesto dirlo, visto l\u0026rsquo;argomento.\nContatti # Domande, correzioni, idee o semplice curiosità: scrivimi a gp.jesi [at] gmail [punto] com. Il codice citato negli articoli è sul mio GitHub.\n","externalUrl":null,"permalink":"/about/","section":"SchifanoIA","summary":"","title":"Chi sono","type":"page"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]