GLM-4.7 lokaal draaien met llama.cpp: een high-performance gids
llama.cpp instellen om het GLM-4.7-model op een enkele NVIDIA H100 80GB GPU te draaien, tot 20 tokens per seconde via GPU-offloading, Flash Attention, geoptimaliseerde contextgrootte, efficiënte batching en afgestemde CPU-threading.
GLM-4.7 is je nieuwe codepartner, ontworpen om beter te presteren in echte ontwikkelworkflows. In vergelijking met GLM-4.6 laat het duidelijke winst zien bij meertalig en agentisch coderen, terminaltaken en toolgebruik, met sterke resultaten op SWE-bench, SWE-bench Multilingual en Terminal Bench 2.0. Het ondersteunt ook denken vóór actie, waardoor het betrouwbaarder is voor complexe taken in moderne agentframeworks.
In deze tutorial gaan we direct aan de slag met het opzetten van een Runpod-omgeving, installeren we alle vereiste dependencies en klonen we llama.cpp met volledige CUDA-ondersteuning. Vervolgens downloaden we het GLM-4.7 2-bit model van Hugging Face, draaien het via zowel de CLI- als servermodus en testen tot slot de draaiende server met de OpenAI SDK.
Bekijk ook onze gids voor het lokaal draaien van GLM 4.7 Flash.
Systeemeisen en hardwarevereisten voor GLM-4.7
Controleer vóór je GLM-4.7 lokaal draait of je systeem aan de onderstaande eisen voldoet.
NVIDIA GPU en drivers
Een NVIDIA GPU is vereist voor bruikbare performance.
Installeer de nieuwste NVIDIA-drivers en verifieer de installatie met:
Als dit commando werkt en je GPU toont, is de driverinstallatie correct.
CUDA-ondersteuning
CUDA is vereist voor GPU-versnelling bij het draaien van GLM-4.7. Als je llama.cpp vanuit bron bouwt, moet CUDA tijdens het builden correct worden gedetecteerd.
Bij gebruik van vooraf gebouwde CUDA-ingeschakelde binaries moet er al een werkende CUDA-runtime op het systeem zijn geïnstalleerd. Zonder CUDA-ondersteuning valt GLM-4.7 terug op CPU-uitvoering, wat onpraktisch traag is voor echt gebruik.
Geheugenvereisten (zeer belangrijk)
GLM-4.7 is extreem groot, zelfs wanneer gequantiseerd. Of het model überhaupt draait en hoe snel, hangt af van je gecombineerde geheugen, niet alleen van de GPU-VRAM.
Denk in termen van GPU-VRAM + systeem-RAM samen.
2-bit Dynamic Quant (UD-Q2_K_XL)
Gebruikt ongeveer 135 GB schijfruimte
Kan draaien op één 24 GB GPU met circa 128 GB systeem-RAM
Leunt op MoE-lagen die naar RAM worden uitgeladen
Goede balans tussen kwaliteit en haalbaarheid
1-bit Quant (UD-TQ1)
Kleiner en sneller dan 2-bit
Werkt native met Ollama
Laagste geheugendruk
Merkbare kwaliteitsreductie
4-bit quantisaties
Vereisen minimaal één 40 GB GPU
MoE-lagen moeten nog steeds naar RAM worden uitgeladen
Reken op ongeveer 5 tokens per seconde met circa 165 GB systeem-RAM
Aanbevolen is 205 GB gecombineerde VRAM + RAM voor stabiele performance en langere contexten
Belangrijkste inzicht
Voor GLM-4.7 is alleen de grootte van een H100-GPU niet genoeg. Stabiele en snelle inferentie hangt af van het totale beschikbare geheugen, dus de combinatie van GPU-VRAM en systeem-RAM.
Een GPU-omgeving instellen op RunPod
Voor deze tutorial gebruiken we RunPod omdat het snel op te zetten is en een breed scala aan GPU’s on demand aanbiedt.
Begin met het aanmaken van een nieuwe pod. Selecteer de nieuwste PyTorch-image en klik daarna op Edit bij de templatesettings. Verhoog de volumeschijf naar 200 GB, aangezien het GLM-4.7-model zeer groot is, zelfs in 2-bit gequantiseerde vorm.
Stel vervolgens de vereiste poorten bloot. Behoud de standaardpoort 8080 voor JupyterLab en voeg een extra poort toe die later gebruikt wordt door de llama.cpp-server.
Na de configuratie zouden je prijs- en podsamenvatting duidelijk moeten tonen dat de standaardtemplate is overschreven met een groter volume.
Zodra de pod is gestart, klik je op de link Jupyter Notebook om JupyterLab te openen. Maak een nieuw notebook en voer de volgende setupcode uit.
import os
WORKDIR ="/workspace"
LLAMA_DIR =f"{WORKDIR}/llama.cpp"
MODEL_DIR =f"{WORKDIR}/models/unsloth/GLM-4.7-GGUF"
os.makedirs(MODEL_DIR, exist_ok=True)# Put Hugging Face cache on /workspace (big speed win on RunPod)
os.environ["HF_HOME"]=f"{WORKDIR}/.cache/huggingface"
os.environ["HUGGINGFACE_HUB_CACHE"]=f"{WORKDIR}/.cache/huggingface/hub"
os.environ["HF_HUB_CACHE"]=f"{WORKDIR}/.cache/huggingface/hub"
os.environ["HF_HUB_DISABLE_SYMLINKS_WARNING"]="1"# Enable HF Xet high performance (Xet backend)
os.environ["HF_XET_HIGH_PERFORMANCE"]="1"print("WORKDIR:", WORKDIR)print("LLAMA_DIR:", LLAMA_DIR)print("MODEL_DIR:", MODEL_DIR)print("HF_HOME:", os.environ["HF_HOME"])print("HF_HUB_CACHE:", os.environ["HF_HUB_CACHE"])print("HF_XET_HIGH_PERFORMANCE:", os.environ["HF_XET_HIGH_PERFORMANCE"])Mogelijk gemaakt door
Deze code zal het volgende doen:
Stelt /workspace in als de hoofdwerkmap op RunPod.
Definieert waar llama.cpp wordt gekloond en gebouwd.
Definieert waar de GLM-4.7 GGUF-modellen worden opgeslagen.
Maakt de modelmap aan als deze nog niet bestaat.
Verplaatst de Hugging Face-cache naar /workspace voor snellere downloads en meer schijfruimte.
Schakelt Hugging Face symlink-waarschuwingen uit in containeromgevingen.
Activeert de Hugging Face Xet high-performance backend voor het downloaden van grote bestanden.
Print alle paden en omgevingsvariabelen om de setup te verifiëren.
Je zou output moeten zien die hierop lijkt:
WORKDIR: /workspace
LLAMA_DIR: /workspace/llama.cpp
MODEL_DIR: /workspace/models/unsloth/GLM-4.7-GGUF
HF_HOME: /workspace/.cache/huggingface
HF_HUB_CACHE: /workspace/.cache/huggingface/hub
HF_XET_HIGH_PERFORMANCE: 1Mogelijk gemaakt door
Controleer daarna of de NVIDIA-drivers correct zijn geïnstalleerd en of de GPU zichtbaar is.
Je zou een H100 GPU met 80 GB beschikbare VRAM moeten zien, wat bevestigt dat de omgeving klaar is voor GPU-versnelling.
Installeer tot slot de systeemdependencies die nodig zijn om llama.cpp vanuit bron te bouwen.
%%capture
!apt-get update -y!apt-get install-y build-essential cmake curl libcurl4-openssl-dev git pciutilsMogelijk gemaakt door
Opmerking: We hebben %%capture gebruikt om uitgebreide installatielogs in Jupyter te verbergen terwijl de commando’s wel worden uitgevoerd.
llama.cpp installeren met CUDA-ondersteuning
In deze stap klonen en bouwen we llama.cpp vanuit bron met CUDA ingeschakeld, om optimale GPU-prestaties te garanderen.
Kloon eerst de officiële repository naar de werkmap.
!git clone https://github.com/ggml-org/llama.cpp /workspace/llama.cppMogelijk gemaakt door
Configureer vervolgens de build met CUDA-ondersteuning ingeschakeld en gedeelde libraries uitgeschakeld.
%%capture
!cmake /workspace/llama.cpp -B /workspace/llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ONMogelijk gemaakt door
Bouw daarna de vereiste binaries in release-modus.
%%capture
!cmake --build /workspace/llama.cpp/build --config Release -j --clean-first --target llama-cli llama-serverMogelijk gemaakt door
Kopieer na het bouwen de binaries naar de hoofdmap en verifieer de output.
%%capture
!cp /workspace/llama.cpp/build/bin/llama-* /workspace/llama.cpp/
!ls -la /workspace/llama.cpp |sed-n'1,60p'Mogelijk gemaakt door
Op dit punt is llama.cpp klaar met volledige CUDA-ondersteuning en kan het worden gebruikt om GLM-4.7 via de CLI of als server te draaien.
Het GLM 4.7-model downloaden met Xet-ondersteuning
In deze stap installeren we de Hugging Face-bibliotheken met Xet- en HF Transfer-ondersteuning om downloads van grote modellen aanzienlijk te versnellen. Xet biedt veel snellere performance dan Git LFS, wat essentieel is om GLM-4.7 efficiënt te downloaden.
Installeer eerst de vereiste Hugging Face-dependencies en schakel HF Transfer in.
!pip -qinstall-U"huggingface_hub[hf_xet]" hf-xet
!pip -qinstall-U hf_transferMogelijk gemaakt door
Schakel HF Transfer in door de omgevingsvariabele te zetten.
Start na het installeren van deze pakketten de Jupyter-kernel opnieuw op om te zorgen dat de nieuwe instellingen effect hebben.
Download vervolgens het GLM-4.7 GGUF-model van Hugging Face met snapshot_download. We beperken de download tot de aanbevolen dynamische 2-bit-quantisatie om opslag- en geheugengebruik te verminderen.
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="unsloth/GLM-4.7-GGUF",
local_dir=MODEL_DIR,
allow_patterns=["*UD-Q2_K_XL*"],# recommended dynamic 2-bit)print("Downloaded into:", MODEL_DIR)Mogelijk gemaakt door
Met Xet en HF Transfer ingeschakeld kunnen downloadsnelheden oplopen tot 726 MB per seconde en later opschalen naar 1,2 GB per seconde. Zonder deze setup liggen downloadsnelheden meestal rond 50 MB per seconde, waardoor het bijna een hele dag kan duren om een model van deze omvang te downloaden.
Na voltooiing van de download is het GLM-4.7-model lokaal beschikbaar in de modelmap van de werkruimte, klaar voor inferentie met llama.cpp.
GLM 4.7 draaien in interactieve modus
We gaan GLM-4.7 nu in interactieve modus draaien met de llama.cpp CLI.
Open om te beginnen een terminal in JupyterLab. Klik op de Plus (+)-knop in JupyterLab, scrol naar beneden en selecteer Terminal. Dit opent een nieuwe shellsessie binnen de RunPod-omgeving.
Voer in de terminal het volgende commando uit om de interactieve CLI te starten.
/workspace/llama.cpp/llama-cli \--model"/workspace/models/unsloth/GLM-4.7-GGUF/UD-Q2_K_XL/GLM-4.7-UD-Q2_K_XL-00001-of-00003.gguf"\--jinja\--threads-1\
--ctx-size 16384\--temp1.0\
--top-p 0.95\--seed3407\--fit onMogelijk gemaakt door
Dit commando laadt het dynamische 2-bit-model van GLM-4.7 en start een interactieve chatsessie. De --fit on-vlag laat llama.cpp automatisch zoveel mogelijk lagen en KV-cacheblokken naar de GPU offloaden, terwijl de resterende componenten veilig naar systeem-RAM worden weggeschreven. Dit neemt de noodzaak voor handmatige laagtuning weg en helpt out-of-memory-fouten te voorkomen.
Wanneer het model klaar is met laden, zie je de llama.cpp-banner gevolgd door een interactieve prompt. Je kunt nu een bericht typen, zoals een simpele begroeting, en het model begint met het genereren van antwoorden.
Aan het einde van elk antwoord print llama.cpp prestatistatistieken, inclusief tokensnelheid. In dit stadium draait het model met ongeveer 2,2 tokens per seconde, wat bevestigt dat het model correct werkt op een enkele H100 GPU.
In de volgende stappen passen we extra optimalisaties toe om de doorvoer te verhogen en dichter bij het doel van 20 tokens per seconde te komen.
De GLM 4.7-inferentieserver draaien
In deze stap draaien we GLM-4.7 als een persistente inferentieserver met llama.cpp, geoptimaliseerd voor een enkele H100 PCIe GPU. Deze instellingen zijn afgestemd om doorvoer, stabiliteit en geheugenefficiëntie te verbeteren bij het afhandelen van requests.
Om stabiele en efficiënte performance te bereiken, gebruiken we de volgende optimalisaties:
GPU-offloading (--fit on): Offloadt automatisch zoveel mogelijk van het model en de KV-cache naar GPU-geheugen, en schrijft de rest veilig weg naar systeem-RAM. Dit voorkomt handmatige laagtuning en out-of-memory-fouten.
Flash Attention (--flash-attn auto): Schakelt geoptimaliseerde attention-kernels in op ondersteunde GPU’s zoals de H100, wat de tokensnelheid aanzienlijk verbetert en geheugenoverhead verlaagt.
Contextafstemming (--ctx-size 8192): Grote contextvensters vertragen decodering na verloop van tijd. Door de contextgrootte van 16k naar 8k te verlagen, krijg je voor de meeste workloads een consistentere tokensnelheid.
Batching (--batch-size, --ubatch-size): Verbetert GPU-benutting en totale doorvoer door tokens in grotere, efficiëntere batches te verwerken.
CPU-threadbeheer (--threads 32): Voorkomt oversubscriben van de CPU en vermindert scheduling-overhead in cloudomgevingen zoals RunPod.
Voer het volgende commando uit in de terminal om de GLM-4.7-inferentieserver te starten.
/workspace/llama.cpp/llama-server \--model"/workspace/models/unsloth/GLM-4.7-GGUF/UD-Q2_K_XL/GLM-4.7-UD-Q2_K_XL-00001-of-00003.gguf"\--alias"GLM-4.7"\--threads32\--host0.0.0.0 \
--ctx-size 8192\--temp1.0\
--top-p 0.95\--port8080\--fit on \--prio3\--jinja\
--flash-attn auto \
--batch-size 1024\
--ubatch-size 256Mogelijk gemaakt door
Zodra het model geladen is, luistert de server op poort 8080 en is hij klaar om inferentieverzoeken te accepteren. Op dit punt draait GLM-4.7 als een high-performance inferentieservice op één H100 GPU.
In de volgende stap testen we de server met de ingebouwde web-UI die bij de llama.cpp-server hoort.
GLM 4.7 testen met de llama.cpp web-UI
Om de draaiende inferentieserver te testen, open je je RunPod-dashboard en zoek je de blootgestelde HTTP-service op poort 8080. Klik op de link; hiermee start je de llama.cpp web-UI in je browser.
De llama.cpp web-UI lijkt op ChatGPT. Je kunt prompts invoeren, bestanden toevoegen, instellingen aanpassen en beschikbare modellen kiezen vanuit de interface.
Na het selecteren van het GLM-4.7-model zie je gedetailleerde informatie over het geladen model, waaronder bestandspaden, contextgrootte, modelgrootte, aantal parameters, embeddingdimensies en andere runtime-details. Dit bevestigt dat het juiste model en de juiste configuratie actief zijn.
Voer nu je eerste prompt in. Binnen een seconde begint het model een antwoord te genereren, direct in de web-UI.
Met de eerder toegepaste geoptimaliseerde serverinstellingen behaalt het model rond de 19 tokens per seconde, wat bevestigt dat de inferentieketen efficiënt werkt. De antwoorden zijn accuraat en coherent.
Je kunt daarna een vervolgvraag stellen, bijvoorbeeld een algemene kennisvraag. In tests haalt GLM-4.7 consequent rond de 20 tokens per seconde, inclusief zowel redeneer- als antwoordtokens, wat stabiele hoge performance op een enkele H100 GPU aantoont.
GLM 4.7 testen met OpenAI Python SDK
In deze sectie testen we de draaiende llama.cpp-inferentieserver met de OpenAI-compatibele Python SDK. Dit bevestigt dat de server correct werkt voor programmatische toegang en kan worden geïntegreerd in echte applicaties.
Ga eerst terug naar het Jupyter Notebook. Zorg dat het llama-server-proces nog draait in de terminal en stop of herstart het niet.
Om te verifiëren dat de server actief is en luistert op poort 8080, voer je het volgende commando uit:
Maak nu een OpenAI-client die verwijst naar de lokale llama.cpp-server. De waarde voor de API-sleutel is niet vereist, maar moet voor compatibiliteit wel worden meegegeven.
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8080/v1",
api_key="sk-no-key-required",)Mogelijk gemaakt door
Stuur een eenvoudige chatcompletionaanvraag om meertalige capaciteiten te testen.
resp = client.chat.completions.create(
model="GLM-4.7",
messages=[{"role":"user","content":"Say hello in Urdu and explain what you said."}],
temperature=0.7,)print(resp.choices[0].message.content)Mogelijk gemaakt door
Het model reageert in het Urdu en geeft een duidelijke uitleg bij elk woord, wat zowel meertalige begrip als redeneervermogen aantoont.
Test vervolgens streaminginferentie, wat cruciaal is voor realtime-applicaties zoals chatinterfaces.
from openai import OpenAI
client = OpenAI(
base_url="http://127.0.0.1:8080/v1",
api_key="sk-no-key-required",)
stream = client.chat.completions.create(
model="GLM-4.7",
messages=[{"role":"user","content":"What makes ChatGPT so successful and popular, given that it's "just" a chatbot?"}],
temperature=0.7,
stream=True,)for event in stream:
choice = event.choices[0]ifgetattr(choice,"delta",None)andgetattr(choice.delta,"content",None):
text = choice.delta.content
print(text, end="", flush=True)
full_text.append(text)Mogelijk gemaakt door
De respons streamt soepel, token voor token, wat bevestigt dat llama.cpp-streaming betrouwbaar werkt met GLM-4.7. Het gegenereerde antwoord is coherent, goed gestructureerd en accuraat, waardoor deze setup geschikt is voor workloads in productiestijl.
Op dit punt is GLM-4.7 volledig operationeel via zowel de web-UI als de OpenAI-compatibele API, en draait het efficiënt op een enkele H100 GPU met geoptimaliseerde instellingen.
Tot slot
llama.cpp is de afgelopen maanden razendsnel volwassen geworden, tot het punt dat het tools als Ollama en andere lokale chatapplicaties volledig kan vervangen voor het draaien van large language models.
Het biedt een zeer configureerbare en snelle inferentie-engine, een terminalgebaseerde CLI voor interactief gebruik en een ingebouwde web-UI die sterk lijkt op de ChatGPT-ervaring.
Je krijgt ook fijnmazige controle over modelgedrag via runtime-flags en UI-instellingen, zodat je performance en kwaliteit kunt afstemmen op je hardware.
Een belangrijk inzicht is dat je geen enterprise-hardware nodig hebt om GLM-4.7 te draaien. Met voldoende systeem-RAM en een GPU zoals een RTX 3090 kan het 2-bit GLM-4.7-model lokaal draaien met --fit on en de juiste llama.cpp-optimalisaties.
Het llama.cpp-ecosysteem heeft een grote en actieve community, waardoor het makkelijk is om geoptimaliseerde configuraties te vinden en hulp te krijgen bij het tunen voor specifieke GPU’s of workloads.
In deze tutorial hebben we de RunPod-omgeving opgezet, llama.cpp met CUDA-ondersteuning gebouwd, het GLM-4.7-model met hogesnelheidsoverdracht via Hugging Face gedownload en het model in interactieve modus gedraaid. Daarna hebben we een geoptimaliseerde inferentieserver gestart, deze getest via de web-UI en hem programmatisch gevalideerd met de OpenAI-compatibele API.
Het resultaat is een volledig lokale, high-performance GLM-4.7-implementatie die sterke nauwkeurigheid en bijna realtime-inferentie levert op een enkele GPU. Deze setup is zeer geschikt voor experimenten, onderzoek en zelfs workloads in productiestijl waar controle, performance en transparantie belangrijk zijn.
GLM-4.7 FAQ’s
Wat is GLM-4.7?⌄
GLM-4.7 is een enorm, next-gen open-weights taalmodel dat specifiek is ontworpen als een codepartner en agentische redeneerder.Het beschikt over een Mixture of Experts (MoE)-architectuur die uitblinkt in realistische ontwikkelworkflows en zijn voorganger (GLM-4.6) overtreft in meertalig coderen, terminaltaken en complex toolgebruik.In tegenstelling tot standaard chatmodellen ondersteunt GLM-4.7 "denken vóór handelen", waardoor het zeer betrouwbaar is voor autonome taken in benchmarks zoals SWE-bench en Terminal Bench 2.0.
Wat zijn de minimale hardwarevereisten om GLM-4.7 lokaal te draaien?⌄
Het volledige GLM-4.7-model is enorm (355B parameters met 32B actief). Om de 2-bit gequantiseerde versie efficiënt te draaien, heb je een systeem nodig met minimaal 135GB gecombineerd geheugen (VRAM + systeem-RAM). Een enkele NVIDIA H100 (80GB) is voldoende voor verwerking, maar je moet aanzienlijk naar systeem-RAM offloaden. Voor ongequantiseerde FP16-prestaties heb je een cluster van meerdere H100- of A100-GPU’s nodig.
Kan ik GLM-4.7 gebruiken voor commerciële toepassingen?⌄
Ja, GLM-4.7 is een open-weights model dat is uitgebracht onder een permissieve licentie (vaak MIT of Apache 2.0, afhankelijk van de specifieke repository), wat commercieel gebruik, aanpassing en distributie toestaat. Dit maakt het een kosteneffectief alternatief voor proprietaire API’s zoals GPT-4 of Claude 3.5 Sonnet voor het bouwen van interne codeagents of datapijplijnen.
Waarom draait GLM-4.7 traag op mijn machine terwijl ik een GPU heb?⌄
Als je snelheden onder 5 tokens per seconde ziet, is je systeem waarschijnlijk te veel lagen aan het offloaden naar het CPU-RAM. Hoewel llama.cpp je toestaat modellen te draaien die groter zijn dan de VRAM van je GPU, vormt de gegevensoverdracht tussen CPU en GPU (via PCIe) een bottleneck. Probeer om de snelheid te verbeteren de --fit-offloadagressiviteit te verhogen of de contextwindowgrootte (--ctx-size) te verkleinen om VRAM vrij te maken voor modellagen.
Wat is het verschil tussen GLM-4.7 en GLM-4.7 Flash?⌄
GLM-4.7 is het volledige "frontier"-model met maximale redeneercapaciteit en vereist enorme hardware. GLM-4.7 Flash is een gedistilleerde, lichte versie die is ontworpen voor snelheid en lagere latency. Als je beperkte hardware hebt (zoals een enkele RTX 3090 of 4090 met 24GB VRAM), is GLM-4.7 Flash een betere keuze, omdat het volledig op de GPU kan draaien zonder de performance-penalty van CPU-offloading.
Als gecertificeerd data scientist haal ik met passie het maximale uit de nieuwste technologie om innovatieve machinelearning-toepassingen te bouwen. Met een sterke achtergrond in spraakherkenning, data-analyse en -rapportage, MLOps, conversationele AI en NLP heb ik mijn vaardigheden aangescherpt in het ontwikkelen van intelligente systemen die echt impact maken. Naast mijn technische expertise ben ik ook een sterke communicator met een talent om complexe concepten terug te brengen tot heldere, beknopte taal. Daardoor ben ik uitgegroeid tot een veelgelezen blogger over data science, waar ik mijn inzichten en ervaringen deel met een groeiende community van data-professionals. Op dit moment richt ik me op contentcreatie en redactie, waarbij ik met large language models werk aan krachtige en aansprekende content die zowel bedrijven als individuen helpt het beste uit hun data te halen.
Begin je reis met het ontwikkelen van AI-gestuurde applicaties met de OpenAI API. Leer over de functionaliteit achter populaire AI-toepassingen zoals ChatGPT.
GLM-4.7 is je nieuwe codepartner, ontworpen om beter te presteren in echte ontwikkelworkflows. In vergelijking met GLM-4.6 laat het duidelijke winst zien bij meertalig en agentisch coderen, terminaltaken en toolgebruik, met sterke resultaten op SWE-bench, SWE-bench Multilingual en Terminal Bench 2.0. Het ondersteunt ook denken vóór actie, waardoor het betrouwbaarder is voor complexe taken in moderne agentframeworks.
In deze tutorial gaan we direct aan de slag met het opzetten van een Runpod-omgeving, installeren we alle vereiste dependencies en klonen we llama.cpp met volledige CUDA-ondersteuning. Vervolgens downloaden we het GLM-4.7 2-bit model van Hugging Face, draaien het via zowel de CLI- als servermodus en testen tot slot de draaiende server met de OpenAI SDK.
Bekijk ook onze gids voor het lokaal draaien van GLM 4.7 Flash.
Systeemeisen en hardwarevereisten voor GLM-4.7
Controleer vóór je GLM-4.7 lokaal draait of je systeem aan de onderstaande eisen voldoet.
NVIDIA GPU en drivers
Een NVIDIA GPU is vereist voor bruikbare performance.
Installeer de nieuwste NVIDIA-drivers en verifieer de installatie met:
Als dit commando werkt en je GPU toont, is de driverinstallatie correct.
CUDA-ondersteuning
CUDA is vereist voor GPU-versnelling bij het draaien van GLM-4.7. Als je llama.cpp vanuit bron bouwt, moet CUDA tijdens het builden correct worden gedetecteerd.
Bij gebruik van vooraf gebouwde CUDA-ingeschakelde binaries moet er al een werkende CUDA-runtime op het systeem zijn geïnstalleerd. Zonder CUDA-ondersteuning valt GLM-4.7 terug op CPU-uitvoering, wat onpraktisch traag is voor echt gebruik.
Geheugenvereisten (zeer belangrijk)
GLM-4.7 is extreem groot, zelfs wanneer gequantiseerd. Of het model überhaupt draait en hoe snel, hangt af van je gecombineerde geheugen, niet alleen van de GPU-VRAM.
Denk in termen van GPU-VRAM + systeem-RAM samen.
2-bit Dynamic Quant (UD-Q2_K_XL)
1-bit Quant (UD-TQ1)
4-bit quantisaties
Belangrijkste inzicht
Voor GLM-4.7 is alleen de grootte van een H100-GPU niet genoeg. Stabiele en snelle inferentie hangt af van het totale beschikbare geheugen, dus de combinatie van GPU-VRAM en systeem-RAM.
Een GPU-omgeving instellen op RunPod
Voor deze tutorial gebruiken we RunPod omdat het snel op te zetten is en een breed scala aan GPU’s on demand aanbiedt.
Begin met het aanmaken van een nieuwe pod. Selecteer de nieuwste PyTorch-image en klik daarna op Edit bij de templatesettings. Verhoog de volumeschijf naar 200 GB, aangezien het GLM-4.7-model zeer groot is, zelfs in 2-bit gequantiseerde vorm.
Stel vervolgens de vereiste poorten bloot. Behoud de standaardpoort 8080 voor JupyterLab en voeg een extra poort toe die later gebruikt wordt door de llama.cpp-server.
Zodra de pod is gestart, klik je op de link Jupyter Notebook om JupyterLab te openen. Maak een nieuw notebook en voer de volgende setupcode uit.
Deze code zal het volgende doen:
/workspacein als de hoofdwerkmap op RunPod.llama.cppwordt gekloond en gebouwd./workspacevoor snellere downloads en meer schijfruimte.Je zou output moeten zien die hierop lijkt:
Controleer daarna of de NVIDIA-drivers correct zijn geïnstalleerd en of de GPU zichtbaar is.
Je zou een H100 GPU met 80 GB beschikbare VRAM moeten zien, wat bevestigt dat de omgeving klaar is voor GPU-versnelling.
Installeer tot slot de systeemdependencies die nodig zijn om llama.cpp vanuit bron te bouwen.
Opmerking: We hebben
%%capturegebruikt om uitgebreide installatielogs in Jupyter te verbergen terwijl de commando’s wel worden uitgevoerd.llama.cpp installeren met CUDA-ondersteuning
In deze stap klonen en bouwen we llama.cpp vanuit bron met CUDA ingeschakeld, om optimale GPU-prestaties te garanderen.
Kloon eerst de officiële repository naar de werkmap.
Configureer vervolgens de build met CUDA-ondersteuning ingeschakeld en gedeelde libraries uitgeschakeld.
Bouw daarna de vereiste binaries in release-modus.
Kopieer na het bouwen de binaries naar de hoofdmap en verifieer de output.
Op dit punt is llama.cpp klaar met volledige CUDA-ondersteuning en kan het worden gebruikt om GLM-4.7 via de CLI of als server te draaien.
Het GLM 4.7-model downloaden met Xet-ondersteuning
In deze stap installeren we de Hugging Face-bibliotheken met Xet- en HF Transfer-ondersteuning om downloads van grote modellen aanzienlijk te versnellen. Xet biedt veel snellere performance dan Git LFS, wat essentieel is om GLM-4.7 efficiënt te downloaden.
Installeer eerst de vereiste Hugging Face-dependencies en schakel HF Transfer in.
Schakel HF Transfer in door de omgevingsvariabele te zetten.
Start na het installeren van deze pakketten de Jupyter-kernel opnieuw op om te zorgen dat de nieuwe instellingen effect hebben.
Download vervolgens het GLM-4.7 GGUF-model van Hugging Face met
snapshot_download. We beperken de download tot de aanbevolen dynamische 2-bit-quantisatie om opslag- en geheugengebruik te verminderen.Met Xet en HF Transfer ingeschakeld kunnen downloadsnelheden oplopen tot 726 MB per seconde en later opschalen naar 1,2 GB per seconde. Zonder deze setup liggen downloadsnelheden meestal rond 50 MB per seconde, waardoor het bijna een hele dag kan duren om een model van deze omvang te downloaden.
Na voltooiing van de download is het GLM-4.7-model lokaal beschikbaar in de modelmap van de werkruimte, klaar voor inferentie met llama.cpp.
GLM 4.7 draaien in interactieve modus
We gaan GLM-4.7 nu in interactieve modus draaien met de llama.cpp CLI.
Open om te beginnen een terminal in JupyterLab. Klik op de Plus (+)-knop in JupyterLab, scrol naar beneden en selecteer Terminal. Dit opent een nieuwe shellsessie binnen de RunPod-omgeving.
Voer in de terminal het volgende commando uit om de interactieve CLI te starten.
Dit commando laadt het dynamische 2-bit-model van GLM-4.7 en start een interactieve chatsessie. De
--fit on-vlag laat llama.cpp automatisch zoveel mogelijk lagen en KV-cacheblokken naar de GPU offloaden, terwijl de resterende componenten veilig naar systeem-RAM worden weggeschreven. Dit neemt de noodzaak voor handmatige laagtuning weg en helpt out-of-memory-fouten te voorkomen.Wanneer het model klaar is met laden, zie je de llama.cpp-banner gevolgd door een interactieve prompt. Je kunt nu een bericht typen, zoals een simpele begroeting, en het model begint met het genereren van antwoorden.
Aan het einde van elk antwoord print llama.cpp prestatistatistieken, inclusief tokensnelheid. In dit stadium draait het model met ongeveer 2,2 tokens per seconde, wat bevestigt dat het model correct werkt op een enkele H100 GPU.
In de volgende stappen passen we extra optimalisaties toe om de doorvoer te verhogen en dichter bij het doel van 20 tokens per seconde te komen.
De GLM 4.7-inferentieserver draaien
In deze stap draaien we GLM-4.7 als een persistente inferentieserver met llama.cpp, geoptimaliseerd voor een enkele H100 PCIe GPU. Deze instellingen zijn afgestemd om doorvoer, stabiliteit en geheugenefficiëntie te verbeteren bij het afhandelen van requests.
Om stabiele en efficiënte performance te bereiken, gebruiken we de volgende optimalisaties:
--fit on): Offloadt automatisch zoveel mogelijk van het model en de KV-cache naar GPU-geheugen, en schrijft de rest veilig weg naar systeem-RAM. Dit voorkomt handmatige laagtuning en out-of-memory-fouten.--flash-attn auto): Schakelt geoptimaliseerde attention-kernels in op ondersteunde GPU’s zoals de H100, wat de tokensnelheid aanzienlijk verbetert en geheugenoverhead verlaagt.--ctx-size 8192): Grote contextvensters vertragen decodering na verloop van tijd. Door de contextgrootte van 16k naar 8k te verlagen, krijg je voor de meeste workloads een consistentere tokensnelheid.--batch-size,--ubatch-size): Verbetert GPU-benutting en totale doorvoer door tokens in grotere, efficiëntere batches te verwerken.--threads 32): Voorkomt oversubscriben van de CPU en vermindert scheduling-overhead in cloudomgevingen zoals RunPod.Voer het volgende commando uit in de terminal om de GLM-4.7-inferentieserver te starten.
Zodra het model geladen is, luistert de server op poort 8080 en is hij klaar om inferentieverzoeken te accepteren. Op dit punt draait GLM-4.7 als een high-performance inferentieservice op één H100 GPU.
In de volgende stap testen we de server met de ingebouwde web-UI die bij de llama.cpp-server hoort.
GLM 4.7 testen met de llama.cpp web-UI
Om de draaiende inferentieserver te testen, open je je RunPod-dashboard en zoek je de blootgestelde HTTP-service op poort 8080. Klik op de link; hiermee start je de llama.cpp web-UI in je browser.
De llama.cpp web-UI lijkt op ChatGPT. Je kunt prompts invoeren, bestanden toevoegen, instellingen aanpassen en beschikbare modellen kiezen vanuit de interface.
Na het selecteren van het GLM-4.7-model zie je gedetailleerde informatie over het geladen model, waaronder bestandspaden, contextgrootte, modelgrootte, aantal parameters, embeddingdimensies en andere runtime-details. Dit bevestigt dat het juiste model en de juiste configuratie actief zijn.
Voer nu je eerste prompt in. Binnen een seconde begint het model een antwoord te genereren, direct in de web-UI.
Met de eerder toegepaste geoptimaliseerde serverinstellingen behaalt het model rond de 19 tokens per seconde, wat bevestigt dat de inferentieketen efficiënt werkt. De antwoorden zijn accuraat en coherent.
Je kunt daarna een vervolgvraag stellen, bijvoorbeeld een algemene kennisvraag. In tests haalt GLM-4.7 consequent rond de 20 tokens per seconde, inclusief zowel redeneer- als antwoordtokens, wat stabiele hoge performance op een enkele H100 GPU aantoont.
GLM 4.7 testen met OpenAI Python SDK
In deze sectie testen we de draaiende llama.cpp-inferentieserver met de OpenAI-compatibele Python SDK. Dit bevestigt dat de server correct werkt voor programmatische toegang en kan worden geïntegreerd in echte applicaties.
Ga eerst terug naar het Jupyter Notebook. Zorg dat het llama-server-proces nog draait in de terminal en stop of herstart het niet.
Om te verifiëren dat de server actief is en luistert op poort 8080, voer je het volgende commando uit:
Je zou output moeten zien zoals dit, wat bevestigt dat llama-server luistert:
Installeer vervolgens de OpenAI Python SDK, die we gebruiken om verzoeken naar de lokale server te sturen.
Maak nu een OpenAI-client die verwijst naar de lokale llama.cpp-server. De waarde voor de API-sleutel is niet vereist, maar moet voor compatibiliteit wel worden meegegeven.
Stuur een eenvoudige chatcompletionaanvraag om meertalige capaciteiten te testen.
Het model reageert in het Urdu en geeft een duidelijke uitleg bij elk woord, wat zowel meertalige begrip als redeneervermogen aantoont.
Test vervolgens streaminginferentie, wat cruciaal is voor realtime-applicaties zoals chatinterfaces.
De respons streamt soepel, token voor token, wat bevestigt dat llama.cpp-streaming betrouwbaar werkt met GLM-4.7. Het gegenereerde antwoord is coherent, goed gestructureerd en accuraat, waardoor deze setup geschikt is voor workloads in productiestijl.
Op dit punt is GLM-4.7 volledig operationeel via zowel de web-UI als de OpenAI-compatibele API, en draait het efficiënt op een enkele H100 GPU met geoptimaliseerde instellingen.
Tot slot
llama.cpp is de afgelopen maanden razendsnel volwassen geworden, tot het punt dat het tools als Ollama en andere lokale chatapplicaties volledig kan vervangen voor het draaien van large language models.
Het biedt een zeer configureerbare en snelle inferentie-engine, een terminalgebaseerde CLI voor interactief gebruik en een ingebouwde web-UI die sterk lijkt op de ChatGPT-ervaring.
Je krijgt ook fijnmazige controle over modelgedrag via runtime-flags en UI-instellingen, zodat je performance en kwaliteit kunt afstemmen op je hardware.
Een belangrijk inzicht is dat je geen enterprise-hardware nodig hebt om GLM-4.7 te draaien. Met voldoende systeem-RAM en een GPU zoals een RTX 3090 kan het 2-bit GLM-4.7-model lokaal draaien met
--fit onen de juiste llama.cpp-optimalisaties.Het llama.cpp-ecosysteem heeft een grote en actieve community, waardoor het makkelijk is om geoptimaliseerde configuraties te vinden en hulp te krijgen bij het tunen voor specifieke GPU’s of workloads.
In deze tutorial hebben we de RunPod-omgeving opgezet, llama.cpp met CUDA-ondersteuning gebouwd, het GLM-4.7-model met hogesnelheidsoverdracht via Hugging Face gedownload en het model in interactieve modus gedraaid. Daarna hebben we een geoptimaliseerde inferentieserver gestart, deze getest via de web-UI en hem programmatisch gevalideerd met de OpenAI-compatibele API.
Het resultaat is een volledig lokale, high-performance GLM-4.7-implementatie die sterke nauwkeurigheid en bijna realtime-inferentie levert op een enkele GPU. Deze setup is zeer geschikt voor experimenten, onderzoek en zelfs workloads in productiestijl waar controle, performance en transparantie belangrijk zijn.