Без втрат, але не безкоштовно: коли 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 робить вашу систему повільнішою.

Як вирішити, чи варто це використовувати:

  1. Виміряйте свій рівень прийняття (acceptance rate). Не довіряйте загальним бенчмаркам. Використовуйте власні дані та завдання.
  2. Перевірте тип вашого завдання. Використовуйте цей метод для передбачуваних завдань, таких як доповнення коду. Уникайте його для непередбачуваних завдань, як-от творче письмо.
  3. Моніторте свою затримку p99. Повний промах викликає стрибок затримки.

Найкраща оптимізація — це не та, що завжди перемагає. Це та, для якої ви знаєте, коли її потрібно вимкнути.

Використовуйте його, коли рівень успіху (hit rate) високий. Припиняйте використання, коли він різко падає.

Джерело: https://dev.to/zxpmail/lossless-but-not-free-the-lossless-but-not-free-when-speculative-decoding-actually-pays-off-1c2g

Додаткова спільнота для навчання: https://t.me/GyaanSetuAi