Dit achtergrond artikel is onderdeel van de longread over het finetunen van modellen.
<Terug naar overzicht Artikelen:
🔧 Deel 2: Praktische stap voor stap guide
Achtergrond:
🤖 LLM’s lokaal draaien - 2 simpele methodes
🛣️ LLM’s lokaal draaien - De weg naar ondevice LLM’s
💻 LLM’s lokaal draaien - Je systeem in relatie tot de modelspecificaties
⚖️ Wat is lora?
Belangrijkste kenmerken
Als je een open-source Language Learning Model (LLM) op je eigen computer wilt draaien, zijn er een paar belangrijke factoren die bepalen hoe goed en efficiënt dat model zal presteren. De twee belangrijkste onderdelen van je computer die invloed hebben op de prestaties van een LLM zijn:
- RAM (het geheugen van je computer)
- CPU/GPU (de rekenkracht, waar GPU’s vooral voor machine learning veel worden gebruikt)
RAM: Hoeveel geheugen heb je nodig?
De hoeveelheid RAM is cruciaal omdat LLM's grote hoeveelheden data tegelijk moeten verwerken. RAM is dus rechtstreeks gekoppeld aan hoe groot een model kan zijn dat je kunt draaien.
- Kleinere modellen (~6 miljard parameters) hebben 8-12 GB RAM nodig.
- Middelgrote modellen (~13 miljard parameters) vereisen al snel 16-24 GB RAM.
- Grote modellen (30 miljard parameters of meer) kunnen meer dan 30 GB RAM gebruiken.
Vuistregel: Hoe groter het model, hoe meer RAM je nodig hebt. Elk miljard parameters vraagt ongeveer 1.5 GB RAM.
CPU en GPU: Waar komt de rekenkracht vandaan?
Naast geheugen is de rekencapaciteit belangrijk. Hierbij moet je een keuze maken tussen het gebruik van je CPU of GPU.
- CPU: Dit is de centrale processor van je computer. Veel systemen kunnen modellen draaien op de CPU, maar dit is vaak langzamer dan op een GPU, vooral voor grotere modellen.
- GPU: Grafische processors zijn geoptimaliseerd voor parallelle berekeningen, waardoor ze veel sneller kunnen werken.
GPU's hebben een grote voorsprong in AI-werk. Nvidia GPU's staan algemeen bekend als meest geschikt door hun CUDA-ondersteuning, Apple (met M Silicon) en AMD (via ROCm) bieden inmiddels ook enige ondersteuning.
Of je model op een GPU of CPU draait, verandert in principe niet veel aan het RAM-gebruik, maar het kan wel de snelheid en efficiëntie beïnvloeden.
Apple vs Nvidia vs AMD
- Nvidia GPU’s:
- De meeste AI-software is geoptimaliseerd voor Nvidia dankzij hun CUDA ondersteuning, die AI-toepassingen versnelt. Modellen draaien hier snel en efficiënt.
- Als je een Nvidia GPU hebt, ben je in een goede positie om grotere modellen lokaal te draaien.
- Apple Silicon (M1/M2):
- Apple's GPU's zijn krachtig en gebruiken de Metal Performance Shaders (MPS)API om AI-modellen te versnellen.
- Hoewel ze niet zo wijdverspreid ondersteund zijn als Nvidia's CUDA, zijn er steeds meer oplossingen voor LLM’s op deze techniek.
- AMD GPU's:
- AMD's GPU's gebruiken ROCm, een alternatief voor CUDA.
- AMD wordt minder ondersteund in de AI-wereld dan Nvidia
Optimalisatie: Quantizatie en hardwaregebruik
Als je beperkte hardware hebt, zijn er manieren om de geheugenbehoeften van een model te verlagen. Dit gebeurt met quantizatie . Quantizatie verkleint de grootte van een model door de precisie van de parameters te verlagen (bijv. van 16-bit naar 4-bit), zonder dat de prestaties te veel achteruitgaan. De gebruikte quantiatie techniek hangt samen met je CPU/GPU.
Vaak zie je in modelnamen op platforms zoals Hugging Face afkortingen die wijzen op de gebruikte quantizatie-techniek. Een model met "GPTQ" in de naam is geoptimaliseerd voor Nvidia GPU’s, terwijl een model met "GGUF" geschikt is voor CPU-gebruik. Dit helpt je snel te bepalen of een model goed bij jouw hardware past.
Quantizatie-technieken
- GGUF (voor CPU): Deze techniek maakt modellen kleiner en efficiënter, zodat ze ook op CPU’s met minder geheugen kunnen draaien. Het verlaagt de precisie naar 4-bit, wat geheugen bespaart.
- GPTQ (voor Nvidia GPU’s): GPTQ is speciaal ontworpen om GPU-modellen te optimaliseren. Het verlaagt de precisie naar 4-bit, zodat je minder VRAM nodig hebt voor grote modellen.
- AWQ (voor Apple Silicon en AMD GPU’s): AWQ richt zich op activatie- en gewicht-quantizatie en is ideaal voor Apple Silicon en AMD GPU’s. Dit zorgt ervoor dat je het meeste uit je hardware haalt zonder prestatieverlies.
GPU-optimalisatie voor Apple Silicon
Als je een Apple Silicon systeem hebt, kun je de ingebouwde GPU gebruiken via Metal Performance Shaders (MPS). Dit werkt alleen als je de juiste software hebt geïnstalleerd of instellingen hebt aangepast die MPS ondersteunen, zoals specifieke frameworks of drivers. Zonder deze optimalisaties zal het model niet automatisch de GPU van je Apple Silicon apparaat benutten.
Wat betekent dit voor finetuning?
Bij het finetunen van een model heb je doorgaans meer geheugen nodig dan alleen voor het draaien ervan. Dit komt doordat bij finetuning niet alleen het model geladen wordt, maar ook additionele data en parameters tijdelijk in het geheugen moeten worden opgeslagen. Tijdens het trainen (of finetunen) van een model vinden er updates plaats aan de gewichten, wat meer geheugen vergt dan bij het simpelweg uitvoeren (inference) van een model.
Waarom heb je meer geheugen nodig bij finetuning?
- Batch processing: Tijdens training of finetuning worden meerdere data samples (batches) tegelijkertijd verwerkt, wat extra geheugen vereist.
- Optimalisatie-algoritmes: Tijdens training worden extra gegevens zoals gradients en optimalisatiestappen in het geheugen gehouden om de gewichten van het model bij te werken.
- Model check-pointing: Bij finetuning wil je waarschijnlijk tussentijds het model opslaan, wat ook meer schijfruimte en tijdelijk geheugen kan vragen.
Kort samengevat:
- Voor finetuning heb je doorgaans meer RAM nodig.
- Dat je een model op je computer lokaal hebt draaien wil dus niet automatisch zeggen dat je ook voldoende capaciteit hebt om het model te finetunen.
- Het exacte verschil in geheugengebruik hangt af van de grootte van het model, batch size, en de technieken die je gebruikt voor finetuning (zoals quantizatie).