Получил скорость на 2 GPU: prompt eval time = 53671.03 ms / 1268 tokens ( 42.33 ms per token, 23.63 tokens per second) eval time = 389557.42 ms / 1731 tokens ( 225.05 ms per token, 4.44 tokens per second)
На одном RTX 4090D 48GB: prompt eval time = 58561.21 ms / 1273 tokens ( 46.00 ms per token, 21.74 tokens per second) eval time = 371584.74 ms / 1566 tokens ( 237.28 ms per token, 4.21 tokens per second)
Запустил эту же модель на ik_llama.cpp на одной RTX 4090D:
prompt eval time = 21474.45 ms / 1265 tokens ( 16.98 ms per token, 58.91 tokens per second)
generation eval time = 396856.15 ms / 1690 runs ( 234.83 ms per token, 4.26 tokens per second)
Вывод:
Для обычных моделей llama.cpp и ik_llama.cpp приблизительно одинаковы по скорости генерации токенов. По обработке промпта llama.cpp в 2.7 раза быстрее, - думаю что это из-за AMX.
ik_llama.cpp работает в 2-3 раза быстрее только с оптимизированными моделями (_R4):
PP: 164 t/s vs 58 t/s
TG: 8.5 t/s vs 4.2 t/s
Интересно, если в ik_llama.cpp завезут AMX, - она вообще уйдёт в отрыв по скорости обработки промпта?
Купил себе Intel Xeon 3425 (12 cores / 24 threads), есть AMX.
Память 8 каналов * 64GB DDR5-4800. Но почему то скорость памяти тормозит, BIOS пишет, что у меня Memory Channel Mode: Mixed. Из-за этого скорость около половины от того, что должно быть. Разбираюсь...
Запустил build от 2025-July-04.
Модель ubergarm/DeepSeek-R1-0528-GGUF, квант IQ2_K_R4 - это 220GB
Если запускаю с RTX 3090 24GB VRAM, получаю:
PP 131 t/s
TG 7.5 t/s
Если запускаю с RTX 4090D 48GB VRAM, получаю:
PP 164 t/s
TG 8.5 t/s
Надеюсь, если получится настроить RAM, то получится разогнать TG раза в два.
Сам я не пробовал, но из того что читал - у Маков очень неплохая скорость генерации токенов, но медленная скорость обработки промпта - не хватает скорости процессора. Поэтому для длинных контекстов Мак не очень.
Я не специалист по сетям. Но представляют себе так, что хоть с IPv4, хоть с IPv6 - в любом случае Кубернетусу нужны дополнительные хопы, - LoadBalancer, Ingress. И поэтому в общем-то без разницы - IPv4/v6 с НАТ или без...
Хотя от ограничений по IP диапазонам IPv6 поможет.
Я пробовал использовать 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 для памяти на "чужом" процессоре.
я перепутал в сообщении выше 🤦
Это ik_llama 2.7 раза быстрее обрабатывает промпт...
Запустить эту же самую модель на llama.cpp я не могу, так как она несовместима.
Запустил другую: недавно вышла интересная модель: https://huggingface.co/unsloth/DeepSeek-TNG-R1T2-Chimera-GGUF
Я запустил квант UD-IQ2_M (213 GB) - это приблизительно такой же размер, как и в моём сообщении выше. Запускал llama.cpp с параметрами:
--model ./models--unsloth--DeepSeek-TNG-R1T2-Chimera-GGUF/UD-IQ2_M
--ctx-size 32768
--cache-type-k q8_0
--cache-type-v q8_0
--flash-attn
--threads 12
--host 0.0.0.0 --port 37000
--temp 0.6 --top-p 0.95
--n-gpu-layers 999
--override-tensor "blk\.(3|4|5|6|7|8|9|10|11)\.ffn_.*=CUDA0"
--override-tensor "blk\.(12|13|14|15|16)\.ffn_.*=CUDA1"
--override-tensor exps=CPU
лог:
ggml_cuda_init: GGML_CUDA_FORCE_MMQ: no
ggml_cuda_init: GGML_CUDA_FORCE_CUBLAS: no
ggml_cuda_init:
found 2 CUDA devices:
Device 0: NVIDIA GeForce RTX 4090 D, compute capability 8.9, VMM: yes
Device 1: NVIDIA GeForce RTX 3090, compute capability 8.6, VMM: yes load_backend: loaded CUDA backend from /app/
libggml-cuda.so
load_backend: loaded CPU backend from /app/
libggml-cpu-sapphirerapids.so
build: 5830 (bac8bed2) with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu
system_info: n_threads = 12 (n_threads_batch = 12) / 12
| CUDA : ARCHS = 500,610,700,750,800,860,890
| USE_GRAPHS = 1
| PEER_MAX_BATCH_SIZE = 128
| CPU : SSE3 = 1
| SSSE3 = 1
| AVX = 1
| AVX2 = 1
| F16C = 1
| FMA = 1
| BMI2 = 1
| AVX512 = 1
| AVX512_VBMI = 1
| AVX512_VNNI = 1
| AVX512_BF16 = 1
| AMX_INT8 = 1
| LLAMAFILE = 1
| OPENMP = 1
| REPACK = 1
Получил скорость на 2 GPU:
prompt eval time = 53671.03 ms / 1268 tokens ( 42.33 ms per token, 23.63 tokens per second)
eval time = 389557.42 ms / 1731 tokens ( 225.05 ms per token, 4.44 tokens per second)
На одном RTX 4090D 48GB:
prompt eval time = 58561.21 ms / 1273 tokens ( 46.00 ms per token, 21.74 tokens per second)
eval time = 371584.74 ms / 1566 tokens ( 237.28 ms per token, 4.21 tokens per second)
Запустил эту же модель на ik_llama.cpp на одной RTX 4090D:
prompt eval time = 21474.45 ms / 1265 tokens ( 16.98 ms per token, 58.91 tokens per second)
generation eval time = 396856.15 ms / 1690 runs ( 234.83 ms per token, 4.26 tokens per second)
Вывод:
Для обычных моделей llama.cpp и ik_llama.cpp приблизительно одинаковы по скорости генерации токенов. По обработке промпта llama.cpp в 2.7 раза быстрее, - думаю что это из-за AMX.
ik_llama.cpp работает в 2-3 раза быстрее только с оптимизированными моделями (_R4):
PP: 164 t/s vs 58 t/s
TG: 8.5 t/s vs 4.2 t/s
Интересно, если в ik_llama.cpp завезут AMX, - она вообще уйдёт в отрыв по скорости обработки промпта?
Отправил инфо про это разрабам тоже: https://github.com/ikawrakow/ik_llama.cpp/issues/437#issuecomment-3040885214
## 1. ktransformers посмотрел, но как-то уже слишком муторно его запускать... Сложно как-то.
## 2. DGGML_CUDA_IQK_FORCE_BF16=1
Я изначально компилировал с этим параметром
## 3. У меня всё на Ubuntu, так что aida64 я запустить не могу - оно только для Windows.
Теоретически, скорость памяти у меня должна быть 307GB/s.
Запускаю mlc:
./mlc
Intel(R) Memory Latency Checker - v3.11a
ALL Reads : 124753.4
3:1 Reads-Writes : 162175.4
2:1 Reads-Writes : 168777.0
1:1 Reads-Writes : 187221.9
Stream-triad like: 149692.6
## 4. Сейчас попробую llama.cpp. Её надо компилировать? Или можно запустить через Docker?
Купил себе Intel Xeon 3425 (12 cores / 24 threads), есть AMX.
Память 8 каналов * 64GB DDR5-4800. Но почему то скорость памяти тормозит, BIOS пишет, что у меня Memory Channel Mode: Mixed. Из-за этого скорость около половины от того, что должно быть. Разбираюсь...
Запустил build от 2025-July-04.
Модель ubergarm/DeepSeek-R1-0528-GGUF, квант IQ2_K_R4 - это 220GB
Если запускаю с RTX 3090 24GB VRAM, получаю:
PP 131 t/s
TG 7.5 t/s
Если запускаю с RTX 4090D 48GB VRAM, получаю:
PP 164 t/s
TG 8.5 t/s
Надеюсь, если получится настроить RAM, то получится разогнать TG раза в два.
CUDA_VISIBLE_DEVICES=0 ./build/bin/llama-sweep-bench \ --model ./IQ2_K_R4/DeepSeek-R1-0528-IQ2_K_R4-00001-of-00005.gguf \ --ctx-size 32768 \ -ctk q8_0 -fa -mla 3 \ -amb 256 \ -ser 6,1 \ -fmoe \ -b 4096 -ub 4096 \ --temp 0.6 --top-p 0.95 \ --n-gpu-layers 999 \ --override-tensor "blk\.(3|4|5|6|7|8|9|10)\.ffn_.*=CUDA0" \ --override-tensor exps=CPU \ --parallel 1 \ --threads 12
Если запускаю сразу на двух карточках - то скорость получается на 5-6% быстрее чем на одной RTX 4090D, то есть смысла гонять на обоих карточках нет.
Сам я не пробовал, но из того что читал - у Маков очень неплохая скорость генерации токенов, но медленная скорость обработки промпта - не хватает скорости процессора. Поэтому для длинных контекстов Мак не очень.
Спасибо за статью - узнал много нового про параметры запуска в которых трудно было разобраться самому.
Правильно ли я понял, что MLA есть только у DeepSeek и поэтому на больших контекстах DeepSeek работает лучше любых других моделей?
Я не специалист по сетям. Но представляют себе так, что хоть с IPv4, хоть с IPv6 - в любом случае Кубернетусу нужны дополнительные хопы, - LoadBalancer, Ingress. И поэтому в общем-то без разницы - IPv4/v6 с НАТ или без...
Хотя от ограничений по IP диапазонам IPv6 поможет.
Перевод "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/