How is LLaMa.cpp possible?
https://finbarr.ca/how-is-llama-cpp-possible/
Прикольный пост от Finbarr Timbers (рекомендую его Substack). Возможно вам тоже было интересно, как LLaMA может генерировать токены так быстро (~16 tok/sec) на ГПУ внутри одного лептопа, помимо, разумеется, очевидного ответа в виде квантизации и реализации на плюсах
Основной вывод поста – если вам нужно генерировать локально только один стрим токенов для личных нужд, а не обрабатывать кучу параллельных запросов через какой-нибудь LLM Server, гораздо важнее окажется memory bandwith, а не FLOPS
Memory bandwith – это то, насколько быстро мы можем перекладывать веса из RAM на сами ГПУ-чипы. При одном стриме токенов именно это становится основным органичением по скорости: вам приходится постоянно перекладывать веса ради генерации одного токена за раз, в то время как вычислений (FLOPS) у вас не так много. В случае с LLM Server было бы наоброт – тогда можно использовать подгруженные веса для обработки сразу нескольких запросов, utilization был бы выше, но все бы уперлось в то, насколько быстро вы можете проводить вычисления
Собственно, LLaMA.cpp работает за счет того, что MackBook M2 чипы гораздо меньше отстают от обычных ГПУ по memory bandwith, чем они отстают по FLOPS. Например, автор приводит такую статистику:
- A100: 1935 GB/s memory bandwidth, 1248 TOPS
- MacBook M2: 100 GB/s memory bandwidth, 7 TFLOPS
Как видно, по компьюту оставание примерно в 200 раз, а по операциям с памятью только в 20!
Post #972
3.39K

- 🔥 16
- ❤ 3
- 👍 2