[折腾]CUDA11.7也要玩LLM

零、起因

在超算中心的计算节点上研究LLM推理与训练,并测试一些模型。然而超算中心计算节点那是“相当先进”,无论3090-24GB还是A10-24GB都是 CUDA 11.7 版本,唯一较好的 CUDA 11.8 的 A100-40GB 计算节点一直无法使用。 > CUDA 11.7CUDA 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 支持 transformersvllm 这两个推理引擎,不过比较可惜,vllm 官方仅支持 CUDA 11.8,因此这个推理引擎应该是用不了了,如果不用 CUDA 那么使用这个引擎没有意义。

二、错误修复

1、RuntimeError: “triu_tril_cuda_template” not implemented for ‘BFloat16’

错误分析:这是 torch 2.1.0 以前对 triutril 这两个的 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
当然这会导致 torchvision 和 torchaudio 这两个库的不匹配,不过反正用不上也就无所谓了。


[折腾]CUDA11.7也要玩LLM
http://example.com/2024/11/19/折腾/折腾-CUDA11-7也要玩LLM/
Author
peach-water
Posted on
November 19, 2024
Licensed under