BlogKoszty
Kierowanie zapytań do tańszych modeli bez ukrywania spadków jakości
Router, który wysyła proste zapytania do tańszego modelu, jest klasyfikatorem i popełnia dwa rodzaje błędów: trudne zapytania trafiają do taniego modelu, co kosztuje jakość, a proste do drogiego, co kosztuje pieniądze. Wiesz, czy routing działa, gdy zmierzysz oba błędy na oznaczonej próbce przed startem i mierzysz je dalej dla każdego poziomu modeli. Fallbacki na wypadek awarii to osobny mechanizm i wymagają osobnego testu, bo mogą po cichu kierować ruch do modelu, którego nikt nie ocenił.
Dwa błędy routingu o różnych kosztach
Zbyt niski routing wysyła zapytanie, które potrzebowało mocnego modelu, do taniego. Użytkownik dostaje gorszą odpowiedź, a w panelu kosztów nic tego nie pokazuje. Zbyt wysoki routing wysyła proste zapytanie do mocnego modelu. Odpowiedź jest w porządku, a oszczędność mniejsza, niż mogłaby być. Większość projektów routingu raportuje tylko drugi błąd, bo tylko jego widać na fakturze.
Oba błędy są ze sobą powiązane przez próg routera, więc przed strojeniem zdecyduj, który możesz tolerować. W asystencie programisty słaba odpowiedź kosztuje inżyniera kilka minut. W piśmie dotyczącym szkody może kosztować reklamację.
Zbuduj test akceptacyjny, zanim cokolwiek włączysz
Weź niedawną próbkę prawdziwych zapytań i przepuść każde przez oba modele. Eksperci albo model oceniający, którego oceny sprawdziłeś względem ekspertów, niech oznaczą każdą odpowiedź każdego modelu jako akceptowalną lub nie, według wzorca albo własnej oceny. Nie zakładaj, że mocny model zawsze ma rację: zapytania, w których żadna odpowiedź nie jest akceptowalna, to problem promptu lub zadania i nie powinny trafiać do liczb routingu. Potem uruchom router na tej samej próbce. Hipotetyczny wynik dla 1000 zapytań, w których mocna odpowiedź była akceptowalna zawsze, a tania w 700 przypadkach:
- Do taniego modelu i akceptowalne: 610
- Do taniego modelu, ale nieakceptowalne, czyli zbyt nisko: 40
- Do mocnego modelu, choć tani by wystarczył, czyli zbyt wysoko: 90
- Do mocnego modelu i słusznie: 260
Załóżmy, że tani model kosztuje jedną dziesiątą na zapytanie, a koszt samego routera pomijamy. Wysłanie wszystkiego do mocnego modelu kosztuje 1000 jednostek, ten routing 415, ale 4 procent użytkowników dostaje gorszą odpowiedź. Jeśli uzgodniony limit to 1 procent, podnieś próg, traktując tę próbkę jako zbiór kalibracyjny. Załóżmy, że nowy próg wysyła 560 zapytań do taniego modelu, z czego 9 zbyt nisko, za 496 jednostek. Potem potwierdź wynik na osobnej odłożonej próbce, której próg nigdy nie widział. Przy małych liczbach podawaj przedział: 9 błędów na 1000 odpowiada prawdziwemu odsetkowi od około 0,5 do 1,7 procent przy 95 procentach ufności, więc do wykazania, że limit jest dotrzymany, może być potrzebna większa próbka końcowa.
Reguły, routery uczone i kaskady
Reguły według funkcji, typu zadania czy klienta najłatwiej skontrolować i mogą dać znaczną część możliwych oszczędności. Routery uczone decydują dla każdego zapytania: RouteLLM trenuje je na danych o preferencjach ludzi i raportuje ponad dwukrotne obniżenie kosztów na niektórych benchmarkach bez spadku jakości odpowiedzi. Kaskady najpierw wywołują tani model i eskalują, gdy test nie przejdzie. FrugalGPT raportuje w ten sposób duże oszczędności, ale eskalowane zapytania płacą za dwa wywołania i czekają na oba, a sam test musi być wiarygodny.
Publikowane oszczędności traktuj jako dowód, że routing może działać, a nie jako prognozę. Pochodzą z ruchu benchmarkowego i różnic cenowych innych niż twoje. Routery mają już też bramki: auto routing w LiteLLM, w chwili pisania w wersji beta, przydziela zapytania do poziomów za pomocą heurystyk, klasyfikatora LLM lub własnej wtyczki. Cokolwiek wybierzesz, przechodzi ten sam test akceptacyjny.
Fallbacki chronią dostępność, a nie jakość
Fallback uruchamia się przy błędach. W LiteLLM wywołanie, które po ponowieniach nadal się nie udaje, przechodzi do następnej grupy modeli z uporządkowanej listy, a osobne listy mogą obsłużyć błędy okna kontekstu i polityki treści. Nic z tego nie sprawdza odpowiedzi. Jeśli celem fallbacku jest model, którego twój test akceptacyjny nigdy nie objął, awaria zamienia się w nieprzetestowaną zmianę jakości. LiteLLM ostrzega też, że fallback do innego dostawcy nie odczyta zaszyfrowanego rozumowania z wcześniejszych tur.
Przepuść każdy cel fallbacku przez test akceptacyjny i przećwicz przełączenie w środowisku nieprodukcyjnym, wywołując prawdziwy błąd dostawcy, jak zaleca dokumentacja LiteLLM.
Jak zauważyć, że routing zawodzi na produkcji
Zacznij od zapisywania, który model naprawdę odpowiedział. Przy auto routingu w LiteLLM treść odpowiedzi zachowuje alias, który wywołał klient, a model obsługujący zapytanie jest podany w nagłówku x-litellm-model-id, więc go zapisuj. Logi wydatków zapisują też dla każdego zapytania attempted_fallbacks i original_model_group, co oddziela ruch z fallbacku od ruchu z routingu. Potem obserwuj te sygnały dla każdego poziomu:
- Niewielka próbka zapytań z taniego poziomu wysyłana dodatkowo do mocnego modelu i porównywana, żeby zbyt niski routing mierzyć, a nie zgadywać
- Użytkownicy ponawiający lub przeformułowujący pytanie tuż po odpowiedzi z taniego poziomu
- Udział ruchu na każdym poziomie, który dryfuje, gdy zmienia się mieszanka zapytań lub dane wejściowe routera
- Odsetek fallbacków dla każdego dostawcy, liczony osobno od decyzji routingu
Pytania
Ile możemy zaoszczędzić na routingu?
To zależy od tego, jaką część twoich zapytań tani model obsługuje akceptowalnie, i od różnicy cen między poziomami. Oba wskaźniki da ci test akceptacyjny. Oszczędności raportowane w badaniach pochodzą z ruchu benchmarkowego i nie są prognozą dla twojego obciążenia.
Kiedy powtarzać test akceptacyjny routingu?
Za każdym razem, gdy zmienia się model na którymkolwiek poziomie, prompt, router albo cel fallbacku, a także cyklicznie, nawet gdy nic się nie zmieniło, bo mieszanka zapytań dryfuje. Wersjonuj oznaczoną próbkę, żeby wyniki były porównywalne.
Kto powinien być właścicielem reguł routingu?
Zespół platformowy, który utrzymuje bramkę, przy czym każdy product owner uzgadnia limit jakości dla swojej funkcji. Cloudsail może razem z twoim zespołem platformowym przygotować test akceptacyjny i konfigurację bramki tak, by zespół sam je utrzymywał i zmieniał.
Powiązane usługi
Inżynieria i architektura AI
Asystenci, interfejsy głosowe i agenci w produktach, które sprzedajesz, razem z serwowaniem modeli i wyszukiwaniem pod spodem.
Optymalizacja kosztów LLM
Wydatki na agentów rozbite na zespoły i zadania, a potem obniżone dzięki ustawieniom domyślnym, budżetom i routingowi, które twój zespół platformowy może sam utrzymywać.
Więcej z bloga
Alokacja kosztów LLM
Jak wyjaśnić rachunek za LLM według zespołu, zadania i zaakceptowanego wyniku: oznaczaj zapytania w bramce, wyceniaj je tak, jak wystawiana jest faktura, rozdzielaj koszty wspólne według jawnej reguły i co miesiąc uzgadniaj wynik z finansami.
Zadania dla małych modeli
Jak znaleźć zadania o dużym wolumenie, z którymi mały model językowy poradzi sobie niezawodnie: lista kontrolna, test przed jakimkolwiek treningiem i porównanie kosztów przy twoim wolumenie.
Ocena dostrojonego modelu
Jak wykazać, że dostrojony model powinien zastąpić obecny: kryteria akceptacji spisane z góry, uczciwe porównanie na odłożonych przypadkach oraz koszt i opóźnienie w tej samej tabeli.
Źródła
- Ong i in.: RouteLLM: Learning to Route LLMs with Preference Data
- Chen, Zaharia i Zou: FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance
- Dokumentacja LiteLLM: fallbacki, ponowienia i niezawodność
- Dokumentacja LiteLLM: Auto Routing
- Dokumentacja OpenAI API: Evaluation best practices
Porozmawiaj z inżynierem
Przyjdź z jednym zadaniem, które chcesz usprawnić. Rozmowa trwa 30 minut i nie wymaga dostępu do twoich systemów ani danych.
Rezerwacja odbywa się w Kalendarzu Google.
Wolisz najpierw napisać? Zostaw adres e-mail i kilka zdań, a odpowiemy, proponując terminy.
Sprawdź wersję roboczą w swoim programie pocztowym
Wyślij ją stamtąd, a inżynier odpowie ci osobiście, proponując terminy 30-minutowej rozmowy. Jeśli wersja robocza się nie otworzyła, napisz do nas na adres miki@cloudsail.com.