engineeringupdate

Przeszliśmy na Groq i transkrypcja przyspieszyła 10-krotnie

164x szybkość w czasie rzeczywistym. 10-minutowy film transkrybowany w 3,7 sekundy. Oto co się zmieniło i dlaczego to ma znaczenie.

Kevin Li

Kevin Li

20 lutego 20263 min czytania
Przeszliśmy na Groq i transkrypcja przyspieszyła 10-krotnie

W zeszłym tygodniu przełączyliśmy się na nowy backend transkrypcji. Jeśli ostatnio przetworzyłeś film, prawdopodobnie to zauważyłeś — teraz jest szybko. Naprawdę zauważalnie szybko.

Oto co się stało.

Poprzednia sytuacja

Od startu używaliśmy Whisper Large V3 na instancjach GPU. Konfiguracja działała dobrze. 5-minutowy film zajmował około 20–30 sekund transkrypcji, w zależności od obciążenia serwera. Nie źle, nie super.

Problem było skalowanie. Instancje GPU są drogie, a nasza kolejka zapychała się w godzinach szczytu. Użytkownicy wgrywali film i czekali 45 sekund do minuty tylko na transkrypcję. Dla narzędzia, którego cała propozycja wartości to „szybkie napisy", to oczekiwanie zaczynało podkopywać doświadczenie.

Zbadaliśmy kilka opcji: więcej instancji GPU (drogie), mniejsze modele (gorsza dokładność), optymalizacje batchowania (marginalne zyski). Żadna nie wydawała się właściwa.

Opcja Groq

Potem przetestowaliśmy wnioskowanie LPU (Language Processing Unit) Groqa dla Whisper. Pierwsze wyniki benchmarku sprawiły, że odświeżyłem stronę, bo myślałem, że timer się popsuł.

10-minutowy film. Transkrybowany w 3,7 sekundy. To 164x szybkość w czasie rzeczywistym.

Uruchomiłem ponownie. Ten sam wynik. Uruchomiłem na 30-minutowym odcinku podcastu. 11 sekund.

Dokładność była identyczna — to ten sam model Whisper Large V3, tylko działający na innym sprzęcie. Taki sam 8,4% wskaźnik błędów słownych, takie samo wsparcie językowe, takie same znaczniki czasowe na poziomie słowa. Jedyną różnicą jest szybkość.

Co to oznacza dla użytkowników

Szybsze przetwarzanie. Transkrypcja była wąskim gardłem. Teraz renderowanie jest wąskim gardłem (a renderowanie było już szybkie). Czas przetwarzania od początku do końca dla typowego 3-minutowego TikToka spadł z ~45 sekund do ~15 sekund.

Koniec czekania w kolejce. Ponieważ każda transkrypcja jest tak szybka, kolejka praktycznie nigdy się nie zapycha. Wydajność w godzinach szczytu jest teraz taka sama jak poza szczytem.

Lepsze znaczniki czasowe słów. To nas zaskoczyło. Implementacja Groqa zwraca nieco precyzyjniejsze znaczniki czasowe na poziomie słowa niż nasza poprzednia konfiguracja. Mówimy o ulepszeniach na poziomie milisekund, ale to sprawia, że animacje napisów są zauważalnie płynniejsze — słowa pojawiają się dokładnie w momencie, gdy są wypowiadane, nie 50ms za wcześnie ani za późno.

Migracja

Przełączanie było stosunkowo bezbolesne. Nasz worker transkrypcji już abstrakcjonalizował API Whisper za interfejsem, więc zamiana backendu była głównie zmianą konfiguracji. Trudną częścią było obsłużenie różnic w formacie odpowiedzi i upewnienie się, że nasze normalizowanie znaczników czasowych działa poprawnie z wyjściem Groqa.

Uruchamialiśmy oba backendy równolegle przez tydzień, porównując wyjścia obok siebie. Dokładność mieściła się w marginesie błędu (czasem Groq był nieco lepszy, czasem nasza stara konfiguracja, nigdy nie było znaczącej różnicy). Szybkość była konsekwentnie 8–12x szybsza.

Jedna rzecz, którą zmieniliśmy: ponieważ transkrypcja jest teraz tak szybka, usunęliśmy polling postępu dla etapu transkrypcji. Wcześniej pokazywał „Transkrybuję... 40%... 60%..." — ale teraz przechodzi od „Transkrybuję" do „Gotowe" tak szybko, że pasek postępu tylko migał. Uprościliśmy do jednego stanu „Przetwarzanie", który obejmuje zarówno transkrypcję, jak i renderowanie.

Kwestia kosztów

Groq jest właściwie tańszy za minutę audio niż uruchamianie własnych instancji GPU. Nie podam dokładnych liczb, ale redukcja kosztów była wystarczająco znacząca, żebyśmy reinwestowali oszczędności w pojemność renderowania. Teraz uruchamiamy więcej równoległych workerów renderowania, co dodatkowo skraca czasy oczekiwania.

99 języków, wykrywanych automatycznie

Jeszcze jedna rzecz, którą włączyliśmy przy tej migracji: automatyczne wykrywanie języka spośród wszystkich 99 języków obsługiwanych przez Whisper. Wcześniej mieliśmy selektor języka, który domyślnie był ustawiony na angielski i wymagał ręcznego przełączania. Teraz model wykrywa język automatycznie.

To ma większe znaczenie niż mogłoby się wydawać. Wielu naszych użytkowników tworzy treści w wielu językach lub ma filmy z mieszanym audio w różnych językach. Wyeliminowanie ręcznego wyboru języka usuwa jeszcze jeden punkt tarcia.

Nowy backend transkrypcji jest aktywny dla wszystkich użytkowników. Jeśli przetworzysz film dzisiaj, już jesteś na Groqu. Daj nam znać, czy zauważasz różnicę w szybkości — my na pewno ją zauważyliśmy.

Gotowy, żeby Twoje napisy się wyróżniały?

Zacznij za darmo — bez karty kredytowej, bez zobowiązań. Sprawdź jakość samodzielnie.