Без втрат, але не безкоштовно: коли Speculative Decoding працює
Speculative Decoding — це гаряча тема в інференсі LLM.
Такі компанії, як DSpark, заявляють про прискорення від 60% до 85%. Google також публікує дослідження щодо цього методу.
Концепція проста: невелика модель-чернетка (draft model) генерує токени. Велика цільова модель (target model) перевіряє їх за один прохід. Це прискорює генерацію.
Але як інженер, ви повинні поставити два запитання:
- Чи збільшує це кількість галюцинацій?
- Чи не витрачає додаткова модель обчислювальні ресурси даремно?
Давайте поглянемо на факти.
По-перше, якість не втрачається. Цільова модель перевіряє кожен токен. Якщо модель-чернетка припускається помилки на третьому токені, цільова модель відхиляє його і починає регенерацію з цієї точки. Результат математично ідентичний тому, що видала б лише цільова модель. Це не посилює галюцинації.
По-друге, ціна є реальною. Запуск маленької моделі коштує набагато дешевше, ніж великої. Модель 7B може коштувати 1/10 від вартості моделі 70B.
Speculative Decoding — це ставка.
- У разі повного успіху (hit) ви економите величезні обчислювальні ресурси.
- У разі повного промаху (miss) ви програєте. Ви запускаєте модель-чернетку плюс додаткові кроки цільової моделі. Це повільніше, ніж стандартний інференс.
Щоб виграти, ви повинні дотримуватися цього правила: Середня кількість прийнятих токенів має бути більшою за 1 плюс накладні витрати на модель-чернетку.
Якщо ваша модель-чернетка погано справляється з конкретним завданням, рівень прийняття (acceptance rate) падає. Якщо він стає занадто низьким, Speculative Decoding робить вашу систему повільнішою.
Як вирішити, чи варто це використовувати:
- Виміряйте свій рівень прийняття (acceptance rate). Не довіряйте загальним бенчмаркам. Використовуйте власні дані та завдання.
- Перевірте тип вашого завдання. Використовуйте цей метод для передбачуваних завдань, таких як доповнення коду. Уникайте його для непередбачуваних завдань, як-от творче письмо.
- Моніторте свою затримку p99. Повний промах викликає стрибок затримки.
Найкраща оптимізація — це не та, що завжди перемагає. Це та, для якої ви знаєте, коли її потрібно вимкнути.
Використовуйте його, коли рівень успіху (hit rate) високий. Припиняйте використання, коли він різко падає.
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi