[Feature] 用4卡跑ds-r1,每个卡只用可4GB左右,可以怎么设置yaml让单卡的显存使用率提升
Checklist
- [x] 1. If the issue you raised is not a feature but a question, please raise a discussion at https://github.com/kvcache-ai/ktransformers/discussions. Otherwise, it will be closed.
- [x] 2. To help the community, I will use Chinese/English or attach an Chinese/English translation if using another language. Non-English/Chinese content without translation may be closed.
Motivation
我使用仓库的DeepSeek-V3-Chat-multi-gpu-4.yaml运行了4卡的deepseek-r1,每个卡只用了4GB左右,但是H20单卡有90GB,可以把部分的逻辑搬移到gpu做吗,现在推理比较慢。可以怎么修改yaml呢?
另外,我把yaml的model.embed_tokens部分改为这样后,会报错cuda和cpu两个设备的错误,model.embed_tokens在代码里默认使用cpu了吗?
- match:
name: "^model.embed_tokens"
replace:
class: "default"
kwargs:
generate_device: "cuda:0"
prefill_device: "cuda:0"
Related resources
No response
可以通过将更多experts放在GPU上的方法利用显存,但目前此方法与CUDA Graph冲突,会导致成倍的性能下降,导致利用更多显存甚至不如当前默认速度。 与CUDA Graph兼容的experts算子正在开发中,不过会晚一段时间
@Atream 好的。那embed_tokens放gpu就是会报错的吗?只能放cpu? 另外想问下,把attn的kv_b_proj剔除是出于什么考虑?
embedding实际上只是从一个矩阵中取出一列,放在GPU基本没有收益且占据较大显存,因此放在了CPU上,理论上也可以放在GPU上,但代码里可能会有些错误导致不支持。 kv_b_proj矩阵需要拆分来进行矩阵吸收,所以没有替换。这是后续可以进一步优化的点。不过因为目前性能的主要瓶颈在于CPU上的Moe部分,因此Attention中没有进行详细的优化,还有很多优化点。
llama.cpp仓库对sft转gguf的代码中,就是把kv_b_proj矩阵拆违k_b_proj和v_b_proj两个tensor进行存储的。如果要适配ktrans的load形式,需要把转换逻辑的这个部分注释掉。 https://github.com/ggml-org/llama.cpp/blob/master/convert_hf_to_gguf.py#L4764-L4776
MoE效率低,主要是因为算子库不适配,还是框架流程上需要优化呢
llama.cpp仓库对sft转gguf的代码中,就是把kv_b_proj矩阵拆违k_b_proj和v_b_proj两个tensor进行存储的。如果要适配ktrans的load形式,需要把转换逻辑的这个部分注释掉。 https://github.com/ggml-org/llama.cpp/blob/master/convert_hf_to_gguf.py#L4764-L4776
MoE效率低,主要是因为算子库不适配,还是框架流程上需要优化呢
第一个问题应该是最近更新的,之前我们一直使用的是unsloth的GGUF,能够成功运行
MoE的问题需要写新的算子,对框架也有小幅的修改,不然可用性会很低,因此优先级没那么高,会晚一段时间发布
bf16的
发自我的iPhone
------------------ 原始邮件 ------------------ 发件人: MacColdNET @.> 发送时间: 2025年5月29日 11:29 收件人: kvcache-ai/ktransformers @.> 抄送: PhzCode @.>, Author @.> 主题: Re: [kvcache-ai/ktransformers] [Feature] 用4卡跑ds-r1,每个卡只用可4GB左右,可以怎么设置yaml让单卡的显存使用率提升 (Issue #1232)
好的,感谢
可以通过将更多experts放在GPU上的方法利用显存,但目前此方法与CUDA Graph冲突,会导致成倍的性能下降,导致利用更多显存甚至不如当前默认速度。 与CUDA Graph兼容的experts算子正在开发中,不过会晚一段时间
我试着修改KExpertsMarlin,试图让他与CUDA Graph兼容,但是并没有起效