Я пробовал использовать Harvester 1.4.0, который идёт уже с kubeVirt и для storage используется Longhorn.
Да, работает. Но всё довольно сыро:
Создаю виртуалку у которой 16GB RAM, но для объектов Кубернетеса для этой виртуалки нужно ещё немного памяти (это я про resources), и оказывается что никто не знает как посчитать этот overhead. Из-за этого виртуалки иногда крэшатся Out-of-memory. Причём у виртуалки памяти достаточно - это у куба не хватает, но крэшится вся виртуалка.
Некоторые действия (migration, shutdown, power on...) делаются декларативно. То есть создаётся какой-то объект куба. А когда виртуалка например не стартует, то приходится копаться в дебрях куба, чтобы понять - где там проблема? Пока найдёшь нужный манифест в котором есть статус, в котором указана проблема...
Проброс устройств - боль. Отдельный оператор занимается сканированием PCI устройств. Список этих устройств - глобальный для всех нодов. Как этот список управляется - загадка. Управляется он через манифесты, но иногда некоторых устройств там нет. Почему? - кто ж его знает. Иногда - устройства показаны занятыми, хотя никто их не использует.
Как-то раз виртуалка отказывалась запускаться и я не мог понять почему. Пошёл спать. Утром пришёл - виртуалка запущена. Что-то там внутри куба "дошло" за несколько часов...
В общем, надоело мучаться и я перешёл на Proxmox - там всё намного стабильней.
Ktransformer kernel can achieve 21 TFLOPS of BF16 throughput and 35 TOPS of Int8 throughput on Xeon4 CPUs — about 4× faster than PyTorch’s general AMX kernel. For DeepSeek-V3, pairing a Xeon4 CPU with a single RTX 4090 GPU achieves 418 tokens/s end-to-end throughput
Попробовать выяснить оптимальное количество ядер - это было бы интересно.
Я видел комментарий, что в среднем одно ядро современного (Sapphire Rapids) Xeon способно переварить 20-30ГБ/с данных модели. Поэтому если ядер много, а память недостаточно быстрая чтобы загрузить ядра - они простаивают. И наоборот - если память быстрая, но не хватает скорости ядер их обработать - то простаивает память.
Но эта цифра 20-30ГБ/c - сомнительная. Просто кто-то написал. Вот если бы реально это как-то померить, и как оно зависит от квантизации, ...
Насколько я смог разобраться, это потому что один процессор работает с памятью на полной скорости (~120GB/s в моём случае), а если процессора два - то работа с памятью идёт через NUMA, а это - около 20GB/s для памяти на "чужом" процессоре.
Тут надо разобраться - это выгрузка слоёв на GPU ускоряет?
Потому что llama.cpp в первую очередь выгружает на GPU работу KV cache и обработку промпта. В этом случае даже если сами слои вообще не выгружать на GPU - уже может быть раза в два быстрее.
У меня используется где-то 43GB VRAM.
Я сильно много не экспериментировал, но думаю, что для моделей размером 120-350 ГБ особой разницы в скорости между 24GB и 48GB VRAM не будет. А вот разница между нет GPU и есть 24GB VRAM - большая.
Да, вот эта скорость выше - это с частичной выгрузкой слоёв. Вот мои параметры:
--ctx-size 16384
--cache-type-k q8_0 --cache-type-v q8_0
--flash-attn
--threads 16
--n-gpu-layers 999
--override-tensor '([3-8]+).ffn_.*_exps.=CPU'
Выгрузка слоёв на GPU делает скорость чуть быстрее, но не сильно. GPU очень круто ускоряет процессинг промпта, и работу с KV cache. Сама инференция по большей части упирается в RAM.
DeepSeek-R1-0528 или, если не нужны рассуждения, на DeepSeek-V3-0324
Да, скорость генерации токенов примерно одинакова. Только вот для R1 надо ждать минут 10 пока она "думает", а V3 отвечает сразу и неплохо.
"--prio", "3"
Интересно, зачем этот флаг? Бывает на сервере запущено ещё пара сервисов, а запуск инференции с этим параметром "душит" всё остальное на сервере, при этом скорость генерации практически не увеличивается.
Классная фишка у моделей Qwen3 - модель можно запустить один раз, а уже для каждого запроса решать - нужен простой ответ быстро? или нужно думать (thinking) долго?
Сейчас вот удалось на Ebay "словить" вариант компьютера с Intel Xeon W5-3425 всего за $1000. Правда память надо будет докупать. Надеюсь будет значительно быстрей, потому что у этих Xeon добавили технологию AMX, которая ускоряет инференцию, и есть 8 каналов DDR5-4800 памяти. DDR5 память правда раза в 3-4 дороже чем DDR4.
У Гитлаба есть способ запускать раннеры к Кубернетес кластере - и таким образом масштабироваться за счёт Кубернетеса. Я у себе в домашней лаборатории так настроил. Понятно, что масштабы у меня меньше, но вот такой вариант тоже есть.
Перевод "Custom Resources", как "пользовательские ресурсы" - немного странный, как мне кажется. Правда, я лучшего не знаю...
А по поводу статьи - мне интересно, с какого уровня нагрузки может возникнуть необходимость "разгружать" ETCD?
Некоторые темы показались интересными.
Но когда я попробовал зайти на ваш сайт - Clouflare меня блокирует и не пускает. Вы там может сделайте правила попроще...
Из моего опыта:
Я пробовал использовать Harvester 1.4.0, который идёт уже с kubeVirt и для storage используется Longhorn.
Да, работает. Но всё довольно сыро:
Создаю виртуалку у которой 16GB RAM, но для объектов Кубернетеса для этой виртуалки нужно ещё немного памяти (это я про resources), и оказывается что никто не знает как посчитать этот overhead. Из-за этого виртуалки иногда крэшатся Out-of-memory. Причём у виртуалки памяти достаточно - это у куба не хватает, но крэшится вся виртуалка.
Некоторые действия (migration, shutdown, power on...) делаются декларативно. То есть создаётся какой-то объект куба. А когда виртуалка например не стартует, то приходится копаться в дебрях куба, чтобы понять - где там проблема? Пока найдёшь нужный манифест в котором есть статус, в котором указана проблема...
Проброс устройств - боль. Отдельный оператор занимается сканированием PCI устройств. Список этих устройств - глобальный для всех нодов. Как этот список управляется - загадка. Управляется он через манифесты, но иногда некоторых устройств там нет. Почему? - кто ж его знает. Иногда - устройства показаны занятыми, хотя никто их не использует.
Как-то раз виртуалка отказывалась запускаться и я не мог понять почему. Пошёл спать. Утром пришёл - виртуалка запущена. Что-то там внутри куба "дошло" за несколько часов...
В общем, надоело мучаться и я перешёл на Proxmox - там всё намного стабильней.
А где посмотреть эти критерии?
Спасибо большое за результаты!
Я купил уже готовый компьютер - Dell Precision T7960, сегодня утром пришёл. Правда с ним только 4*16GB RAM, так что памяти надо будет докупить.
chipset W790
motherboard - не знаю какая, похоже у них своя (они называют это system board)
поддерживается 8 каналов. На материнке - 16 DIMMs.
Кстати, кто-нибудь знает, если запустятся DDR5 планки на 48GB? В их мануале написано что поддерживаются только 16 GB, 32 GB, 64 GB, 128 GB, 256 GB.
8 * 48GB (384GB) - это наверное минимум чтобы запустить нужные модели. Можно купить за $1400.
А вот 8 * 64GB (512GB) - это уже где-то $2200.
Кстати узнал, что если ставить до 8 модулей памяти - работать будет на 4800 MT/s. А если больше модулей памяти - только на 4400 MT/s
DeepSeek R1 не сильно отстаёт
Спасибо за ссылки. Кстати там тоже написана эта же цифра - около 20ГБ/с на ядро.
Насколько я смотрел проекты, то поддержка AMX толком ещё не добавлена. Вот тут пишут какие-то фантастические цифры, которые "возможно" достичь с AMX:
https://github.com/ikawrakow/ik_llama.cpp/issues/437
Вроде бы прямо сейчас над этим работают.
Попробовать выяснить оптимальное количество ядер - это было бы интересно.
Я видел комментарий, что в среднем одно ядро современного (Sapphire Rapids) Xeon способно переварить 20-30ГБ/с данных модели. Поэтому если ядер много, а память недостаточно быстрая чтобы загрузить ядра - они простаивают. И наоборот - если память быстрая, но не хватает скорости ядер их обработать - то простаивает память.
Но эта цифра 20-30ГБ/c - сомнительная. Просто кто-то написал. Вот если бы реально это как-то померить, и как оно зависит от квантизации, ...
Не совсем понятно, у вас в результатах сравнивается "Модель Qwen3-30B-A3B Q8_0" с "Модель Qwen3-30B-A3B Q8_0"?
LM Studio наврядли использует AMX. Это нужно или llama.cpp или ik_llama
4 канала памяти? Обычно с таким количество ядер процессоры имеют по 8 каналов.
Что такое "open-source" каждый понимает по своему. Но Qwen3 весы выложены (open) например вот тут:
https://huggingface.co/Qwen/Qwen3-235B-A22B
Если у вас всё сконфигурировано оптимально, то максимально возможная скорость памяти - 68GB/s. Практически - меньше.
С этим особо не разгонишься.
Инференция на двух процессорах может быть медленнее.
Вот тут я пробовал запускать на двух Intel Xeon Gold 5218:
https://github.com/Mozilla-Ocho/llamafile/issues/765
Получилось около 4 токенов в секунду.
На одном процессоре - около 8 токенов в секунду.
Насколько я смог разобраться, это потому что один процессор работает с памятью на полной скорости (~120GB/s в моём случае), а если процессора два - то работа с памятью идёт через NUMA, а это - около 20GB/s для памяти на "чужом" процессоре.
OS: Ubuntu 24.
Видятся 48ГБ.
Обычные драйверы, ничего особо не настраивал специально, всё "из коробки".
Вот тут я написал результаты бенчмарков, мерил скорость у неё:
https://www.reddit.com/r/LocalLLaMA/comments/1j11js6/i_bought_4090d_with_48gb_vram_how_to_test_the/
вот тут брал в феврале этого года:
https://www.c2-computer.com/products/new-parallel-nvidia-rtx-4090d-48gb-gddr6-256-bit-gpu-blower-edition
У них на сайте есть и другие видюхи.
Надо промпт начинать с /no_think
Тогда отвечает сразу. Я использую OpenWebUI, - там можно этот "/no_think" добавить в список промптов и тогда его можно использовать "в один клик"
Тут надо разобраться - это выгрузка слоёв на GPU ускоряет?
Потому что llama.cpp в первую очередь выгружает на GPU работу KV cache и обработку промпта. В этом случае даже если сами слои вообще не выгружать на GPU - уже может быть раза в два быстрее.
У меня используется где-то 43GB VRAM.
Я сильно много не экспериментировал, но думаю, что для моделей размером 120-350 ГБ особой разницы в скорости между 24GB и 48GB VRAM не будет. А вот разница между нет GPU и есть 24GB VRAM - большая.
Да, вот эта скорость выше - это с частичной выгрузкой слоёв. Вот мои параметры:
--ctx-size 16384
--cache-type-k q8_0 --cache-type-v q8_0
--flash-attn
--threads 16
--n-gpu-layers 999
--override-tensor '([3-8]+).ffn_.*_exps.=CPU'
Выгрузка слоёв на GPU делает скорость чуть быстрее, но не сильно. GPU очень круто ускоряет процессинг промпта, и работу с KV cache. Сама инференция по большей части упирается в RAM.
Да, скорость генерации токенов примерно одинакова. Только вот для R1 надо ждать минут 10 пока она "думает", а V3 отвечает сразу и неплохо.
Интересно, зачем этот флаг? Бывает на сервере запущено ещё пара сервисов, а запуск инференции с этим параметром "душит" всё остальное на сервере, при этом скорость генерации практически не увеличивается.
Мой опыт:
Моя система:
Intel Xeon Gold 5218 (16 ядер, 32 threads),
6 каналов памяти * 64GB DDR4-2666
RTX 4090D 48GB VRAM (китайский мод)
Использую две модели:
DeepSeek-V3-0324-UD-Q2_K_XL (250GB), 6.3 tokens / sec
Qwen3-235B-A22B-128K-UD-Q4_K_XL (125GB), 7.7 tokens / sec
Классная фишка у моделей Qwen3 - модель можно запустить один раз, а уже для каждого запроса решать - нужен простой ответ быстро? или нужно думать (thinking) долго?
Сейчас вот удалось на Ebay "словить" вариант компьютера с Intel Xeon W5-3425 всего за $1000. Правда память надо будет докупать. Надеюсь будет значительно быстрей, потому что у этих Xeon добавили технологию AMX, которая ускоряет инференцию, и есть 8 каналов DDR5-4800 памяти. DDR5 память правда раза в 3-4 дороже чем DDR4.
Интересный опыт.
У Гитлаба есть способ запускать раннеры к Кубернетес кластере - и таким образом масштабироваться за счёт Кубернетеса. Я у себе в домашней лаборатории так настроил. Понятно, что масштабы у меня меньше, но вот такой вариант тоже есть.
А что такое DNSmanager?