Przeprowadź testy porównawcze punktów końcowych LLM
Ten artykuł zawiera przykład notesu rekomendowanego przez Databricks do testowania porównawczego punktu końcowego LLM. Zawiera również krótkie wprowadzenie do sposobu, w jaki usługa Databricks wykonuje wnioskowanie llM i oblicza opóźnienie i przepływność jako metryki wydajności punktu końcowego.
Wnioskowanie LLM w usłudze Databricks mierzy tokeny na sekundę dla trybu przydzielonej przepustowości dla interfejsów API modelu bazowego. Zobacz Co oznaczają zakresy tokenów na sekundę w aprowizowanej przepustowości?.
przykładowy notes testów porównawczych
Poniższy notes można zaimportować do środowiska usługi Databricks i określić nazwę punktu końcowego LLM, aby uruchomić test obciążeniowy.
Testowanie porównawcze punktu końcowego usługi LLM
notesu
wprowadzenie do wnioskowania LLM
Moduły LLM wykonują wnioskowanie w procesie dwuetapowym:
- wstępne wypełnianiewhere tokeny w wierszu polecenia wejściowego są przetwarzane równolegle.
- Dekodowanie, tekst where jest generowany jeden token jednocześnie w sposób autoregresyjny. Każdy wygenerowany token jest dołączany do danych wejściowych i przekazywany z powrotem do modelu w celu generate wygenerowania następnego tokenu. Generowanie zatrzymuje się, gdy usługa LLM wyprowadza specjalny token zatrzymania lub gdy jest spełniony warunek zdefiniowany przez użytkownika.
Większość aplikacji produkcyjnych ma limit opóźnienia, a usługa Databricks zaleca zmaksymalizowanie przepływności przy uwzględnieniu tego limitu opóźnienia.
- Liczba tokenów wejściowych ma znaczący wpływ na wymaganą pamięć do przetwarzania żądań.
- Liczba tokenów wyjściowych dominuje w ogólnym opóźnieniu odpowiedzi.
Usługa Databricks dzieli wnioskowanie LLM na następujące metryki podrzędne:
- Czas pierwszego tokenu (TTFT): jak szybko użytkownicy zaczynają widzieć dane wyjściowe modelu po wprowadzeniu zapytania. Niskie czasy oczekiwania na odpowiedź są niezbędne w interakcjach w czasie rzeczywistym, ale mniej ważne w obciążeniach w trybie offline. Ta metryka jest napędzana przez czas wymagany do przetworzenia monitu, a następnie generate pierwszego tokenu wyjściowego.
- Czas na token wyjściowy (TPOT): czas generate token wyjściowy dla każdego użytkownika, który wykonuje zapytanie dotyczące systemu. Ta metryka odpowiada temu, jak każdy użytkownik postrzega "szybkość" modelu. Na przykład TPOT 100 milisekund na token oznaczałby 10 tokenów na sekundę lub około 450 słów na minutę, co jest szybsze niż przeciętna osoba potrafi czytać.
Na podstawie tych metryk można zdefiniować łączne opóźnienie i przepływność w następujący sposób:
- opóźnienie = TTFT + (TPOT) * (liczba tokenów do wygenerowania)
- Przepustowość = liczba tokenów wyjściowych na sekundę dla wszystkich jednoczesnych żądań
W usłudze Databricks punkty końcowe obsługujące usługę LLM mogą być skalowane w celu dopasowania obciążenia wysyłanego przez klientów z wieloma współbieżnymi żądaniami. Istnieje kompromis między opóźnieniami a przepływnością. Dzieje się tak, ponieważ w przypadku punktów końcowych obsługujących usługę LLM współbieżne żądania mogą być przetwarzane i przetwarzane w tym samym czasie. Przy niskich obciążeniach żądań współbieżnych opóźnienie jest najmniejsze. Jeśli jednak zwiększysz obciążenie żądania, opóźnienie może wzrosnąć, ale przepływność prawdopodobnie również wzrośnie. Dzieje się tak, ponieważ dwa żądania o wartości tokenów na sekundę mogą być przetwarzane w czasie krótszym niż dwukrotnie.
W związku z tym kontrolowanie liczby żądań równoległych do systemu jest kluczowe dla równoważenia opóźnienia i przepustowości. Jeśli masz przypadek użycia o małych opóźnieniach, chcesz wysłać mniej równoczesnych żądań do punktu końcowego, aby zachować małe opóźnienie. Jeśli masz przypadek użycia o wysokiej przepustowości, chcesz nasycić punkt końcowy wieloma żądaniami jednoczesnymi, ponieważ większa przepustowość jest wartym celem, nawet kosztem opóźnienia.
- Przypadki użycia o dużej przepustowości mogą obejmować wnioskowanie wsadowe i inne zadania niezwiązane z użytkownikiem.
- Przypadki użycia małych opóźnień mogą obejmować aplikacje w czasie rzeczywistym, które wymagają natychmiastowych odpowiedzi.
Narzędzie do testów porównawczych Databricks
Wcześniej udostępniony przykładowy notes testów porównawczych jest narzędziem do testów porównawczych w Databricks. W notesie wyświetlane jest całkowite opóźnienie dla wszystkich żądań i metryk przepustowości oraz przedstawiona jest krzywa zależności przepustowości od opóźnienia przy różnych liczbach równoczesnych żądań. Strategia automatycznego skalowania punktów końcowych usługi Databricks równoważy opóźnienia i przepływność. W notesie zauważysz, że opóźnienie i przepływność zwiększają się, gdy coraz więcej równoczesnych użytkowników wysyła zapytanie do punktu końcowego.
Jednak zaczynasz również widzieć, że wraz ze wzrostem liczby żądań równoległych przepływność zaczyna się plateau, osiągając limit około 8000 tokenów na sekundę. Ten plateau występuje, ponieważ aprowizowana przepływność punktu końcowego ogranicza liczbę procesów roboczych i równoległych żądań, które można wykonać. W miarę jak więcej żądań wykracza poza to, co punkt końcowy może obsłużyć jednocześnie, łączne opóźnienie nadal rośnie wraz z dodatkowymi żądaniami oczekiwania w kolejce.
Więcej szczegółów na temat filozofii usługi Databricks na temat testów porównawczych wydajności llM opisano w LLM Inference Performance Engineering: Best Practices blog.