(java || kotlin) && devOps
Примеры.
Квантование - т.е. снижение размерности коэффициентов модели и кэша. Чаще используют с коэффициентами модели. Распространённый кейс: использование int4 - 4-битный int вместо 2-байтного float. Это уменьшает размер модели в нашем примере в 160 * 0.5/2 = 40 Гбайт.
По KV кэшу начнём с ленивого выделения памяти для кэша. А это значит в расчетах можно ориентироваться на средний размер контекстного окна, а не максимальный.
По разработке я бы оценил его в 64k. У чата сильно меньше, но мы же оцениваем Qwen Coder.
Итого 100 х (64 / 256) = 25 Гб.
Ещё у Qwen-а есть 2 оптимизации: Grouped Query Attention и гибридная архитектура Attention.
Если вкратце - первая позволяет переиспользовать значения кэша при генерации разных символов, уменьшая требуемый объём памяти в 8 раз для нашего случая.
Вторая - заменяет ряд layers на перезаписываемую матрицу постоянного размера, и как ни странно это не сильно ухудшает качество ответа, но уменьшает число слоев в 4 раза в нашем случае.
Итого получаем 25 Гб / 8 / 4 * 2 ~ 2 Гб.
А в сумме одна сессия Qwen 3 Coder Next - 42 Гб - уже помещается в память ноутбука. Не каждого, да.
Правда эта память медленная, да и CPU не очень подходит для перемножения матриц. Но это уже совсем другая история)
А еще можно квантовать и значения в KV кэше, что в теории уменьшит размер памяти в 2 или 4 раза.
И шарить память между разными видеокарточками на одном сервере по шине NVLink - это называется tensor parallelism.
Если у одной NVidia H100 80 Гб, то у сервера с 8 видеокартами - уже 640 Гб.
Плюс часть данных можно выгружать в ОЗУ и на SSD.
#ai
106 ·