Een LLM draaien op een Synology NAS: wat kan wel en wat niet?

De populariteit van lokale kunstmatige intelligentie is de afgelopen jaren explosief gestegen. Steeds meer ontwikkelaars, tech-enthousiastelingen en kleine bedrijven willen onafhankelijk zijn van grote, commerciële cloudproviders zoals OpenAI of Google. Als je al een Synology NAS in je meterkast of kantoor hebt staan voor je back-ups, media en documenten, klinkt het als een logische volgende stap: waarom zou je die "always-on" server niet gebruiken als je eigen lokale AI-assistent?

Het draaien van een Large Language Model (LLM) op consumentenhardware is tegenwoordig verrassend toegankelijk, maar een Network Attached Storage-apparaat is fundamenteel anders ontworpen dan een high-end AI-werkstation. In deze uitgebreide gids bespreken we precies wat er mogelijk is, waar de harde grenzen van de hardware liggen en hoe je via Docker zelf aan de slag kunt met het hosten van een taalmodel op je eigen Synology NAS.

Waarom zou je een LLM op een NAS draaien?

Er zijn verschillende dwingende redenen om een taalmodel lokaal te hosten in plaats van een clouddienst te gebruiken. De belangrijkste drijfveer is zonder twijfel data-soevereiniteit en privacy. Wanneer je een document laat samenvatten door een publieke clouddienst, verlaat deze data jouw netwerk. Dit is vaak ongewenst of zelfs verboden bij het verwerken van gevoelige persoonsgegevens, financiële administratie of interne bedrijfsdocumenten.

Daarnaast speelt het kostenaspect een rol. Commerciële API's rekenen kosten per gegenereerd of gelezen token. Bij frequent gebruik kan dit snel oplopen. Een lokaal model, draaiend op hardware die je toch al bezit en die toch al 24 uur per dag aan staat, heeft geen variabele abonnementskosten. Voor een fundamenteel begrip van de concepten achter deze taalmodellen, de architectuur, en hoe factoren zoals parameters invloed hebben, raden we aan om eerst de theoretische introducties te lezen op leren.llmnet.nl.

Een NAS is ontworpen als een robuuste, altijd beschikbare server. Door hier een model op te hosten, creëer je een gecentraliseerd "AI-brein" voor je hele thuisnetwerk. Ieder apparaat binnen je netwerk—of het nu je laptop, smartphone of tablet is—kan via een webinterface of lokale API communiceren met dit centraal gehoste model.

De harde realiteit van de hardware: CPU versus GPU

De grootste uitdaging bij het draaien van een LLM op een NAS ligt in de architectuur van de hardware. Moderne AI-modellen zijn geoptimaliseerd voor parallelle verwerking. Grafische kaarten (GPU's) met hun duizenden rekenkernen en extreem snel videogeheugen (VRAM) zijn hier heer en meester in. Een standaard Synology NAS, zoals de populaire DS920+, DS923+ of DS1522+, bezit echter geen toegewijde GPU. Ze zijn uitgerust met zuinige processors, zoals de Intel Celeron-reeks (bijvoorbeeld de J4125) of AMD Ryzen embedded chips (zoals de V1500B of R1600).

Dit betekent dat alle berekeningen voor het genereren van tekst (de inference) uitsluitend via de Central Processing Unit (CPU) moeten verlopen. Enkele jaren geleden was dit nagenoeg onmogelijk, maar dankzij softwareprojecten zoals llama.cpp is het tegenwoordig zeer goed mogelijk om modellen efficiënt op een CPU te draaien. Het blijft echter aanzienlijk trager dan GPU-acceleratie.

Werkgeheugen (RAM): De absolute bottleneck

Omdat je NAS geen videogeheugen heeft, moet het volledige taalmodel in het reguliere werkgeheugen (RAM) geladen worden tijdens het genereren van tekst. Dit is direct de grootste beperking voor Synology-gebruikers. Veel Plus-modellen worden standaard geleverd met slechts 2 GB of 4 GB RAM. Dat is ruimschoots voldoende voor bestandsdeling en lichte Docker-containers, maar volstrekt ontoereikend voor een LLM.

Voordat je aan dit project begint, is een RAM-upgrade vrijwel onvermijdelijk. Hoewel Synology vaak conservatieve maximale RAM-specificaties opgeeft (zoals een maximum van 8 GB of 32 GB), is het in de praktijk vaak mogelijk om (onofficiële) modules te plaatsen waardoor je 16 GB, 32 GB of soms zelfs 64 GB werkgeheugen tot je beschikking hebt. Controleer altijd of andere gebruikers met jouw specifieke NAS-model succesvolle upgrades hebben uitgevoerd.

Hoeveel RAM heb je precies nodig? Een handige vuistregel, geen meting, is dat je per miljard parameters in een gequantiseerd model (4-bit) ongeveer 0,7 GB aan vrij werkgeheugen nodig hebt, plus een marge van minimaal 2 tot 3 GB voor je besturingssysteem, de context window en andere NAS-processen.

Modelgrootte (Parameters) Geschat benodigd vrij RAM (Vuistregel) Voorbeeld van een model
Kleiner dan 2 Miljard (2B) ~3 GB tot 4 GB vrij Qwen 1.5 (1.8B)
Rond de 4 Miljard (4B) ~5 GB tot 6 GB vrij Phi-3 Mini (3.8B)
Rond de 7 tot 8 Miljard (7B/8B) ~8 GB tot 10 GB vrij Llama 3 (8B), Mistral (7B)
Grote modellen (70B+) Meer dan 45 GB vrij (Onrealistisch voor NAS) Llama 3 (70B)

Quantisatie: De techniek die het mogelijk maakt

Je hebt in de bovenstaande tabel wellicht de term "gequantiseerd" of "4-bit" opgemerkt. Als je een model in zijn originele, ongecomprimeerde vorm (vaak 16-bit precisie) zou downloaden, is het veel te groot voor het RAM-geheugen van een NAS en is de geheugenbandbreedte ontoereikend. Om dit op te lossen, gebruiken we quantisatie. Dit is een techniek waarbij de precisie van de interne gewichten van het model wordt gereduceerd van complexe kommagetallen (float16) naar eenvoudigere gehele getallen (zoals 4-bit integers).

Het meest populaire formaat voor CPU-inference is GGUF (vroeger GGML). Door een GGUF-model met Q4 (4-bit) quantisatie te gebruiken, halveer je ruwweg de benodigde hoeveelheid RAM en verhoog je de generatiesnelheid aanzienlijk, terwijl het verlies in intelligentie en tekstkwaliteit in de praktijk verrassend minimaal is.

Verwachtingen en prestaties in de praktijk

Als je besluit een LLM op je Synology NAS te installeren, is verwachtingsmanagement cruciaal. Je zult niet de bliksemsnelle real-time reacties ervaren die je gewend bent van de betaalde clouddiensten. De snelheid van tekstgeneratie wordt uitgedrukt in tokens per seconde (t/s), waarbij één token ongeveer overeenkomt met driekwart woord.

Als grove schatting kun je bij een courante Synology met een AMD Ryzen V1500B of R1600 processor uitgaan van ongeveer 2 tot 5 tokens per seconde wanneer je een 7B- of 8B-model draait. Dit betekent dat je de woorden in een kalm, lezend tempo op je scherm ziet verschijnen. Voor chat-toepassingen waarbij je op een antwoord wacht, vereist dit wat geduld. Voor asynchrone taken op de achtergrond—zoals het scannen en samenvatten van inkomende e-mails of het extraheren van data uit interne documenten—is deze snelheid echter ruim voldoende.

Stap-voor-stap: Hoe installeer je een LLM via Docker?

De veiligste en meest overzichtelijke manier om een taalmodel op je Synology NAS te draaien, is door gebruik te maken van Docker (in DSM 7.2 en nieuwer heet dit Container Manager). We gebruiken hiervoor de software Ollama, een prachtig project dat de complexiteit van het draaien van lokale modellen volledig wegpakt achter een simpele API en command-line interface.

Stap 1: Container Manager voorbereiden

Zorg dat de applicatie Container Manager is geïnstalleerd via het Package Center van je NAS. Open File Station en navigeer naar de gedeelde map docker (deze wordt standaard aangemaakt bij de installatie van Container Manager). Maak binnen deze map een nieuwe submap aan genaamd ollama. Dit is belangrijk omdat we hier de modelbestanden gaan opslaan. Als je dit niet doet, ben je alle gedownloade modellen kwijt zodra je de NAS of de container herstart.

Stap 2: Ollama installeren

Je kunt Ollama installeren via de grafische interface van Container Manager, maar het is vaak sneller en nauwkeuriger om dit via een Docker Compose script (of Project in Container Manager) te doen. Maak een nieuw project aan en gebruik de volgende configuratie:

version: '3.8'
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - /volume1/docker/ollama:/root/.ollama

Let op dat je het pad /volume1/docker/ollama mogelijk moet aanpassen als jouw docker-map zich op een ander volume bevindt (bijvoorbeeld /volume2/). Start het project. De NAS zal nu de benodigde bestanden downloaden en Ollama opstarten. Vanaf dat moment luistert de dienst op poort 11434.

Stap 3: Een model downloaden

Nu Ollama draait, is het in feite nog een lege huls; we moeten nog een specifiek taalmodel inladen. Open een SSH-verbinding naar je NAS (hiervoor moet SSH ingeschakeld zijn in het Configuratiescherm). Zodra je bent ingelogd, open je de terminal van je draaiende Ollama container met het volgende commando:

sudo docker exec -it ollama bash

Vervolgens kun je een model naar keuze starten. Voor NAS-systemen raden we sterk aan om te beginnen met een efficiënt, kleiner model zoals Phi-3 of Qwen. Meer informatie over de mogelijkheden van specifieke lichtgewicht architecturen vind je in ons overzicht van open-source modellen. Typ in de bash-terminal:

ollama run phi3

Ollama zal nu automatisch de juiste GGUF-bestanden voor Phi-3 downloaden (dit kan even duren, afhankelijk van je internetverbinding). Zodra de download is afgerond, krijg je een prompt (>>>) te zien en kun je je eerste bericht typen. Gefeliciteerd, je communiceert nu rechtstreeks met een neuraal netwerk dat volledig op je eigen NAS draait!

Stap 4: Een grafische interface toevoegen

Commando-regels zijn leuk voor tests, maar voor dagelijks gebruik wil je een grafische interface die lijkt op ChatGPT. De meest populaire keuze hiervoor is Open-WebUI. Dit is een aparte Docker container die je kunt koppelen aan je draaiende Ollama installatie. Je kunt deze toevoegen aan je bestaande Compose-bestand, of als los project draaien. In de instellingen van Open-WebUI geef je vervolgens het lokale IP-adres van je NAS op (inclusief poort 11434) zodat de webinterface kan praten met de Ollama API-backend.

Conclusie

Het antwoord op de vraag of je een volwaardige LLM lokaal op een Synology NAS kunt draaien, is een volmondig 'ja', maar met enkele duidelijke kanttekeningen. Zonder een krachtige GPU zul je concessies moeten doen op het gebied van snelheid en de grootte van het model. Verwacht geen real-time responstijden van gigantische 70B-modellen, maar geniet in plaats daarvan van de privacy, soevereiniteit en het leerzame proces van het zelf hosten van uiterst capabele, gequantiseerde 4B tot 8B modellen. Met de juiste RAM-upgrade en een correct geconfigureerde Docker-omgeving tover je een bescheiden opslagserver succesvol om tot een lokaal, privaat AI-laboratorium.