Актуальні теми
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Ви проходите співбесіду на посаду AI Engineer в OpenAI.
Інтерв'юер запитує:
"Наша модель GPT генерує 100 токенів за 42 секунди.
Як зробити його у 5 разів швидшим?»
Ви: «Я виділятиму більше GPU для швидшої генерації.»
Інтерв'ю закінчено.
Ось що ви пропустили:
Справжнє вузьке місце — це не обчислення, а надлишкові обчислення.
Без кешування KV ваша модель перераховує ключі та значення для кожного токена, повторюючи роботу.
- з кешуванням KV → 9 секунд
- без кешування KV → 42 секунди (~5 разів повільніше)
Давайте розглянемо, як це працює!
Щоб зрозуміти кешування KV, ми повинні знати, як LLM виводять токени.
- Transformer виробляє приховані стани для всіх токенів.
- Приховані стани проектуються на словниковий простір.
- Логіти останнього токена використовуються для генерації наступного токена.
- Повторіть для наступних токенів.
Перевірте це👇
Таким чином, для генерації нового токена нам потрібен лише прихований стан останнього токена.
Жодні інші приховані стани не потрібні.
Далі давайте подивимося, як обчислюється останній прихований стан в шарі трансформатора з механізму уваги.
Під час уваги:
Останній рядок query-key-product включає:
- останній вектор запиту.
- всі ключові вектори.
Також останній ряд підсумкового результату уваги включає:
- останній вектор запиту.
- всі вектори key & value.
Перегляньте це зображення, щоб краще зрозуміти:
Наведений вище висновок свідчить про те, що для генерації нового токена кожна увага в мережі потребує лише:
- вектор запиту останнього токена.
- всі вектори key & value.
Але тут є ще один ключовий інсайт.
Як ми генеруємо нові токени:
- Вектори KV, які використовувалися для ВСІХ попередніх токенів, не змінюються.
Таким чином, нам просто потрібно згенерувати вектор KV для токена, згенерованого за крок до цього.
Решта векторів KV можуть бути отримані з кешу для економії обчислень і часу.
Це називається кешуванням KV!
Повторюся, замість зайвого обчислення векторів KV всіх контекстних токенів, кешуйте їх.
Щоб згенерувати токен:
- Згенеруйте вектор QKV для токена, згенерованого за крок до цього.
- Отримати всі інші вектори KV з кешу.
- Обчислити увагу.
Перевірте це👇
Кешування KV прискорює виведення шляхом обчислення KV-кешу запиту перед генерацією токенів.
Саме тому ChatGPT генерує перший токен довше, ніж інші.
Ця затримка відома як time-to-first-token (TTFT).
Покращення TTFT — це тема для іншого дня!
180
Найкращі
Рейтинг
Вибране
