Na het behalen van uw eerste resultaat is het gemakkelijk om grotere modellen te willen proberen. U kunt overschakelen van 0.5B naar 7B, maar het originele apparaat is mogelijk niet langer voldoende.
Bij het selecteren van resources onderscheidt u eerst een paar dingen. CPU en GPU verzorgen de berekening, geheugen en videogeheugen bewaren gegevens tijdens de uitvoering, en schijf slaat modelbestanden op. Een model dat succesvol wordt gedownload betekent alleen dat de schijf genoeg ruimte heeft — of het soepel kan draaien, hangt ook af van geheugen, videogeheugen en rekenkracht. Hetzelfde model, afhankelijk van de precisie waarmee u het laadt, de lengte van de invoer en hoeveel verzoeken tegelijk worden verwerkt, beïnvloedt allemaal het resourcegebruik. Inferentie en training hebben ook verschillende vereisten.
Laten we eerst kijken waar CPU en GPU elk goed in zijn, dan schatten we hoeveel ruimte modelparameters zullen innemen, om de keuze van een laptop of cloudinstantie voor te bereiden.
CPU en GPU verschillen aanzienlijk in hun rekenbenaderingen.
CPU is ontworpen voor algemene berekeningen, met elke kern die relatief volledige controle- en rekenmogelijkheden heeft. Het kan beslissingen nemen, springen en taken plannen op basis van het programma-uitvoeringsproces, en flexibel verschillende soorten taken verwerken.
GPU gebruikt een parallelle rekenarchitectuur, met een groot aantal rekeneenheden dat een groot aantal taken tegelijk kan uitvoeren. Het is geschikt voor het verwerken van taken met grote datamaten en hoge berekeningsherhaling.
De verwerkingssnelheid van CPU en GPU hangt af van het taaktype en de rekenomvang.
Voor scenario's met veel logische beoordeling, programmacontrole en taakplanning heeft CPU een hogere uitvoeringsefficiëntie. Taken zoals het draaien van een besturingssysteem en databasequery's zijn geschikt voor CPU.
Voor grote parallelle rekentaken kan GPU een hogere reken-doorvoer bieden. Matrixvermenigvuldiging en convolutiebewerkingen in diep leren kunnen worden opgesplitst in meerdere parallelle subtaken, tegelijk uitgevoerd door GPU-rekeneenheden, waardoor de totale rekenefficiëntie wordt verbeterd.
De voordelen van GPU worden echter pas significant wanneer de omvang van de rekentaken groot is. Wanneer het datavolume klein is, kunnen GPU-rekenresources niet volledig worden benut, en gegevensoverdracht en taakplanning tussen CPU en GPU brengen ook extra kosten met zich mee. In dat geval kan het gebruik van CPU efficiënter zijn.
De kosten van CPU en GPU omvatten niet alleen de hardware-aanschafprijzen, maar ook het stroomverbruik tijdens de bediening, evenals de daaropvolgende gebruik- en onderhoudskosten.
Inloggen deelnemen aan de discussie
Bij de aanschaf van hardware is CPU standaard — gewone servers en personal computers hebben allemaal CPU-configuratie nodig. High-performance GPU's voor AI-training en -inferentie zijn doorgaans duur. Naast de GPU zelf moet u ook de kosten van servers, videogeheugen, opslag en ander ondersteunend hardware overwegen.
Tijdens de bediening heeft GPU hoog stroomverbruik bij het uitvoeren van grootschalige berekeningen. Hoe meer GPU's in een server, hoe groter de druk op stroomvoorziening en koeling, en de elektriciteits- en koelingskosten van datacenters zullen aanzienlijk stijgen.
Bij gebruik en onderhoud is het CPU-ecosysteem relatief volwassen, en routinematig serveronderhoud is relatief eenvoudig. GPU vereist overweging van driver, rekenframework en hardware-omgeving compatibiliteit. Conflicten tussen verschillende versies kunnen voorkomen dat modellen normaal functioneren. Multi-GPU-omgevingen omvatten ook gegevenscommunicatie tussen apparaten, wat bepaalde vereisten heeft voor hardwareverbindingen en softwareconfiguratie.
Training en inferentie hebben verschillende resourcevereisten, en modellen van verschillende groottes en types hebben ook significante verschillen in rekenresources. Hardwareselectie moet modelomvang, datavolume, prestatievereisten en resourcbehoeften in beide scenario's training en inferentie uitgebreid overwegen.
In de trainingsfase van het model, wanneer de datamset klein is, kan CPU voldoen aan de trainingsbehoeften van de meeste traditionele machine learning modellen, zoals lineaire regressie, logistische regressie en willekeurige bossen. Sommige lichtgewicht neurale netwerken kunnen ook CPU gebruiken voor training, maar naarmate het datavolume en de complexiteit van de modelstructuur toenemen, zal de trainingstijd aanzienlijk langer worden. Als u vaak modelaanpassingen moet uitvoeren, kan het gebruik van GPU de trainingstijd verkorten.
Training van grootschalige neurale netwerken en grote taalmodellen vereist uitgebreide matrixberekeningen, met hoge eisen aan rekenkracht en videogeheugencapaciteit. Grote taalmodellen met miljarden parameters, zoals Qwen, hebben high-performance acceleratieapparaten zoals GPU nodig voor training.
De modelvereisten tijdens inferentie verschillen van die van training. Voor scenario's met kleinere parameterscalen en lagere toegangsvolumina kan CPU voldoen aan inferentiebehoeften, en het resourcegebruik kan ook worden verminderd door methoden zoals kwantificering. Voor grote modellen, hoog-concurrentiediensten en scenario's die snelle respons vereisen, kan GPU een hogere inferentie-efficiëntie bieden.
CPU en GPU hebben elk toepasbare scenario's, en u moet modelomvang, datavolume, gelijktijdige verzoeken, prestatievereisten en implementatiekosten uitgebreid overwegen.
Het beoordelen van de resourcevereisten van een model hangt voornamelijk af van twee indicatoren: parameterschaal en gegevensprecisie.
De parameterschaal van het model wordt over het algemeen uitgedrukt in B, waarbij 1B 1 miljard parameters vertegenwoordigt. Parameters zijn de numerieke waarden die het model tijdens de training leert. Tijdens de inferentie moeten deze parameters worden geladen in geheugen (CPU) of videogeheugen (GPU). Hoe groter het aantal parameters, hoe meer resources worden bezet.
Gegevensprecisie verwijst naar het numerieke formaat dat modelparameters gebruiken voor opslag en berekening. Gangbare formaten omvatten FP32, FP16, BF16 en kwantificeringsformaten zoals INT8 en INT4. Voor hetzelfde aantal parameters betekent hogere gegevensprecisie meer bezette resources.
De geschatte opslagruimte voor 1B parameters bij verschillende precisies is als volgt:
| Precisie | Ruimte per 1B Parameters (ca.) | Gebruikelijk Gebruik |
| FP32 (Enkele Precisie) | 4GB | Training, hoge precisie inferentie |
| FP16 (Half Precisie) | 2GB | Training, inferentie |
| BF16 | 2GB | Training, inferentie |
| INT8 | 1GB | Gekwantificeerde inferentie |
| INT4 | 0.5GB | Laag-precisie gekwantificeerde inferentie |
Modelgewichten = Aantal parameters × Opslagruimte per 1B parameters bij die precisie. Voor een 7B model met FP16-precisie inferentie is de bezetting van modelgewichten ongeveer: 7 × 2GB ≈ 14GB.
Tijdens modelinferentie zijn naast het laden van modelgewichten extra resources nodig voor KV Cache, runtime framework en tijdelijke berekeningen.
KV Cache wordt gebruikt om Token-gerelateerde informatie op te slaan die al tijdens het gegenereerproces is berekend, om redundante berekeningen te voorkomen. Het gebruik ervan hangt af van de modelstructuur, contextlengte en aantal gelijktijdige verzoeken. Hoe langer de context, hoe meer informatie moet worden opgeslagen; hoe meer verzoeken tegelijk worden verwerkt, hoe meer het KV-Cache-gebruik toeneemt.
Schattingsformule voor inferentie-resourcegebruik:
CPU-inferentie vereist geheugen ≈ Modelgewichten + Framework- en tijdelijke overhead.
GPU-inferentie vereist videogeheugen ≈ Modelgewichten + KV Cache + Framework- en tijdelijke overhead.
Hiervan zijn gewichten statisch, framework-overhead is fundamenteel constant, en de variabel bevindt zich volledig in KV Cache. In lange sequentie-scenario's moet KV-Cache-ruimte worden gereserveerd.
De resourcevereisten van de trainingsfase zijn hoger dan die van de inferentiefase. Naast het opslaan van modelgewichten moeten ook gradiënten, optimizer-toestanden en tussenresultaten tijdens de training worden opgeslagen, wat meer resources vereist. De trainings-resourcevereisten hangen af van het type optimizer en de trainingsstrategie.
(1) Volledige modeltraining
Voor volledige modeltraining moeten modelgewichten, gradiënten, optimizer-toestanden en activeringen tegelijk worden opgeslagen. Met als voorbeeld volledige training met Adam-optimizer en FP16-precisie, vereist elke 1B parameter ongeveer:
| Onderdeel | Per 1B Parameters |
| Modelgewichten (FP16) | 2 GB |
| Gradiënten (FP16) | 2 GB |
| Optimizer-toestanden | 8 GB |
| FP32 gewichtskopie | 4 GB |
| Totaal (zonder activeringen) | 16 GB |
Opmerking: De Adam-optimizer moet twee kopieën van FP32-precisie toestanden (momentum en variantie) opslaan, daarom nemen optimizer-toestanden 8GB in; de FP32 gewichtskopie wordt gebruikt voor optimizer-parameterupdates.
De voorlopige schattingsformule voor volledige training is:
GPU-training vereist videogeheugen ≈ Aantal parameters × 16 Byte + Activeringsoverhead
CPU-training vereist geheugen ≈ Aantal parameters × 16 Byte + Activeringsoverhead
GPU-training is beperkt door videogeheugencapaciteit, terwijl CPU-training beperkt is door reken snelheid. Een 7B model met volledige FP16-training op GPU vereist minimaal 7B × 16 Byte ≈ 112GB videogeheugen, en de werkelijke behoefte zal na toevoeging van activeringen groter zijn.
(2) Parameter-efficiënte fijntuning (zoals LoRA)
Voor fijntuning van grote modellen worden parameter-efficiënte fijntuningmethoden zoals LoRA (Low-Rank Adaptation) in de praktijk vaker gebruikt. LoRA werkt niet alle originele modelparameters bij tijdens de training; het bevriest de originele modelgewichten en traint alleen nieuw toegevoegde lage-rang aanpassingsparameters, waardoor de videogeheugenvereisten aanzienlijk worden verminderd.
LoRA-training videogeheugen ≈ Basis modelgewichten + LoRA-parameters + LoRA-parametergradiënten en optimizer-toestanden + Activeringen.
Hiervan moeten basis modelgewichten alleen worden geladen en nemen niet deel aan updates; de door LoRA toegevoegde parameters zijn slechts 0,1%~1% van het originele model, en hun gradiënten en optimizer-overhead zijn bijna verwaarloosbaar. Het werkelijke videogeheugen hangt voornamelijk af van modelgewichten, contextlengte, batchgrootte en trainingsframework-optimaliseringsmethoden. LoRA-fijntuning kan de videogeheugenvereisten aanzienlijk verminderen in vergelijking met volledige training.
Bijvoorbeeld, het laden van een 7B model met FP16, modelgewichten nemen 4GB in. Op een enkele GPU met 24GB videogeheugen kan LoRA-fijntuning meestal draaien (met passende aanpassingen van batchgrootte en contextlengte). Het gebruik van QLoRA (het basismodel kwantificeren naar INT4) kan het videogeheugebruik verder verminderen, waardoor fijntuning op beperktere hardware mogelijk wordt.