li-plus / chatglm.cpp

C++ implementation of ChatGLM-6B & ChatGLM2-6B & ChatGLM3 & GLM4(V)
MIT License
2.93k stars 333 forks source link

请求增加多gpu推理 #23

Open grizxlyzx opened 1 year ago

grizxlyzx commented 1 year ago

非常感谢你们的工作, 当前版本似乎不支持单机多卡推理。在 8 x RTX 2080 TI 11G 的机子上加载未量化的chatglm2-6b-f16权重,ggml可以检测到8块显卡,但是所有权重都被扔到第一块卡上,导致cuda out of memory。同样的main运行q_4的权重没有任何问题。 系统:Ubuntu20.04 bash运行 $echo CUDA_VISIBLE_DEVICE 返回 0,1,2,3,4,5,6,7 期待修改以支持多卡推理,谢谢!

grizxlyzx commented 1 year ago

不能多显卡,问题在于chatglm.cpp中,宏定义: #ifdef GGML_USE_CUBLAS(出现两次,分别对应glm和glm2)中, tensor->backend = GGML_BACKEND_GPU; 这使ggml不会把模型split到多个设备上,将两处都改为 tensor->backend = GGML_BACKEND_GPU_SPLIT; ,则会使ggml根据设备显存和性能,将模型按比例split到多块设备上运行。

3wweiweiwu commented 7 months ago

最近版本更新了,现在似乎只有一处tensor->backend = GGML_BACKEND_GPU。我试着修改之后编译,之后运行一直报错。请问LZ有什么思路吗?谢谢啦

ggml_init_cublas: found 4 CUDA devices: Device 0: Tesla M60, compute capability 5.2 Device 1: Tesla M60, compute capability 5.2 Device 2: Tesla M60, compute capability 5.2 Device 3: Tesla M60, compute capability 5.2 GGML_ASSERT: /home/xxs/chatglm.cpp/third_party/ggml/src/ggml-cuda.cu:6100: false Aborted (core dumped)

XiaoYangWu commented 1 month ago

请问最后成功了吗