1x RTX 5090 on EPYC, CPU-only speeds

#5
by sousekd - opened

Thank you for the quants, @AesSedai .

I have some Q4_X benchmarks with a single GPU with EPYC 9355 on ik_llama:

./llama-sweep-bench \
    --model "$MODEL_PATH" \
    --no-mmap --merge-qkv \
    -mla 3 -amb 512 \
    -b 4096 -ub 4096 \
    -ctk f16 -ctv f16 -c 131072 \
    -ngl 999 -ot exps=CPU \
    --threads 16 \
    --threads-batch 28 \
    --warmup-batch \
    -n 128
PP TG N_KV T_PP s S_PP t/s T_TG s S_TG t/s
4096 128 0 15.560 263.25 6.404 19.99
4096 128 4096 15.823 258.86 6.514 19.65
4096 128 8192 16.131 253.92 6.692 19.13
4096 128 12288 16.625 246.38 6.724 19.04
4096 128 16384 17.016 240.72 6.863 18.65
4096 128 20480 17.220 237.86 6.875 18.62
4096 128 24576 17.599 232.74 6.964 18.38
4096 128 28672 18.345 223.27 7.467 17.14
4096 128 32768 18.601 220.20 7.145 17.92
4096 128 36864 18.925 216.44 7.637 16.76
4096 128 40960 19.276 212.50 7.315 17.50
4096 128 45056 19.713 207.78 7.271 17.60
4096 128 49152 20.171 203.06 7.914 16.17
4096 128 53248 20.523 199.58 7.408 17.28
4096 128 57344 20.933 195.67 7.526 17.01
4096 128 61440 21.322 192.10 8.043 15.91
4096 128 65536 21.563 189.95 8.176 15.65
4096 128 69632 22.237 184.20 8.159 15.69
4096 128 73728 22.591 181.31 8.244 15.53
4096 128 77824 22.946 178.51 8.414 15.21
4096 128 81920 23.379 175.20 8.491 15.08
4096 128 86016 23.504 174.27 8.518 15.03
4096 128 90112 23.885 171.49 8.621 14.85
4096 128 94208 24.246 168.93 8.603 14.88
4096 128 98304 24.653 166.15 8.222 15.57
4096 128 102400 25.227 162.36 8.246 15.52
4096 128 106496 25.626 159.84 8.882 14.41
4096 128 110592 26.002 157.52 8.657 14.79
4096 128 114688 26.361 155.38 9.036 14.17
4096 128 118784 26.461 154.80 8.753 14.62
4096 128 122880 26.865 152.47 9.213 13.89
4096 128 126976 27.569 148.58 8.887 14.40

I managed to fit a 192K context with a Q8_0 KV cache. Sadly, that benchmark never finished—my machine died in the middle of the run. Now the PSU cuts power about 2 minutes after startup. I can’t say I’m exactly looking forward to investigating the issue 😀.

While doing some "without GPUs" stability tests, and since some Reddit users keep asking for EPYC CPU-only numbers, I ran a couple of EPYC 9355 benchmarks without GPU on Q4_X. This is with 12x channel DDR5-6400:

./llama-sweep-bench \
    --model "$MODEL_PATH" \
    --no-mmap \
    -mla 3 -amb 512 \
    -b 8192 -ub 8192 \
    -ctk f16 -ctv f16 -c 65536 \
    --merge-qkv \
    --threads 16 \
    --threads-batch 28 \
    --warmup-batch \
    -n 512
PP TG N_KV T_PP s S_PP t/s T_TG s S_TG t/s
8192 512 0 84.138 97.36 35.527 14.41
8192 512 8192 127.154 64.43 50.385 10.16
8192 512 16384 167.333 48.96 63.035 8.12
8192 512 24576 207.965 39.39 80.523 6.36
8192 512 32768 251.337 32.59 89.774 5.70
8192 512 40960 291.552 28.10 108.212 4.73
8192 512 49152 333.805 24.54 122.405 4.18
8192 512 57344 374.863 21.85 136.579 3.75
./llama-sweep-bench \
    --model "$MODEL_PATH" \
    --no-mmap \
    -mla 3 \
    -ctk q8_0 -c 131072 \
    --merge-qkv \
    --threads 24 \
    --threads-batch 32 \
    --warmup-batch \
    -n 512

image

PP TG N_KV T_PP s S_PP t/s T_TG s S_TG t/s
512 512 0 5.307 96.48 31.826 16.09
512 512 512 5.635 90.86 32.834 15.59
512 512 1024 5.628 90.98 33.526 15.27
512 512 2048 6.041 84.75 34.577 14.81
512 512 2560 6.165 83.05 35.339 14.49
512 512 3072 6.309 81.15 37.453 13.67
... ... ... ... ... ... ...
512 512 81920 30.659 16.70 142.831 3.58

A better chart to see TG t/s falling as context grows on CPU-only:

image

sousekd changed discussion title from Single RTX 5090 + EPYC to 1x RTX 5090 on EPYC, CPU-only speeds

thanks for the tests, I thought of moving to turin from milan, but looks like it make more sense to invest in rtx 6000 pro

@ArtemProc RTX PRO 6000 is great for long context. I own one, and I’m thinking about replacing the 5090 with another 6000, too. But unless you buy 8, 6, or at least 4 of them, it won’t let you run the largest models. Hybrid inference is much more affordable... ehm, was much more affordable before the RAM price hike - and as long as you’re okay with quantizing the KV cache, 32 or 48 GB VRAM is enough.

That said, the situation has changed dramatically over the last few months. I paid $7,500 for 1,152 GB DDR5-6400 ECC RAM last year. Right now it would cost over $46,000 if the prices listed on memory.net reflect reality. This is crazy talk. If RAM prices keep rising, I’ll sell my RAM to buy a new house.

About performance: did you notice the drop in TG t/s around ~25,000 KV in the CPU-only chart? That might be caused by thermal throttling - see the related discussion here. Also, this is running inside a VM, and I’m not pushing the CPU beyond the “Balanced” profile in BIOS. You could likely squeeze another ~20–25% out of it if trying hard.

You might also find this benchmark run of Kimi-K2-Thinking relevant if thinking about your future setup.

Yes, it is obvious for me about hybrid vs VRAM only ofcourse.
I am running iq4_k_nl, on 7713 with ddr4 2933 8 channel (used memory was at the electronic disposal point, i.e. free)
Tg starts at 7 and drops to 5 on context 35k+
Pps start at 25 and drops to 19.
It is clean Turin 12 channel bw is doing a great job here.
Btw smt is most probably useless here + less thread may allow better per core boost.
I was thinking of building on Turin in september 2025, but could not justify the need.
It is more like hobby and not business, I just love building systems.

P.s. Ddr5: Nice investment if you can turn it in money;)

@ArtemProc Interesting. So it seems at longer context, TG t/s is not significantly better on 9355 vs 7713 and DDR5-6400 vs DDR4-2933, only PP t/s is. In that case, it seems your investment was even better than mine 😀.

Pps is really important for the agentic coding usage. As you have it, why not. Tg it is ok for wait, but in long sessions pps is killer of the joy.

@sousekd @ArtemProc - i've been testing Kimi & GLM 5 on GPUs only recently, posted some number in ik_llama - https://github.com/ikawrakow/ik_llama.cpp/issues/1481. Let me know if you want me to run anything on a bunch of RTX 6000 Pros. Btw does the image input work for all of those quants here?

Aes Sedai's Quant Pasture org

@curiouspp8 Image input does work on the quants here if you include the mmproj. I recently KLD / PPL tested these quants and discovered that the something is catastrophically bad about the IQ2_S quant, and the IQ3_S isn't great either but it's not nearly as bad. The IQ2_XXS seems to have the lowest KLD / PPL compared to the IQ2_S / IQ3_S.

I've made a couple of new quants at those sizes that shows a more reasonable and expected curve for the KLD / PPL and I'll try to get them uploaded today or tomorrow and update the model card.

I've tried ubergarm ones and smol-IQ2_KL seems like a nice one for 4 cards, which is very convenient, as even if there are more GPUs the overhead adds up. Quality was very workable <100k context. Now looking for a quant that supports the image, would you say IQ2_XXS 283 GB is the best shot I should I go higher?

Aes Sedai's Quant Pasture org

@curiouspp8 I've just finished uploading the remade quants, I'd say go with whichever one you can comfortably fit with the context you need to run. All three of the non-Q4_X quants look much better now on the KLD / PPL charts compared to the previous quants.

Sign up or log in to comment