Bepalen wat als een geaccepteerd resultaat geldt
Schrijf de beslissing op vóór de tests: “Welke configuratie verwerkt al mijn documenten, respecteert mijn minimale kwaliteit en is klaar vóór mijn deadline, voor het laagste vastgelegde budget?” Leg het scenario vast: hier een corpus dat offline wordt verwerkt. Een interactieve toepassing zou ook de aankomst van verzoeken, hun gelijktijdigheid en de aanvaardbare latentie moeten definiëren; de rangschikking volgt niet uit deze enkele test.
Noem een volledige set uitvoer die al je controles doorstaat een gevalideerd corpus. Een aangemaakt bestand is nog geen geaccepteerd resultaat. Controleer de identifiers, het formaat, de dekking en een metriek die aansluit bij je gebruik. Noteer de drempel en de tolerantie ten opzichte van een referentie voordat je naar de tijden kijkt. Twee configuraties kunnen zo gelijkwaardig zijn voor de beslissing zonder bit voor bit identieke getallen te produceren.
Deze scheiding tussen dataset, kwaliteitsdoel en scenario bestaat ook in de principes van MLPerf Inference. Het onderstaande protocol is onze werkwijze die je op je project kunt aanpassen; het vormt geen MLPerf-uitvoering en geen MLPerf-certificering.
Technische bronnen: MLCommons — scenario's, metrieken en kwaliteitsdoelen
De invoer, de referentie en het manifest voorbereiden
Je hebt een corpus nodig dat je mag gebruiken, referentieantwoorden of een evaluatieprocedure, de inferentiecode en een omgeving die het gekozen model kan uitvoeren. Houd de gegevens waarmee je de configuratie instelt gescheiden van het definitieve vergelijkingscorpus. Als je de drempels aanpast nadat je dat laatste hebt gezien, voorzie dan een nieuwe onafhankelijke evaluatie om de conclusie te onderbouwen.
Geef elke invoer een stabiele identifier. Bewaar een vingerafdruk van het corpus, de verwerkingsorde, de revisie van het model en de tokenizer, de versies van de code en de afhankelijkheden. Het manifest beschrijft ook de gebruikte GPU's, precisie, kwantisatie, compilatie, attention-backend, padding-beleid en maximale lengte. Een andere afkapping zou het werk dat je vergelijkt veranderen.
Noteer de daadwerkelijk aanwezige driver en backend. Controleer voor een AMD-variant de combinatie van systeem, GPU, ROCm en framework in de officiële matrix. Een geraadpleegde documentatie of de naam van een kaart bewijst niet dat die omgeving is geïnstalleerd. Als de softwarestacks tussen twee proeven verschillen, heeft de conclusie betrekking op de volledige geteste configuraties.
Technische bronnen: AMD — compatibiliteitsmatrix voor ROCm
Voorbeeld: dezelfde 1.000 teksten classificeren
Hier is een experiment om met je eigen data op te zetten, zonder verondersteld prestatieresultaat. Je wilt 1.000 teksten in de categorieën van je project classificeren. Reserveer 600 korte invoeren, 300 middelgrote en 100 lange; bepaal de grenzen met de gekozen tokenizer en houd een representatieve verdeling van de klassen aan. Deze opsplitsing is een voorbeeldprotocol, geen aangeleverd corpus en geen universele aanbeveling voor verhoudingen.
Vergelijk batches van 1, 4 en 8 met hetzelfde model, dezelfde precisie, dezelfde volgorde en dezelfde padding-regel. De enige variabele in deze eerste reeks is de batch. Een tweede reeks kan de precisie of de hardware wijzigen, terwijl de andere keuzes expliciet vast blijven. Groeperen op lengte is een nieuwe variant die je moet aangeven, want het verandert de organisatie van het werk.
Exporteer voor elke passage de 1.000 voorspellingen met hun identificatoren. De controle moet exact de verwachte identificatoren terugvinden, zonder duplicaat of weglating. Bewaar de foutieve voorspellingen: ze dienen voor de kwaliteitsberekening. Het verwijderen van de moeilijke voorbeelden zou de score kunstmatig verbeteren en het werkelijk verwerkte corpus verkleinen.
| Controle | Regel van het voorbeeld | Vast te leggen beslissing |
|---|---|---|
| Dekking | De 1.000 verwachte identificatoren komen exact één keer voor | Elke ontbrekende of dubbele identificator maakt het corpus ongeldig |
| Formaat | Eén toegestane klasse per tekst; eindige numerieke waarden indien geëxporteerd | Schema en toegestane klassen |
| Algemene kwaliteit | Eén hoofddmetriek, bijvoorbeeld macro-F1 | Minimale drempel en tolerantie ten opzichte van de referentie |
| Belangrijke gevallen | Verificatie van de voor het project kritieke klassen of lengtes | Subgroepen en vooraf vastgelegde criteria |
| Deadline | Voorspellingen geëvalueerd en bestanden opgehaald vóór de deadline | Einddatum, tijd en tijdzone |
Opstarten, opwarmen en gemeten passage scheiden
Noteer het benodigde downloaden, installeren, laden en compileren apart van de gestabiliseerde verwerking. Ze kunnen worden uitgesloten van de stopwatch van een passage, terwijl ze toch een deel van de huur innemen. Leg een identieke opwarmregel vast voor alle varianten: gedekte invoeren, aantal passages en behandeling van hercompilaties. Pas deze regel niet aan nadat je hebt gezien welke variant ervan profiteert.
Bepaal de grenzen van de hoofdtijd. Meet voor dit offline voorbeeld het lezen van het corpus, de tokenisatie, de overdrachten, de inferentie en het materialiseren van de voorspellingen op de host. Meet daarna de evaluatie en het wegschrijven van de deliverables apart om de volledige campagne vast te stellen. Een duur die beperkt blijft tot de GPU-berekening is niet direct te vergelijken met deze verwerkingstijd.
CUDA-bewerkingen zijn asynchroon: een host-stopwatch moet wachten op het einde van de voorafgaande bewerkingen vóór zijn start en op dat van het gemeten werk vóór zijn stop. CUDA-events zijn geschikt voor een correct afgebakende GPU-scope. Voor een geïsoleerde bewerking ondersteunt torch.utils.benchmark.Timer het opwarmen en synchroniseren. Houd dezelfde meetgrenzen aan tussen varianten.
Technische bronnen: PyTorch 2.14 — asynchrone CUDA-uitvoering · PyTorch — meten met torch.utils.benchmark
Herhalen en mislukkingen bewaren
Voorzie vijf volledige passages per variant voor deze eerste vergelijking. Wissel hun volgorde af, bijvoorbeeld 1–4–8 dan 4–8–1 dan 8–1–4, zodat niet altijd dezelfde variant eerst komt. Handhaaf het beleid voor processen, caches en opwarmen. Deze vijf passages beschrijven je kleine reeks; ze bewijzen op zichzelf niet de stabiliteit over een lange periode.
Een rij in de ruwe tabel vertegenwoordigt één geprobeerde passage, inclusief een afbreking. Ze verbindt de variant en het corpus met de parameters, de duur en het kwaliteitsoordeel. De velden expected_ids en observed_ids leggen de aantallen entries vast; ids_match bevestigt de gelijkheid van de verzamelingen, gecontroleerd in de afzonderlijk bewaarde voorspellingsbestanden. corpus_accepted bevat het oordeel over de passage. Noteer de fouten en het pad van de uitvoer in notes. Als een meting ontbreekt, laat je de cel leeg en geef je aan waarom. Het ontbreken van een GPU is geen meting van nul seconden of nul bytes.
Als batch 8 bij lange inputs het geheugen overschrijdt, behoud dan de mislukte rij en het aantal voltooide entries. Vervang deze passage niet stilzwijgend door een kleinere batch. De herstartinstelling wordt een aparte variant; de tijd en het aantal pogingen horen bij de balans. Een onderbreking of een formaatfout is nooit een economisch succes omdat ze snel was.
Lees de duren zonder vijf proeven te overinterpreteren
Presenteer de vijf ruwe duren, hun mediaan, hun minimum en hun maximum, met het aantal successen en mislukkingen. De mediaan beschrijft het midden van deze waarnemingen; ze schrapt de incidenten niet. Als een passage om een gedocumenteerde externe oorzaak wordt uitgesloten, bewaar dan het spoor en pas dezelfde uitsluitingsregel toe op alle varianten.
Presenteer een p95 berekend op vijf passages niet als een robuuste schatting van de trage gevallen. Verzamel voor het bestuderen van de latentie van verzoeken een geschikte set individuele tijden met het aankomstscenario en de gelijktijdigheid. De vijf corpusduren en de latenties van 1.000 verzoeken zijn niet dezelfde populatie.
Als de waargenomen spreiding vergelijkbaar is met het verschil tussen de medianen, dan beslist de reeks nog niet tussen de opties. Voeg herhalingen toe in een gemeenschappelijk protocol of onderzoek een specifieke oorzaak: laden, invoervormen, compilatie, gelijktijdige activiteit. Vermijd om alleen de beste passage van elke kaart te weerhouden.
Controleer de kwaliteit na een wijziging van de precisie
Vertrek voor het vergelijken van FP32, BF16 of een kwantisatie van dezelfde inputs en dezelfde referentie. Evalueer het formaat, de hoofdas en de voorziene subgroepen. Een variant die uw tolerantie overschrijdt kan interessant zijn voor een ander doel; ze sluit niet aan bij de vergelijking bij gelijke kwaliteit door de drempel achteraf te verlagen.
Leg de gebruikte seeds en deterministische opties vast. PyTorch garandeert geen volledige reproduceerbaarheid tussen versies, platforms of CPU- en GPU-uitvoeringen, zelfs niet met dezelfde seed. Geef dus aan wat je probeert te reproduceren: identieke uitvoer, begrensde numerieke afwijking of aanvaardbare zakelijke kwaliteit. Voorzie voor een stochastisch protocol meerdere gemeenschappelijke seeds en bewaar hun resultaten afzonderlijk.
Technische bronnen: PyTorch 2.14 — reikwijdte en grenzen van de reproduceerbaarheid
Gebruik het geheugen als een haalbaarheidscriterium
Een optie moet het corpus met zijn lange inputs voltooien voordat de kost wordt vergeleken. Noteer de geheugenpiek per apparaat en het bereik van de teller. Bij PyTorch volgt memory_allocated de tensoren en memory_reserved het door de allocator beheerde geheugen: deze waarden worden niet opgeteld. De bijbehorende pieken kunnen op verschillende momenten optreden.
De notebook in de geheugenmap helpt om schatting en waarneming te onderscheiden. De oefening vervangt niet de meting van uw model: laad uw omgeving, behoud de parameters en voer uw belasting opnieuw uit. Een aangekondigde capaciteit per kaart en een lotprijs laten niet toe om een doorvoer, een interconnectie of een automatische verdeling van het model over meerdere GPU's af te leiden.
Technische bronnen: PyTorch 2.14 — tellers en geheugenallocator
Kies de duur met de volledige planning
De benodigde duur is niet alleen de som van de GPU-kernels. Bouw een toegangvenster van de voorbereiding op de huur tot het ophalen van de deliverables: installatie, controles, opwarming, vergelijkingen, voorziene herstarts, evaluatie en export. Voeg de wachtperiodes toe waarin u de huur nog moet behouden. Wanneer taken elkaar overlappen, redeneer dan op basis van de werkelijke planning in plaats van hun duren twee keer op te tellen.
Voorbeeld van een tijdlijn, zonder aanname over snelheid: je wilt toegang houden van maandag 9 uur tot vrijdag 9 uur, in dezelfde tijdzone en buiten de zomertijdomschakeling. Dit venster beslaat 96 uur. Het overschrijdt de 72 uur van een pakket van 3 dagen en past binnen de 168 uur van een pakket van 7 dagen. Dat bewijst niet dat je verwerkingen op tijd klaar zijn: hun duur moet nog worden gemeten.
Met de calculator kun je je totale venster invullen en worden de pakketten van 3, 7 en 30 dagen weergegeven. Een pakket dat de tijdlijn dekt, wordt een kandidaat. Als de campagne de gekozen periode overschrijdt, wijzig dan het programma of begroot expliciet de extra periodes die nodig zijn; ga niet uit van een automatische verlenging.
| Stap | Waarneembaar einde | Duur |
|---|---|---|
| Voorbereiding | Omgeving geladen en minimale test geslaagd | Te meten of te plannen |
| Vergelijking | Alle geplande runs hebben een vastgelegde status | Te meten |
| Evaluatie en hervattingen | Elke uitvoer heeft een verdict, elke mislukking een beslissing | Te meten of te plannen |
| Export | Bestanden opgehaald, geopend en gecontroleerd op de bestemming | Te meten |
| Verwachtingen | Herlezing en beschikbaarheid van het team opgenomen in de tijdlijn | Te plannen |
Bereken de gemaakte kosten met onze pakketten
Het budget van een huur is de prijs van het pakket per lot, vermenigvuldigd met het aantal loten. De kosten per gevalideerd corpus deel je vervolgens door dat hele bedrag door de bruikbare corpora die daadwerkelijk zijn geaccepteerd binnen het aangegeven bereik. Als geen enkel corpus wordt geaccepteerd, is de ratio ongedefinieerd. De gemaakte kosten blijven wel in de balans staan.
De onderstaande prijzen komen uit onze catalogus, versie van 24 september 2026. Ze illustreren de rekenregel, zonder vast te stellen welke GPU je taak het snelst afrondt. Een B200-lot bevat al twee kaarten: de prijs nog een tweede keer met twee vermenigvuldigen zou die kaarten dubbel tellen. Twee loten RTX 4090 voor 7 dagen kosten zo 220 USD; een lot van twee B200 voor 7 dagen kost 2.071 USD.
Een korte run maakt van het pakket geen factuur per uur. De calculator gebruikt het totaal van het pakket, ook als een deel van de periode ongebruikt blijft. Noteer voor een ruimer projectbudget apart de andere kosten die daadwerkelijk van toepassing zijn en hun onderbouwing. Meng geen kosten die bij de ene variant zijn gemeten met posten die bij de andere zijn vergeten.
| Configuratie van het lot | 3 dagen | 7 dagen | 30 dagen |
|---|---|---|---|
| 1 × NVIDIA GeForce RTX 4090 24 GB | 47,14 | 110,00 | 390,00 |
| 2 × NVIDIA B200 SXM, 180 GB per kaart | 887,57 | 2 071,00 | 7 391,00 |
Technische bronnen: IteraGPU — pakketten uit de catalogus
Tel nuttige deliverables, geen herhalingen van metingen
De vijf herhalingen van dezelfde benchmark dienen om de spreiding te observeren. Ze worden niet zomaar vijf nuttige productiecorpora omdat er vijf bestanden zijn geschreven. Definieer de verwachte deliverables vóór de campagne en tel elke geaccepteerde deliverable slechts één keer. Als het echte werk meerdere corpora betreft, moet elke configuratie dezelfde corpora verwerken en dezelfde kwaliteitsregel toepassen.
Laat in de calculator het aantal corpora leeg zolang de nuttige deliverables niet daadwerkelijk zijn afgerond en gevalideerd. Het vakje voor kwaliteit bevestigt je eigen controle; de tool leest noch je voorspellingen noch je metrieken. Vul alleen de vastgestelde hoeveelheid in. Het campagnevenster mag een planningsaanname zijn, maar een capaciteitsprognose vervangt geen geaccepteerde resultaten.
De eindbalans bundelt voor elke toegestane configuratie de kwaliteitsverdicts, de ruwe duur, het campagnevenster, het gemaakte pakket en het aantal geaccepteerde deliverables. Een snelle optie kan nuttig zijn voor een krappe deadline zonder de goedkoopste te zijn. Twee opties die binnen dezelfde tijdlijn passen, kun je onderscheiden op basis van hun gemaakte kosten, hun mislukkingen of de resterende onzekerheid.
Download het protocol en houd een herbruikbaar bewijs
De map IteraGPU Lab v1 bundelt de materialen voor deze vergelijking en de geheugenmeting. Begin met de README en het kwaliteitsprotocol en vul daarna de ruwe tabel aan met je runs. De prestatiecellen blijven leeg vóór een uitvoering; de tarieven zijn catalogusgegevens, gescheiden van de metingen.
Om twee partijen RTX 4090 gedurende 7 dagen te berekenen, plaats je calcul_forfaits.py en tarifs-forfaits.csv in dezelfde map, open je een terminal in die map en voer je het onderstaande commando uit met Python 3.10 of nieuwer. Het toont een forfait van 220,00 USD voor twee GPU's. De optionele optie --accepted-results ontvangt je gehele aantal daadwerkelijk afgeronde en gevalideerde, afzonderlijke bruikbare corpora. Laat deze weg zolang die vaststelling niet bestaat: het script berekent dan alleen het forfait, zonder een kosten-per-resultaat te verzinnen.
Bewaar het manifest, de invoerhashes, de voorspellingen, de verdicts en de tabel met pogingen samen. De beslissingsnotitie vermeldt de gekozen instelling, de gedekte belasting en de reden voor de keuze. Je kunt die later naast je huur in het IteraGPU-schrift leggen en de experimentele vraag exact opnieuw uitvoeren bij een model- of versiewijziging.
Dit offlineprotocol kwalificeert op zichzelf geen interactieve dienst, geen training tot convergentie of een andere dataset. Definieer voor die toepassingen de bruikbare eenheid en de controles opnieuw voordat je vergelijkt. De meegeleverde bestanden dienen om je proeven voor te bereiden en vast te leggen; deze map bevat geen gemeten vergelijking tussen de configuraties uit de catalogus, noch een waargenomen besparing.
python calcul_forfaits.py --gpu rtx-4090 --days 7 --lots 2- IteraGPU Lab v1 — volledige map
Archief met de scripts, de notebook, de tabellen en de instructies.
- Kwaliteitsprotocol
Invoer, acceptatiecriteria en vergelijkingsregels die je vóór de proeven vastlegt.
- Tabel met ruwe resultaten
Leeg blad om parameters, metingen, verdicts en mislukkingen te bewaren.
- Berekening van de forfaits
Budgetberekening met prijs per partij, looptijden van 3, 7 en 30 dagen en gevalideerde corpora.
- Forfaitprijzen
Momentopname van de prijzen uit onze catalogus die door de meegeleverde berekening worden gebruikt.
- Notebook voor geheugenmeting
Berekeningen en meetoefening die je samen met de geheugenmap interpreteert.
- Script voor geheugenmeting
Python-versie van de oefening, met controle van de omgeving.
- Instructies en vereisten
Scope van de tools en procedure om ze uit te voeren en de uitvoer te bewaren.
- Licentie van de bronnen
Voorwaarden voor hergebruik van de originele bronnen uit de map.
Het budget van je campagne berekenen
Kies een configuratie en je aantal sets. De tabel gebruikt de prijzen uit onze catalogus. Vul daarna je eigen aannames voor de planning in; er wordt geen rekentijd voorspeld.
1 GPU in totaal · 24 GB per GPU · 1 GPU inbegrepen in de prijs van elk lot.
Neem voorbereiding op de huur, berekeningen, evaluatie, geplande onderbrekingen en export mee. Een venster dat binnen het forfait past, garandeert niet dat de verwerking slaagt.
Een corpus is de volledige werkset zoals gedefinieerd door je protocol. Tel alleen nuttige, voltooide en gevalideerde corpora; herhalingen van de benchmark vormen geen nieuwe nuttige corpora. De calculator meet de kwaliteit niet.
| Duur | Totaal van het forfait | Ingevoerd venster | USD / gevalideerd corpus |
|---|---|---|---|
| 3 dagen · 72 u | USD 47,14 | In te vullen | Kwaliteit en kwantiteit vereist |
| 7 dagen · 168 u | USD 110,00 | In te vullen | Kwaliteit en kwantiteit vereist |
| 30 dagen · 720 u | USD 390,00 | In te vullen | Kwaliteit en kwantiteit vereist |
Kosten per corpus = totaal van het pakket ÷ aantal gevalideerde volledige corpora. Het pakket is volledig verschuldigd; deze ratio vormt geen uurtarief of betaling per gebruik.
Als het venster meer dan 30 dagen overschrijdt, stel dan een nieuwe planning of meerdere huurperiodes in en controleer hun beschikbaarheid. De calculator veronderstelt geen automatische verlenging of continuïteit van capaciteit.