Как стать автором
Обновить

Комментарии 18

ЗакрепленныеЗакреплённые комментарии

UPD: Более точный калькулятор "Сколько именно памяти нужно под ту или иную модель в той или иной квантизации с учетом контекста" можно найти здесь: https://apxml.com/tools/vram-calculator Его расчеты применимы как для VRAM так и для RAM.

Да, тесты правильные. Макбуков только не хватает, они особняком стоят, там работает быстрее чем на GPU NVidia (если в один GPU не влезает, за счет унифицированной памяти) и потребляет на порядок меньше (та же llama70b 40 ватт, при том что топовая видяха тупо в режиме ожидания столько потребляет).

Да, у Маков унифицированная память, там в принципе, все что влезает в RAM условно можно считать, что влезает в VRAM. Но я сам не работал, поэтому особо врать не хочу на эту тему.

...и еще кофе вам параллельно готовит. Жертвы маркетинга Apple такие жертвы. GPU Nvidia это вы 1050 с 2ГБ видеопамяти имеете в виду? А то я бы взглянул на Макбук, на котором нейронки работают быстрее, чем на rtx 5090, не говоря уже о специализирванных моделях)

При чем тут жертвы? Взгляните, кто не дает??

Наша целевая модель была 70b. Я тут имел ввиду разумеется большие языковые модели.
На двух ксионах gold мы получили 1.4 токена при 400 ваттах потребления.
На сервере с V100 соединенных по NVLink - около 13 токенов при 300 ваттах потребления. На отдельной видяхе, хоть 5090 да хоть 6090, около тех же 1.5 токенов просто потому, что в память не влазит и идет дикая просадка на пересылках.
При чем тест на последнем макбуке с 64 гигами ОЗУ проводил мой друг и бывший коллега - инженер из NVidia, Дон Бриттан, и у него вышло 15 токенов при 40 ваттах потребления ))

Так что обвинять в предвзятости тут не корректно, это вы скорее жертва маркетинга NVidia )

На отдельной видяхе, хоть 5090 да хоть 6090, около тех же 1.5 токенов просто потому, что в память не влазит и идет дикая просадка на пересылках.

Да, кстати, насколько мне известно, оффлоадить часть слоев на GPU есть смысл только если 1-2 слоя не влезает в VRAM (т.е. мало), и то не факт. Чуть больше - и уже смысла нет вообще, все идет по скорости как будто все в RAM и на CPU.

Не буду спорить, по соотношению мощности / производительность mac studio даст очень неплохой результат, но там используется DDR5, хз сколько каналов. Но подозреваю, что пара эпиков и 48 модулей (24 канала) порвут mac studio, при этом стоить будет меньше (на эпиках за бюджет Mac можно поставить около 1тб и это память ECC, не уверен что у мака такая же), но жрать конечно больше будет в разы.

Пара/четверка процессоров (не буду утверждать про случай с эпиками) по моему опыту с ксионами работают примерно также как отдельно взятый процессор в данной задаче, по причине того, что узкое место как раз взаимный доступ к памяти у процессоров друг к другу. И профит там околонулевой.

На счет "порвут" - тоже вопрос, в макстудии же не только CPU но и GPU и нейромодуль.

И по цене - один голый эпик стоит дороже макстудии, если мы про одно и тоже говорим.

Есть эпики 9005 по 10к+, а есть по $500-600 например 9015, мать для них еще $1500-2000 (можно взять платформу за 3000) в зависимости от производителя, 48* 16Gb ECC (768 гб) * 120 = $5760 округлим до 6000
по кругу $9000

Mac studio c 512гб - $13 000+

Основная проблема Mac studio это ограничения по памяти, даже если очень захотеть большие модели туда придется ужимать до int4.
той же R1 int8 с учетом активных тензоров потребуется минимум 1,1- 1,2 но лучше 1,5 тб

Попробуйте, потом расскажете, на сколько они шустрые.

Стоило бы уточнить, что подразумевается под локальной системой. Старый xeon и ddr3 или пара эпиков 9005 и 48 модулей памяти DDR5-6000? Думаю на эпиках скорость 700B будет не менее 10 токенов (скорее даже больше, нет пока возможности проверить).

По поводу объема необходимого для размещения, вы ничего не забыли или активные тензоры будем с диска подкачивать?) Ну хотя бы kv-кеш можно в памяти хранить)?
Итого накидываем процентов 20-30 к объему весов.

Стоило бы уточнить, что подразумевается под локальной системой.

Условно домашняя машина.

Понятно, что если навернуть серию самых современных процессоров с кучей параллельности, то можно и сильнее убыстрить, но статья не об этом ))

По поводу объема необходимого для размещения, вы ничего не забыли или активные тензоры будем с диска подкачивать?) Ну хотя бы kv-кеш можно в памяти хранить)?Итого накидываем процентов 20-30 к объему весов.

Да, не хотел углубляться в детали, давал тупо приблизительные оценки, которые легко запомнить.

Вообще, самое смешное, что сейчас есть вполне интересные варианты для запуска сравнительно больших моделей локально на CPU

Сейчас весьма недорого (по цене видеокарты уровня 4060ti с 16 Гб VRAM) можно купить X99 платформу с двумя сокетами и, условно, 72 потоками+256 Гб RAM в 8 потоков.

Такая связка позволяет запускать даже большой DeepSeek на 400 миллиардов параметров в квантизации 4b и при этом получать хоть какие целые значения токенов в секунду :)

Это, само собой, все ещё очень медленно, но ЗНАЧИТЕЛЬНО быстрее потребительской платформы с RTX 4090, которая точно будет вынуждена использовать swap и будет выдавать токен за 10-15 секунд.

Предполагаю, что даже RTX 5090 + 9950x3d + ddr5 на 7000 MTs с GEN 4 NVME SSD в Raid0 будет все ещё медленнее, и при этом будет стоить на порядок дороже.

Так что если вам нужен инференс моделей для целей какой-нибудь автоматизации, где нет потребности в огромной скорости, но важно высокое качество... Подобный сервер может быть очень кстати :)

Если у нас есть допустим 8Gb памяти, то при выборе между моделями 7B в q8 или 14B в q4 какой вариант будет давать лучшее качество ответов?

Я бы выбрал 14B в q4.

Основным правилом считается "лучше взять модель больше, но в худшей квантизации".

А где хоть какое-нибудь описание железа, на котором это гонялось? С какой квантизацией в итоге гонялись тесты?

Я могу показать другие результаты на видеокарте:

echo "Расскажи сказку" | ./ollama run gemma3:12b-it-q8_0 --verbose
...
eval rate:            39.39 tokens/s

Да и на процессорах с avx512 результаты должны быть интересными

А так получились какие-то попугаи в вакууме.

Для RTX 3060 12 гб, i5-13500 14t, DDR5 4800 мгц считаю оптимальными модели 32B q4.
На CPU выдают немного более 3-ёх токенов или 10 символов в секунду.
Для меня это скорость чтения с пониманием.
Поэтому, если использовать LLM для чтения, то более 3-ёх токенов в секунду смысла нет.
Даже удобнее читать всегда конец текста, а не где-то в середине.

Да, кстати, насколько мне известно, оффлоадить часть слоев на GPU есть смысл только если 1-2 слоя не влезает в VRAM (т.е. мало), и то не факт. Чуть больше - и уже смысла нет вообще, все идет по скорости как будто все в RAM и на CPU.

Использование GPU у меня ускоряет 32B q4 с 3-ёх до 4-ёх токенов в секунду, и это уже заметно.
Нужно только подобрать правильный параметр -ngl.
Например: -ngl 24 для 65 слоёв модели 32B при VRAM 12гб.

Ещё у меня почему-то есть задержка перед выдачей токенов.
llama.cpp выдаёт её как "prompt eval time" со скоростью примерно 10 токенов в секунду на CPU, а на GPU - 100.
Она зависит от длины prompt и на CPU может занять минуты, а на GPU секунды.

Ещё у меня почему-то есть задержка перед выдачей токенов.

Да, это известно, промт тоже нужно обработать, и на CUDA он обрабатывается сильно быстрее. Не стал это включать в статью, чтобы не перегружать деталями.

UPD: Более точный калькулятор "Сколько именно памяти нужно под ту или иную модель в той или иной квантизации с учетом контекста" можно найти здесь: https://apxml.com/tools/vram-calculator Его расчеты применимы как для VRAM так и для RAM.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории