Przeprowadziłem benchmark Speculative Decoding — a = 3,5 to było za mało

Speculative Decoding (SD) opiera się na prostej regule matematycznej: a > 1 + α + β

Długość akceptacji (a) musi być większa niż 1 plus współczynnik obliczeniowy (α) i narzut weryfikacji (β). Jeśli tak się stanie, SD wygrywa. W przeciwnym razie przegrywa.

Przetestowałem tę teorię na prawdziwym sprzęcie. Użyłem procesora Intel 12. generacji z 64 GB pamięci RAM. Połączyłem mały model draftowy Qwen2.5-0.5B z większym modelem docelowym Qwen2.5-1.5B.

Wyniki były zaskakujące. SD było o 49% do 62% wolniejsze niż surowa generacja.

Oto jak długość akceptacji (a) różniła się w zależności od zadania:

• JSON (strukturyzowany): a = 3,50. Model draftowy dobrze przewidywał format. • Kod (półstrukturyzowany): a = 3,00. Dobrze, ale wzorce nazewnictwa były zróżnicowane. • Opowiadanie (kreatywne): a = 2,11. Model draftowy miał trudności z doborem słów.

Nawet gdy „a” było wysokie, SD zawiodło na CPU. Dlaczego?

Największym problemem był współczynnik zerowej akceptacji (zero-accept rate). Między 15% a 30% rund akceptowało zero tokenów.

W tych rundach model draftowy pracuje, model docelowy weryfikuje, a Ty nie otrzymujesz nic nowego. Zapłaciłeś za dwa przebiegi, aby uzyskać jeden token. To sprawia, że SD kosztuje dwa razy więcej przy tym samym wyniku.

To podkreśla, dlaczego SD jest optymalizacją pod GPU.

Na GPU model draftowy jest niemal darmowy. Współczynnik obliczeniowy (α) jest minimalny. Na CPU model draftowy konkuruje o przepustowość pamięci. Nie jest darmowy. Nierówność załamuje się na CPU.

Jeśli używasz SD na CPU, nie rób tego. Liczby się nie zgadzają.

Kluczowe wnioski dla Twoich wdrożeń:

  • Zmierz własną wartość „a”. Nie ufaj zapewnieniom dostawców.
  • Podziel dane według typu zadania. Kod i czat mają różne współczynniki akceptacji.
  • Monitoruj współczynnik zerowej akceptacji. Duża wariancja niszczy Twoje opóźnienie p99.
  • Używaj SD na GPU, gdzie koszt modelu draftowego jest minimalny.

Najlepszą optymalizacją jest wiedza o tym, kiedy je wyłączyć.

Źródło: https://dev.to/zxpmail/i-benchmarked-speculative-decoding-a-35-wasnt-enough-1geb

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi