5090D本地部署基于Ktransformer框架的DeepSeek(踩坑版)

我是看九天老师的公开课,尝试使用单卡5090D+512G运行内存去跑一遍DeepSeek。以下是我使用最新显卡部署时踩得坑。模型为:R1 Q4_K_M

1.Ktransformer全称(Quick Transformers)可以在模型运行过程中灵活的将专家模型加载到CPU上,同时将MLA/KVCache卸载到GPU上。

2.Unsloth动态量化,通过内存分担显存的方法保证R1 Q4_K_M的运行,并且执行不同任务时将激活的专家加载到GPU上,从而压缩模型运行所需硬件条件。

服务器配置:GPU:单卡RTX 5090D  CPU:8358P   内存:512G  硬盘:4T

第一次试错时深度学习的环境:cuda:12.8   cudnn:9.8.0   pytorch:2.7.0  python:3.11

然后接下来都是按照九天老师的步骤一步步走,其余一切顺利。直到安装flash-attn遇到了问题,原因为flash-attn只支持torch2.6版本,截至3月13。找不到所支持pytorch对应的flash-attn。

那么现在的问题是cuda版本太高,以及pytorch版本也高,那么我退回cuda12.4的版本,尽量与九天老师公开课所使用的环境一致。

第二次试错时深度学习环境:cuda:12.4  cudnn:8.9.7  pytorch:2.6.0  python:3.11

新建了一个conda环境,再次重新将该有的依赖包装上,走到flash-attn时,顺利安装

接着就是安装libstdc,也很顺利。初始化、运行安装脚本依赖都顺利。安装好之后查看一下安装情况:pip show ktransformers

现在所有需要安装的依赖都完成了,准备执行运行脚本时,又出现报错:

Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/workspace/ktransformers/ktransformers/local_chat.py", line 25, in
from ktransformers.optimize.optimize import optimize_and_load_gguf
File "/workspace/ktransformers/ktransformers/optimize/optimize.py", line 15, in
from ktransformers.util.custom_gguf import GGUFLoader, translate_name_to_gguf
File "/workspace/ktransformers/ktransformers/util/custom_gguf.py", line 27, in
import KTransformersOps
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /opt/conda/lib/python3.11/site-packages/KTransformersOps.cpython-311-x86_64-linux-gnu.so)


此原因是gcc版本低了,升级gcc到GLIBCXX_3.4.32,没有再报错GLIBCXX_3.4.32的错。

但是又报错:

Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/workspace/ktransformers/ktransformers/local_chat.py", line 25, in
from ktransformers.optimize.optimize import optimize_and_load_gguf
File "/workspace/ktransformers/ktransformers/optimize/optimize.py", line 15, in
from ktransformers.util.custom_gguf import GGUFLoader, translate_name_to_gguf
File "/workspace/ktransformers/ktransformers/util/custom_gguf.py", line 27, in
import KTransformersOps
ImportError: /opt/conda/lib/python3.11/site-packages/KTransformersOps.cpython-311-x86_64-linux-gnu.so: undefined symbol: _ZN3c106detail23torchInternalAssertFailEPKcS2_jS2_RKSs


好家伙,这个报错花费我6-7个小时都没头绪,最后在GitHub上找到了跟我相同的报错,解决了。此报错原因是缺少了编译的KTransformersOps文件,以下是解决办法:
找到ktransformers_ext中的cuda:cd ktransformers/ktransformers/ktransformers_ext/cuda/        运行setup.py这个文件:python setup.py develop

然后将KTransformersOps这个文件从指定的共享库文件链接到Conda环境的Python库目录中:

ln -sf ktransformers/ktransformers/ktransformers_ext/cuda/KTransformersOps.cpython-311-x86_64-linux-gnu.so $YOURCONDAPATH/home/anaconda3/env/python3.11/site-packages/KTransformersOps.cpython-311-x86_64-linux-gnu.so

就是这个文件,一定要放在你当前环境目录下的site-packages文件夹当中,接下来执行运行脚本

可以看到60个模型都加载出来了,但是接着错误又来了

此报错大体意思就是:cuda内核与GPU架构不兼容,no kernel image is available通常表示当前GPU的计算能力没有被编译到cuda内核当中。如若使用较新的GPU,他Ktransformers编译时未包含对应架构的支持。

​​​​具体的我查看pytorch的功能,使用print(torch.cuda.get_device_capability())输出看下结果:
这里的pytorch与对应的cuda支持sm_50 sm_60 sm_70 sm_75 sm_80 sm_86 sm_90,如果想将5090与pytorch一起使用,那么这个需要达到sm_120才可以使用,而这个sm_120只要最新的pytorch2.7.0才能符合。

总结下:
flash-attn与pytorch2.7.0不兼容,对pytorch、cuda降版本后,cuda内核与GPU架构又不兼容了。

暂时还没想到好的解决方法,我觉得等flash-attn与pytorch2.7.0发布兼容版本应该就可以解决了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值