[折腾]CUDA11.7也要玩LLM
零、起因
在超算中心的计算节点上研究LLM推理与训练,并测试一些模型。然而超算中心计算节点那是“相当先进”,无论3090-24GB还是A10-24GB都是
CUDA 11.7 版本,唯一较好的 CUDA 11.8 的 A100-40GB 计算节点一直无法使用。
> CUDA 11.7 和
CUDA 11.8 是 pytorch 的一个分水岭,从
torch 2.1.0 开始不支持 CUDA11.7 ,然而很多LLM的新技术在
torch 2.1.0 以后开始被引入,例如
sparce attention flash attention
等等加速大模型推理的技术。
因为没有合适的 torch 版本,因此决定自己动手编一个
CUDA 11.7 版本的 torch 2.3.0
(理论上可行)踩坑记录如下:折腾-编译pytorch
。
一、环境安装
1、Vllm 推理引擎
使用 llamafactory 支持
transformers 和 vllm
这两个推理引擎,不过比较可惜,vllm 官方仅支持 CUDA
11.8,因此这个推理引擎应该是用不了了,如果不用 CUDA
那么使用这个引擎没有意义。
二、错误修复
1、RuntimeError: “triu_tril_cuda_template” not implemented for ‘BFloat16’
错误分析:这是 torch 2.1.0 以前对 triu 和
tril 这两个的 CUDA 算子缺少实现导致的错误。
解决方案:①最优的当然就是直接安装最新版
torch 。然而正如前面提到的,torch 2.1.0 官方不支持 CUDA
11.7 。
②次优的解决方案,运行如下指令,可以安装一个
pytorch 的 2.1.0 预览版,解决上述问题。 1
pip3 install numpy --pre torch --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu117