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

【vllm/瞎折腾】在内网wsl上安装vllm并尝试多节点部署(失败了)

目录

  • 说在前面
  • miniconda安装
  • 外网创建虚拟环境
    • 创建节点一的虚拟环境
    • 创建节点二的虚拟环境
  • 内网配置环境
    • 配置节点一的环境
    • 配置节点二的环境
  • vllm多节点配置
    • 节点一(主节点)配置
    • 节点二配置
  • 部署LLM(失败)
  • 补充:wsl2设置ulimit
  • 补充:wsl安装libcuda
  • 补充:wsl2端口绑定
  • 问题
  • 吐槽

说在前面

  • 操作系统(外网):win11 wsl2
  • miniconda版本:25.1.1 (该版本的python版本为3.12.9)
  • 操作系统(内网节点一):win10 wsl 4060ti 16g
  • 操作系统(内网节点二):win10 wsl 2070s 8g
  • 其他:llama.cpp它不香吗,折腾这个?

miniconda安装

  • 官网
  • 安装
    # 最好到用户目录下创建文件夹
    cd ~
    # 创建一个目录
    mkdir miniconda3 
    cd miniconda3
    # 下载安装脚本 
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O .miniconda.sh
    bash miniconda.sh -b -u -p .
    
  • 创建虚拟环境
    conda create -n vllm
    conda activate vllm
    
  • 注意不要在base环境中直接安装vllm

外网创建虚拟环境

创建节点一的虚拟环境

  • 由于ray的集群需要保持ray版本以及python版本一致,而节点二的机器比较老,所以这里选择的python版本为3.10
  • 创建虚拟环境
    conda create -n vllm1 python=3.10
    conda activate vllm1
    pip install vllm
    
  • 节点一的cuda环境比较新,为12.x,所以直接安装vllm即可
  • 安装完后,使用conda-pack打包
    pip install conda-pack
    conda-pack
    
  • 注意,这里安装的ray版本为2.44.1
  • 注意不要在base环境中打包

创建节点二的虚拟环境

  • 创建虚拟环境
    conda create -n vllm2  python=3.10
    conda activate vllm2
    
  • 节点二的cuda版本为11.x,需要指定版本安装
    export VLLM_VERSION=0.6.1.post1
    export PYTHON_VERSION=310
    pip install https://github.com/vllm-project/vllm/releases/download/v${VLLM_VERSION}/vllm-${VLLM_VERSION}+cu118-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118
    
  • 这样安装后的ray版本为2.44.0,与节点一不一致,要升个级
    pip install --upgrade ray==2.44.1
    
  • 同样,安装完后,使用conda-pack打包
    pip install conda-pack
    conda-pack
    
  • 注意不要在base环境中打包

内网配置环境

配置节点一的环境

  • 导入打包后的虚拟环境到内网
  • 解压
    mkdir vllm
    tar -xzf vllm1.tar.gz -C vllm
    
  • 激活虚拟环境
    source vllm/bin/activate
    
  • 还原虚拟环境
    conda-unpack 
    

配置节点二的环境

  • 操作与上一步一致

vllm多节点配置

节点一(主节点)配置

  • 先进入虚拟环境
    conda activate vllm
    
  • 确定本机IP
    hostname -I
    xxx.xxx.xxx.xxx
    
  • 启用ray
    VLLM_HOST_IP=xxx.xxx.xxx.xxx ray start --head --block --port 6379 --num-gpus=1 --resources='{"node:{xxx.xxx.xxx.xxx}":1}'
    # num-gpus 表示本节点的gpu数量 折腾过程中有次填了个2 直接一堆奇奇怪怪的问题
    

节点二配置

  • 先进入虚拟环境
    conda activate vllm
    
  • 确定本机IP
    hostname -I
    yyy.yyy.yyy.yyy
    
  • 启用ray
    VLLM_HOST_IP=yyy.yyy.yyy.yyy ray start --block --address xxx.xxx.xxx.xxx:6379 --num-gpus=1 --resources='{"node:{yyy.yyy.yyy.yyy}":1}'
    

部署LLM(失败)

  • 惨遭滑铁卢,以下可忽略,不是主要原因
    • wsl不支持SO_REUSADDR,而ray的cluster通信用的是grpc
    • 相关issue1
    • 相关issue2
    • 不过看样子好像ray解决了这个问题
  • 可能还是wsl2的网络设置有问题,两边访问不到一块

补充:wsl2设置ulimit

  • 编辑/etc/security/limits.conf
    sudo vi /etc/security/limits.conf
    
  • 添加以下内容
    *	soft	nofile	65535
    *	hard	nofile	65535
    
  • 重新su一下
    su 用户名
    # 输入密码
    ulimit -n
    

补充:wsl安装libcuda

  • 正常来讲,新版的显卡驱动默认支持wsl2
    在这里插入图片描述

  • 如果是老版本的,可能需要自己手动安装下,下载页
    在这里插入图片描述
    不要选错了 (装完windows版本的发现还是不行,吐血三升)

  • 例如

    wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run
    sudo sh cuda_11.2.0_460.27.04_linux.run
    

补充:wsl2端口绑定

  • 这里

问题

  • 在创建环境conda --no-plugins create -n vllm python=3.10时出现OSError: [Errno 40] Too many levels of symbolic links:
    miniconda安装的时候不要安装在/mnt目录下,安装到/home/user
  • 在安装vllm时出现PermissionError: [Errno 13] Permission denied:
    同上,miniconda安装的时候不要安装在/mnt目录下,安装到/home/user
  • libcuda.so.1: cannot open shared object file: no such file or directory
    cuda tookit没有安装,去官网选择对应版本安装
    注意,windows主机上如果安装了最新的显卡驱动,那么正常来讲就会在/usr/lib/wsl/lib下生成对应的libcuda.so,但是,重点来了,必须先装显卡驱动,再安装linux发行版本
  • 遇到一堆ray的问题,大部分和自己的配置有关,所以vllm上的教程直接让用docker,真难折腾
    • [Installation]: pynvml.NVMLError_InvalidArgument: Invalid Argument
    • error helper for TypeError: _extractNVMLErrorsAsClasses…gen_new…new() takes 1 positional argument but 2 were given
    • Error: No available node types can fulfill resource request

吐槽

  • vllm多节点真不好用,不像llama.cpp那样开箱即用,主要依赖ray,这个东东真的一言难尽
原文地址:https://blog.csdn.net/qq_33446100/article/details/146571891
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/96365.html

相关文章:

  • 【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建,Fabric 模组详细搭建教程
  • 人生感悟8
  • GAMMA数据处理(十)
  • 【力扣刷题|第十七天】0-1 背包 完全背包
  • Day2 蓝桥杯省赛冲刺精炼刷题 —— 递归与递推
  • 全局思维与系统思考
  • Java实战:实现用户的登录注册功能
  • CS2 DEMO导入blender(慢慢更新咯)
  • 5G_WiFi_CE_杂散测试
  • Centos7,tar包方式部署rabbitmq-3.7.6
  • 【研究方向】联邦|自然语言
  • AB包介绍及导出工具实现+AB包资源简单加载
  • 【蓝桥杯速成】| 15.完全背包
  • 求职笔试题
  • GAMES101-现代计算机图形学入门(Animation/simulation)
  • Enhanced PEC-YOLO:电力施工场景安全装备检测的轻量化算法解析
  • 海量数据处理
  • 【测试】每日3道面试题 3/29
  • 【计网】网络交换技术之电路交换(复习自用)
  • 智能预测维护:让设备“未卜先知”,减少宕机烦恼