Budżet mocy jest ograniczeniem projektowym
Na serwerze nikt nie zauważa własnego zużycia systemu operacyjnego. Na urządzeniu w kieszeni, robocie na baterii albo bezwentylatorowym pudełku na półce każdy wat wydany przez system na siebie to wat niedostępny dla modelu — a to składa się na krótszy czas pracy, częstsze ograniczanie termiczne i większą obudowę. Moc nie jest metryką, którą optymalizujesz na końcu. Jest ograniczeniem, w którym musi zmieścić się reszta projektu.
Gdzie naprawdę idą waty
Nie tam, gdzie ludzie zakładają. Inferencja jest zrywowa i droga, i jest też tą częścią, której chciałeś. Ciekawe marnotrawstwo jest gdzie indziej.
Wybudzenia. Procesor, który nigdy nie schodzi do głębokiego uśpienia, kosztuje więcej niż taki wykonujący okazjonalną pracę. Kilkanaście demonów, każdy odpytujący we własnym rytmie, żaden z osobna nie kosztowny, potrafi trzymać procesor obudzony na stałe. Zgranie albo usunięcie timerów bywa warte więcej niż jakakolwiek optymalizacja wewnątrz obciążenia.
Usługi, o które nie prosiłeś. Indeksery, agenci telemetrii, sprawdzacze aktualizacji, protokoły odkrywania. W dystrybucji ogólnej to rozsądne domyślne ustawienia. Na urządzeniu z jednym zadaniem to podatek w tle płacony co sekundę każdego dnia.
Presja na pamięć. Swap i czyszczenie cache’u kosztują energię w sposób, który w żadnym narzędziu monitorującym nie wygląda na energię. Model, którego wagi prawie się mieszczą, jest znacznie droższy niż taki, który się mieści.
Radio. Na sprzęcie noszonym sieć często dominuje. Każda możliwa do uniknięcia podróż do serwera to energia — co jest drugim argumentem za lokalną inferencją, obok opóźnienia i prywatności.
Spoczynek jest liczbą, która się liczy
Zużycie szczytowe jest tym, co się publikuje, i tym, czego nikt nie doświadcza. Liczbą decydującą o czasie pracy jest to, ile urządzenie pobiera, gdy nic nie robi — bo to większość jego istnienia.
Urządzenie pobierające zauważalnie mniej w spoczynku dostaje dłuższy czas pracy na tej samej baterii albo ten sam czas na mniejszej — co zmienia wzornictwo, wagę i cenę. Ten łańcuch jest powodem, dla którego pobór w spoczynku należy do briefu projektowego, a nie do późniejszego przebiegu optymalizacyjnego.
Publikujemy pobór w spoczynku dla każdego obrazu referencyjnego właśnie dlatego. Pojedyncza nagłówkowa liczba „dla systemu” byłaby bez sensu bez podania sprzętu i obciążenia, a kto podaje taką bez obu, mówi Ci bardzo niewiele.
Co system faktycznie może z tym zrobić
Dostarczać mniej. Każda usługa, która nie istnieje, nie zużywa nic. To ten sam argument co minimalizm dla bezpieczeństwa, dochodzący do tego samego wniosku z innej strony — co zwykle znaczy, że wniosek jest trafny.
Zgrać wybudzenia. Grupuj pracę okresową, żeby procesor dostawał długie nieprzerwane sny, zamiast być szturchanym co kilkaset milisekund przez niezwiązane ze sobą timery.
Pokazać planiście stan termiczny. Na sprzęcie bezwentylatorowym zapas termiczny decyduje o tym, co jest możliwe w następnej minucie. Planista traktujący go jako wejście może zwolnić zadanie w tle teraz, zamiast ograniczać interaktywne później.
Dopasować model do urządzenia. Największa pojedyncza dźwignia i nie do końca decyzja systemu — ale system powinien ułatwiać sprawdzenie, ile naprawdę kosztuje trzymanie danego modelu rezydentnie.
Uczciwe granice
System operacyjny nie sprawi, że model będzie tani. Jeśli obciążenie chce akceleratora pracującego na pełnych obrotach, to jest budżet mocy i żadne staranne zarządzanie demonami tego nie zmieni.
System kontroluje natomiast narzut: co działa, gdy nic się nie dzieje, jak szybko maszyna wraca do snu i czy planista wie, że zapas termiczny jest zasobem. Na serwerze ten narzut to błąd zaokrąglenia. Na urządzeniu noszonym cały dzień to różnica między produktem a prototypem.
- moc
- edge
- temperatura
- efektywność