当前位置: 首页 > news >正文

cu118 安装vllm 极简教程 踩坑笔记

        近期安装cuda 11.8对应的vllm,折腾了好几天,踩坑不少,终于成功了,特此记录分享,希望大家可以顺利使用vllm。文章前大半为踩坑笔记,不需要的同学可直达文章底部看安装部分。

本机环境

        系统: Linux version 3.10.0-1160.114.2.el7.x86_64

        GPU: RTX A4000, CUDA Version: 12.0

        系统CUDA:11.3

踩坑

坑位说明:

        1 python 版本

        2 cuda 版本

        3 torch 版本

        4 vllm-nccl

        5 pip 命令

python 版本问题

        vllm 官方说  3.8 <= python <= 3.12, 我试过 3.8,3.9 和 3.10,只有3.10成功了,不排除3.8 和3.9 也能成功,容易踩坑不推荐。遇到的典型错误如下:

      Cargo, the Rust package manager, is not installed or is not on PATH.
      This package requires Rust and Cargo to compile extensions. Install it through
      the system's package manager or via https://rustup.rs/

        查了一些资料,有人说将他的32-bit 版本python 换成64-bit版本就解决,我是将py3.8换成py3.10.0解决的,统一称为python版本问题吧。

cuda 版本问题

        vllm 官方主要支持 cuda 11.8 和 cuda 12.1两个版本,分别代表代表两个版本所能支持的最高cuda。这个cuda 版本不能超过自己GPU对应的cuda version,如我的gpu 12.0,已安装系统cuda 11.3,理论上我可以升级至cuda 12.0 再使用vllm - cuda-12.1,未尝试。目前已经证实,11.3 的系统cuda 可以使用vllm -cu118。

torch 版本问题

        很多教程都会强调vllm 对 python 和 cuda的要求,但是不强调torch 版本,这是不行的,因为: 1)具体的vllm 包是在明确的torch 版本下编译的 ;2)torch 也受cuda 制约,太低或太高的torch 不一定能使用cuda 11.8。经过我的测试,大致对应关系如下(不完全准确哈):

        目前torch 2.0.x~2.3.x 支持 cuda 11.8,对应的vllm 0.4.x。

        vllm >= 0.5.x,torch>=2.3.x

        vllm >=0.6,torch>=2.5.x

vllm-nccl 问题

        很多人安装过程中会遇到 vllm-nccl 包卡主的情况。

        eg:https://files.pythonhosted.org/packages/04/36/0c44b91575274bfe401e5605551d8644281b2c95e6572a2697dc2bee5bd3/vllm_nccl_cu11-2.18.1.0.4.0.tar.gz

一开始我想自己下载这个包安装,去pypi 官网下载了这个包,主要内容如下:

运行 python setup.py build,卡主了。这里会在github 下载一个包:cu11-libnccl.so.2.18.1。

这个包也会卡,我直接上梯子进github 手动下载,200多M。毕竟下载任务卡主了,有了这个包也不知道怎么装,后续瞎折腾一通还是不行,放弃。一开始猜测是从github 下载导致卡,可是加梯子也没用,我单独可以在github 上下载cu11-libnccl.so.2.18.1,说明网络不是问题,可能是安装程序有问题。

还好有人把这个包做成了 whl 文件,我们可以直接安装。此外,也可以在这里找到cu12的包。

链接:piwheels - vllm-nccl-cu11

           piwheels - vllm-nccl-cu12

有些人说通过网络设置可以解决卡主问题,我试了,在我这没用。直接装whl 多香。

[Bug]: vllm运行卡住 · Issue #7576 · vllm-project/vllmhttps://github.com/vllm-project/vllm/issues/7576

这里也提供了一个思路:如果安装遇到某个包卡主了,尽管这个包可能不是第一个或者前几个包,我们也可以提前安装这个包,反正它是依赖的一部分,先装了,就不会成为阻碍。

pip 命令问题

        pip 有个特点,自动给你安装能用的最新的包。可是最新的包往往会有隐患,毕竟它依赖的包以及依赖它的包未必也够新。所以安装时,如果有明确目标,可以指定版本。

        1 默认安装的vllm 是cuda 12.1编译的,不一定能用

        2 默认安装的torch 也是依赖cuda 12 的,不一定能用

        3 安装vllm 会依赖安装torch,安装torch 会依赖安装cuda,于本文而言,我们需安装名字中带有cu118 的vllm 和 torch。

安装

1 创建新conda 环境 ,python 3.10.13

eg: conda create -n vllm_310 python=3.10.13

2 安装torch cu118 版,可以在阿里云的镜像网站加载,速度给力

链接:

        pytorch-wheels-cu118安装包下载_开源镜像站-阿里云https://mirrors.aliyun.com/pytorch-wheels/cu118/

版本:torch-2.2.1+cu118-cp310-cp310-linux_x86_64.whlhttps://mirrors.aliyun.com/pytorch-wheels/cu118/torch-2.2.1+cu118-cp310-cp310-linux_x86_64.whl?spm=a2c6h.25603864.0.0.442f7bd7fKRbaL

将 xx.whl 上传至服务器,通过 pip 安装。 此外,需单独安装一个numpy,指定版本:1.26.0。如果默认安装,numpy是2.x.x,版本过高,会出问题。

3 安装vllm_nccl,这个容易卡,直接下载 xx.whl

连接:piwheels - vllm-nccl-cu11https://www.piwheels.org/project/vllm-nccl-cu11/

4 安装vllm,直接下载 xx.whl

连接:vllm-0.4.1+cu118-cp310-cp310-manylinux1_x86_64.whlhttps://github.com/vllm-project/vllm/releases/download/v0.4.1/vllm-0.4.1+cu118-cp310-cp310-manylinux1_x86_64.whl

torch=2.2.1 --> vllm=0.4.1

torch=2.3.0 --> vllm=0.4.2

5 安装 Xformers,直接下载 xx.whl
xformers-0.0.25+cu118-cp310-cp310-manylinux2014_x86_64.whlhttps://mirrors.aliyun.com/pytorch-wheels/cu118/xformers-0.0.25+cu118-cp310-cp310-manylinux2014_x86_64.whl?spm=a2c6h.25603864.0.0.442f7bd7fKRbaL

6 调整环境

        1)将transformers 版本调整为 4.45.0,版本过高容易报错,主要这个vllm 有点老

        2)设置 nccl.so 的环境变量,运行模型时会默认使用vllm_nccl_cu11,这个lib 不好用。安装torch 时已经安装了nvidia-nccl-cu11.

eg:

export VLLM_NCCL_SO_PATH=/root/miniconda3/envs/llm_3-10-13/lib/python3.10/site-packages/nvidia/nccl/lib/libnccl.so.2
 


http://www.mrgr.cn/news/93943.html

相关文章:

  • [pytest] 配置
  • 【08】单片机编程核心技巧:变量命名规范
  • DeepSeek大语言模型下几个常用术语
  • 创建Electron35 + vue3 + electron-builder项目,有很过坑,记录过程
  • 【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真(基于运放的电流模BGR)
  • 从0开始的操作系统手搓教程43——实现一个简单的shell
  • 【SpringMVC】深入解析@ RequestMapping 注解的概念及使用和 MVC 介绍
  • QT多线程
  • 代码随想录刷题day41|(二叉树篇)二叉树的最大深度(递归)
  • 【前端】BOM DOM
  • 打造智能钉钉机器人:借助智谱GLM-4-Flash实现高效智能回复(文末附源码)
  • 打造智能聊天体验:前端集成 DeepSeek AI 助你快速上手
  • 我的AI工具箱Tauri版-建筑平面图生成装修设计
  • 个人学习编程(3-10) 刷题
  • Jetson Orin 安装 onnxruntime
  • LSTM方法实践——基于LSTM的汽车销量时序建模与预测分析
  • 基金股票期权期货投资方式对比
  • 软考 数据通信基础——信道
  • 【SoC基础】第2节:CPU简介
  • DeepSeek本地化部署与跨域访问架构构建