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

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

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

Коротко (от человека, занимающегося LLM со своим сервисом, чтоб не голословно)

- В идеале, вся модель должна помещаться в памяти GPU - тогда будет 10-20 токенов в секунду. Но домашних карт на 780 Гб GPU нет :)))

- Можно на CPU. Тогда вы достигнете около 1 токена в секунду (как автор статьи) ЕСЛИ у вас вся модель поместится в оперативную память (для маленьких моделей 7B будет быстрее - но это явно не про DeepSeek)

- Можно на CPU с подкачкой с диска, если не помещается в оперативную память, но это неюзабельно - обычно скорость становится около 0.1 токена в секунду или меньше.

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

Прочитал всю статью - автору респект!
Правильно понял - что вся модель запускается только на процессорах? Если рассчитывать оптимальную бюджетную конфигурацию для запуска и постоянной работы подобной модели - на что стоит сделать акцент? Как я понял из статьи - рациональнее взять один процессор с большим числом ядер - а насчет озу - обязательно прям настолько много? Или условно можно обойтись например 128 гб? Кто-то пробовал на домашнем пк запускать deepseek?

Коротко (от человека, занимающегося LLM со своим сервисом, чтоб не голословно)

- В идеале, вся модель должна помещаться в памяти GPU - тогда будет 10-20 токенов в секунду. Но домашних карт на 780 Гб GPU нет :)))

- Можно на CPU. Тогда вы достигнете около 1 токена в секунду (как автор статьи) ЕСЛИ у вас вся модель поместится в оперативную память (для маленьких моделей 7B будет быстрее - но это явно не про DeepSeek)

- Можно на CPU с подкачкой с диска, если не помещается в оперативную память, но это неюзабельно - обычно скорость становится около 0.1 токена в секунду или меньше.

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

Всего -то надо установить gpustack, найти 18 компов в каждом по 2 видюхи AMD RX 7900 XTX. И за каких-то жалких 6 миллионов можно получить больше 5 токенов)

Пойти на этаж выше к соседу майнеру.. слыш видеокарточки есть? А если найду?

Даже сервис уже есть - clore. Майнеры и сдают свои машины. При необходимости можно взять довольно мощные машины, но с оперативой там обычно беда.

https://x.com/alexocheema/status/1881561143736664180?t=2DFnB5i9bEn5hk7Ns3Mtjw&s=19

А, вот что это было. Судя по экрану скорость там порядка несколько токенов в секунду. Учитывая цену 7-ми мак мини может быть действительно проще на Threadreaper собрать или EPYC.

да процессор тут не так нужен как оперативная память

материнка+проц+бп и по мелочи (rysen 5 7600x) стоят порядка 50т.р., 256gb к ним стоят порядка 80-100т.р. (проблема найти 4x64gb модули ddr5)... а вот 128gb ddr4 машины собирать заметно проще и дешевле, примерно за 80т.р...100т.р. плюс в каждую rx10gbit ethernet в pcie (от +10т.р.) итого результата можно достичь дешевле в 4 раза чем на mac mini

p.s. хотя скорость у mac все же будет по выше... там одна сеть 40mbit

Можете чуть подробнее описать. Про память я понял, да 64Гб DDR5 стоит действительно как не в себя и найти сложно. Но разве в круг не выйдет дешевле иметь меньше в два раза машин из-за того что лимит на память выше в два раза?

что такое  rx10gbit ? ну я понял что 10Gbit сетевуха, но какую конкретно вы имеете ввиду и чем их объединять в сеть общую, 10Gbit маршрутизаторы стоят же как крыло от самолета.

там одна сеть 40mbit

У мака сетевая карта 40Mbit? Вроде в спеках указано что макс версия 10Gbit.

7600x

Почему такой слабый процессор? Он совсем не важен разве? Или еще видеокарта должна быть?

Если важна скорость обмена между нодами можно ли поставить две сетевых карты и получить 20Mbit ?

llm-ки требуют работу с оперативной памятью, процессор естественно нужен хороший, но зависимость производительности будет не линейная, т.е. увеличение производительности в 2 раза процессора (по количеству ядер) даст увеличение скорости tps на десятки процентов (но это нужно серьезно тестировать прежде чем покупать железо, хотя бы арендовав виртуалки у провайдера на денек). Просто указанный процессор наилучший по соотношении цена-скорость, следующий имеющий смысл (нужно увеличивать количество ядер) будет стоить в 2 раза дороже.

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

Alex Cheema использует Thunderbolt 5, на видео нарисована топология круг, т.е. каждый подключен к двум соседям, по спекам скорость там до 120мбит и скорее всего это наиважнейшая характеристика. С другой стороны я читал в прошлом году как человек запускал llama3 70b на кластере из raspberrypi в гигабитной сети и это работало на пределе возможностей процессора (т.е. сети хватало более чем).

rx10gbit - опечатка, я говорил про обычную сетевую карту с двумя портами 10gbit со стандартным коннектором rj45 с ценой от 10-15т.р. так же сейчас материнские платы идут с 2.5-5гбитной сетевой картой, но нужен коммутатор, стоимость которого будет сравнима с компьютером, поэтому дешевле купить сетевые карты и сделать ту же кольцевую топологию.

Видеокарта почти не поможет (есть реализации которые ускоряют инференс, но они не умеют работать в кластере). Тут такое дело, либо у тебя все веса влезают в видеокарту либо в оперативную...

p.s. я еще тестировал работу с диска (nvme raid 4гбайта/с), llama.cpp плохо оптимизирована для батчинга MoE сеток поэтому скорость там отвратительная была меньше 0.1 токена в секунду для deepseek r1 4bit квантизации, но ее точно можно ускорить значительно (вплоть до такого же варианта как если бы все веса влезли бы в память) в батчинге, если модифицировать код на принудительное удержание текущего слоя в памяти.

У меня есть возможно взять три компьютера два будет 3600х и один 5950х, все могу забить под завязку оперативкой, вопрос только свич на 10Гбит найти.

  Можно на CPU. Тогда вы достигнете около 1 токена в секунду (как автор статьи) ЕСЛИ у вас вся модель поместится в оперативную память (для маленьких моделей 7B будет быстрее - но это явно не про DeepSeek)

Вот тут писали про 5-6 токенов в секунду на CPU - https://threadreaderapp.com/thread/1884244369907278106.html Это преувеличение или тут есть разница какая-то в железе/llm/размере контекста?

Ну там навскидку железо заметно посвежее, опять же у AMD EPYC на DDR5 если верить спекам пропускная способность памяти аж 480ГБ/с, а моя конфигурация и из двухсот не выбегает. Там параметры запуска ещё чуть другие - добавлены опции --temp 0.6 -no-cnv -c 16384 . Я только что попробовал - но нет, результат примерно тот же. Что есть, то есть, а вот AMD EPYC у меня нет, чтоб сравнить.

Да скорее всего дело в ddr5, + у него 12 каналов на проц а у вас 6. Вот тут еще наткнулся на информацию: https://www.reddit.com/r/LocalLLaMA/comments/1h3doy8/stream_triad_memory_bandwidth_benchmark_values/

если она верна то пара 9135 выдаст еще в два раза больше bandwidth правда и стоят они в два раза дороже. По 1500 за штуку.

С памятью более-менее понятно. Интересно еще какая зависимость у скорости генерации от количества ядер CPU и от их индивидуальной производительности. Что лучше - мало быстрых ядер или много медленных?

у меня на платформе 190ГБ/сек, но виртуализация, да и думаю среду другую выбрать можно

Сложно сказать, возможно, относительно топовое железо можно догнать до 5-6 токенов, но там много должно сложиться.

разные модели запускаются. автор по ссылке запускает оригинальную fp8, а автор данной статьи квантованную в Q8.

Какую модель можете посоветовать для мозгов НПЦ? То есть например чтобы общался сам. (Отвечал более-менее в тему)? Достаточно ли самой простой?

"Зависит от". Пожалуй самые маленькие я бы все-таки не стал тревожить, но от 7-8B на английском получить "более менее в тему" будет норм. А на GPU так и real-time выдаст практически

https://youtu.be/2uoA_G6rcmE?t=871

Вот этот чувак прикрутил к Morrowind (20 лет игре, на минуточку) Gemini и ElevenLabs. Автор естественным языком (голосом) общается с NPC, те его понимают и отвечают также голосом. Самое прикольное, что он сделал - дал возможность разным NPC слышать (и "понимать") друг друга. В итоге возникают совершенно "тарантиновские" диалоги. На том таймкоде что я дал, например, автор пожаловался старшему охраннику на младшего охранника, который постоянно материться.

Собственно, становится очевидно, что скоро будут игры, которым нужна будет подписка на ИИ. Я бы на месте тех, кто развивает ИИ вложил бы пару лямов баксов в игры, которая бы использовали ИИ для диалогов и для генерации уровней/сюжета.

Подписка на ИИ не нужна, достаточно обычной модели на 4 гигабайта (квант от 8B), которая может ролплеить в рамках игровой истории + TTS движок, который занимает от силы 500 мегабайт. Всё это работает шустро на потребительской видеокарте, а в теории и на процессоре с ИИ-блоками. Диалоги даже не обязательно генерировать в ту же секунду, можно заранее сценарии проработать.

В идеале, вся модель должна помещаться в памяти GPU - тогда будет 10-20 токенов в секунду. Но домашних карт на 780 Гб GPU нет

Т.е. для шустрой работы требуется десяток карт Nvidia A100 x 80 Gb ?

Или одну dgx b200. Хватит и r1 запихнуть, и генератор картинок рядом. Ну и скорости будет побольше.

Можно на CPU с подкачкой с диска, если не помещается в оперативную память, но это неюзабельно - обычно скорость становится около 0.1 токена в секунду или меньше.

О какого рода дисках идёт речь - HDD или SSD? Если SSD, то SATA3 или NVME? А если RAID 0 из SSD сделать? Должно быть побыстрее и относительно бюджетно, если не планируется очень много гонять (ибо износ)

чем быстрее скрость тем лучше, но там пока ответа ждать будешь можно составится, а износ, ... почему все на ssd используя егов прикладных задачах трясутся за его ресурс? вы хоть один диск убили так что флеш исчерпал ресурс перезаписи??

Опыт HDD говорит что они замедляются по мере износа. Т.е. незачем ждать полной смерти, достаточно дождаться момента когда субъективно "чёт медленно работает, надо новый купить". У SSD вроде нет такой проблемы, но есть другая - если умрёт, то быстро. Благодаря этому выработалось какое-то щадящее отношение к SSD

Запускал deepseek 20b на своем железе, Intel 10700kf, 32гб ддр4, все работает отлично, конечно модель глупенькая, но работает на отлично, в режиме чата ответ делает секунд за 10-20

Это дистиллят. То есть другая модель дообученная на дипсике. Типа, "продукт шоколадосодержащий". Шаблонные тесты проходит, но стоит чуть шагнуть в сторону, как начинается галлюцинирование.

Причем небольшие модели даже на компе с 8 гиговыми карточками и 16 ГБ озу крутятся достаточно быстро, и даже пользоватся можно. Просто поставил LM Studio и вперед

А если на CPU с подкачкой с десятка дисков, объединённых в RAID? Или то же на паре хороших игровых GPU?

Избаловались мы нонче :)

Ответ через100 секунд - неюзабелен :)

Раньше вот задачу на перфокартах сдавали девочкам-операторам и в конце смены (а то - и на следующий день) получали результат. Причём - вовсе не факт, что успешный. :)

Перспектива прорисовывается потихоньку.
"- Что нам нужно?

  • Машина времени!

  • Когда она нам нужна?

  • Не важно!"


    Ну или день сурка на дообучение/ожидание ответов.
    Ну или парочка Cerebras сейчас.

Да, вся модель должна помещаться в памяти. При этом я замечу, что на тестовой тачке память двенадцатиканальная, вот, для сравнения бенчмарк с двухканальной — тут тоже Xeon, но даже если я добью её до 768 ГБ, то будет ну очень грустно, просто сравните пропускную способность там и тут:

с вашего скрина:
у вас процессор умеет в 4 канальный режим, но там прямо написано что запущен в 2 канальном режиме. запустите в 4-х и получите значительный прирост скорости.
для сравнения старый процессор:

О, спасибо, хорошее замечание. Я, кстати, попробовал DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf запустить там и тут, так вот на компе из обзора она даёт 10 токенов, а на том, что в комменте выше - семь (даже если Quad не включён), и если включить, то, возможно даже они сравняются. Так что скорость в общем не совсем пропорциональна пропускной способности памяти, скорость процессора тоже важна. Результат интересный, ядро W-2245 где-то раза в полтора быстрее старого 6132, но тут их всего 8, а там 28. Я б ожидал токенов этак 4-5, но нет, оно быстрее.

Вот сухой бенчмарк, тачка слева даёт десять токенов, а справа - семь:

перевод DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf упрощенно на русский,
эта модель основанная на Qwen и доученная(Distill) на ответах от DeepSeek-R1
то есть DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf это по факту Qwen.

кроме памяти ещё важна производительность процессора на вычисления avx2 avx512.
вы вроде упоминали что пропускная способность ddr5 у вас при работе не использовалась, то есть существует где то узкое место в работе.
например где то в комментах упоминалось про каналы процессора,
у вас на Xeon 6132 это 6 каналов памяти. Но стоит 12 планок памяти, я не специалист но предполагаю что переключения между планками не бесплатно и сказываются на производительности.

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

наоборот при правильном подборе и корректной настройке можно даже добиться небольшого прироста производительности...

добивайте планками, будет 80 ГБ сек
у меня на этом сервер 170-190 где то, но все равно работате как черепаха.. возмоджно из за современных средст виртуализации или LM studio

Да там вагон моделей под разное железо, но рассуждения по полчаса и косяки при ответе на кириллице руинят полностью все. Проще юзать на сайте, тем более есть десктопное приложение. Автор какой-то дичью зантмается. Погоня за попугаями. Это же не хэшрейт майнинга битка или эфира, дорого и глупо.

Там в предисловии как раз таки автор написал, что это ответ на просьбу протестировать его конфигурацию из комментариев к другому посту. Спортивный интерес так сказать.

2x AMD EPYC 7662 + 16 плашек DDR4 по 64 GB + мат.плата с Ali лучше от supermicro + БП на 1600Вт ну и водянка для охлаждения....

это даст 5-6 токенов в секунду на DeepSeek..... но там еще крутить и крутить настройки + наверное всё таки надо брать квантизированную Версию на INT8 - на мой ограниченный взгляд существенной разницы не увидел - тут вот даже интересна методология которая позволила бы понять разницу.....

Имеено так, но запущенно из-за спортиного интереса, во время апдейта серверов. Большого практического смысла нет, так как ворочится как черепаха, да еще в виртуальной среде.

У меня стоит ryzen 7 5700g, 32 гига оперативы и карточка бюджетная rx580 на 8 гигов, при таких характеристиках около 11 токенов в секунду, что в целом неплохо на самом то деле, но была бы карточка помощнее и на 12 гигов и выше то было бы сильно лучше

Я думаю, у автора был академический интерес, попробовать запустить полный вариант DeepSeek R1 на своём железе.

А так да, с практической точки зрения квантизации уровня Q6_K (551Гб) практически должны быть неотличимы от оригинала (713Гб). Q5_K_M, Q5_K_S - высокое качество, близкое к оригинальной модели (475Гб и 462Гб). Q4_K_M - хорошее качество для большинства применений (404Гб).

Вот тут: https://huggingface.co/bartowski/DeepSeek-R1-GGUF

Есть ещё всякие варианты типа Q4_0, может будут быстрее?

У меня нет под рукой других, кроме разве что DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf, что я в LM Studio скачал. Её размер 4.5 ГБ. Вот я прямо сейчас проверил — она на этой конфигурации стабильно выдаёт 10 токенов в секунду, с этим уже можно жить, да. Но она совершенно не в курсе специфических вещей, вот к примеру, если пользоваться ею как справочником:

Быстро, но неверно
Быстро, но неверно

А вот 700ГБ DeepSeek-R1.Q8_0, и это более-менее правильный ответ:

Медленно, но верно
Медленно, но верно

Как я понял, всё "мелкое" не имеет отношения к настоящему DeepSeek, это дообученные другие открытые сетки.

Так что только варианты на сотни гигов, только хардкор.

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

Если под "мелким" подразумевать типа 70b и менее - то да, это дообученные другие сетки. Но есть и родная DS, переквантизированная - емнип, 137b ,вот там уже настоящий дипсик, разумеется квантизованный. Есть еще версии DS на 200 с лишним параметров. Кто лучше и качественней - вопрос открытый.

Родной на 137b и другие размерности вы не найдете, но откройте lm studio - они там есть. Эти модели сделаны пользователями из "большой оригинальной". Смысл верить этому такой - переквантизация не требует таких громадных ресурсов как обучение, ну и кому бы понадобилось "апскейлить" официальную 70b (которая не дипсик) только ради того, чтобы раздуть размеры? И естественное желание людей запустить хоть квантизованный но оригинал на слабых системах (дожили блин, 127 гигов ОЗУ - слабая система, хе-хе)

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

Родной на 137b и другие размерности вы не найдете, но откройте lm studio - они там есть. Эти модели сделаны пользователями из "большой оригинальной". Смысл верить этому такой - переквантизация не требует таких громадных ресурсов как обучение

Квантование не изменяет размерность модели, а у lm studio нет скрытого хаба моделей, они качают модели с hf, там у каждой модели есть ссылка на huggingface, где можно посмотреть, что это за модель такая.

Есть еще версии DS на 200 с лишним параметров. Кто лучше и качественней - вопрос открытый.

Скорее всего вы про предыдущую DeepSeek v2.5, она на 236B.

ну и кому бы понадобилось "апскейлить" официальную 70b (которая не дипсик) только ради того, чтобы раздуть размеры?

Любому, кто скачает mergekit. Вот, например, модель 137B собранная из двух Qwen2.5-72B - https://huggingface.co/Solshine/Qwen2.5-137B-Doubled72B-Instruct-Mergekit-Merge

Но, вообще, ощущение, что вы говорите про динамическое квантование UD-IQ1_S от unsloth. Вес модели как раз 131гб и это действительно оригинальная R1.

За счет того, что веса внимания оставлены как Q4_K_M, а MoE веса квантованы в 1-2 бита, такая модель не только оригинальная по своей сути, но и показывает не плохой уровень. Но она остается как 671B модель, а не как 131B или 137B.

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

Если вы всё таки про UD квантованную версию, то это работает даже запускаясь с nvme, нужно только 20гб ОЗУ для подгрузи активных параметров.
И если есть любая видеокарта хотя бы на 6гб (для интела запуск через vulkan, для amd - rocm или vulkan, для nvidia - cuda, все эти версии уже есть собранные в llama.cpp), то туда можно вынести расчеты kv кэша, получая не плохое ускорение. В итоге можно получить от 0.5 t/s до 1 t/s просто запускаясь с nvme.

Вот я запустил UD оригинальной R1 на обычном домашнем ПК с 64гб ddr4 памятью (скорость 50гб/с), модель не влезает в память целиком, поэтому постоянно подгружается с nvme pcie 3.0, kv-кеш вынесен на gpu.

Но даже так, с бесконечной загрузкой с nvme, на обычном домашнем ПК, скорость получилась 0.75 t/s.

DeepSeek R1 671B UD-IQ1_S запущенный на домашнем ПК
DeepSeek R1 671B UD-IQ1_S запущенный на домашнем ПК

То есть, если модель целиком влезет в память, например, китайская ddr5 192гб сейчас стоит не так дорого, в двухканале там будут скорости 80+ гб/с, в 192гб влезет даже квант получше и скорость вывода модели будет 2.5 t/s, если проц вывезет. Минимально комфортная скорость это 5 t/s, так что половину от этого уже можно получить дома.

Можете дать ссылку на статью, или рассказать
1 - как вынести расчеты kv кэша на видеокарту?
2 - как организовать подгрузку модели частями с диска nvme в память?

Второе везде работает автоматически сразу через mmap. Для первого нужно взять сборку с поддержкой видеокарт и там это будет работать автоматически.

gguf файлы внутри организованы так, что их структура совпадает со структурой памяти, когда модель загружена в память, и когда через mmap происходит маппинг файла на память, то в llama.cpp всё работает автоматически через механизмы ОС. Отключить mmap можно через --no-mmap.
При загрузке будет указано сколько слоев выгружено на GPU, например, 0, и сколько памяти ушло на промежуточные вычисления и загрузилось ли это на GPU.

Есть нюанс, под виндой mmap работает, но в моем случае почему-то залезает в своп, из-за этого скорость падает до 0.25 t/s. Под линуксом всё работает намного быстрее.

Например, нужно выбрать llama.cpp собранную с поддержкой видеокарт, среди множества версий выбрать нужную:

  • Если видеокарта amd - то win-hip версии gfx для нужной версии видеокарты. И так как скорее всего никто не разбирается в версиях gfx, то стоит просто попробовать по очереди все варианты. Или версию gfx можно узнать тут на вкладке AMD Radeon GPUs.

  • Если nvidia, то скачать нужно и cuda сборку и отдельно cudart, который нужно разархивировать в туже папку со сборкой. Для старых карточек версию cu11.7, для новых cu12.4.

  • Vulkan версия универсальна и работает с любыми видеокартами, хоть amd, хоть nvidia, хоть intel, и даже в паре amd + intel - поэтому если не заводится со специализированным вариантом, можно взять вулкан.

  • Если скачать avx сборку, то всё будет считаться на cpu.

Запускается это через llama-server, GUI которого потом открывается в браузере, команда для запуска:

.\llama-server.exe -m "DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf" --cache-type-k q4_0 --prio 2 --ctx-size 4096

Тут --cache-type-k q4_0 квантование kv-кэша для уменьшения его размера, можно отключить, если текст получается несвязный.

Если остается лишняя видеопамять, то можно выгрузить часть слоев на GPU через -ngl N - количество слоев нужно подбирать по количеству видеопамяти. Если 2 и больше видеокарт, то можно распределить загрузку памяти через -ts xx,yy, либо это будет сделано автоматически.
--ctx-size 4096 - уменьшить размер контекста до 4к, чем больше контекст, тем больше памяти потребуется:

.\llama-server.exe -m "DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf" --cache-type-k q4_0 --prio 2 --ctx-size 4096 -ngl 15 -ts 20,16

По тому же адресу, который будет указан у llama-server, если добавить в конце /v1/, то это будет адрес с openai completions api, который можно вводить в любом удобном клиенте или в плагинах, используя вместо chatgpt. Должно получиться вот так: http://127.0.0.1:8080/v1/

В настройках можно указать, чтобы модель явно мыслила на русском языке, иначе она может переключаться на другие языки. min_p нужно установить в 0.05, иначе будет повтор токенов, что снизит качество вывода, температуру в 0.5 для того, чтобы модель меньше фантазировала:

Эти настройки работают и для R1-Distill моделей. Так как в llama-server уже есть поддержка мыслительных тегов, то R1-Distill будут тоже работать, например:

DeepSeek-R1-Distill-Qwen-32B-Q4_K_M
DeepSeek-R1-Distill-Qwen-32B-Q4_K_M

Вы явно в теме :) Могу спросить совета? Хочу собрать машину для локального запуска 671b с квантованием 4 или 8. Прикинул, оптимальным по соотношению цена/качество видится 64-ядерный EPYC 3-го поколения c 16-ю плашками 3200-й 64Gb памяти, это даёт bandwidth ~200Gb/sec и стоит в районе $3k. Норм вариант для неприхотливого использования для личных нужд?

С длинной контекста, скорость будет резко падать, поэтому "бенчмарки" про то, что люди получают 4 t/s на коротком контексте могут быть не применимы на практике.
Если вы именно хотите это использовать и потребуются длинные диалоги, то нужно это учитывать, либо ждать пока найдут способ это оптимизировать.

https://github.com/ggerganov/llama.cpp/pull/11446
https://github.com/ggerganov/llama.cpp/pull/11446

На 200гб можно в лучше случае получить 2-3 t/s, и тут либо еще снижать квант для ускорения, либо если добавить туда одну 3090 и запускать через ktransformers, они выпустили недавно поддержку DeepSeek R1/V3, то на 1 видеокарте можно получить ускорение до 3х раз.

С одной 3090 и эпиком 3 поколения так можно получить 8 t/s, но там не ясна скорость на длинном контексте, для кода это может быть критично, а для просто чата это нормально.

В целом рассуждающая модель может генерировать очень много токенов, поэтому просто запустите R1-Distill в llama.cpp на том железе, что у вас есть сейчас, подобрав размер (качество ответов будет плохое на низких размерах B, но этот эксперимент не про качество ответов) и параметры запуска (выносить на GPU часть слоев или нет, использовать сборку с GPU чтобы kv-кэш автоматически выносился или использовать avx сборку), чтобы в итоге получилось 2 t/s или 4 t/s и посмотрите устраивает ли вас такая скорость.

Большое спасибо за такой подробный ответ. Ktransformers видел, выглядит очень перспективно, лишь одна 3090 даёт speedup в разы! Правда, они пишут, что используется оптимизация через AMX-инструкции в CPU, которые в EPYC-ах присутствуют с 5-го поколения, а это совершенно другие деньги за базовое железо. Но хотелось бы, конечно, иметь возможность использовать большие контексты, даже 4096 токенов - мизер для работы с нормальными кодовыми базами.

Спасибо за ссылку.

Почти год назад в предложениях к llama.cpp я кидал идею ускорения моделей (если честно это не совсем моя идея, что то похожее кто то пилил для конкретной llm-ки но непопулярной и никому не нужной в результате), чьи веса не влезают в память видеокарты, примерно таким методом но с учетом батчинга (большого количества одновременно выполняемых запросов). К сожалению на нее тупо не обратили внимание.

Загружаем в видеокарту/группу видеокарт (поделить все доступные видеокарты на 2 группы) текущий слой (для MoE грузим всех экспертов на текущем слое), запускаем вычисление для этого слоя для всех ожидающих запросов (вся память видеокарт фактически будет тратиться на это), параллельно загружаем следующий слой на вторую видеокарту/группу, после загрузки и окончания вычислений на первой видеокарте - продолжаем вычисления на второй, и запускаем загрузку следующего слоя на первую... и так попеременно перебегая между видеокартами, проводим все вычисления на них.

Если грузить веса видеокарту, то затраты тут на ожидание медленной шины pci-e, но как только количество одновременных запросов становится достаточно большим, что бы время на их вычисление сравнялось бы со временем загрузки весов в память видеокарты, так производительность tps сравняется с вычислениями на видеокартах с загрузкой весов заранее, но количество видеокарт, необходимых для работы, будет на порядок меньше.

Правда вопрос, какие накладные расходы на оперативную память для батчинга на каждый запрос... возможно не получится поместить достаточное количество в оперативной памяти видеокарт что бы ее загрузить на достаточно продолжительное время, но ведь можно и эти данные туда сюда гонять по pci, их объем на порядок (кажется квадратный корень от весов) меньше.

В продакшен пошли тачки помощнее, там был гигабайт DDR5 и процессоры порезвее. Около тридцати тысяч такой комп стоил.

Вот наскидку я только что набросал на сайте hp, так и есть:

Это если рассматривать брендовые решения "под ключ". Если проблемы с финансами, но есть время и желание, то думаю можно изобрести терабайт RAM на более или менее свежей платформе за ~$7500. Если совсем нет денег и есть готовность терпеть более низкую производительность (вероятно раза в 2-3), то на 2011-3 можно втиснуться в $2000.

Речь про used комплектующие.

Мы в мск 2х2697v4 и 768гб памяти покупали где-то по $1500. Интересно, сколько там будет токенов в секунду. Запустить, что ли.

X10DRU-i+. Оно не попалось, мы выбирали. И эти сборки так и продаются по такой цене все еще.

расценки на железо 2011-3:
процессор ~200$ (x2)(есть более дешёвые за менее 80$)
ram 64гб ~60$ (x4 ~200$-256гб)(планки на 128гб примерно в 2 раза дороже)
материнка с поддержкой 256гб ~80$

процессоры 2011-3 v4 поддерживают до ~1.5тб ram, но проблема с материнками.
дешевые материнки "из китайских подвалов" обещают макс. 256гб.
бренды же на бу можно найти например с поддержкой 512гб за 500$, соответственно более емкие материнки ещё дороже и рациональность сборки весьма сомнительна наверно(это я 1-2 года назад изучал, сейчас актуальность может быть другая).

теоретически при сильной квантификации deepseek-r1 влезает вроде в бюджетное железо.

дешевые материнки "из китайских подвалов" обещают макс. 256гб.

Huananzi F8D plus вроде поддерживала и 512, но сейчас точно сказать не готов.

640 gb будет скоро хватать лишь на то, чтобы скачать одновременно одну игру и один фильм... и то при условии, что музыку будешь слушать по подписке с телефона...

научите, пожалуйста, как на локальной версии deep seek реализовать возможность работать с подгрузкой фотографий и pdf файлов в качестве контекста для текстовых промтов?

Никак. Там кроме самой модели еще другие модели подключаются (распознаваторы если по простому). Тот же OCR вроде отдельным модулем крутится. В принципе никто не мешает это все запилить и для локального использования, но пока нормального решения никто не сделал.

Тут надо заметить, что у меня был включён гипертрединг (ну или гиперпоточность), так что сегодня утром первым делом я его отключил и повторил эксперимент, и да, отключение НТ уверенно кладёт стрелку нашего спидометра на ограничитель, теперь все ядра активно заняты

Было N ядер, из которых использовалось 0.55N. Выключили гипертрединг, ядер стало 0.5N, загрузка 100%. При этом по идее стало медленнее из-за нехватки 0.05N ядер, которые могли бы быть загружены работой. Я прально понимаю? И в чём тогда прикол выключать HT? Отдельный вопрос почему оно не параллелится на все N. Не удивлюсь что там где-нибудь в недрах используется get_physical_cores().

Llama.cpp насколько я знаю по умолчанию если не указывать количество потоков в параметрах запуска так и делает, берет именно ядра, а не потоки

Да, правильно. Я просто проверил, что без него загрузка стала 100%. Если бы она и при выключенном гипертрединге осталась в районе 50, то надо было бы внимательно смотреть откуда там ноги растут и почему идёт недогруз. Теперь его по идее надо включить обратно и провести тщательные замеры (так то я проверил производительность "на глаз".). И да, вполне возможно, что с его включением станет чуть лучше (я, кажется и видел 1.2 токена с ним и 1.1 без него, но "кажется" - не считается). А может ведь и так получиться, что программа допустим видит 28 физических ядер, но при создании потоков они все "сядут" на один 14-ядерный процессор (операционка, скорее всего такую глупость не сделает, а вот программа по ошибке вполне может), у которого 28 логических потоков, он будет из кожи вон лезть на своём гипертрединге, а второй будет просто простаивать, я и в этом случае увижу 50% (мой индикатор показывает среднее по всем логическим ядрам) но в этом случае выключение гипертрединга даст и стопроцентную загрузку и безусловный и заметный прирост. Там был, кажется ключ управления потоками в опциях, я завтра гляну, если время будет. Полная, "на всю катушку" загрузка на 56 потоков - тоже бывает по итогу медленнее, чем 28 потоков по чистым ядрам, я читал на реддите, что многие игры работают заметно быстрее именно при выключенном HT.

И в чём тогда прикол выключать HT? Отдельный вопрос почему оно не параллелится на все N.

HT не добавляет физических ядер, а лишь позволяет использовать не занятые сейчас другой задачей блоки. Ускорение только за счет пред загрузки данных в свободные блоки пока ядро считает, например, AVX-блоки, но количество тактов не меняется, так как физическое ядро одно и тоже.

Инференс это задача для AVX блоков, поэтому другие блоки свободны для фотоной работы винды и браузера - но так как количество тактов не меняется, то для задачи инференса производительность не вырастет, а просядет, ведь такты ядра будут заняты другой работой. Поэтому с включенным HT загрузка 50% это и есть настоящая загрузка всего 100% процессора.

И загрузка будет показываться 60%, что воспринимается как +10% производительности, а на деле для инференса получится -5% производительности. Еще для однородной задачи, так как задача не раскладывается на логические потоки, не эффективно создаются очереди в конвейерах, и постоянное переключение может создать тормоза.

И тут даже в теории не получить +50% производительности, количество тактов не меняется, и даже если будет написано 100% загрузки, что создает ощущение +50% производительности, то это на деле будет просто i/o wait.
Сейчас интел вовсе отказался от HT в новом поколении процессоров, сказав что настоящие энергоэффективные ядра лучше, а AMD оставляет SMT, так как в некоторых бенчмарках там получается +18% прирост.

Поэтому стандартный совет отключить HT и проверить ваш сценарий.

Если ALU постоянно ждет дозагрузки памяти, то фоновый поток может втиснуться почти без накладных расходов.

… но вместе они будут ждать вдвое дольше, что на результирующей скорости скажется примерно никак.

на тестах именно так и происходит, как только количество потоков превышает физическое количество ядер, скорость инференса проседает

А, кстати, это легко продемонстрировать за утренним кофе.

Смотрите, я буду вычислять SHA256 в четыре потока, запуская это дело на четырёхядерном i7, и если я отдам распределение потоков на откуп операционке (точнее, LabVIEW и операционке), то загрузка восьми логических ядер будет выглядеть вот так (извините за немецкий скриншот):

"Рыхленько" так. А теперь следите за руками - я могу посадить мои потоки на первые четыре ядра:

И получу 280 MB/s, но тут фактически работают два физических ядра.

А теперь я раскидаю потоки вот так:

И получу уже 470 MB/s, потому что теперь я занял четыре физических ядра.

Во всех трёх случаях средняя загрузка процессора - чуть больше половины, а вот производительность приложения сильно разная.

Выключая гипертрединг, я не даю возможности приложению сесть на ядра неоптимальным образом, но в последнем случае видно, что сама операционка (и остальные процессы) перебралась на незанятые "гипертредированые" ядра, и если их не будет, то она будет использовать те, где крутятся мои потоки, так что с выключенным HT производительность в теории может просесть, хотя и не намного. Рецептов по оптимальному использованию гипертрединга тут в общем нет, надо просто пробовать и так и сяк.

Ну что за манипуляции...

  1. Где картинка с MiB/s для первого сценария? С чем мне ваши 470 MiB/s сравнивать?

  2. Вы опять запустили нагрузку с get_physical_cores() потоками? Запустите нормально, с восемью потоками, а не четырьмя. Очевидно от HT не будет толку, если не давать ему работу.

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

Если же я буду запускать потоки без явного указания процессора (как обычно и делают), то будет так (скорость в МБ/с): 4 потока - 436; 5 потоков - 457; 6 потоков - 490; 7 потоков - 503. Также видно, как он чуть чуть частоту роняет под нагрузкой.

Восемь потоков я не тестировал, потому что уже семь дают мне 99% процентов загрузки и при запуске восьмого цикл, отображающий индикатор встаёт колом. Но не думаю, что там будет большая разница с семью. По хорошему конечно код надо показывать, там секретов нет, просто это на LabVIEW.

Скриншоты
4
4
5
5
6
6
7
7

Некоторый потенцал, возможно, кроется в NUMA:

Попробуйте запустить с ключом --numa distribute. Еще попробуйте добавить -nkvo
И можете перейти на Q4_K_S, сэкономит почти в 2 раза памяти, а качество при этом просядет незаметно.

Как минимум на идентичной с вашей конфигурацией получают ~2t/s. Эпики с 16 канальной ddr4 3200 на 2x EPYC 7543 с 403 гб/с - 4 t/s. На эпиках с 12-канальной ddr5 4800 выходит на малом контексте до 9 t/s на Q4_K_S.

Не знаю скажется ли это в вашем случае на скорость, так как у вас модель влезает в память и так, но можно еще попробовать взять экспериментальный динамический низкий квант. Качество UD-IQ1 сильно лучшем, чем просто IQ1, потому что UD-IQ1 сохраняет важные веса внимания на уровне Q4_K_M, а все остальные уже квантует через матрицу важности до IQ1, в итоге получается не плохой гибрид по качеству.

Динамические UD кванты запускают даже просто с nvme на скоростях от 0.5 t/s до 1 t/s. Но правда такие скорости только под линуксом.

Еще сейчас идет работа по добавлению в ktransformers возможности для архитектуры V3 выгружать активные веса на GPU, и так как активных весов всего 37B из 671B, то это в теории может ускорить вывод с помощью одной GPU сильнее, чем как сейчас это работает в llama.cpp. Следить за этим можно тут.

Не знаю текущей ситуации с арендой, но на пару-тройку дней нельзя ли арендовать за сотню-другую баксов в датацентре физический сервак на 2x6328 с 768 гигами, чтобы поиграться и оценить, стоит ли оно того?

А смысл? Поиграться вы можете и с вебмордой DS забесплатно (их уже много кто раскатали из компаний у себя). Локальная модель она для того, чтобы никуда ничего не утекало + независимость от интернета.

Смысл - оценить, оно того стоит или нет. Не вкладываясь серьезно в железо до принятия решения.
Ну а независимость от инета... ну так себе аргумент.

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

Суть вопроса - перед приличными вложениями в железо стоит задать себе вопрос «а оно мне надо в реальности в такой конфигурации?»

Ну вот не может человек себе позволить стандартный сервак за миллион домой, бывает (я уж не говорю, что он шумит прилично так). Дальше возникает вопрос оптимизации - а если я урежу память вдвое, а вместо 6328 поставлю 4314, с этим все еще можно будет работать? Или ждать ответа по 4 мин мне не катит? И так далее.

Добавьте 'себе в тесты' запуск модели не на одном мощном дорогом сервере а на кластере из недорогих, в т.ч. на десктопных (которые до 128гб ram очень даже дешево собрать), правда пока в основную ветку разработки не добавлена эта поддержка, а оригинальный репозитарий не развивается, не уверен что deepseek будет поддерживаться (llama405 работала).

Ага давно уже поддерживается, воспринимайте подключенные машины по сети как видеокарты, локальной же машине по уму достаточно KV-cache размещать (но веса все равно будут переданы по сети с диска)

Хм, мне кажется, как человеку, ранее плотно работавшему с HPC, что сетевые тормоза в этом миникластере будут иметь критическое значение для производительности системы в целом. А на тех картах, что тормоза вносить не будут, каком-нибудь ConnectX-6, дешевую систему собрать не удастся по определению. Это ИМХО.

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

Батчинг желателен, так как повышает скорость инференса заначительно. Все хочу протестировать запуск полностью с диска без использования ram (она нужна только для kv-cache и результатов, считанные гигабайты), начиная с какого то количества одновременно выполняемых запросов, процессор станет нагружен полностью (т.е. будет обрабатывать данные с той скоростью, с которой успевает отдавать диск) и итоговый tps станет максимальным.

Режим построчной параллелизации сильно быстрее послойной сам по себе, но сеть грузит катастрофически и 10 гигабит таки не хватает.

Точу зубы на 25Gbps сеть.

Говорят скоро будет (оно есть но не унас) пришествие usb4, со встроенной фичей, просто соединить null cable два устройства и получить 40мбит сеть (на очень коротких расстояниях)

А в двухтысячных ведь работало на Firewire 400 МБит/с...
Спасибо Apple за лицензионные отчисления с портов Firewire.

Я у себя запустил deepseek-r1:671b на базе 1xEPYC 7702.
Конфигурация памяти - 16 x 64GB, работает в 8-канальном режиме на частоте 2933 MT/s.

Моделька работает на скорости 3.5-4.0 t/s, без фризов и без подгрузки данных с диска в RAM, как было описано в статье. Общаться с ней вполне можно, кроме случаев, когда в промпт нужно закинуть большой кусок текста или километрового лог-файла - парсинг такого промпта перед началом рассуждений модели может занять десятки минут.

Для запуска использовал ollama на базе ubuntu server. Модель при первом же запросе сначала полностью загружалась в память, и только потом шла обработка моего промпта.
Теоретически, если запустить модель на более свежем железе (EPYC 9005 в 12-канальном режиме на частоте DDR5-6000), то скорость работы модельки может быть до 3 раз быстрее относительно моего конфига.

P.S. Возможно, что автор столкнулся с описанной проблемой из-за параметра а-ля "use_mmap=1", который вместо загрузки данных модели с диска в RAM просто делает маппинг файла в оперативную память, и дальнейшее обращение к данным в памяти требует чтения с диска.

Нет. нет, там судя по всему просто выделение памяти так реализовано. После того как всё загрузилось, память забита на 90% и обращений к диску не производится, это я проверил. А при изначальной загрузке модели она SSD грузит на 100%, да, это видно. Там в принципе исходники есть, можно посмотреть, как она модель грузит (хотя я пока туда не лазил).

Там используется mmap: адресное просьранство файла мапится на виртуальное пространство оперативной памяти. По мере обращения к страницам памяти они подгружаются из файла. Если памяти хватает, это делается только один раз.

С какой скоростью на вашей сборке будет работать модель в размерности ~70B? Например, эта - https://huggingface.co/bartowski/calme-3.2-instruct-78b-GGUF Она сейчас в топе на хагинфейсе - https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard#

Интересно сравнить со своей сборкой на трех GPU Nvidia Tesla P40 24Gb. На моих GPU в версии Q4_K_M получается в районе 5 токенов/сек. Вот и думаю, нужны ли при таких раскладах GPU...? На более современные GPU пяти и шестизначные ценники за 1 шт., а EPYC 7702 вполне доступный вариант.

Для модели calme-3.2-instruct-78b-Q4_K_M на простых промптах я получил примерно такие цифры производительности через llama.cpp:
prompt eval time = 7981.25 ms / 98 tokens ( 81.44 ms per token, 12.28 tokens per second)
eval time = 148880.31 ms / 372 tokens ( 400.22 ms per token, 2.50 tokens per second)
total time = 156861.56 ms / 470 tokens

P.S. А в DeepSeek-R1 для обработки запроса активируются только 37B из 671B параметров - это особенность моделей MoE.

Запустил calme-3.2-instruct-78b-GGUF  8_0 на epyc 9v74 (это такой oem 80/160 ядерный эпик c TDP 400 Wt) и 196 Gb 4800 памяти. Получил 3.3 t/s при --thread 150. В треде на реддите с Epyc 9374F и 384Gb R1 выдает 9 t/s. Так что сейчас буду смотреть как оптимизировать.

К сборке из 3х P40 можно добавить одну 3090 и держать на ней kv-cache, это сильно повышает скорость на длинных контекстах.

Ну и всегда есть вариант взять 4x V100 по 16 гигабайт в SXM2 слот, они по цене сейчас от P40 не особо отличаются.

Не подскажу, потому что сам пользуюсь llama.cpp, там до ноября это делалось двумя ключами командной строки - разбиение тензоров по строкам и выбор основного GPU. После ноября надо патчить код.

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

Раcсчитай определитель матрицы \begin{pmatrix} 3 & 2 & 1 & 2 & 3 \\ 2 & 2 & 1 & 2 & 2 \\ 1 & 1 & 1 & 1 & 1 \\ 2 & 2 & 1 & 2 & 2 \\ 3 & 2 & 1 & 2 & 3 \end{pmatrix}.
Матрица, которую вы предоставили, имеет размерность (5 \times 5). Определитель квадратной матрицы можно вычислить с помощью различных методов, таких как разложение по строкам
или столбцам, но для больших матриц это может быть довольно сложным. Вместо этого мы можем использовать свойства определителя, чтобы упростить задачу.

У вашей матрицы есть следующие строки:

  • Первая и пятая строки одинаковы.

  • Вторая и четвертая строки тоже одинаковы.

Определитель квадратной матрицы с двумя одинаковыми строками равен нулю. Это свойство следует из линейности определителя относительно строк (или столбцов). Если у вас есть две
одинаковые строки в матрице, то эта матрица является вырожденной, а её определитель равен нулю.

Таким образом, определитель вашей матрицы:
[
\det \begin{pmatrix}
3 & 2 & 1 & 2 & 3 \\
2 & 2 & 1 & 2 & 2 \\
1 & 1 & 1 & 1 & 1 \\
2 & 2 & 1 & 2 & 2 \\
3 & 2 & 1 & 2 & 3
\end{pmatrix} = 0
]

qwen2.5-coder:14b

Честно скажу, не изучал еще вопрос плотно. В двух словах.

Возможно ли локальной модели скормить набор специфичной различной документации и использовать её как локального ИИ помощника?

Если без дообучения, нужно использовать LLM с большим окном контекста. У оригинальной DeepSeek R3 довольно большое - 128K токенов.

Можно подключить RAG по документации, но это должен быть умный RAG. Основная идея в том что с помощью модели можно подавать не всю документацию в контекст, а наиболее релевантные текущей задачи части. Документация сначала подготавливается: разбивается на фрагменты, подсчитываются эмбединги этих частей для векторного поиска, расставляются тэги, выделяются смыслы и т.д. Потом всё это используется для быстрого поиска.

Я себе дистиллят 4.5 гб ставил на (как я понял) чуть лучше ПК, чем ноутбук. Огорчился сильно китайским символам(

Ну и у меня появилось очень много теоретических вопросов, которые смогла объяснить оригинальная вэбверсия китайцев. С другой стороны непонятное прибавилось.

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

При этом, в моем понимании, у нейросети нет какой-то специфичной информации для контекста и в случае подгрузки ВЭБверсии - все будет ок, но данные 100% утекут. В офлайн версии получается надо либо поднимать ещё как минимум 2-3 нейросети для прямой подгрузки рагов, либо дообучать создавая новый дата-сэт

Спросив про устройство ее памяти, мне сразу накидали про анонимность, а дальше про векторность, уровни внимания, весы и т.д. Что гробит надежды на возможно обрезки не нужной инфы у сети. (Я надеялся, что есть механизм кластеризации, по простому аналогии и они жёстко привязаны)

Так что изыскания автора крайне полезны, спасибо)

I've ran it on AMD EPYC 9454P With 1Tb of RAM in a virtual machine
Т.е. вы получили 8 t/s на железе примерно за $ 13K (800 мать на SP5, 2500 CPU, 8x1200 RAM + 200 за б/у корпус + БП)? Я не увидел, что у вас было занято меньше 512 памяти, т.е. стоимость железа будет около $8K.
А знатоки могут сказать сколько будет стоить набрать то же количество токенов ригами с самыми дешовыми доступными видеокартами? Я так понимаю тут не стоит задача получить в лоб 512Гб видеопамяти (тогда понятно как считать), т.е. какое-то "комбо" из условно DDR4 и видеокарт, которое даст те же 8 токенов?

Я правильно понимаю, что на железе:
- могущем работать дома (т.е. не требующего стойки для размещения и отдельного подвала для изоляции от шума);
- и стоимостью до 1500$ (системник с 2x16Gb картами и производительным тихим охлаждением)
можно позволить себе запустить функционал условно "недоалисы", т.е. типа локальной обработки простых голосовых команд "включи свет во дворе" или "какая погода на улице?"; полчения на них голосовых ответов; ну и например простой аналитики видеопотоков с 4-8 видеокамер?

Да, я видел выше. Только я так понимаю, что 256 от 500$ подразумевает использование дешовой серверной памяти, которая стит минимум за Gb именно в плашках по 32гб. Ну и нужно что-то очень многоканальное. Что приводит нас к серверной матери с 8 минимум слотами. Я так понимаю, если это не будет китайский монстр, то скорее всего речь про б/у серверную мать, которая имеет с огромной вероятностью формфактор, не позволяющий её поставить в сравнительно небольшой корпус (а скорее всего речь про серверное шасси). Что противоречит моему вопросу про "могущее работать дома".
Или вы имеете ввиду, что описанный мной уровень задач не требует видеоускорителей в принципе и достаточно какого-то железа с большим количество RAM?

можно брендовые собрать бу.
например бу материнки на 128 и 256 асуса и других брендов можно было встретить меньше 200$.
а если новое, то ценники... лучше арендовать.(для рф санкции сказываются на ценах)
размеры от полноценных ATX до mATX.
256 = 32 x8 или 64 x4.
xeon это не только сервера но и системы для рабочих станций.

честно, был в думах о сборке системы на Ram и ответил не переключившись. т.е. не совсем том контексте.

Про цены на новое не уверен, что есть большая разница. Выше есть тест 8 t/s на EPYC 9454P. Я посмотрел. Он стоит 2300 на ebay и 250К на авито.
Рабочих станций сильно меньше серверов, значит меньше вторички и сильно большая цена. Плюс по размеру рабочая станция по сути эквивалентна tower серверу. Но тут как говорится, было бы желание, наверное, можно и найти раб.станцию недорого и перепаковать в сильно более тихий корпус.

под ваши задачи некоторые используют одноплатники и мини-пк.

знакомый один занимался тем что уменьшал размеры материнок обрезая ненужно.

1-2 года назад на али можно было встретить как раз метеринки asus для рабочих станций для 2011-3 v3 v4 меньше чем за 15т.р.

Я пропустил ключевое слово "ТОЛЬКО", отсутствие которого вкорне меняет суть вопроса:
можно позволить себе запустить ТОЛЬКО функционал условно "недоалисы",

Медленные это что-то типа Tesla K80? Но (может быть я не прав) разве сервер на современном камне и с большим количеством каналов памяти проиграет таким картам, конечно в разрезе рассматриваемого применения?
Но и 16Gb теслы, кварты я на ebay не нашёл дешевле 500$. А скорее 650.

Всё что старше Pascal инфраструктуры нужно забыть как страшный сон, потому что работает оно ужасно. Относительно свежие либы под себя, правда, уже хотят Ampere, но и без них можно жить.
Смотреть стоит не на ebay а на каком-нибудь goofish.
В целом за 150$ p40 найти вполне реально, как и ряд других странных карточек, а за 350$ есть лоторейный вариант с перепайкой 2080ti на 22GB vram.

На avito есть предложения загадочной 4090D с 48GB озу. Я и раньше о ней слышал, что это китайцы перепаивают чипы геймерских карт на свои платы и напаивают туда более ёмкие микросхемы памяти, но на китайских площадках их не находил.

Не в коем случае не реклама, просто пример объявления. За его автора я не ручаюсь, ещё раз это просто пример, что такие предложения имеются. Цена в этом объявлении 362 тыс рублей. Низ рынка для 3090 - 60 000 рублей для обычной "толстой" карты в 3 слота и от 80 до 100 тыс для turbo-версии, которая более удобна для серверов, т.к. занимает ровно 2 слота.

По моему, лучше в райзеры вложится, чтобы подключать по 2 видеокарты по x8, тем более, что грубые прикидки показывают, что для мощности 3090 достаточно pci-e x8 v4.

На китайский площадках уже во всю пошли.

И судя по кастомному охладу - это что-то похожее на ту самую мистическую пересыпку 4090 на новую плату.

Hopper с ведром памяти за скромные 3500$ - звучит как приличное предложение. Жаль только память медленная и nvlink нет.

Спасибо за goofish. Нет, перепайка (тем более если она, как вы заметили "лотерейная") совсем не мой путь.

Разница есть, в пользу AVX512, но она невелика. Я только что прогнал вот эти две сборки

avx2 выдала 0.9 токенов в секунду, а avx512 — 1.1. Цифры я списал с веб интерфейса:

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

Это в общем не входило в задачу, интерес был чисто "академический". Тестировать же лучше "полноценную" версию, которая chat.deepseek.com. Чуть выше в комментах я сравнил выдачу на довольно специфическом вопросе по сравнению с DeepSeek-R1-Distill-Qwen-7B-Q4_K_M, но там в общем результат ожидаем. Вы что-то специфическое хотели спросить? Я могу передать ей вопрос.

А если парочку 3090 может уже и 2-3 токена будут? Или если пиедположить, что только 48GB - это 13% от всей модели и предположить, что только 13% слоёв будет усктрено, для простоты, бесконечно, т.е. ввчисляться будут за 0 вреиени, то всё ускорится на эти же 13%, получим не 1 токен, а 1.13 токенов, что печально.

Я читал, что внутри модели deepseek есть паралелно исполняемые части и последовательно исполняемые. Может быть, можно выгиузить на gpu наиболее нагруженных экспертов (там есть такие - универсальные эксперты с общими знаниями), то ускорение может быть и болле существенным

>Q8_0 отказалась загружаться вовсе, сославшись на нехватку ресурсов
Это связано с ошибкой работы с памятью posix_memalign в Электроне, на котором работает LM-studio. Решение такое: надо пересобрать Электрон с ключом "без posix_memalign" и подменить его в сборке. Или подождать, пока в новом Электроне или LMstudio авторы это не исправят сами.

Коллеги, вопрос не совсем по теме, но видя уровень участников, решил все же его задать.

Ситуация: только недавно стал интересоваться ИИ, и голова уже кругом. Никак не могу найти ответ на простой (и я так понимаю весьма популярный) вопрос. Буду благодарен, если поделитесь своим мнением.

Вопрос: купив видео-карточку rtx3090 (ну в крайнем случае 4090, хотя это уже за рамками моего бюджета) - реально ли в принципе построить систему обучения/дообучения нейросети моей специфической информации? Или это "влажные мечты" и с моим бюджетом не надо мучить ни себя, ни ИИ - и мой удел - только облачные решения?

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

Спасибо за помощь!

Я осознаю, что пока сам не до конца понимаю размер и даже детали своей локальной "базы знаний", которые планирую "запихнуть" в своего "локального ассистента". Тут пока откровенная абстракция.

Поэтому, видимо, пока хотя бы примерно можно оценить вероятность второго пути.
Как я его понимаю (извините, что своими словами, терминологию еще не закрепил):

1. можно взять "урезанную" версию какой-то большой нейронки - это дает ей базовые навыки, к примеру, программирования, причем на конкретном языке. Для меня это c#

2. потом нужно будет как то ее дообучить именно моей специфической задаче - грубо 3 книги, 100 примеров программного кода именно в моей области, ну и в идеале -
некоторые картинки - назовем их "графики экспериментов" (если это реально).

3. В итоге (теоретически) получается некий локальный ИИ-ассистент, который дает мне более качественную помощь в моей сфере деятельности, нежели обычный облачный,
при этом моя информация никуда в облака не улетает, а стоимость расчетов снижена благодаря использованию своей видео-карты, а не облачных тарифов. Да, там есть
и бесплатные, но тот же нашумевший китаец у меня сегодня раз 5 выдавал "сервер бюзи", и в итоге я снова ушел к "француженке".

Вопрос: написанное мной выше (понятно что на абстрактом уровне) -

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

или вариант б)
написанное мной выше на текущий момент это скорее "хотелка" для новичка как я и никакая 3090 и даже 4090 ему в этом не поможет (ибо многое что придется еще изучать и ни один месяц, да и в 24Гб норм нейронка просто не влезет и т.п.), поэтому ему лучше топать в жпт-тутель (и т.п.) и обучать имеющегося там ии-ассистента (создать векторую базу, сделать и разметить маркдаун файлы примеров и т.д.)

Понимаю, что мой вопрос из серии "я не знаю зачем мне машина и ее требуемые характеристики, прав у меня еще нет, но вы мне подскажите какой авто лучше", но к сожалению, это пока мой уровень. Сформулировал как смог.

Заранее благодарен за любую помощь - т.к. я пока определяюсь в каком направлении мне лучше копать, т.к. информации по нейронкам много и каждый день становится еще больше - утонуть можно запросто.

Посоветую начать смотреть отсюда: https://habr.com/ru/articles/797657/

24Гб норм нейронка просто не влезет

В 24 гигабайта влезает тот же Qwen 32B, с которым вполне можно работать. Особенно с RAG

Если есть достаточно мощная видеокарта Nvidia - можете попробавать Nvidia ChatRTX. Он позволяет скормить нейронке свои документы, и задавать вопросы.

1.5b gpt llm-ки можно обучить на домашнем железе (требования к оперативной памяти считайте 2х от количества параметров + размер контекста * ~(2гб/8к) + место под обучающую выборку (если не хватает чуть чуть то можно потерпеть, чуть дольше обучать).

Задачи у такой маленькой нейронки - классификация, рассуждать они не могут, знаний у них мало.

p.s. настоятельно рекомендую к покупке 2x16гб видеокарты (сейчас это 4060ti за 50т.р.)

огромное спасибо!
у меня райзен 5950 и RAM 128Гб

признаться как то даже не думал про 2 видюхи, т.к. корпус (MicroTower)и мамка достаточно компактные
https://www.dns-shop.ru/product/a3504361a6df3332/materinskaa-plata-asus-tuf-gaming-b550m-plus-wi-fi/
Слоты PCIe x16: 1 x PCIe 3.0 (в режиме x4), 1 x PCIe 4.0 (в режиме x16)

В железе я не силен, поэтому как аксиому принял, что могу воткнуть только одну видюху,
Но есть грамотный в части железа товарищ, пожалуй, озадачу-ка его вопросом - можно ли воткнуть 2? Я так понимаю, тогда получится 32гб, а не 24 (безальтернативный максимум для 1 карты).
Еще раз спасибо! Будем копать :)


Можно приобрести pci-e splitter (pci-e x16 -> два pci-e x8 или -> четыре pci-e x4.

Если я верно понимаю, материнская плата должна поддерживает bifurcation (ищи в биосе)

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

p.s. есть рекомендации, для обучения и тюнинга арендовать железо, а вот для инференса лучше свое.

Давайте я вам подкину повод для размышлений. (Это не в коем случае не руководство к действию, сам я так не делал и результат не гарантировал, только вскользь видел упоминания.)

Райзен 5600G имеет в себе встроеный iGPU, которому должно быть можно выделить до половины всей имеющейся RAM.

Если ваша мать поддерживает высокие значения UMA Frame Buffer Size в биосе, такой апгрейд может быть дешевле, но это всё требует тщательного планирования и подготовки.

Ну и да, обучение на арендованом железе выходит сильно дешевле чем собирать что-то пригодное к нему. A40 у того же runpod идут дешевле чем полбакса в час а vram и вычислительной мощности у них хватает.

Спасибо, что поделились, очень интересно!
https://digitalspaceport.com/ Вот здесь энтузиаст рассказывает, как добился скорости генерации 3.5-4.25 tps на Q4 671b при схожих характеристиках железа. Однако, в его сетапе используется один 8-канальный EPYC. Подозреваю, что пропускная способность вашей памяти размазана по двум CPU, и это таки замедляет процесс инференса.

Обратил внимание что при работе LMstudio процессор грузится толкьо на половину(максимум 44%) по сути использует толкьо 10 потоков из 20, в целом в настройках самой LMStudio указывается количество потоков и их как раз только 10(в целом очевидно, учитывается реальное количество ядер а не потоков). но почему же эти потоки тогда грузятся только в пол силы? навреное там выделается куча суб потоков которые скачут с одного ядра на другой? кстати отключал гипертрейдинг и проц грузился на 85%, хотя тоже обично, а почему не больше?)

почему же эти потоки тогда грузятся только в пол силы?

Потому что планировщик перекидывает их туда-сюда

У E5-2666v3 память 4х канал ddr4 2133мгц - значит скорость около 50гб/с, скорее всего такой скорости не хватает, чтобы загрузить все ядра. Плюс у вас часть слоев вынесена на видеокарту, судя по загрузке, попробуйте отключить оффлоад на gpu и процессор скорее всего будет полностью загружен.

И, кстати, ktransformers теперь поддерживает DeepSeek 671B V3 и R1. Ускорение на одной 4090 у них вышло в 3 раза, с 4.5 t/s до 13.6 t/s. Использовалось 14гб видеопамяти и 382гб озу для кванта Q4_K_M.
Если два процессора, то проблему с numa они временно решили дублированием памяти на оба процессора, обещали потом оптимизировать. Их способ ускорения работает только для MoE моделей, R1-Distill не подойдут.

Скрытый текст

попробуйте отключить оффлоад на gpu и процессор скорее всего будет полностью загружен

не помогло, в плане что ядра не загрузились по прежнему до 50%

По тому, что использовать дополнительные потоки не эффективно. Если движок видит гипертрейдинг, то запускается на половине потоков, а эти потоки прыгают по виртуальным ядрам, создавая впечатление не полной загрузки. Если отключить гипертрейдинг, то загрузка будет 100%

git clone действительно построен как атомарная команда. Чтобы получить нормальную докачку, надо делать git init, перейти в каталог, назначить remote и делать fetch с depth и теми же опциями для filter. Неудобно то, что в мане для fetch эта возможность filter не указана, но она есть. После этого докачка при обрывах будет происходить естественно - повторять команду.

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

Публикации