Zdefiniuj, co będzie uznane za zaakceptowany wynik
Zapisz decyzję przed testami: „Która konfiguracja przetworzy wszystkie moje dokumenty, spełni moją minimalną jakość i zakończy się przed moim terminem, przy najniższym zaangażowanym budżecie?” Ustal scenariusz: tutaj korpus przetwarzany offline. Aplikacja interaktywna wymagałaby także zdefiniowania napływu żądań, ich współbieżności i dopuszczalnego opóźnienia; jej rankingu nie da się wywnioskować z samego tego testu.
Nazywaj zatwierdzonym korpusem kompletny zbiór wyników, który przechodzi wszystkie Twoje kontrole. Utworzony plik nie jest jeszcze zaakceptowanym wynikiem. Sprawdź identyfikatory, format, pokrycie i metrykę związaną z Twoim zastosowaniem. Zapisz próg i tolerancję względem referencji, zanim spojrzysz na czasy. Dwie konfiguracje mogą więc być równoważne dla decyzji, nie dając liczb identycznych co do bitu.
To rozdzielenie zbioru danych, celu jakości i scenariusza istnieje także w zasadach MLPerf Inference. Poniższy protokół to nasza metoda pracy do dostosowania do Twojego projektu; nie stanowi ani wykonania, ani certyfikacji MLPerf.
Źródła techniczne: MLCommons — scenariusze, metryki i cele jakości
Przygotuj dane wejściowe, referencję i manifest
Potrzebujesz korpusu, którego masz prawo używać, odpowiedzi referencyjnych lub procedury oceny, kodu wnioskowania oraz środowiska zdolnego uruchomić wybrany model. Oddziel dane służące do dostrojenia konfiguracji od końcowego korpusu porównawczego. Jeśli dostroisz progi po zobaczeniu tego ostatniego, przygotuj nową niezależną ocenę, aby wesprzeć wniosek.
Nadaj każdemu wpisowi stabilny identyfikator. Zachowaj odcisk korpusu, kolejność przejścia, wersję modelu i tokenizera, wersje kodu i zależności. Manifest opisuje także użyte GPU, precyzję, kwantyzację, kompilację, backend uwagi, politykę paddingu i maksymalną długość. Inne obcięcie zmieniłoby pracę do porównania.
Zidentyfikuj sterownik i backend faktycznie obecne. W przypadku wariantu AMD sprawdź kombinację systemu, GPU, ROCm i frameworka w oficjalnej macierzy. Przeczytana dokumentacja lub nazwa karty nie dowodzi, że to środowisko jest zainstalowane. Jeśli stosy oprogramowania różnią się między dwoma próbami, wniosek będzie dotyczył pełnych przetestowanych konfiguracji.
Źródła techniczne: AMD — macierz zgodności ROCm
Przykład: klasyfikacja tych samych 1000 tekstów
Oto eksperyment do zbudowania na własnych danych, bez zakładanego wyniku wydajności. Chcesz sklasyfikować 1000 tekstów w kategorie swojego projektu. Zarezerwuj 600 krótkich pozycji, 300 średnich i 100 długich; zdefiniuj granice za pomocą wybranego tokenizera i zachowaj reprezentatywny rozkład klas. Ten podział jest przykładem protokołu, a nie dostarczonym korpusem ani uniwersalnym zaleceniem proporcji.
Porównaj partie o rozmiarze 1, 4 i 8 z tym samym modelem, tą samą precyzją, tą samą kolejnością i tą samą regułą paddingu. Jedyną zmienną w tej pierwszej serii jest rozmiar partii. Druga seria może zmienić precyzję lub sprzęt, zachowując pozostałe wybory wyraźnie ustalone. Grupowanie według długości to nowy wariant, który należy zadeklarować, ponieważ zmienia organizację pracy.
Dla każdego przebiegu wyeksportuj 1000 predykcji wraz z ich identyfikatorami. Kontrola musi odnaleźć dokładnie oczekiwane identyfikatory, bez duplikatów ani pominięć. Zachowaj błędne predykcje: służą one do obliczenia jakości. Usunięcie trudnych przykładów sztucznie poprawiłoby wynik i zmniejszyło faktycznie przetworzony korpus.
| Kontrola | Reguła przykładu | Decyzja do zapisania |
|---|---|---|
| Pokrycie | Wszystkie 1000 oczekiwanych identyfikatorów pojawia się dokładnie raz | Każdy brak lub duplikat unieważnia korpus |
| Format | Jedna dozwolona klasa na tekst; wartości liczbowe skończone, jeśli eksportowane | Schemat i dozwolone klasy |
| Jakość ogólna | Jedna główna metryka, na przykład macro-F1 | Minimalny próg i tolerancja względem referencji |
| Ważne przypadki | Weryfikacja klas lub długości krytycznych dla projektu | Podgrupy i kryteria ustalone z góry |
| Termin | Predykcje ocenione i pliki pobrane przed terminem | Data, godzina i strefa czasowa zakończenia |
Rozdzielenie uruchomienia, rozgrzewki i przebiegu mierzonego
Zapisz pobieranie, instalację, ładowanie i kompilację oddzielnie od ustabilizowanego przetwarzania. Mogą być wyłączone z pomiaru czasu przebiegu, mimo że zajmują część wynajmu. Ustal identyczną regułę rozgrzewki dla wszystkich wariantów: pokryte dane wejściowe, liczba przebiegów i obsługa rekompilacji. Nie zmieniaj tej reguły po zobaczeniu, który wariant na niej korzysta.
Zdefiniuj granice głównego czasu. W tym przykładzie offline zmierz odczyt korpusu, tokenizację, transfery, wnioskowanie i materializację predykcji na hoście. Następnie zmierz czas oceny i zapisu wyników oddzielnie, aby ustalić pełną kampanię. Czas ograniczony do obliczeń GPU nie jest bezpośrednio porównywalny z tym czasem przetwarzania.
Operacje CUDA są asynchroniczne: stoper hosta musi poczekać na zakończenie wcześniejszych operacji przed startem i na zakończenie mierzonej pracy przed zatrzymaniem. Zdarzenia CUDA nadają się do poprawnie zdefiniowanego zakresu GPU. Dla pojedynczej operacji torch.utils.benchmark.Timer obsługuje rozgrzewkę i synchronizację. Zachowaj te same granice pomiaru między wariantami.
Źródła techniczne: PyTorch 2.14 — asynchroniczne wykonanie CUDA · PyTorch — pomiar za pomocą torch.utils.benchmark
Powtarzanie i zachowywanie niepowodzeń
Zaplanuj pięć pełnych przebiegów na wariant w tym pierwszym porównaniu. Zmieniaj ich kolejność, na przykład 1–4–8, potem 4–8–1, potem 8–1–4, aby jeden wariant nie był zawsze pierwszy. Zachowaj politykę dotyczącą procesów, pamięci podręcznych i rozgrzewki. Te pięć przebiegów opisuje twoją małą serię; same nie dowodzą stabilności w długim okresie.
Jeden wiersz surowej tabeli reprezentuje jedną próbę przejścia, w tym zatrzymanie. Łączy wariant i korpus z parametrami, czasem trwania i werdyktem jakościowym. Pola expected_ids i observed_ids zapisują liczby wpisów; ids_match potwierdza równość zbiorów, sprawdzaną w osobno przechowywanych plikach predykcji. corpus_accepted zawiera werdykt przejścia. Błędy i ścieżkę wyników zapisz w notes. Jeśli brakuje pomiaru, pozostaw jego komórkę pustą i wskaż dlaczego. Brak GPU nie jest pomiarem zera sekund ani zera bajtów.
Jeśli batch 8 przekracza pamięć na długich wejściach, zachowaj wiersz niepowodzenia i liczbę ukończonych wpisów. Nie zastępuj po cichu tego przejścia mniejszym batchem. Ustawienie wznowienia staje się osobnym wariantem; jego czas i próby są częścią bilansu. Przerwanie lub błąd formatu nigdy nie jest sukcesem ekonomicznym dlatego, że było szybkie.
Czytanie czasów trwania bez nadinterpretowania pięciu prób
Przedstaw pięć surowych czasów trwania, ich medianę, minimum i maksimum, wraz z liczbą sukcesów i niepowodzeń. Mediana opisuje środek tych obserwacji; nie usuwa incydentów. Jeśli przejście zostanie wykluczone z udokumentowanego powodu zewnętrznego, zachowaj jego ślad i zastosuj tę samą regułę wykluczenia do wszystkich wariantów.
Nie przedstawiaj p95 obliczonego z pięciu przejść jako solidnego oszacowania przypadków wolnych. Aby badać opóźnienie żądań, zbierz odpowiedni zbiór indywidualnych czasów wraz ze scenariuszem napływu i współbieżnością. Pięć czasów trwania korpusu i opóźnienia 1000 żądań to nie ta sama populacja.
Jeśli obserwowany rozrzut jest porównywalny z różnicą między medianami, seria wciąż nie rozstrzyga między opcjami. Dodaj powtórzenia w wspólnym protokole albo zbadaj konkretną przyczynę: ładowanie, kształty wejść, kompilację, działanie współbieżne. Unikaj zatrzymywania tylko najlepszego przejścia z każdej karty.
Sprawdzenie jakości po zmianie precyzji
Aby porównać FP32, BF16 lub kwantyzację, wyjdź od tych samych wejść i tej samej referencji. Oceń format, główną metrykę i zaplanowane podgrupy. Wariant, który przekracza twoją tolerancję, może być interesujący dla innego celu; nie dołącza do porównania przy równoważnej jakości przez obniżenie progu po fakcie.
Zapisz użyte ziarna i opcje deterministyczne. PyTorch nie gwarantuje pełnej odtwarzalności między wersjami, platformami ani uruchomieniami CPU i GPU, nawet przy tym samym ziarnie. Określ więc, co próbujesz odtworzyć: identyczne wyniki, ograniczoną różnicę numeryczną czy akceptowalną jakość biznesową. Dla protokołu stochastycznego przewidź kilka wspólnych ziaren i zachowaj ich wyniki osobno.
Źródła techniczne: PyTorch 2.14 — zakres i granice odtwarzalności
Wykorzystanie pamięci jako kryterium wykonalności
Opcja musi ukończyć korpus z jego długimi wejściami, zanim porówna się jej koszt. Zanotuj szczyt pamięci na urządzenie i zakres licznika. W PyTorch memory_allocated śledzi tensory, a memory_reserved pamięć zarządzaną przez alokator: tych wartości się nie sumuje. Odpowiednie szczyty mogą wystąpić w różnych momentach.
Notebook z folderu pamięci pomaga odróżnić szacowanie od obserwacji. Jego ćwiczenie nie zastępuje pomiaru twojego modelu: wczytaj swoje środowisko, zachowaj parametry i ponownie uruchom swoje obciążenie. Deklarowana pojemność karty i cena partii nie pozwalają wywnioskować przepustowości, połączenia między kartami ani automatycznego rozmieszczenia modelu na wielu GPU.
Źródła techniczne: PyTorch 2.14 — liczniki i alokator pamięci
Wybór czasu trwania z pełnym harmonogramem
Potrzebny czas trwania to nie tylko suma kerneli GPU. Zbuduj okno dostępu od przygotowania na wynajmie po odbiór wyników: instalacja, kontrole, rozgrzewka, porównania, zaplanowane wznowienia, ocena i eksport. Dodaj okresy oczekiwania, podczas których wciąż musisz zachować wynajem. Gdy zadania się nakładają, rozumuj na podstawie rzeczywistego harmonogramu, a nie sumując ich czasy dwa razy.
Przykładowy harmonogram, bez założeń dotyczących szybkości: chcesz zachować dostęp od poniedziałku 9:00 do piątku 9:00, w tej samej strefie czasowej i bez zmiany czasu. To okno obejmuje 96 godzin. Przekracza 72 godziny pakietu 3-dniowego i mieści się w 168 godzinach pakietu 7-dniowego. Nie dowodzi to, że Twoje obliczenia zakończą się na czas: ich czasy trwania wciąż trzeba zmierzyć.
Kalkulator pozwala wprowadzić Twoje całkowite okno i wyświetla pakiety 3-, 7- i 30-dniowe. Pakiet, który obejmuje kalendarz, staje się kandydatem. Jeśli kampania przekracza przyjęty okres, zmień program lub wyraźnie wyceń dodatkowe potrzebne okresy; nie zakładaj automatycznego przedłużenia.
| Etap | Obserwowalny koniec | Czas trwania |
|---|---|---|
| Przygotowanie | Środowisko załadowane i minimalny test zaliczony | Do zmierzenia lub zaplanowania |
| Porównanie | Wszystkie przewidziane przebiegi mają odnotowany status | Do zmierzenia |
| Ocena i poprawki | Każde wyjście ma werdykt, każda porażka decyzję | Do zmierzenia lub zaplanowania |
| Eksport | Pliki pobrane, otwarte i sprawdzone u odbiorcy | Do zmierzenia |
| Oczekiwania | Przegląd i dostępność zespołu uwzględnione w harmonogramie | Do zaplanowania |
Oblicz koszt zaangażowany z naszymi pakietami
Budżet wynajmu to cena pakietu za jedną partię pomnożona przez liczbę partii. Koszt na zatwierdzony korpus dzieli następnie całą tę kwotę przez użyteczne korpusy faktycznie zaakceptowane w zadeklarowanym zakresie. Jeśli żaden korpus nie zostanie zaakceptowany, wskaźnik jest nieokreślony. Zaangażowany wydatek pozostaje natomiast w bilansie.
Ceny poniżej pochodzą z naszego katalogu, w wersji z 24 września 2026. Ilustrują regułę obliczeń, nie ustalając, który GPU najszybciej ukończy Twoje zadanie. Partia B200 zawiera już dwie karty: pomnożenie jej ceny po raz drugi przez dwa liczyłoby te karty dwukrotnie. Dwie partie RTX 4090 na 7 dni kosztują zatem 220 USD; partia dwóch B200 na 7 dni kosztuje 2071 USD.
Krótki przebieg nie zamienia pakietu w rozliczenie godzinowe. Kalkulator używa całkowitej kwoty pakietu, nawet jeśli część okresu pozostaje niewykorzystana. W przypadku szerszego budżetu projektu odnotuj osobno pozostałe faktycznie mające zastosowanie wydatki i ich uzasadnienie. Nie mieszaj kosztów zmierzonych u jednego z wariantów z pozycjami pominiętymi u drugiego.
| Konfiguracja partii | 3 dni | 7 dni | 30 dni |
|---|---|---|---|
| 1 × NVIDIA GeForce RTX 4090 24 GB | 47,14 | 110,00 | 390,00 |
| 2 × NVIDIA B200 SXM, 180 GB na kartę | 887,57 | 2 071,00 | 7 391,00 |
Źródła techniczne: IteraGPU — pakiety z katalogu
Licz użyteczne produkty końcowe, a nie powtórzenia pomiaru
Pięć powtórzeń tego samego benchmarku służy do obserwacji rozrzutu. Nie stają się pięcioma użytecznymi korpusami produkcyjnymi tylko dlatego, że zapisano pięć plików. Zdefiniuj oczekiwane produkty końcowe przed kampanią i licz każdy zaakceptowany produkt końcowy tylko raz. Jeśli rzeczywista praca dotyczy kilku korpusów, każda konfiguracja musi przetwarzać te same korpusy i stosować tę samą regułę jakości.
W kalkulatorze pozostaw liczbę korpusów pustą, dopóki użyteczne produkty końcowe nie zostaną faktycznie ukończone i zatwierdzone. Pole jakości potwierdza Twoją własną kontrolę; narzędzie nie odczytuje ani Twoich predykcji, ani metryk. Podaj wyłącznie stwierdzoną ilość. Okno kampanii może być założeniem planistycznym, ale prognoza wydajności nie zastąpi zaakceptowanych wyników.
Bilans końcowy zbiera dla każdej dopuszczalnej konfiguracji werdykty jakości, czasy surowe, okno kampanii, zaangażowany pakiet i liczbę zaakceptowanych produktów końcowych. Szybka opcja może być przydatna przy napiętym terminie, nie będąc najtańszą. Dwie opcje mieszczące się w tym samym kalendarzu można rozstrzygnąć na podstawie ich kosztu zaangażowanego, ich porażek lub utrzymującej się niepewności.
Pobierz protokół i zachowaj dowód do ponownego wykorzystania
Dossier IteraGPU Lab v1 gromadzi materiały tego porównania i pomiaru pamięci. Zacznij od README i protokołu jakości, a następnie uzupełnij surową tabelę swoimi przebiegami. Komórki wydajności pozostają puste przed wykonaniem; cenniki są danymi katalogowymi, oddzielonymi od pomiarów.
Aby wycenić dwa pakiety RTX 4090 na 7 dni, umieść pliki calcul_forfaits.py i tarifs-forfaits.csv w tym samym folderze, otwórz terminal w tym folderze i uruchom poniższą komendę w Pythonie 3.10 lub nowszym. Wyświetla ona ryczałt 220,00 USD za dwa GPU. Opcjonalna flaga --accepted-results przyjmuje twoją całkowitą liczbę odrębnych użytecznych korpusów faktycznie ukończonych i zatwierdzonych. Pomiń ją, dopóki takie ustalenie nie istnieje: skrypt oblicza wtedy tylko ryczałt, bez wymyślania kosztu na wynik.
Przechowuj razem manifest, sumy kontrolne wejść, predykcje, werdykty i tabelę prób. Notatka decyzyjna wskazuje wybrane ustawienie, pokryte obciążenie i powód wyboru. Będziesz mógł ją zestawić z własnym wynajmem w carnet IteraGPU i dokładnie powtórzyć pytanie eksperymentalne przy zmianie modelu lub wersji.
Ten protokół offline sam w sobie nie kwalifikuje usługi interaktywnej, treningu aż do zbieżności ani innego zbioru danych. Dla takich zastosowań zdefiniuj ponownie jednostkę użyteczną i kontrole przed porównywaniem. Dostarczone pliki służą do przygotowania i dokumentowania twoich prób; ten folder nie przedstawia żadnego zmierzonego porównania między konfiguracjami z katalogu ani zaobserwowanych oszczędności.
python calcul_forfaits.py --gpu rtx-4090 --days 7 --lots 2- IteraGPU Lab v1 — kompletny folder
Archiwum skryptów, notebooka, tabel i instrukcji.
- Protokół jakości
Wejścia, kryteria akceptacji i zasady porównania do ustalenia przed próbami.
- Tabela wyników surowych
Pusty arkusz do przechowywania parametrów, pomiarów, werdyktów i niepowodzeń.
- Obliczanie ryczałtów
Obliczanie budżetu z ceną za pakiet, czasami 3, 7 i 30 dni oraz zatwierdzonymi korpusami.
- Cennik ryczałtów
Migawka cen z naszego katalogu używanych przez dostarczone obliczenia.
- Notebook pomiaru pamięci
Obliczenia i ćwiczenie pomiarowe do interpretacji z folderem pamięci.
- Skrypt pomiaru pamięci
Wersja Python ćwiczenia z kontrolą środowiska.
- Instrukcje i wymagania wstępne
Zakres narzędzi i procedura ich uruchamiania oraz przechowywania wyników.
- Licencja zasobów
Warunki ponownego wykorzystania oryginalnych zasobów folderu.
Oblicz budżet swojej kampanii
Wybierz konfigurację i liczbę partii. Tabela korzysta z cen z naszego katalogu. Następnie wprowadź własne założenia harmonogramu; czas obliczeń nie jest przewidywany.
1 GPU łącznie · 24 GB na GPU · 1 GPU w cenie każdej partii.
Uwzględnij przygotowanie wynajmu, obliczenia, ocenę, planowane przerwy i eksport. Okno mieszczące się w pakiecie nie gwarantuje powodzenia przetwarzania.
Korpus to pełny zestaw roboczy zdefiniowany przez Twój protokół. Licz tylko ukończone i zwalidowane użyteczne korpusy; powtórzenia benchmarku nie stanowią nowych użytecznych korpusów. Kalkulator nie mierzy jakości.
| Czas trwania | Suma pakietu | Wprowadzone okno | USD / zwalidowany korpus |
|---|---|---|---|
| 3 dni · 72 h | 47,14 USD | Do uzupełnienia | Wymagana jakość i ilość |
| 7 dni · 168 h | 110,00 USD | Do uzupełnienia | Wymagana jakość i ilość |
| 30 dni · 720 h | 390,00 USD | Do uzupełnienia | Wymagana jakość i ilość |
Koszt na korpus = suma pakietu ÷ liczba zwalidowanych kompletnych korpusów. Pakiet jest należny w całości; ten wskaźnik nie stanowi stawki godzinowej ani opłaty za użycie.
Jeśli okno przekracza 30 dni, ustaw nowy harmonogram lub kilka okresów wynajmu i sprawdź ich dostępność. Kalkulator nie zakłada automatycznego przedłużenia ani ciągłości dostępności.