Przejdź do treści

Ile faktycznie kosztują tokeny LLM i jak zapłacić za ich mniejszą liczbę

Blog / Opublikowany 

Każdy rachunek za API za model językowy jest rachunkiem za tokeny i prawie nikt nie ma przeczucia, ile tokenów ma dany fragment tekstu. Rezultatem jest ta sama niespodzianka dwa razy w miesiącu: funkcja, która w testach wydawała się tania, kosztuje czterdzieści razy więcej w produkcji lub okno kontekstowe, które „powinno pasować”, odrzuca żądanie. Obydwa są problemami arytmetycznymi i arytmetyki warto się nauczyć raz.

Token to nie słowo

Modele nie czytają znaków ani słów. Odczytują tokeny — fragmenty utworzone przez koder składający się z par bajtów, który podczas szkolenia nauczył się, które sekwencje występują na tyle często, że zasługują na własny symbol. Popularne angielskie słowa to jeden z symboli. Rzadkie rozdzielają się. Więc token jest jeden i tokenization wynosi trzy, podczas gdy losowy ciąg znaków x7Qp2 może kosztować pięć.

Praktyczne zasady, które warto mieć przy sobie:

Praktyczne zasady służą do szacowania. Kiedy ma to znaczenie, policz: Kalkulator tokenów i kosztów LLM tokenizuje to, co wklejasz i wypisuje liczbę, a także może wyświetlać tekst z zaznaczonymi granicami tokenów, co jest najszybszym sposobem zrozumienia, dlaczego jedno z Twoich podpowiedzi jest nieoczekiwanie drogie. Widok własnych nazw identyfikacyjnych rozpadających się na cztery części, z których każda wiele wyjaśnia.

Produkcja kosztuje kilka razy więcej niż nakład

Szczegóły dotyczące cen, które ludzie przegapiają: dostawcy pobierają osobno opłaty za wysyłane przez Ciebie tokeny i tokeny generowane przez model, a wynik jest zazwyczaj cztery do ośmiu razy większy od stawki wejściowej. Podpowiedź zawierająca 10 000 tokenów kontekstu i 200 tokenów odpowiedzi jest zdominowana przez dane wejściowe. Podpowiedź zawierająca 500 tokenów instrukcji, w wyniku której powstaje esej na 4000 tokenów, jest zdominowana – w dużej mierze – przez wynik.

To odwraca wiele instynktów optymalizacyjnych. Obcięcie monitu systemowego z 900 do 600 tokenów pozwala zaoszczędzić bardzo niewiele, jeśli model zapisuje długie odpowiedzi przy każdym połączeniu. Nakazanie modelowi, aby odpowiedział w trzech zdaniach zamiast w trzech akapitach, pozwala zaoszczędzić dużo. Zanim zoptymalizujesz niewłaściwą stronę transakcji, zapytaj, na której stronie transakcji faktycznie znajduje się Twoje obciążenie pracą.

Kalkulator wycenia ten sam tekst w odniesieniu do każdego modelu w swojej tabeli, zarówno przy współczynniku wejściowym, jak i wyjściowym, dzięki czemu można porównać tani model wykonujący całość z drogim modelem wykonującym jego część. Ceny referencyjne są przechowywane lokalnie i okresowo sprawdzane na stronach dostawców — traktuj je jako pomoc w planowaniu i sprawdzaj na własnej stronie cenowej dostawcy, zanim zatwierdzisz budżet, ponieważ stawki się zmieniają.

Czat jest kwadratowy i na tym właśnie kończą się budżety

Jednorazowe wywołanie API kosztuje tyle, ile kosztuje. Rozmowa przesyła całą historię na nowo w każdej turze, więc rozmowa trwająca dwadzieścia tur nie kosztuje dwudziestokrotności jednej tury — kosztuje mniej więcej sumę rosnącej serii. Obrót dwudziesty płaci za tury od pierwszego do dziewiętnastego ponownie.

Dwie konsekwencje. Po pierwsze, długotrwałe pętle agentów są najdroższą formą zastosowania LLM i najprawdopodobniej będą prototypowane bez pomiarów. Po drugie, szybkie buforowanie ma większe znaczenie niż jakakolwiek zmiana sformułowania: dostawcy rabatują tokeny, które powtarzają przedrostek, który już widzieli, co oznacza umieszczenie stabilnej treści – podpowiedzi systemowej, schematu, przykładów – na samym początku, a części zmiennej na końcu. Zmień kolejność tego samego monitu, tak aby zmieniający się znacznik czasu znajdował się na górze, a pamięć podręczna została unieważniona przy każdym połączeniu, nie zmieniając niczego innego.

Zmniejszanie monitu przed jego wysłaniem

Większość zbyt dużych podpowiedzi jest zbyt dużych z nudnych powodów: ktoś wkleił cały plik, gdy istotne były trzy funkcje, a plik zawiera połowę komentarzy i puste wiersze. The Kompresor kontekstu LLM celuje dokładnie w to — usuwa komentarze do kodu, zwija ciągi pustych linii, wcina i usuwa wyrazy wypełniające z prozy, a następnie raportuje, ile tokenów zaoszczędziło przycięcie. Na prawdziwym pliku źródłowym, który rutynowo uruchamia się w 20–40%, nie dotykając niczego, czego potrzebuje model.

Ręczne cięcia, które warto wykonać wcześniej:

  1. Wysyłaj fragmenty, a nie pliki. Uwaga modelki też nie jest darmowa; nieistotny kontekst w wymierny sposób pogarsza odpowiedzi i kosztuje.
  2. Usuń dzienniki z uszkodzonego regionu. Dziesięć tysięcy wierszy udanego uruchomienia nie wnosi nic do diagnozy.
  3. Porzuć powtarzający się schemat. Nagłówki licencji, wygenerowane importy, to samo zastrzeżenie w każdym rekordzie.
  4. Podsumuj zamiast wysyłać ponownie. W długiej rozmowie zastąpienie obrotów od pierwszego do piętnastego akapitem stanu to największa dostępna oszczędność.

Kiedy dane wejściowe naprawdę nie pasują

Okna kontekstowe są teraz duże, ale „duże” jest nadal ograniczone, a książka, rok dzienników lub pełny transkrypcja przekroczy jeden. Dzielenie to standardowa odpowiedź, a miejsce podziału ma znaczenie: przecięcie w połowie zdania lub w połowie funkcji tworzy fragmenty, które model musi odgadnąć. The szybki rozdzielacz dzieli tekst na fragmenty o wybranym przez Ciebie rozmiarze, przestrzegając granic, i numeruje części, dzięki czemu można je podawać sekwencyjnie, dołączając do każdej spójne instrukcje.

Uwaga dotycząca jednostek: tokeny nie są bajtami. The Licznik bajtów UTF-8 odpowiada na inne pytanie — ile miejsca zajmuje tekst w sieci lub w kolumnie bazy danych — a te dwie liczby znacznie się od siebie różnią w przypadku tekstu innego niż łaciński, gdzie liczba bajtów na znak rośnie w tym samym czasie, gdy liczba znaków na token maleje. Używaj bajtów jako limitów przechowywania i tokenów jako limitów modelu i nigdy nie zastępuj jednego drugim.

Sprawdzony przykład

Załóżmy, że odpowiadasz na dwadzieścia pytań w trzydziestostronicowym dokumencie. Trzydzieści stron to około 15 000 słów, czyli około 20 000 tokenów. Naiwnie, z każdym pytaniem wysyłasz dokument: 20 × 20 000 = 400 000 tokenów wejściowych plus może 20 × 300 tokenów wyjściowych.

Umieść dokument na pierwszym miejscu i zachowaj identyczność bajtów we wszystkich połączeniach, a większość dostawców obsługuje powtarzany prefiks z pamięci podręcznej za ułamek stawki. Najpierw przytnij dokument z płyty kotłowej, a podstawa również się skurczy. Grupuj po pięć pytań na rozmowę zamiast jednego i wysyłaj dokument cztery razy zamiast dwudziestu. To samo zadanie, ten sam model i rząd wielkości pomiędzy wersją nieostrożną a wersją ostrożną – na tym właśnie polega liczenie przed wysłaniem.

Zarówno licznik, jak i kompresor działają całkowicie w przeglądarce: monit o wycenę nie jest nigdzie przesyłany w celu dokonania pomiaru.

Napisane przez Ján Turský

Twórca TextArray — tworzenia bezpłatnych narzędzi zapewniających prywatność, które działają całkowicie w przeglądarce.