从源代码编译构建vLLM并解决常见编译问题
源代码构建vLLM
- 前言
- 构建vLLM
- 异常问题
- 异常1
- 异常2
- 异常3
- 构建成功
前言
在通过创建全新虚拟环境条件下,使用pip install vllm==x.x.x.方式安装VLLM后,遇到了VLLM使用方面的异常,经过多种方式尝试解决,最终无果。
仔细查看官方文档后,发现其中有2段话尤为重要:
1.如果使用的是不同的CUDA版本,或者想要使用现有的PyTorch安装,则需要从源代码构建vLLM。
2.vLLM的二进制文件默认使用CUDA 12.1和公共PyTorch发行版本进行编译。另外还提供使用CUDA 11.8和公共PyTorch发行版本编译的vLLM 二进制文件
看到这里心里也大概知道什么原因了,当前服务器CUDA是12.2,与默认VLLM的二进制使用的CUDA12.1不一致,另外还有就是虚拟环境中安装的PyTorch也可能与VLLM使用的PyTorch版本不一致,因此有了从源代码构建vLLM的想法,以尝试解决相关问题。
此处编译构建的最新版本是:vllm-0.7.3
构建vLLM
创建虚拟环境
conda create -n vllm python=3.10conda activate vllm
拉取代码并执行编译构建操作
git clone https://github.com/vllm-project/vllm.gitcd vllmpip install -e .
异常问题
异常1
在编译构建过程中遇到异常: FileNotFoundError: [Errno 2] No such file or directory: ':/usr/local/cuda/bin/nvcc',具体详细异常信息如下:
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Obtaining file:///root/work/vllmInstalling build dependencies ... doneChecking if build backend supports build_editable ... doneGetting requirements to build editable ... errorerror: subprocess-exited-with-error× Getting requirements to build editable did not run successfully.│ exit code: 1╰─> [28 lines of output]/tmp/pip-build-env-314wnwad/overlay/lib/python3.10/site-packages/torch/_subclasses/functional_tensor.py:295: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:84.)cpu = _conversion_method_template(device=torch.device("cpu"))Traceback (most recent call last):File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>main()File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in mainjson_out["return_val"] = hook(**hook_input["kwargs"])File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 157, in get_requires_for_build_editablereturn hook(config_settings)File "/tmp/pip-build-env-314wnwad/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 483, in get_requires_for_build_editablereturn self.get_requires_for_build_wheel(config_settings)File "/tmp/pip-build-env-314wnwad/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 334, in get_requires_for_build_wheelreturn self._get_build_requires(config_settings, requirements=[])File "/tmp/pip-build-env-314wnwad/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 304, in _get_build_requiresself.run_setup()File "/tmp/pip-build-env-314wnwad/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 320, in run_setupexec(code, locals())File "<string>", line 604, in <module>File "<string>", line 454, in get_nvcc_cuda_versionFile "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/subprocess.py", line 421, in check_outputreturn run(*popenargs, stdout=PIPE, timeout=timeout, check=True,File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/subprocess.py", line 503, in runwith Popen(*popenargs, **kwargs) as process:File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/subprocess.py", line 971, in __init__self._execute_child(args, executable, preexec_fn, close_fds,File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/subprocess.py", line 1863, in _execute_childraise child_exception_type(errno_num, err_msg, err_filename)FileNotFoundError: [Errno 2] No such file or directory: ':/usr/local/cuda/bin/nvcc'[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error× Getting requirements to build editable did not run successfully.
│ exit code: 1
╰─> See above for output.note: This error originates from a subprocess, and is likely not a problem with pip.
解决方法:
执行nvcc -V确定cuda是否安装成功
# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jun_13_19:16:58_PDT_2023
Cuda compilation tools, release 12.2, V12.2.91
Build cuda_12.2.r12.2/compiler.32965470_0
没有安装的话需要先进行安装,若安装成功直接在命令行里输入以下命令:
export CUDA_HOME=/usr/local/cuda
异常2
在编译构建过程中遇到异常: if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj,具体详细异常信息如下:
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Obtaining file:///root/work/vllmInstalling build dependencies ... doneChecking if build backend supports build_editable ... doneGetting requirements to build editable ... errorerror: subprocess-exited-with-error× Getting requirements to build editable did not run successfully.│ exit code: 1╰─> [28 lines of output]/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/torch/_subclasses/functional_tensor.py:295: UserWarning: Failed to initialize NumPy: No module named 'numpy' (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:84.)cpu = _conversion_method_template(device=torch.device("cpu"))Traceback (most recent call last):File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>main()File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in mainjson_out["return_val"] = hook(**hook_input["kwargs"])File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 157, in get_requires_for_build_editablereturn hook(config_settings)File "/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 483, in get_requires_for_build_editablereturn self.get_requires_for_build_wheel(config_settings)File "/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 334, in get_requires_for_build_wheelreturn self._get_build_requires(config_settings, requirements=[])File "/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 304, in _get_build_requiresself.run_setup()File "/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 320, in run_setupexec(code, locals())File "<string>", line 634, in <module>File "<string>", line 483, in get_vllm_versionFile "/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/setuptools_scm/_get_version_impl.py", line 163, in get_version_version_missing(config)File "/tmp/pip-build-env-q87q8idr/overlay/lib/python3.10/site-packages/setuptools_scm/_get_version_impl.py", line 117, in _version_missingraise LookupError(LookupError: setuptools-scm was unable to detect version for /root/work/vllm.Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work.For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error× Getting requirements to build editable did not run successfully.
│ exit code: 1
╰─> See above for output.note: This error originates from a subprocess, and is likely not a problem with pip.
分析:
异常大概意思:是要从完整的Git仓库进行构建,GitHub的tar文件没有 .git 文件夹的Git检出信息,不包含必要的元数据
这个异常也确实是这个问题:当时因为网络原因是直接下载zip包上传服务器解压使用的
解决方法:
使用
git clone https://github.com/vllm-project/vllm.git方式下载源代码
异常3
在编译构建过程中遇到异常: ImportError: /tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12,具体详细异常信息如下:
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Obtaining file:///root/work/vllmInstalling build dependencies ... doneChecking if build backend supports build_editable ... doneGetting requirements to build editable ... errorerror: subprocess-exited-with-error× Getting requirements to build editable did not run successfully.│ exit code: 1╰─> [19 lines of output]Traceback (most recent call last):File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>main()File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in mainjson_out["return_val"] = hook(**hook_input["kwargs"])File "/usr/local/program/miniconda3/envs/vllm/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 157, in get_requires_for_build_editablereturn hook(config_settings)File "/tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 483, in get_requires_for_build_editablereturn self.get_requires_for_build_wheel(config_settings)File "/tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 334, in get_requires_for_build_wheelreturn self._get_build_requires(config_settings, requirements=[])File "/tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 304, in _get_build_requiresself.run_setup()File "/tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 320, in run_setupexec(code, locals())File "<string>", line 14, in <module>File "/tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/torch/__init__.py", line 367, in <module>from torch._C import * # noqa: F403ImportError: /tmp/pip-build-env-mk7lwncf/overlay/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error× Getting requirements to build editable did not run successfully.
│ exit code: 1
╰─> See above for output.note: This error originates from a subprocess, and is likely not a problem with pip.
解决方法:
这个异常是一个BUG,这点可以在vllm项目的issues中找到,其中也有其他开发者给出了解决办法
执行以下命令
export LD_LIBRARY_PATH= xx/xx/xx/miniconda3/envs/vllm/lib/python3.10/site-packages/nvidia/nvjitlink/lib:$LD_LIBRARY_PATH
注意:需根据自身情况进行修改路径
构建成功
解决上述异常后,怀着忐忑心情,经过十几分钟的等待,终于看到Successfully built vllm的提示,意味着构建成功。经过测试:在后续的使用中也是没有任何问题的。
Building wheels for collected packages: vllmBuilding editable for vllm (pyproject.toml) ... doneCreated wheel for vllm: filename=vllm-0.7.3.dev90+gd59def47.cu122-0.editable-cp310-cp310-linux_x86_64.whl size=12494 sha256=a99eafbb697641049c1064e965061795840e5fb112fefcc58a029e49452453cfStored in directory: /tmp/pip-ephem-wheel-cache-azs10z1y/wheels/1f/b2/47/532442c23983ed41da2a39c4ea33cf601f5fd19eb0601a5ee2
Successfully built vllm
Installing collected packages: compressed-tensors, vllmAttempting uninstall: compressed-tensorsFound existing installation: compressed-tensors 0.9.0Uninstalling compressed-tensors-0.9.0:Successfully uninstalled compressed-tensors-0.9.0Attempting uninstall: vllmFound existing installation: vllm 0.7.1Uninstalling vllm-0.7.1:Successfully uninstalled vllm-0.7.1
Successfully installed compressed-tensors-0.9.1 vllm-0.7.3.dev90+gd59def47.cu122
相关文章:
从源代码编译构建vLLM并解决常见编译问题
源代码构建vLLM 前言构建vLLM异常问题异常1异常2异常3 构建成功 前言 在通过创建全新虚拟环境条件下,使用pip install vllmx.x.x.方式安装VLLM后,遇到了VLLM使用方面的异常,经过多种方式尝试解决,最终无果。 仔细查看官方文档后&…...
SQL-leetcode—1683. 无效的推文
1683. 无效的推文 表:Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中,tweet_id 是这个表的主键。 content 只包含美式键盘上的字符&am…...
轻量级TinyXml2的应用
TinyXml2库基本介绍 TinyXML2 是 simple、small、efficient 的基于DOM (Document Object Model,文档对象模型) 的开源 C XML文件解析库,可以很方便地应用到现有的项目中 。目前,TinyXML1 开发已经停止,所有…...
DeepSeek正重构具身大模型和人形机器人赛道!
中国人工智能公司DeepSeek(深度求索)以“低成本、高效率、强开放”的研发范式横空出世,火遍并震撼全球科技圈;DeepSeek展现出来的核心竞争力,除了低成本及推理能力,更重要的是开源模型能力追赶上了最新的闭…...
centos7 升级openssl并安装python3
参考文章:https://www.cnblogs.com/chuanzhang053/p/17653635.html 卸载已有版本 yum remove -y openssl openssl-devel下载1.1版本 wget https://www.openssl.org/source/openssl-1.1.1v.tar.gztar -zxf openssl-1.1.1v.tar.gz 查看openssl.conf文件的目录 fin…...
Linux库制作与原理:【静态库】【动态库】【目标文件】【ELF文件】【ELF从形成到假造轮廓】【理解链接和加载】
目录 一.什么是库 二.静态库 2.1创建静态库 我们在之前的路径下新建lib使用我们自己的库 2.2 使用makefile生成静态库 三.动态库 3.1动态库生成 3.2动态库使用 3.3库运行搜索路径 四.目标文件 五.ELF文件 六.ELF从形成到加载轮廓 6.1ELF形成可执行 6.2 ELF可执行文…...
2025前端面试题
2025前端面试题 uniappuniapp如何打包发版到线上 vuekeep-alive 有哪几个生命周期vue3构建项目vue如何封装组件vue2的响应式原理vue3的响应式原理vue3和2的区别Vuex中的重要核心属性有哪些?Vue-router有哪几种路由守卫 es6数组去重的方法slice与splice的区别数组有哪…...
Win7本地化部署deepseek-r1等大模型详解
参考链接 在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08 2G内存Windows7运行deepseek-r1:1.5b 这两个链接写的可能不够详细,有同学私信问实现过程,这里进一步解释一下。 一、准备 需要准备的大模型、工具…...
【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错
挂载NTFS文件系统出错 各种模型放在了这个机械硬盘上,虽然速度慢,但是好在容量大。大模型在工作,但是程序看起来有问题,导致系统卡死了,然后我重启了,然后报错:wrong fs type bad option &…...
Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例
搞个引言 在 Spring 框架的开发中,依赖注入(Dependency Injection,简称 DI)是它的一个核心特性,它能够让代码更加模块化、可测试,并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…...
【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用
【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用 【承接商业广告,如需商业合作请+v17740568442】 文章目录 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用个人配置详情一、安装ollama二、下载deepseek版本…...
【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…...
Unity 命令行设置运行在指定的显卡上
设置运行在指定的显卡上 -force-device-index...
Visual Studio 使用 “Ctrl + /”键设置注释和取消注释
问题:在默认的Visual Studio中,选择单行代码后,按下Ctrl /键会将代码注释掉,但再次按下Ctrl /键时,会进行双重注释,这不是我们想要的。 实现效果:当按下Ctrl /键会将代码注释掉,…...
共用poetry和conda的方法
起因 基于开源项目继续开发,发现该项目使用poetry管理依赖,但本地开发及调试环境依赖conda且未安装原生python,不支持直接安装poetry,因此需要使用conda安装及使用poetry。操作系统:Ubuntu 什么是poetry 一项依赖于…...
教程:使用 Vue 3 和 arco 实现表格合并
1. 功能概述 本教程将介绍如何使用 Vue 3 和 arco 组件库实现表格合并功能。具体来说,我们会根据表格数据中的某个字段(如 type)对表格的某一列(如入库类型列)进行合并,同时将质检说明列合并为一列。 2. …...
Docker 常用命令基础详解(二)
四、容器操作命令 4.1 运行容器 使用docker run命令可以创建并运行一个容器,它就像是一个神奇的 “启动器”,让镜像中的应用程序在容器中运行起来。其基本语法为: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 其中,OPTIONS…...
uniapp - iconfont下载本地并且运用至项目上
1、项目中创建一个文件夹放置iconfont相关文件,例如src/assets/iconfont(名称自己定义) 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址,修…...
【前端】自己从头实现一个gpt聊天页面
预览 最小化功能点 主界面:侧边栏会话历史、聊天窗口发送和断开。侧边栏:展示会话列表,每个会话包含多条聊天记录, 通过localstorage本地储存和恢复,会话需要重命名和删除。聊天框:区分一下发送者和回答者…...
数据结构——二叉树(2025.2.12)
目录 一、树 1.定义 (1)树的构成 (2)度 2.二叉树 (1)定义 (2)二叉树的遍历 (3)遍历特性 二、练习 1.二叉树 (1)创建二叉树…...
Vulhub靶机 ActiveMQ任意 文件写入(CVE-2016-3088)(渗透测试详解)
一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 漏洞版本:ActiveMQ在5.14.0之前的版本(不包括5.14.0) 二、访问靶机IP 8161端口 默认账户密码都是admin 1、利用bp抓包,修改为PUT方法并在fileserver…...
跟着李沐老师学习深度学习(十一)
经典的卷积神经网络 在本次笔记中主要介绍一些经典的卷积神经网络模型,主要包含以下: LeNet:最早发布的卷积神经网络之一,目的是识别图像中的手写数字;AlexNet: 是第一个在大规模视觉竞赛中击败传统计算机…...
【微软- Entra ID】Microsoft Entra ID
Microsoft Entra ID是微软提供的基于云的身份和访问管理服务。Microsoft Entra ID是一个全面的解决方案,用于管理身份、执行访问策略以及在云和本地保护您的应用程序和数据。 目录 一、查看 Microsoft Entra ID 微软Entra租户 微软Entra模式 二、比较Microsoft Entra ID与…...
Halcon相机标定
1,前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”,然后再将其投影到成像平面(图像物理坐标系),最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…...
Linux 配置 MySQL 定时自动备份到另一台服务器
Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1:配置过程 2、编写自动备份sh脚本文件3:设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件,然后将文件同步到另一…...
《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期:Google开…...
LabVIEW与小众设备集成
在LabVIEW开发中,当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求,而厂家虽然提供了配套软件,但由于系统中还需要控制其他设备且不能使用厂商的软件时,必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中࿰…...
无人机之无线传输技术!
一、Lightbridge和OcuSync图传技术 Lightbridge技术:这是大疆自主研发的一种专用通信链路技术,使用单向图像数据传输,类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输,并且可以实现几乎“零延时”的720p高清图像传…...
移远通信边缘计算模组成功运行DeepSeek模型,以领先的工程能力加速端侧AI落地
近日,国产大模型DeepSeek凭借其“开源开放、高效推理、端侧友好”的核心优势,迅速风靡全球。移远通信基于边缘计算模组SG885G,已成功实现DeepSeek模型的稳定运行,并完成了针对性微调。 目前,该模型正在多款智能终端上进…...
rust学习一、入门之搭建简单开发环境
1、搭建开发环境(windows11) a.登录官网 一看就明白,此处略。 b.安装rustup 一看就明白,此处略。 c.安装 cargo script 或者 rust-script script cargo install cargo-script 完成后 注意:时间有一点点久。 测试 cargo s…...
