IA local: per quan la privacitat importa
Des de fa unes setmanes he entrat en el pou sense fons de la sobirania tecnològica en el camp de la IA, i he estat configurant el meu ordinador per a poder executar coses en local sense que les meves dades i pensaments hagin de ser enviades a algun servidor de fora. Us vull compartir l'experiència per animar-vos a provar-ho.
Per això la peça més crítica serà tenir una targeta gràfica disponible. Amb, idealment 16GB de RAM. Aquest ja és un nivell d'entrada que sé que a molts de vosaltres us tirarà enrere, però és que si no, rarament podreu tenir alguna cosa que us funcioni més o menys bé. En el meu cas tinc una RTX 3090. Una gràfica de fa 6 anys però que encara tira bé.
La capacitat de la vostra GPU determinarà quin model podeu córrer en dos sentits: 1. Abans que peti, i 2. Que tingui una velocitat de generació prou adequada (30 tokens/s)
Amb una gràfica de 8GB, podeu fer servir models fins a 3B de paràmetres, mentre que amb 80 podeu usar els de 8B i 14B si estan quantitzats. I si teniu una 3090/4090/5090, el màxim que us recomanaria és un de 27B o a vegades fins +30B
Per entendre les recomanacions és important saber quin impacte té cada cosa:
- Mida del model: els paràmetres determinaran quanta VRAM serà necessària per tenir-lo actiu. Com més paràmetres, més "bo i profund" serà però més RAM necessitareu.
- Quantització: els pesos del model, que es carreguen a la memòria, són números reals i ocupen molt. Normalment, 16 bits. Però s'ha vist que podem "comprimir" baixant els decimals significatius i arrodonint-los. Tot i que causa una mica de pèrdua de qualitat, no és significativa. Per posar un exemple, quen3.6 27B ens ocuparia 54GB. Si en comptes d'usar floats de 16bits en fem servir de 8 (Q8), ens ocuparà 27GB, i si ho baixem fins a 4, només 16GB de memòria i ja ho podríem fer servir en una GPU al nostre abast.
- KV Cache: bàsicament el context/memòria que pot mantenir el model. Més context voldrà dir que podem fer sessions més llargues abans que haguem de compactar el context i perdre informació. En volem molt. Mínim 256k però idealment 512k per tasques de programació. La cache també pot ser quantitzada, i influirà en el tamany però també amb la precisió del model.
I depèn del model que carreguem, tindrem més espai lliure que podem usar per posar més cache. Per exemple amb Qwen 3.6 27B
Quin model usar?
Com sempre a la vida, tot depèn. Per un cantó hauràs de decidir entre els que poden cabre a la teva gràfica. I per altra, dependrà de la tasca que vulguis fer servir. Així que cal anar provant-ne de diversos.
Hi ha nous models cada dos per tres, però la cosa bona és que estan disponibles per descarregar "fàcilment". La web Hugging Face és la vostra amiga, on podreu mirar i descarregar. Addicionalment, unsloth té uns models quantitzats bons i unes guies que podeu seguir (o dir-li a la vostra IA que us ho configuri).
Hi ha moltes famílies de models diferents: des de DeepSeek, Qwen, Kimi, MinMax... però en el meu cas estic tirant bastant per Qwen.
En el meu cas tinc dos models depenent de la tasca:
- Qwen3.6-35B-A3B MoE és gran i ràpid. Tenir només 3B de paràmetres actius fa que generi més tokens per segon. No obstant, és menys adequat per programar. La seva arquitectura MoE (Mixture of Experts) fa que sigui més ràpid (50-80 tok/s) però menys potent.
- Qwen3.6-27B Dense és el que cal fer servir per taques més complexes, fent servir tota la xarxa neuronal per cada pregunta que li fas. Però és més lent, anant a 35tok/s
La configuració
En el meu cas tinc una sola comanda en el que puc iniciar el meu agent (hermes). Us en parlaré un altre dia però m'agrada perquè té funcionalitats com la memòria entre sessions i la millora continua.
llama-server \
-m local-ai/models/qwen3.6-27b/Qwen3.6-27B-Q4_K_M.gguf \
-ngl 99 \
-c 262144 \
-np 1 \
-fa on \
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--port 8081 \
--host 0.0.0.0Argument: -m
Valor: ...Qwen3.6-35B-A3B...
Què fa exactament: Fitxer del Model. Apunta al fitxer de 21 GB amb quantització UD (Unsloth Dynamics).
────────────────────────────────────────
Argument: -ngl
Valor: 99
Què fa exactament: GPU Offload (Descàrrega a la GPU). El valor 99 obliga el servidor a pujar totes les capes a la VRAM. Si no es fa això, la CPU s'encarregaria de part del treball i la velocitat cauria dràsticament.
────────────────────────────────────────
Argument: -c
Valor: 262144
Què fa exactament: Context Window (Finestra de Context). Estableix el límit de memòria a 256.000 tokens. És el que et permet llegir documents sencers d'un sol cop.
────────────────────────────────────────
Argument: -np
Valor: 1
Què fa exactament: Paral·lelisme (Batches). 1 prioritza la latència (velocitat de resposta immediata) per sobre del volum de dades processades. Ideal per a xat interactiu.
────────────────────────────────────────
Argument: -fa
Valor: on
Què fa exactament: Flash Attention. Un algorisme d'optimització de memòria que evita que el servidor "esbufi" quan el context es fa molt llarg.
────────────────────────────────────────
Argument: --cache-type-k
Valor: q4_0
Què fa exactament: Caché de Clau (Quantitzada). Redueix la mida de la memòria de conversació a 4 bits. Sense això, un context de 256K necessitaria ~12 GB de VRAM extra i faria fallar el sistema.
────────────────────────────────────────
Argument: --cache-type-v
Valor: q4_0
Què fa exactament: Caché de Valor (Quantitzada). Fa el mateix que l'anterior però per a la part de valors.
Explicació dels paràmetres
Conclusió
És per tothom? No. Requereix un cert coneixement tècnic i saber buscar-se la vida (preguntant a models de llenguatge ja serveix).
Però és important si volem mantenir la nostra privacitat i no haver de dependre de proveïdors... capritxosos i que llegeixen tot el que els envies.