Jouw GPU, jouw project Cryptobetaling zonder KYCHoe te betalen
Nederlands
Mijn omgeving
Gids voor je eerste project

Onvoldoende geheugen: zoek uit wat blokkeert voor je van GPU verandert.

Een geheugenfout betekent niet automatisch dat de GPU te klein is. Begin met het identificeren van de betreffende resource en het moment van de fout, en probeer daarna één enkele invoer opnieuw met dezelfde instellingen. Reduceer vervolgens één variabele tegelijk: het aantal gelijktijdige items, de afmetingen of de lengte van de gegevens. Het nuttige resultaat is een geval dat slaagt, een reproduceerbare limiet of een beter beschreven probleem; niet een nieuwe huur die willekeurig is gekozen.

Op deze pagina

1. Bewaar het bericht en de context voordat je opnieuw start

Stop met het toevoegen van taken aan de wachtrij. Noteer de exacte tekst van de fout, het betreffende bestand of de vraag, het aantal items dat samen wordt verwerkt en de stap die is bereikt. Was het model aan het laden, ging de berekening vooruit of werd de uitvoer weggeschreven? Bewaar de instellingen in een notitie en de al voltooide resultaten in hun map.

Een bevroren scherm of een applicatie die zonder uitleg sluit is niet genoeg om de oorzaak vast te stellen. Zoek het logboek op wanneer dat bestaat. Een verbindingsstoring, een ongeldige invoer en een volgelopen geheugen kunnen vergelijkbare symptomen in de interface veroorzaken. Als de software niets vermeldt, schrijf dan "oorzaak onbepaald" en bereid een minimale test voor in plaats van een diagnose te verzinnen.

2. Maak onderscheid tussen GPU-geheugen, systeemgeheugen en schijfruimte

Het GPU-geheugen dient voor de berekeningselementen op de kaart. Het RAM van de server en de opslag voorzien in andere behoeften. De capaciteiten die op de GPU-fiches van BriefGPU worden vermeld, beschrijven niet het daadwerkelijk beschikbare RAM of de schijf. Controleer de resource die in het bericht wordt genoemd en de informatie van je omgeving.

In Python duidt MemoryError op een mislukte geheugentoewijzing; die naam alleen duidt niet op een tekort aan VRAM. De code ENOSPC komt overeen met een tekort aan ruimte op het beoogde apparaat. Deze aanwijzingen sturen het onderzoek, maar het logboek van de applicatie blijft nodig om de bewerking te lokaliseren.

2. Maak onderscheid tussen GPU-geheugen, systeemgeheugen en schijfruimte
ObservatieEerste controleWat een grotere GPU niet alleen oplost
Bericht CUDA out of memory tijdens de berekeningGebruikt kaartgeheugen, andere taken en grootte van de groepEen incompatibiliteit van de software of een beschadigd bestand
MemoryError tijdens het lezen van de bestandenProcesgeheugen, hoeveelheid gegevens die in RAM wordt geladenHet laden van de hele map in het systeemgeheugen
No space left on device tijdens een exportRuimte en eventueel quotum van de uitvoer- of tijdelijke mapEen volle schijf of een opslaglimiet
Applicatie gesloten zonder bruikbaar berichtLogboek, bereikte stap en test met één enkele invoerEen nog onbekende oorzaak

3. Ga terug naar één invoer en één actieve taak

Controleer eerst de processen die je zelf hebt gestart. Een voorbeeld, een oude sessie of een tweede tool kan nog bezig zijn. Sluit taken die nutteloos zijn geworden netjes af nadat je hun status hebt bewaard. Beëindig geen proces dat je niet herkent en herstart niet de hele omgeving om een paar minuten diagnostiek te winnen.

Probeer de invoer die is mislukt opnieuw, alleen, zonder de kwaliteit te verlagen. Als die afzonderlijk slaagt maar in een groep mislukt, wordt het aantal gelijktijdige items een spoor. Reduceer bijvoorbeeld een groep van vier naar twee, en daarna naar één indien nodig. Het aantal bestanden in de map blijft gelijk; alleen de hoeveelheid die tegelijk wordt verwerkt verandert.

Sommige tools bieden sequentiële verwerking om geheugenpieken te beperken. Diffusers documenteert met name het opsplitsen van het decoderen van een groep afbeeldingen. Deze mogelijkheid hangt af van de gebruikte pipeline: raadpleeg de opties ervan voordat je een instelling activeert die voor een ander model is gevonden.

4. Verminder de belasting zonder het gevraagde resultaat te verliezen

Als één enkele invoer mislukt, onderzoek dan de afmetingen of de lengte ervan. Voor een afbeelding: van 2.048 × 2.048 naar 1.024 × 1.024 gaan deelt het aantal pixels door vier. Dat garandeert geen totaal geheugen dat door vier is gedeeld: het model en de andere elementen behouden hun eigen behoeften. Een vermindering is alleen acceptabel als de uitvoer de nodige details behoudt.

Voor een assistent onderscheid je de aangeleverde documenten, de vraag en het gegenereerde antwoord. De generatiecache kan meer geheugen gebruiken bij een lange context; de exacte mechanismen hangen van het model af. Test een kortere aanvraag of slechts één verzoek tegelijk. Verwijder niet de passage die het antwoord bevat en concludeer dan niet dat het probleem is opgelost.

Bewaar altijd de oorspronkelijke invoer. Geef de testvariant een naam en noteer wat die verandert. Als de tool een opdeling in tegels of het verplaatsen van bepaalde onderdelen naar het RAM biedt, raadpleeg dan de documentatie en controleer de aansluitingen, de kwaliteit en de waargenomen tijd. Een optie die VRAM bespaart, kan de beperking elders leggen.

5. Verwar gereserveerd geheugen niet met nuttig geheugen

Bij PyTorch zijn het geheugen dat de allocator reserveert en het geheugen dat de tensoren innemen twee verschillende metingen. De ongebruikte cache leegmaken maakt nog actieve tensoren niet vrij. Een opschooncommando verandert een te grote belasting dus niet in een compatibele belasting.

Als een schone herstart van je applicatie helpt, speel dan daarna hetzelfde kleine geval opnieuw af en noteer het resultaat. Een succes na een herstart bewijst op zichzelf niet dat een geheugenlek is verholpen. Als het gebruik bij elke identieke passage toeneemt, bewaar die observatie en raadpleeg de documentatie of de ondersteuning van de software voordat je de herstarts opstapelt.

Voorbeeld: het probleem isoleren in een map met twaalf afbeeldingen

Hier volgt een illustratief scenario, zonder hardwaremetingen. Een freelancer bereidt twaalf afbeeldingen voor, waarvan twee met grote afmetingen en fijne tekst. De verwerking in groepen van vier mislukt. Ze bewaart de foutmelding en probeert vervolgens een van de grote afbeeldingen apart, op de oorspronkelijke kwaliteit. De tabel laat zien hoe je mogelijke observaties kunt interpreteren.

In dit scenario kiest ze pas voor groepen van twee nadat ze de twee grote afbeeldingen samen en een paar gewone afbeeldingen heeft gecontroleerd. Ze controleert de tekst en de contouren in de geëxporteerde bestanden. Ze veralgemeent dit resultaat niet naar alle afbeeldingsformaten, alle modellen of andere software.

Voorbeeld: het probleem isoleren in een map met twaalf afbeeldingen
Uitproberen van het scenarioHypothetische observatieLokale beslissing
Vier afbeeldingen tegelijkGeheugenfoutDe fout bewaren en de groep verkleinen
Eén grote afbeelding, dezelfde instellingenVolledige en acceptabele uitvoerDe doelkwaliteit kan op dit geïsoleerde geval worden gehaald
Twee grote afbeeldingen samenVolledige en acceptabele uitvoerDeze groep op een kort stuk testen
Sterk verkleinde afbeeldingBerekening voltooid, tekst onleesbaarDeze verkleining verwerpen ondanks het technische succes

Wanneer een andere capaciteit een gerechtvaardigd spoor wordt

Vergelijk een andere kaart wanneer een gebrek aan GPU-geheugen is vastgesteld, het onmisbare geval alleen mislukt en verkleiningen die met je kwaliteit te verenigen zijn niet volstaan. Bewaar de betrokken software, versie, parameters en invoer: dit dossier maakt de volgende test vergelijkbaar. Het laat niet toe om precies af te leiden hoeveel extra GB zullen volstaan.

Een fout bij het laden van het model kan ook het nut van het verkleinen van de groep beperken: een belangrijk deel van de belasting bestaat al vóór de eerste invoer. Opties voor precisie of kwantisatie veranderen de uitvoeringsomstandigheden en soms de resultaten; ze vragen een aparte test. Het toevoegen van batches verenigt niet automatisch het geheugen van meerdere kaarten.

Eindig met een bruikbare diagnose

Je afsluitende notitie bestaat uit vijf elementen: melding en stap, vermoede resource, bewaarde invoer, instelling die slaagt of mislukt, uitgevoerde kwaliteitscontrole. Voeg toe wat nog onbekend blijft. Als geen enkel klein geval werkt, stop dan met het herhalen van de volledige batch en vraag hulp met deze informatie.

Verwijder niet je enige originelen om schijfruimte vrij te maken, verlaag niet meerdere parameters tegelijk en beschouw een gedeeltelijke uitvoer niet als een succes. Reserveer tijd om de geldige resultaten op te slaan. De diagnose moet de onzekerheid verkleinen; ze hoeft niet uit te monden in een eindeloze reeks aanpassingen.

Veelgestelde vragen

Kan een JPEG-afbeelding van een paar megabyte geen geheugen meer hebben?

Ja. Het gewicht van het gecomprimeerde bestand staat niet direct voor de gegevens die tijdens de verwerking worden gebruikt. Noteer de afmetingen, de kanalen en de gevraagde bewerkingen. Bewaar een originele versie en test één enkele afbeelding voordat je de hele map aanpast.

Moet ik na elke fout alle caches legen?

Nee. Stel eerst vast welke cache het is en wat die doet. Bestanden verwijderen kan betekenen dat je dingen opnieuw moet downloaden of berekenen; een geheugencache leegmaken geeft nog actieve gegevens niet vrij. Gebruik de gedocumenteerde opdrachten van je software, met een kopie van wat bewaard moet blijven.

Waarom werkt de eerste keer wel en de volgende keer niet?

Er blijven meerdere oorzaken mogelijk: een zwaardere nieuwe invoer, een andere actieve taak of gegevens die het programma vasthoudt. Speel dezelfde kleine invoer opnieuw af na een schone herstart van de applicatie en noteer de omstandigheden. Die observatie helpt bij de diagnose, maar bewijst op zichzelf geen geheugenlek.

Is een kleinere instelling die de berekening afmaakt genoeg om het project goed te keuren?

Nee. Je moet de uitvoer openen en de verwachte criteria controleren. Een onleesbare afbeelding of een antwoord dat het juiste document mist, blijft een mislukt project, ook als het programma geen fout meer meldt.

Ga in je eigen tempo te werk

Een beetje methode maakt het verschil bij de start.

Handleidingen openen