Актуальные темы
#
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.
Вы на интервью на должность научного сотрудника в OpenAI.
Интервьюер спрашивает:
"Как бы вы увеличили длину контекста LLM с 2K до 128K токенов?"
Вы: "Я дообучу модель на более длинных документах с контекстом 128K"
Интервью завершено.
Вот что вы пропустили:
Расширение контекстного окна — это не просто увеличение матриц.
В традиционном трансформере увеличение токенов в 8 раз увеличивает потребности в памяти в 64 раза из-за квадратичной сложности внимания. Смотрите изображение ниже!
Итак, как мы это управляем?
продолжайте...👇

1) Разреженное внимание
Оно ограничивает вычисление внимания подмножеством токенов следующим образом:
- Используя локальное внимание (токены обращают внимание только на своих соседей).
- Позволяя модели учиться, на каких токенах сосредоточиться.
Но это имеет компромисс между вычислительной сложностью и производительностью.

Похожая идея была использована в ModernBERT.
→ Полное глобальное внимание на каждом 3-м слое
→ Локальное внимание (128 токенов) в остальных случаях
Результат:
- Длина последовательности в 16 раз больше
- Гораздо лучшая производительность
- Наиболее эффективный по памяти кодировщик
Просто, но мощно. 👇
Вот интуитивное объяснение, взятое из статьи:
Представьте, что вы читаете книгу. Для того чтобы понять большинство предложений, нужно ли вам полностью осознавать весь сюжет (полное глобальное внимание)?
Или достаточно осознания текущей главы (локальное внимание), если вы время от времени вспоминаете о ее значении для основного сюжета (глобальное внимание)?
В подавляющем большинстве случаев это второе.
2) Flash Attention
Это быстрый и экономичный по памяти метод, который сохраняет точность традиционных механизмов внимания, т.е. он использует глобальное внимание, но эффективно.
Вся идея заключается в оптимизации перемещения данных внутри памяти GPU.
Давайте разберемся!

Некоторые справочные данные:
- Поток — это наименьшая единица выполнения.
- Несколько потоков образуют блок.
Также:
- Потоки в блоке делят быструю (но ограниченную) память, называемую SRAM.
- Все блоки делят глобальную память, называемую HBM (обильная, но медленная).
Проверьте это 👇

Внимание перемещает большие матрицы между SRAM и HBM:
Чтобы вычислить QK:
- распределить матрицы по потокам
- вычислить и
- отправить произведение в HBM
Чтобы вычислить softmax:
- распределить произведение по потокам
- вычислить и
- отправить выходные данные в HBM
Повторить для всех слоев.
Проверьте это 👇

Flash attention включает в себя оптимизации на уровне аппаратного обеспечения, при которых используется SRAM для кэширования промежуточных результатов.
Таким образом, он уменьшает избыточные перемещения, обеспечивая ускорение до 7.6x по сравнению со стандартными методами внимания.
Проверьте это 👇

98,93K
Топ
Рейтинг
Избранное