Bегите локальный LLM Inference в 10 раз быстрее (244 TOK/s) PyTorch II

Ускорьте локальный вывод LLM в 10 раз (244 TOK/s) с помощью PyTorch II

Есть много способов запуска, вот краткий обзор

TLDR:

Команда Pytorch придумала способ оптимизации путем построения оптимизаций с нуля

Все это удалось реализовать в рамках 1000 строк кода.

Вот сравнение производительности

Теперь давайте рассмотрим это по порядку!

Ваниль (25 токенов/с)

Это производительность LLaMA-7b.

Первое увеличение в 3 раза с помощью нового компилятора и умного распределения (76 TOK/S)

Используя LLaMA-7B, Pytorch проанализировал проблемы производительности, связанные с нагрузкой на ЦП. Это означает, что первая цель – увеличить эффективность, снижая накладные расходы..

Вводится компилятор. Компилируя более крупные области в состояние предварительной компиляции, количество вызовов ЦП на операцию уменьшается. Это означает, что этот обертыватель теперь может функционировать без пробелов, как видно ниже.

Чтобы использовать его, просто используйте следующий код

torch.compile(decode_one_token, mode="reduce-overhead", fullgraph=True)

Что происходит под капотом?

Во-первых, когда генерируется больше токенов, кеш kv растет, требуется перевыделение и копирование (дорогостоящие вычисления) каждый раз, когда кеш увеличивается. Pytorch реализовал увеличенный размер кеша, чтобы достичь максимального размера.

Во-вторых, требуются две стратегии для отдельной компиляции во время фазы предварительного заполнения. Вся подсказка обрабатывается динамически, и токены декодируются, как показано в коде выше. Удерживание этих стратегий параллельно позволяет дальнейшую оптимизацию. Используя только эти две стратегии, можно достичь повышения производительности в 4 раза для вывода.

Увеличьте производительность еще на 34%, выполнив…