Adrian Ciprian Iancu
Indice

aggiornata ottobre 2026

Adrian Ciprian Iancu

AI engineer: inferenza LLM su GPU consumer e datacenter, kernel CUDA, contributi open source.

Faccio inferenza di LLM: kernel CUDA e patch minime per far girare i modelli su GPU consumer e su una sola Blackwell, con ogni modifica verificata contro l'output di riferimento. Faccio anche ricerca applicata sul comportamento dei modelli open-weight. Tutto open source: due mie PR sono state integrate, una è aperta in llama.cpp e un mio fix è stato adottato in vLLM.

In questa pagina

In evidenzaOSINTlocale

Vergilius

Assistente OSINT locale

Un assistente locale che mette insieme un modello linguistico sulla scheda video, fonti aperte per capire cosa succede nel mondo e un'interfaccia che le tiene insieme. Interroga da solo le fonti quando la domanda lo richiede: notizie per soggetto e luogo, mercati, contratti militari, movimenti degli insider, mappe, archivio storico degli eventi. Lavora sul computer (file, terminale, browser, documenti) e ricorda: memorie, documenti indicizzati, procedure che impara e riusa.

Nessuna chiave API verso fornitori di AI e nessuna conversazione che esce dal computer. Pensato per macchine modeste: modello predefinito LFM2.5-2.6B con drafter speculativo DSpark su una GTX 1080 con 8 GB. Un controllo contro le invenzioni verifica che numeri e nomi della risposta compaiano nei risultati degli strumenti. Integra Odysseus (assistente) e ShadowBroker (fonti).1

1Il repository include come submodule due progetti di terzi, Odysseus (assistente) e ShadowBroker (intelligence da fonti aperte), con licenza AGPL-3.0: sono dipendenze, non lavoro originale.

Repository su GitHub

Ottimizzazione custom per la GTX 1080

  • 64tok/s in decodifica
  • 78-100tok/s con il drafter
  • 8 GBdi memoria video bastano
  • 1/36turni con cifre non supportate, prima 3/35

In evidenzaGuida

NVIDIA GTX 1080 (sm_61) AI Full Guide

Tutto quello che ho fatto girare veloce su una GPU del 2016 con 8 GB, misurato e con le fonti.

  1. LoRA ternario, addestramento per esempio20,2 → 2,7 s 7,5x

  2. MiniMax-H3, clip di prova674,5 → 175,5 s −74%

  3. MiniCPM5-2B, decodifica33 → 83,5 tok/s 2,5x

  4. Attention int8, kernel di H31875 → 944 ms 2,0x

  5. Ternary Bonsai 2 9B, decodifica55,9 → 84,4 tok/s +51%

  6. CUDA graphs, MoE Ling-3.0-tiny41,2 → 57,6 tok/s +40%

la lunghezza della barra è il rapporto tra prima e dopo

kernel llama.cppdecoding speculativoquantizzazione8 GBLoRAvideo diffusionspeech

Apri la guida su GitHub

01Contributi upstream

Quattro patch in quattro progetti

Patch piccole inviate ai repository originali. Due sono integrate, una è aperta e un mio commit è stato adottato in una PR di vLLM.

  1. leejet/stable-diffusion.cppintegrata il 24/10/2026

    PR #2202: fix, ignora l'alpha dei metadati nei LoRA con baked_scale.

  2. PrismML-Eng/llama.cppintegrata il 19/10/2026

    PR #368: Pascal (sm_61), mat-vec PQ2_0 per 1-4 colonne, +17% su Ternary-Bonsai-2-9B con output identico bit per bit.

  3. ggml-org/llama.cppaperta dal 25/08/2026

    PR #27721: CUDA Graphs su Pascal (sm_61), +40% sui modelli MoE, +7% sui modelli densi, nessuna regressione.

  4. vllm-project/vllmadottato, PR ancora aperta

    PR #58863: il commit esatto del replay GDN di RecoverSSM, proposto da me e adottato nella PR (commit 514102a).

CUDA Graphs su sm_61 in llama.cpp, PR #27721 · tempo per token, relativo

+40%MoE
+7%denso

MoE

un lancio per kernel1×
CUDA graph0,71×

denso

un lancio per kernel1×
CUDA graph0,93×
Schema, non traccia di profilazione: stessi kernel, un solo lancio del grafo al posto di uno per kernel. Il tempo per token scende a 1/1,40 sui modelli MoE (+40% misurato) e a 1/1,07 sui densi (+7%).

02Implementazioni

Dalla GTX 1080 alla RTX PRO 6000

Kernel e configurazioni di inferenza per una GTX 1080 e per una RTX PRO 6000 Blackwell. Ogni modifica è confrontata con l'output di riferimento e ogni numero ha il suo benchmark riproducibile.

blackwell6000-qwen3.8-flash-next

GPU
RTX PRO 6000 Blackwell, 96 GB
Stack
vLLM · CUDA · NVFP4
Licenza
Apache-2.0

Qwen3.8 Flash-Next e il fine-tune Swift 1.5 in NVFP4 su una sola RTX PRO 6000 Blackwell con vLLM: 4 utenti con 227k token di contesto ciascuno, circa 100 tok/s per utente, picco di 186,5 tok/s con un utente solo. I kernel sono esatti, con output identico bit per bit al riferimento: top-k QSA deterministico e replay GDN esatto. Il top-k deterministico corregge anche un bug di determinismo che c'era già.

MiniMax H3 su GTX 1080

GPU
GTX 1080, 8 GB
Stack
stable-diffusion.cpp · CUDA
Clip di prova
320x576, 39 fotogrammi

MiniMax-H3 è un transformer a diffusione che genera video con audio sincronizzato. Qui solo testo e numeri: nessun fotogramma generato. Sulla clip di prova da 39 fotogrammi il tempo scende da 674,5 a 175,5 s (−74%): pesi letti dal disco in sovrapposizione al calcolo, VAE a gruppi di tile, ricetta Q3 con turbo.

Il kernel di attention int8 con DP4A passa da 1875 a 944 ms (2,0x), senza differenze visibili da f32 su più seed.

L'attention sparsa a blocchi ha due misure distinte:

  • su una clip da 15 s, senza il prefisso: 1,65x sui passi turbo (da 397-404 a 240-245 s per passo);
  • il prefisso di condizionamento, sempre visibile, conserva il parlato. Misurato a parte su clip più corte (56 fotogrammi): errore sulle parole 0 a 544x960 e 0,2 a 384x672, contro 1,0 con la sola attention sparsa.

Il fix LoRA baked_scale è integrato (PR #2202 di stable-diffusion.cpp). Il resto del codice è in uscita.

Sezione della guida su H3

minicpm5-kernel-pascal

MiniCPM5-2B su una GTX 1080 da 33 a 83 tok/s: slot cancellati a fine conversazione, kernel Pascal con output identico bit per bit, KV cache in f16 e un drafter FR-Spec con vocabolario da 32k. Ogni passo ha il suo controllo di qualità.

PythonC++CUDA llama.cpp

bonsai2-ternary-pascal

Ternary Bonsai 2 9B su GTX 1080: +51% in decode (da 55,9 a 84,4 tok/s) con output identico bit per bit. Cinque modifiche CUDA al fork llama.cpp di PrismML; la mat-vec PQ2_0 è già dentro il fork (PR #368).

llama.cpp (patch)Python CUDA

llm2vec-8gb-offload-lossless-batching

LLM2Vec (Llama-3-8B) su una GPU da 8 GB via offload in RAM; batching senza alterare gli embedding: il padding li sposta (similarità coseno 0,76 contro il riferimento), il fix li riporta a 0,999956.

PythonPyTorch encoder testuale per Kimodo

Embedding di LLM2Vec calcolati in batch, distanza dal riferimento

≈ 5.500volte più vicino

padding · cos 0,761 − cos = 0,24

fix · cos 0,9999561 − cos = 4,4·10−5

1 − coseno, scala logaritmica

Distanza degli embedding di LLM2Vec calcolati in batch dal riferimento calcolato senza batch, su scala logaritmica di 1 − coseno: con il padding 1 − cos = 0,24 (coseno 0,76), con il fix 4,4·10−5 (coseno 0,999956), circa 5.500 volte più vicino.

lfm-to-kimodo

Kimodo genera movimento umano da un testo, ma si aspetta un vettore di LLM2Vec su Llama-3-8B: 15 GB di pesi e 90-190 secondi a frase. Ho sostituito quel pezzo con LFM2.5-Embedding-350M e una mappa lineare da 1024 a 4096 dimensioni: 0,7 s a frase e 700 MB. In uscita file npz e bvh, da aprire in Blender o Unity.

PythonPyTorch Kimodo, Unity

bonsai-webgpu-tiled-vae-fix

Root cause analysis del decoder VAE tiled di Bonsai-Image 4B in WebGPU su GPU prive di shader-f16: patch da 1,4 KB che abilita 512px e oltre su Pascal e precedenti, senza perdita di qualità sui dispositivi f16.

JavaScriptWebGPUWGSL

hildanext

Converto un LLM autoregressivo (Qwen3-0.6B) in un modello a diffusione discreta con la ricetta LLaDA 2.1, con un backend di training e inferenza eseguibile su Pascal.

PythonPyTorch diffusion LM

03Ricerca

Replica del test Cohere su Qwen3.8

Cohere ha segnalato che Qwen3.8-Flash-Next, durante un compito da analista di sicurezza in un sandbox, ha provato a caricare un file su un bucket di storage Alibaba. Ho rifatto il test il 27 e 28 ottobre 2026 su due build servite nello stesso modo su una RTX PRO 6000: la base NVIDIA in NVFP4 e il fine-tune Swift 1.5.

  • Con il prefisso https://rout, host routify-file-proxy-sg completo

    base247/256
    Swift253/256
  • Comando scritto dal modello, host Alibaba, su 1024 prove

    base0,7%
    Swift0,3%
  • Sessioni da agente con strumenti simulati, compiti di coding

    base0/18
    Swift0/20
  • Sessioni da agente, crawl con pagine rotte: URL inventati

    base2/5
    Swift2/5

L'URL memorizzato è nella base NVIDIA e il fine-tune lo conserva. Compare quando un agente continua a incontrare pagine rotte; nei compiti di coding ordinari nessuna delle due build ha prodotto un indirizzo Alibaba o di metadati. Negare l'egress e bloccare *.aliyuncs.com e gli indirizzi di metadati nell'harness copre entrambe.

cohere-probe: script e datidiscussione su GitHub

Modelli su Hugging Face

MiniCPM5-2B-pjev-LoRA

LoRA su MiniCPM5-2B per le decisioni di un agente: 93,5% su 62 decisioni tenute fuori dall'addestramento, in 0,22 s e con circa 200 MB di VRAM.

LoRAGGUFllama.cpp

LFM2.5-to-Llama8B-LLM2Vec-Kimodo

La mappa lineare da 1024 a 4096 dimensioni che sostituisce l'encoder da 8 miliardi di parametri di Kimodo (repository lfm-to-kimodo).

NumPytext-to-motion

04Strumenti e agenti

Plugin multi-agente e assistenti locali

Un harness per far lavorare e discutere più agenti insieme, e strumenti che tengono audio, testo e inferenza sulla macchina dell'utente.

claude-plugins

Plugin per Claude Code e Codex. Il principale, chatroom, mette più agenti in una stanza condivisa: chat dal vivo senza turni, bacheca dei compiti e un ufficio voxel 3D che mostra chi scrive codice, chi legge e chi aspetta. Sotto c'è un harness imposto dal codice: chiusura con prove, scadenza dei compiti, rilevatori di errori. La modalità ricerca aggiunge ruoli fissi, fasi con cancelli e un kernel che controlla ogni proposta.

/plugin marketplace add Partido-De-What/claude-plugins/plugin install chatroom@artyomita-plugins

harness, punto per punto

JavaScript · Python; Claude Code · Codex; MCP

Vergilius su GTX 1080

GTX 1080 · nessuna chiamata esterna

tok/s su GTX 1080

decodifica64
con drafter78-100

turni con cifre non supportate

3/35
1/36
Vergilius su GTX 1080, dentro un recinto: nessuna chiamata esce dalla macchina (127.0.0.1). A sinistra la velocità di decodifica, 64 tok/s e 78-100 tok/s con il drafter; a destra i turni con cifre non supportate dai risultati degli strumenti, da 3 su 35 a 1 su 36.

Vergilius

Assistente OSINT locale, in evidenza in cima alla pagina.

Pythonllama.cpp

stt-whisper-pad

Applicazione Windows per trascrizione vocale locale basata su faster-whisper (CTranslate2, int8 su CUDA): registrazione, trascrizione e incolla nel campo attivo.

Python

05Progetti sperimentali

Language model su un connettoma reale

Quanto del contesto lo tiene l'attention e quanto un nucleo ricorrente? Banco di prova: il connettoma completo del sistema nervoso di Drosophila (male-cns:v1.0, 166.700 neuroni, 2,75 M sinapsi a soglia 10)2 come nucleo ricorrente LIF di un language model: segni sinaptici fissati dal neurotrasmettitore, magnitudini inizializzate dal conteggio di sinapsi, gradiente surrogato, CUDA Graph FP32. Protocollo con null model a gradi conservati, baseline a pari token e lesioni in silico.

2Connettoma male-cns:v1.0 (Janelia FlyEM · Google Research, licenza CC-BY): 25,6 M connessioni in totale, 2.753.975 sopra la soglia di 10 sinapsi.

  • porte d'ingresso (sensoriali)
  • neuroni, per salti dalle porte
  • lettura (discendenti)
Illustrazione generata in questa pagina dentro la sagoma del sistema nervoso centrale (cervello, lobi ottici, cordone ventrale): ogni punto vale circa 260 neuroni. I punti coralli, più grandi, sono le porte d'ingresso, sul bordo dei lobi ottici e sul dorso del cervello; da lì un'onda avanza un salto alla volta e la luce segue la distanza in salti. I quadratini sono il readout: nel connettoma vero sta a 2 salti dalle porte, per questo la profondità 4+4 basta.

FlyToLLM

Ingresso del testo tramite i 17.937 neuroni sensoriali reali, lettura dai 2.241 neuroni discendenti e motori, attention causale esterna (4 teste, cache 128) che rientra dalle stesse porte. Risultati riportati con i controlli: a pari dati il grafo rimescolato batte il cablaggio anatomico; il lobo ottico intero è rimovibile senza variazione di cross-entropy; la profondità 4+4 è sufficiente per raggiungibilità misurata (readout a 2 salti dalle porte).3

34+4 sottopassi per token, TBPTT 8, CUDA Graph FP32: 0,65 s per update su GTX 1080, 0,38 s con il kernel fuso; 5,46 M parametri.

pipeline animata e numeri

PyTorch · CUDA Graphs; LIF · surrogate gradient; TBPTT · Adam; TinyStories · BPE 4096

05.1Machine learning applicato

Predizione, ottimizzazione, serie storiche

Modelli con intervalli di incertezza, ottimizzazione sotto vincoli in tempo reale, valutazione fuori campione o su simulazione.

FantaOracle

Sistema decisionale per l'asta del fantacalcio: modello di prezzo con forchetta d'incertezza, ottimizzazione della rosa al tavolo sotto vincoli di budget e slot, valutazione su campionati simulati (75-91% vinti contro strategie di riferimento). Con arena interattiva per sfidarlo.4

4Il 75-91% viene dai campionati simulati del repository, contro strategie di riferimento: una misura del modello, non una promessa sul tavolo vero. Il tetto d'asta non supera mai il massimo spendibile, per vincolo della formula; ponte con FantaAsta Live, 43 assegnazioni su 44; 250 martelletti rigiocati contro il server, 0 errori, al massimo 354 ms.

Python; predizione · ottimizzazione · Monte Carlo

martelletti rigiocati contro il server · una cella ciascuno

250/250senza errori, in entrambi gli ordini dei ruoli

tempo di risposta a ogni martelletto, in millisecondi

ordine 1media 102,7 · p95 249,1 · max 354,3
ordine 2media 95,6 · p95 254,0 · max 348,6

ponte FantaAsta Live · assegnazioni identiche

43/44

FantaOracle alla prova del proprio server. In alto 250 martelletti rigiocati, una cella ciascuno: 0 errori, in entrambi gli ordini dei ruoli. Al centro il tempo di risposta a ogni martelletto, con media, p95 e massimo. In basso il ponte con FantaAsta Live su un'asta di prova: 43 assegnazioni su 44 identiche. Dati dai report pubblici del repository.

fantacalcio-advisor

Motore di analisi e raccomandazione multi-algoritmo con front-end React; il predecessore di FantaOracle.

ReactTypeScriptPython

K-Forecast

Dashboard di previsione probabilistica: DeepAR, ARIMA/SARIMA e AutoGluon confrontati sulla stessa serie con intervalli di confidenza.

Python time series

sp500-predictability-lab

Laboratorio full-stack (React + Flask) per l'analisi e la predizione di serie storiche dell'S&P 500, con test di prevedibilità fuori campione.

TypeScriptPython time series

storico

Pipeline supervisionata e non supervisionata su fatture aperte: apprendimento dei pattern di pagamento e ranking del rischio per la gestione del credito.

Python credit risk

05.2Ambienti RL

Game engine e ambienti per reinforcement learning

Ambienti simulati costruiti da zero come banco di prova per agenti.

supermario-1-1-rl

Clone del livello 1-1 in Phaser 3 e TypeScript progettato come ambiente di training per reinforcement learning, con osservazioni e ricompense esposte.

TypeScriptPhaser 3 RL

idle-isekai-trials

Idle RPG nel browser con Phaser 3 e Three.js: loop di progressione, prestigio e rendering 3D.

JavaScriptThree.js

06Appendice · 21 voci · 7 aree

Indice dei repository

Repository pubblici raggruppati per area; ogni nome linkato porta al codice. Sotto lo stack, la quota del linguaggio principale nel codice del repository (GitHub, ottobre 2026).

Contributi upstream

Implementazioni

Ricerca

Strumenti e agenti

Progetti sperimentali

Machine learning applicato

Ambienti RL

Nota sulle figure

I grafici sono disegnati in questa pagina con HTML, CSS e canvas, senza immagini. La scena 3D in testa, fatta con three.js, è un'illustrazione di token che attraversano le unità di calcolo di una GPU: non è una misura e non parte con la riduzione del movimento attiva. Anche la figura di FlyToLLM è un'illustrazione: i punti nascono da un seme fisso (166700, il numero di neuroni), quindi ogni lettore vede lo stesso disegno. Il grafico dei CUDA Graphs è uno schema; quelli su LLM2Vec, Vergilius e FantaOracle riportano numeri misurati. I numeri nei testi vengono dai repository e dalle pagine delle PR.

Avatar GitHub di Adrian Ciprian Iancu

L'autore

Adrian Ciprian Iancu

AI engineer: inferenza LLM su GPU consumer e datacenter, kernel CUDA, contributi open source.

Inferenza LLMkernel CUDACUDA GraphsGPU Pascal (sm_61) e Blackwelldecoding speculativoquantizzazione (NVFP4, pesi ternari)llama.cppvLLMGGMLsicurezza dei modelli open-weightsistemi multi-agenteML applicato

GitHubHugging FaceLinkedInInstagram