Обновить
4K+
31

ML engineer

7,7
Рейтинг
15
Подписчики
Отправить сообщение

Cached input растёт квадратично

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7K

Единственная причина, по которой современные авторегрессионные трансформеры вообще пригодны для инференса — это использование KV кэша, без которого каждый следующий токен требовал бы O(\mathrm{context\_size})^2операций для вычисления всех попарных произведений между векторами ключей и запросов. KV кэш позволяет обменивать память на скорость, в результате чего лимитирующим фактором в инференсе становится пропускная способность памяти, и очередной токен вычисляется за линейное время.

Сейчас узнаем что из этого следует.

Читать далее

Ropes — быстрые строки

Время на прочтение5 мин
Охват и читатели29K
Здравствуй, Хабр.
Большинство из нас так или иначе работает со строками. Этого не избежать — если ты пишешь код, ты обречен каждый день складывать строки, разбивать их на составные части и обращаться к отдельным символам по индексу. Мы давно привыкли что строки — это массивы символов фиксированной длины, а это влечет за собой соответствующие ограничения в работе с ними.
Так, мы не можем быстро объединить две строки — для этого нам потребуется сначала выделить необходимое количество памяти, а потом скопировать туда данные из конкатенируемых строк. Очевидно, что такая операция имеет сложность порядка О(n), где n — суммарная длина строк.
Именно поэтому код

string s = "";
for (int i = 0; i < 100000; i++) s += "a";

работает так медленно.

Хочешь выполнять конкатенацию гигантских строк быстро? Не нравится, что строка требует для хранения непрерывную область памяти? Надоело использовать буферы для построения строк?

Хватит это терпеть!

Trie, или нагруженное дерево

Время на прочтение4 мин
Охват и читатели107K
Здравствуй, Хабрахабр. Сегодня я хочу рассказать о такой замечательной структуре данных как словарь на нагруженном дереве, известной также как префиксное дерево, или trie.

Что это ?


Нагруженное дерево — структура данных реализующая интерфейс ассоциативного массива, то есть позволяющая хранить пары «ключ-значение». Сразу следует оговорится, что в большинстве случаев ключами выступают строки, однако в качестве ключей можно использовать любые типы данных, представимые как последовательность байт (то есть вообще любые).
Читать дальше →

Информация

В рейтинге
903-й
Зарегистрирован
Активность