Dlaczego pobór mocy GPU gwałtownie wzrasta na początku lokalnego żądania wnioskowania?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Moc GPU często gwałtownie wzrasta na początku żądania, ponieważ zwiększanie taktowania i wysoce równoległe wstępne przetwarzanie promptu aktywują jednocześnie więcej jednostek obliczeniowych niż dekodowanie token po tokenie.

Serwer domowy może pracować cicho w stanie bezczynności, na krótko zbliżyć się do limitu mocy GPU, a następnie ustabilizować się, gdy model przesyła tokeny. Ta zmiana obejmuje przełączanie stanów zasilania urządzenia, alokację pamięci, inicjalizację jąder oraz wstępne przetwarzanie promptu. Rozmiar modelu, długość promptu, rozmiar partii, zasady taktowania, kwantyzacja, interwał pomiarowy i inne obciążenia akceleratora decydują o wysokości i czasie trwania obserwowanego skoku.

GPU opuszcza stan bezczynności, gdy pojawia się obciążenie

Nowoczesne GPU obniżają częstotliwość taktowania i napięcie przy niewielkim obciążeniu, a następnie zwiększają je, gdy pojawiają się jądra i ruch danych w pamięci. Pierwsze żądanie może również utworzyć kontekst urządzenia, zainicjalizować biblioteki, przydzielić bufory i załadować jądra, koncentrując jednorazową aktywność w tym samym początkowym przedziale czasowym.

skoki mocy na początku żądania charakteryzują możliwości zarządzania energią dla obciążeń LLM i opisują skoki mocy na początku żądań wnioskowania. Badanie wiąże te skoki z intensywną obliczeniowo fazą wstępnego przetwarzania oraz analizuje wpływ częstotliwości GPU na opóźnienia i pobór mocy.

Próbka monitoringu może wyolbrzymiać lub ukrywać kształt skoku. Średnia z jednej sekundy może połączyć zwiększanie taktowania, wstępne przetwarzanie i początkowe dekodowanie w jeden punkt, podczas gdy wolna inteligentna wtyczka może całkowicie przeoczyć zdarzenie GPU albo zgłosić jedynie opóźnioną reakcję całego systemu.

Wstępne przetwarzanie wykorzystuje obliczenia równoległe inaczej niż dekodowanie

Wstępne przetwarzanie obsługuje tokeny promptu razem, aby zbudować pamięć podręczną KV, udostępniając mnożenia macierzy, które mogą zająć wiele rdzeni GPU. Dekodowanie przetwarza jeden token na sekwencję i często jest bardziej ograniczone przez przesyłanie danych w pamięci oraz zależności sekwencyjne, szczególnie przy rozmiarze partii równym jeden.

pomiar mocy wyrównany względem faz synchronizuje próbki mocy GPU, węzła i systemu z fazami wstępnego przetwarzania i dekodowania dla każdego żądania. Metoda uwzględniająca fazy pokazuje, dlaczego jedna łączna wartość energii nie wyjaśnia, kiedy występuje moc szczytowa ani które zmienne promptu i obsługi ją spowodowały.

Dłuższe prompty lub większe partie mogą wydłużyć okres wysokiego wykorzystania, podczas gdy kwantyzacja i połączone jądra zmieniają zarówno zapotrzebowanie na obliczenia, jak i na pamięć. Moc szczytowa, moc średnia i dżule na ukończony token odpowiadają na różne pytania i nie należy ich wzajemnie zastępować.

Limity mocy zmieniają kształt skoku, zamiast eliminować obciążenie

Niższy limit mocy lub częstotliwości może zmniejszyć chwilowy szczyt, ale wstępne przetwarzanie może potrwać dłużej. Całkowite zużycie energii może się zmniejszyć, pozostać podobne lub wzrosnąć, zależnie od sprawności przy wybranym punkcie pracy oraz od tego, czy wolniejsze żądanie opóźnia inne oczekujące zadania.

sterowanie częstotliwością uwzględniające fazy niezależnie reguluje częstotliwości dla wstępnego przetwarzania i dekodowania, jednocześnie chroniąc cele opóźnień. Zgłoszone oszczędności energii pokazują, że sterowanie uwzględniające fazy może przewyższać jedną stałą politykę, ale wynik zależy od klas obciążeń i ograniczeń dotyczących poziomu usług.

Granica błędu polega na utożsamianiu krótkiego skoku mocy GPU z niebezpiecznym poborem mocy z gniazdka. Zasilacz obsługuje cały system, w tym procesor, dyski, wentylatory i straty konwersji, podczas gdy czujniki programowe raportują moc układu z własną częstotliwością próbkowania. Decyzje dotyczące bezpieczeństwa elektrycznego wymagają pomiaru na poziomie gniazdka i uwzględnienia marginesu dla stanów przejściowych.

-15% OFF

Synchronizuj próbki mocy z fazami wnioskowania

Uruchom stałe prompty z 32, 512, 2K i 8K tokenów wejściowych przy stałej długości wyjścia, a następnie powtórz testy przy dwóch rozmiarach partii. Rejestruj moc GPU, częstotliwość taktowania, wykorzystanie, temperaturę, pobór mocy całego hosta z gniazdka, nadejście żądania, gotowość modelu, początek i koniec wstępnego przetwarzania, pierwszy token oraz zakończenie dekodowania.

Wykorzystaj rozróżnienie faz opisane w poborze mocy serwera domowego podczas uruchamiania, aby obliczyć moc szczytową, dżule zużyte podczas wstępnego przetwarzania, dżule zużyte podczas dekodowania, dżule na token, TTFT oraz opóźnienie między tokenami p95. Powtórz test raz z limitem mocy i raz po długim okresie bezczynności.

Zachowaj daną politykę zasilania tylko wtedy, gdy jednocześnie uwzględnia margines mocy z gniazdka, temperaturę i opóźnienia. Jeśli obniżenie szczytu wydłuża wstępne przetwarzanie na tyle, że zwiększa zużycie energii lub opóźnienie kolejki, potraktuj gładszy wykres jako kosmetyczną poprawę, a nie wzrost efektywności.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.