Connect with us

Sztuczna inteligencja

Przyszłość bezserwerowego wnioskowania dla dużych modeli językowych

mm

Ostatnie postępy w dużych modelach językowych (LLM) takich jak GPT-4, PaLM doprowadziły do przełomowych możliwości w zadaniach związanych z językiem naturalnym. LLM są włączane do różnych aplikacji, takich jak czatboty, wyszukiwarki i asystenci programistyczni. Jednakże, obsługa LLM w skali pozostaje wyzwaniem ze względu na ich znaczne wymagania dotyczące GPU i pamięci.

Podejścia do pokonania tego wyzwania ogólnie dzielą się na dwie główne kategorie:

  1. Techniki kompresji modelu

Te techniki mają na celu zmniejszenie rozmiaru modelu przy zachowaniu dokładności. Wspólne podejścia obejmują:

  • Pruning – Usuwanie zbędnych lub mniej istotnych parametrów z modelu. Tworzy to rzadki model z mniejszą liczbą parametrów.
  • Quantization – Używanie liczb o niższej precyzji, takich jak int8 lub bfloat16, do reprezentowania wag zamiast fp32 lub fp16. To redukuje ślad pamięci.
  • Destylacja wiedzy – Trenowanie mniejszego “uczniowskiego” modelu, aby naśladował duży “nauczycielski” model. Następnie używa się mniejszego modelu do wnioskowania.
  1. Selektywna wykonywanie

Zamiast skompresowanych modeli, te techniki selektywnie wykonują tylko części modelu na wnioskowanie:

  • Rzadkie aktywacje – Pomijanie obliczeń dla zerowych aktywacji.
  • Warunkowe obliczenia – Wykonywanie tylko pewnych warstw w zależności od wejścia.

Po stronie komplementarnej w odniesieniu do strony architekta oprogramowania; aby umożliwić szybsze wdrożenie LLM, badacze zaproponowali systemy bezserwerowego wnioskowania. W architekturach bezserwerowych LLM są hostowane na wspólnych klastrach GPU i przydzielane dynamicznie na podstawie popytu. To pozwala na efektywne wykorzystanie GPU i redukuje koszty dla deweloperów. Prominentne implementacje obejmują Amazon SageMaker, Microsoft Azure ML i otwarte opcje, takie jak KServe.

Pomimo obietnic bezserwerowych LLM, istniejące systemy wykazują wysokie opóźnienia, które pogarszają doświadczenie użytkownika w interaktywnych aplikacjach:

  1. Kosztowne pobieranie punktów kontrolnych: LLM mają duży ślad pamięci, często gigabajty do terabajtów. Pobieranie punktów kontrolnych z magazynu zdalnego jest czasochłonne, zajmując ponad 20 sekund, nawet z zoptymalizowanymi sieciami.
  2. Nieefektywne ładowanie punktów kontrolnych: Nawet z lokalnym magazynem SSD, ładowanie punktów kontrolnych do pamięci GPU zajmuje dziesiątki sekund ze względu na czynniki, takie jak deserializacja tensorów i alokacja. To dodaje znaczne opóźnienia poza czasem uruchomienia kontenera.

Aby rozwiązać te problemy, badacze z MIT CSAIL zaproponowali ServerlessLLM, innowacyjny system, który osiąga niskie opóźnienia bezserwerowego wnioskowania dla LLM. ServerlessLLM poprawia lokalność, wykorzystując obfite, ale niewykorzystane możliwości i przepustowość w wielopoziomowym magazynie serwerów do wdrożenia LLM.

Przegląd systemów bezserwerowego wnioskowania LLM

Przegląd systemów bezserwerowego wnioskowania LLM

Kluczowe innowacje w ServerlessLLM ServerlessLLM obejmuje kilka nowych projektów, aby obciąć czasy ładowania LLM w środowiskach bezserwerowych:

  1. Szybkie ładowanie punktów kontrolnych
  • Format punktów kontrolnych zoptymalizowany do ładowania, który umożliwia szybkie sekwencyjne odczytywanie i efektywne adresowanie tensorów w pamięci.
  • Potok ładowania punktów kontrolnych w wielu poziomach, który maksymalizuje wykorzystanie przepustowości w sieci, SSD, pamięci i pamięci GPU za pomocą technik, takich jak bezpośredni I/O, transfer pamięci przypiętej i równoległość.
  1. Żywa migracja do wnioskowania zależnego od lokalności
  • Migracja oparta na tokenach, która transmits tylko niezbędne tokeny wprowadzania ponad sieć, unikając wolnej transmisji migawek.
  • Dwufazowa migracja, która pozwala na nieprzerwane wnioskowanie, rekompilując stan pamięci podręcznej na serwerze docelowym przed transferem końcowych tokenów.
  1. Optymalizacja alokacji serwera pod kątem opóźnienia
  • Dokładne modele do szacowania czasów ładowania punktów kontrolnych z każdego poziomu i czasów migracji dla serwera.
  • Planista świadomy lokalności, który wybiera serwery, minimalizując oczekiwane opóźnienie uruchomienia, używając powyższych modeli.

Te optymalizacje pozwalają ServerlessLLM zmniejszyć czasy ładowania LLM o 4-8-krotnie i czasy uruchomienia o ponad 25-krotnie w porównaniu z istniejącymi systemami, takimi jak PyTorch, TensorFlow i KServe.

Zanurzmy się głębiej w tym, jak ServerlessLLM osiąga te znaczne zyski wydajności.

Przyspieszanie ładowania punktów kontrolnych

Pierwszą dużą przeszkodą, której ServerlessLLM się podjął, jest wysokie opóźnienie ładowania punktów kontrolnych LLM z magazynu do pamięci GPU.

Aby umożliwić szybkie ładowanie punktów kontrolnych, ServerlessLLM wprowadza:

  1. Format punktów kontrolnych zoptymalizowany do ładowania

Standardowe punkty kontrolne używane przez ramy, takie jak PyTorch, są zaprojektowane do trenowania modelu i debugowania. Ale do wnioskowania bezserwerowego punkty kontrolne są odczytywane tylko i dostępne wielokrotnie.

Aby zoptymalizować takie intensywne użycie odczytu, ServerlessLLM konwertuje punkty kontrolne do formatu z dwoma kluczowymi właściwościami:

  • Sekwencyjne odczytywanie chunków: tensory są grupowane w pliki binarne na GPU, ułatwiając duże sekwencyjne odczyty.
  • Efektywne adresowanie tensorów: indeks mapuje nazwy tensorów na offsety pamięci, umożliwiając bezpośrednie przywrócenie w pamięci bez deserializacji.
  1. Potok ładowania punktów kontrolnych w wielu poziomach

ServerlessLLM wykorzystuje wielopoziomową architekturę serwerów GPU, z nośnikami magazynu, takimi jak dyski SSD i siecią łączącą się z GPU za pomocą PCIe, NVMe itp.

System obejmuje potok wieloetapowy, aby maksymalizować wykorzystanie przepustowości we wszystkich poziomach:

  • Kawałki danych w pamięci są przydzielane przy użyciu pamięci przypiętej do szybkiego transferu GPU.
  • Bezpośredni I/O jest używany do efektywnego odczytu z dysku SSD bez opóźnień bufora.
  • Wiele wątków odczytuje różne fragmenty magazynu równolegle.
  • Współpraca międzyetapowa odbywa się za pomocą kolejków zadań asynchronicznych.

Wszystko to razem umożliwia nasycenie przepustowości nawet najbardziej zaawansowanych poziomów, takich jak NVMe RAID. Eksperymenty pokazują, że ServerlessLLM osiąga 6-8-krotnie szybsze ładowanie niż PyTorch/TensorFlow, zmniejszając czasy uruchomienia dla dużych LLM z ponad minuty do poniżej 10 sekund.

Wnioskowanie LLM zależne od lokalności za pomocą żywej migracji

Z przyspieszonym ładowaniem, ServerlessLLM stoi przed nowym wyzwaniem – jak wykorzystać wcześniej załadowane punkty kontrolne do lokalności bez przerywania trwających wnioskowań na zajętych serwerach?

ServerlessLLM wprowadza nową technikę – żywą migrację wnioskowania LLM między serwerami GPU. To pozwala na bezproblemową transfer wykonania do serwerów z lokalnymi punktami kontrolnymi.

Kluczowe elementy żywej migracji LLM:

  1. Migracja oparta na tokenach

Zamiast migawek całego stanu modelu, ServerlessLLM migruje tylko minimalne tokeny wprowadzania ponad sieć. To transmits znacznie mniej danych niż migawki.

  1. Dwufazowa migracja

Serwer docelowy asynchronicznie prekomputuje stany pamięci podręcznej z tokenów wprowadzania. Gdy jest gotowy, serwer źródłowy transmits końcowe tokeny przed zwolnieniem zasobów. To zapobiega zatrzymywaniu wnioskowania.

Eksperymenty pokazują, że migracja oparta na tokenach redukuje czasy migracji z dziesiątek sekund do poniżej jednej sekundy, nawet dla długich sekwencji. Żywa migracja jest kluczowa, aby uniknąć opóźnień kolejek podczas osiągania alokacji zależnej od lokalności.

Optymalizacja harmonogramu modelu

Aby zminimalizować opóźnienie końcowe, ServerlessLLM udoskonala planistę, aby zoptymalizować wybór serwera, biorąc pod uwagę lokalność. To obejmuje:

  1. Szacowanie czasu ładowania

Modele przewidują czasy ładowania z sieci, buforów SSD i pamięci dla każdego serwera, używając metryk, takich jak opóźnienia kolejek, rozmiary modelu i zmierzonej przepustowości.

  1. Precyzyjny przewidywacz czasu migracji

Planista szacuje czasy migracji dla serwerów, używając liczby tokenów wprowadzania i wyjściowych. Śledzi postęp wnioskowania asynchronicznie, aby uniknąć nakładu.

  1. Alokacja świadoma lokalności

Dla każdego wnioskowania planista ocenia szacowane czasy ładowania i migracji w serwerach. Wybiera serwer, który minimalizuje oczekiwane opóźnienie uruchomienia.

Planista również utrzymuje kolejki zadań serwera i wykorzystuje magazyn o wysokiej spójności do tolerancji awarii. Wszystkie te innowacje redukują nakład planistycznego, jednocześnie maksymalizując korzyści z lokalności.

Ocena wydajności ServerlessLLM

Całościowe eksperymenty oceniają skuteczność końcową ServerlessLLM w porównaniu z istniejącymi systemami, używając rzeczywistych modeli, takich jak OPT-175B i obciążeń modelowanych na podstawie śladów Azure.

Kluczowe wyniki:

  • Testy mikro: ServerlessLLM przyspiesza ładowanie punktów kontrolnych o 3,6-8,2-krotnie w porównaniu z PyTorch/TensorFlow. To w pełni nasycenie przepustowości magazynu, nawet dla najnowszych NVMe RAID.
  • Planowanie: ServerlessLLM redukuje opóźnienie alokacji o 4-12-krotnie w porównaniu z losowym planowaniem, podkreślając korzyści świadomości lokalności. Żywa migracja zapobiega opóźnieniom kolejek.
  • Obsługa końcowa: Dla dużych modeli, takich jak OPT-30B, ServerlessLLM poprawia 99 percentyl opóźnienia o 28-200-krotnie w porównaniu z systemami, takimi jak KServe i Ray Serve. To również poprawia wydajność zasobów.

Te znaczne zyski demonstrują zdolność ServerlessLLM do pokonania przeszkód w istniejących implementacjach bezserwerowych i odblokowania mocy LLM dla interaktywnych usług.

Optymalizacje wprowadzone w ServerlessLLM, takie jak ładowanie w wielu poziomach, żywa migracja i planowanie oparte na opóźnieniu, mogą pomóc w projektowaniu przyszłych architektur bezserwerowych. Możliwość systemu do obcięcia czasów ładowania i uruchomienia odblokowuje skalowalne wdrożenie dużych modeli językowych dla praktycznych zastosowań.

Spójrzmy w przyszłość: Trwające wyzwania

Chociaż jest to znaczny krok naprzód, ServerlessLLM reprezentuje tylko pierwszy krok w optymalizacji bezserwerowego wnioskowania dla ogromnych LLM. Kilka otwartych problemów pozostaje, w tym:

  • Przewidywanie rzeczywistego popytu na modele, aby kierować przydzielaniem i pre-ładowaniem
  • Inteligencka umieszczanie punktów kontrolnych w serwerach, aby maksymalizować trafienia w pamięci podręcznej
  • Wykorzystywanie efektywne algorytmów planistycznych do obsługi większych klastrów
  • Gwarantowanie uczciwości w alokacji zasobów wśród modeli i deweloperów
  • Uogólnianie innowacji, takich jak żywa migracja, do innych obciążeń bezserwerowych

Rozwiązanie tych obszarów może pomóc zbudować na obietnicy bezserwerowych LLM i uczynić ich możliwości jeszcze bardziej dostępnymi. Poza optymalizacjami na poziomie systemu, redukcja rażącego śladu węglowego i potencjalnych szkód dużych modeli pozostaje pilną priorytetem.

ServerlessLLM demonstruje, że ogromna przestrzeń istnieje do innowacji w następnych architekturach bezserwerowych dla obciążeń AI. Podczas gdy LLM będą nadal rosły w rozmiarze i popularności, rozwiązania, takie jak ServerlessLLM, które odblokowują ich skalowalność, staną się jeszcze bardziej wpływowe. Zbieżność badań systemowych i maszynowych może wprowadzić nowe paradygmaty w obsłudze, udostępnianiu i skalowaniu modeli AI w sposób bezpieczny i zrównoważony.

Spędziłem ostatnie pięć lat, zanurzając się w fascynującym świecie Machine Learning i Deep Learning. Moja pasja i ekspertyza doprowadziły mnie do udziału w ponad 50 różnych projektach inżynierii oprogramowania, ze szczególnym uwzględnieniem AI/ML. Moja nieustanna ciekawość również skierowała mnie w stronę Natural Language Processing, dziedziny, którą chcę bardziej zbadać.