【vLLM 学习】使用 CPU 安装

vLLM CPU和GPU模式署和推理 Qwen2 等大语言模型详细教程 vLLM默认并不支持纯CPU模式部署和推理模式,老牛同学应网友要求,根据vLLM官网整理vLLM在CPU模式下如何部署和推理大语音模型,并以Qwen2为了进行验证和演示…… 阅读详情
AI摘要

本文介绍了如何在CPU上安装vLLM框架,并提供了性能优化的建议。vLLM是一个专为大语言模型推理加速设计的框架,支持FP32和BF16数据类型。文中详细说明了依赖环境、使用Dockerfile快速开始、从源代码构建、相关运行时环境变量设置、PyTorch的英特尔扩展以及性能提示。

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/

vLLM 最初支持在 x86 CPU 平台上的基本模型推理和服务,数据类型为 FP32 和 BF16。

依赖环境

  • 操作系统:Linux

  • 编译器:gcc/g++>=12.3.0(可选,推荐)

  • 指令集架构 (ISA) 依赖:AVX512(可选,推荐)

使用 Dockerfile 快速开始

docker build -f Dockerfile.cpu -t vllm-cpu-env --shm-size=4g .
docker run -it \
             --rm \
             --network=host \
             --cpuset-cpus=<cpu-id-list, optional> \
             --cpuset-mems=<memory-node, optional> \
             vllm-cpu-env

从源代码构建

  • 首先,安装推荐的编译器。我们建议使用 gcc/g++ >= 12.3.0 作为默认编译器,以避免潜在的问题。例如,在 Ubuntu 22.4 上,您可以运行:
sudo apt-get update  -y
sudo apt-get install -y gcc-12 g++-12 libnuma-dev
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 10 --slave /usr/bin/g++ g++ /usr/bin/g++-12
  • 其次,安装用于 vLLM CPU 后端构建的 Python 包:
pip install --upgrade pip
pip install wheel packaging ninja "setuptools>=49.4.0" numpy
pip install -v -r requirements-cpu.txt --extra-index-url https://download.pytorch.org/whl/cpu
  • 第三步,从源代码构建并安装 oneDNN 库:
git clone -b rls-v3.5 https://github.com/oneapi-src/oneDNN.git
cmake -B ./oneDNN/build -S ./oneDNN -G Ninja -DONEDNN_LIBRARY_TYPE=STATIC \
    -DONEDNN_BUILD_DOC=OFF \
    -DONEDNN_BUILD_EXAMPLES=OFF \
    -DONEDNN_BUILD_TESTS=OFF \
    -DONEDNN_BUILD_GRAPH=OFF \
    -DONEDNN_ENABLE_WORKLOAD=INFERENCE \
    -DONEDNN_ENABLE_PRIMITIVE=MATMUL
cmake --build ./oneDNN/build --target install --config Release
  • 最后,构建并安装 vLLM CPU 后端:
VLLM_TARGET_DEVICE=cpu python setup.py install

注意

  • BF16 是当前 CPU 后端的默认数据类型 (这意味着后端会将 FP16 转换为 BF16),并且与所有支持 AVX512 ISA 的 CPU 兼容。

  • AVX512_BF16 是 ISA 的扩展,提供原生的 BF16 数据类型转换和向量积指令,与纯 AVX512 相比会带来一定的性能提升。CPU 后端构建脚本将检查主机 CPU 标志,以确定是否启用 AVX512_BF16。

  • 如果要强制启用 AVX512_BF16 进行交叉编译,请在编译前设置环境变量 VLLM_CPU_AVX512BF16=1。

相关运行时环境变量

  • VLLM_CPU_KVCACHE_SPACE:指定 KV 缓存大小(例如,VLLM_CPU_KVCACHE_SPACE=40 表示 KV 缓存空间为 40 GB),设置得越大,允许 vLLM 并行处理的请求就越多。该参数应根据用户的硬件配置和内存管理模式来设置。

  • VLLM_CPU_OMP_THREADS_BIND: 指定专用于 OpenMP 线程的 CPU 内核。例如, VLLM_CPU_OMP_THREADS_BIND=0-31表示将有 32 个 OpenMP 线程绑定在 0-31 个 CPU 内核上。VLLM_CPU_OMP_THREADS_BIND=0-31|32-63 表示将有 2 个张量并行进程,rank0 的 32 个 OpenMP 线程绑定在 0-31 个 CPU 内核上,rank1 的 OpenMP 线程绑定在 32-63 个 CPU 内核上。

PyTorch 的英特尔扩展

  • PyTorch 的英特尔扩展 (IPEX) 对 PyTorch 进行了扩展,增加了最新的特性优化,以便在 Intel 硬件上实现额外的性能提升。

性能提示

  • 我们强烈建议使用 TCMalloc 来实现高性能内存分配和更好的缓存局部性。例如,在 Ubuntu 22.4 上,您可以运行:
sudo apt-get install libtcmalloc-minimal4 # install TCMalloc library

sudo apt-get install libtcmalloc-minimal4 # 安装 TCMalloc 库

find / -name *libtcmalloc* # find the dynamic link library path

find / -name *libtcmalloc* #查找动态链接库路径

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4:$LD_PRELOAD # prepend the library to LD_PRELOAD

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4:$LD_PRELOAD # 将库添加到 LD_PRELOAD 之前

python examples/offline_inference.py # run vLLM

python examples/offline_inference.py # 运行 vLLM
  • 使用在线服务时,建议为服务框架预留 1-2 个 CPU 核心,以避免 CPU 超额使用。例如,在一个具有 32 个物理 CPU 核心的平台上,为框架预留 CPU 30 和 31,并将 CPU 0-29 用于 OpenMP:
export VLLM_CPU_KVCACHE_SPACE=40
export VLLM_CPU_OMP_THREADS_BIND=0-29 
vllm serve facebook/opt-125m
  • 如果在具有超线程的计算机上使用 vLLM CPU 后端,建议使用 VLLM_CPU_OMP_THREADS_BIND在每个物理 CPU 核心上仅绑定一个 OpenMP 线程。在一个启用超线程且具有 16 个逻辑 CPU 核心 / 8 个物理 CPU 核心的平台上:
lscpu -e # check the mapping between logical CPU cores and physical CPU cores
lscpu -e # 查看逻辑 CPU 核和物理 CPU 核的映射关系



# The "CPU" column means the logical CPU core IDs, and the "CORE" column means the physical core IDs. On this platform, two logical cores are sharing one physical core. 
# 「CPU」列表示逻辑 CPU 核心 ID,「CORE」列表示物理核心 ID。在此平台上,两个逻辑核心共享一个物理核心。

CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE    MAXMHZ   MINMHZ      MHZ
0    0      0    0 0:0:0:0          yes 2401.0000 800.0000  800.000
1    0      0    1 1:1:1:0          yes 2401.0000 800.0000  800.000
2    0      0    2 2:2:2:0          yes 2401.0000 800.0000  800.000
3    0      0    3 3:3:3:0          yes 2401.0000 800.0000  800.000
4    0      0    4 4:4:4:0          yes 2401.0000 800.0000  800.000
5    0      0    5 5:5:5:0          yes 2401.0000 800.0000  800.000
6    0      0    6 6:6:6:0          yes 2401.0000 800.0000  800.000
7    0      0    7 7:7:7:0          yes 2401.0000 800.0000  800.000
8    0      0    0 0:0:0:0          yes 2401.0000 800.0000  800.000
9    0      0    1 1:1:1:0          yes 2401.0000 800.0000  800.000
10   0      0    2 2:2:2:0          yes 2401.0000 800.0000  800.000
11   0      0    3 3:3:3:0          yes 2401.0000 800.0000  800.000
12   0      0    4 4:4:4:0          yes 2401.0000 800.0000  800.000
13   0      0    5 5:5:5:0          yes 2401.0000 800.0000  800.000
14   0      0    6 6:6:6:0          yes 2401.0000 800.0000  800.000
15   0      0    7 7:7:7:0          yes 2401.0000 800.0000  800.000

# On this platform, it is recommend to only bind openMP threads on logical CPU cores 0-7 or 8-15

# 在此平台上,建议仅在逻辑 CPU 核心 0-7 或 8-15 上绑定 openMP 线程

export VLLM_CPU_OMP_THREADS_BIND=0-7 
python examples/offline_inference.py
  • 如果在具有非统一内存访问架构(NUMA)的多插槽机器上使用 vLLM 的 CPU 后端,请注意使用 VLLM_CPU_OMP_THREADS_BIND 设置 CPU 核心,以避免跨 NUMA 节点的内存访问。
vLLM-CPU部署大模型 本文介绍了如何在CPU环境下部署大语言模型(如7B参数量级)的"丐版"解决方案,适用于预算有限的开发者。主要步骤包括:1) 配置Ubuntu20.04系统环境,升级gcc/g++至13版本;2) 创建Python虚拟环境并安装vLLM CPU后端依赖;3) 从源码编译安装vLLM CPU版本;4) 以AgentCPM-GUI(8B)模型为例,成功启动CPU版vLLM服务。该方法解决了GPU显存不足的问题,但仅推荐用于测试场景。 阅读详情

相关推荐

WSL2环境下安装vLLM

本文详细介绍了在WSL2环境下安装vLLM大语言模型推理框架的完整流程。核心步骤包括:1)检查并配置WSL2环境,确保支持GPU透传;2)安装NVIDIA驱动和专用CUDA Toolkit(WSL-Ubuntu版本);3)配置Python虚拟环境并安装支持CUDA的PyTorch;4)最后通过pip安装vLLM核心库。整个过程强调必须使用GPU加速环境,并提供了各环节的验证方法,包括nvidia-smi、nvcc和PyTorch的CUDA可用性检查。完成安装后可通过vllm --version命令确认安装成

hml111的博客 1160

本地CPU上运行LLM,1毛钱都不想多花

如果你和我一样,最近一直在做Agent试探,就会对第三方大模型非常纠结,随着调用次数的增加,银子也是白花花的流淌,有没有省钱的办法呢?当然有,就是在CPU上跑大模型。一般的GPU服务器,一个月下来起码也要2000左右,算下来,不如调第三方服务的API划算,但是调第三方服务存在着数据泄露风险,而且随着用户增长,按tokens计价的方式,也会消耗如流水,内心滴血。一群大佬找到了省钱的办法,就是让大模型在AMD的GPU,甚至在CPU上跑。

m0_59164520的博客 2541

大模型推理框架:vLLM

vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架。它利用了全新的注意力算法「PagedAttention」,提供易用、快速、便宜的LLM服务。

奔跑的蜗牛的博客 2617

vLLM在只有cpu的服务器(X86_64)部署教程

另外,vLLM的CPU版本,依赖Intel的oneAPI工具,下载安装工具地址:https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html。但是部署过程中,提示下面的错误即。

jiboli123的博客 1837

vLLM专题(二):安装-CPU

vLLM 是一个 Python 库,支持以下 CPU 变体。vLLM 最初支持在 x86 CPU 平台上进行基本模型推理和服务,支持的数据类型包括 FP32、FP16 和 BF16。此设备没有预构建的 wheel 包或镜像,因此您必须从源代码构建 vLLM。

1572

深入大模型-8-大模型推理之纯CPU编译部署vLLM运行大模型

vLLM的依赖包默认支持GPU部署和推理,如果使用CPU推理,需要根据vLLM源代码重新编译打包。

qq_20466211的博客 1569

VLLM 详细学习笔记 第 2 章 环境与安装:NVIDIA / AMD / CPU 全平台打通(可复制脚手架)

摘要 本章深入探讨了vLLM在实际生产环境中的模型与权重管理策略。首先介绍了vLLM支持的广泛模型架构,包括Llama、Mixtral、Mistral、Qwen等主流系列,强调了定期查阅官方文档以获取最新支持列表的重要性。重点分析了权重格式(SafeTensors与PyTorch Binaries)的安全性和性能差异,建议优先使用更安全的SafeTensors格式。同时警示了trust_remote_code参数的安全风险,建议仅用于可信来源的模型。 针对生产环境,提出了预缓存模型的最佳实践,避免服务启动时

qq_38334677的博客 2176

车联网ECU、TSP与TBOX通信流程

对比维度ECU(电子控制单元)BMS(电池管理系统)应用场景传统燃油车 + 新能源汽车仅限新能源汽车核心作用控制整车各系统运行管理动力电池安全与寿命车联网角色数据采集与传输的核心载体提供电池相关的核心数据。

tecoes的博客 1233

本地大模型部署引擎横评:Ollama、vLLM、llama.cpp与MLX实战对比

大模型推理已经成为AI工程化落地的重要环节,而选择合适的推理引擎直接影响部署效率与成本。本文从推理引擎的基本原理出发,对比了Ollama、vLLM、llama.cpp和MLX四个主流方案在不同硬件环境下的表现。无论你是刚开始接触本地部署,还是需要在生产环境中优化GPU吞吐,了解这些引擎的适用边界都至关重要。文中基于真实测试数据,分析了各引擎在单请求速度、并发能力、内存占用等方面的差异,并探讨了GGUF量化、KV Cache管理等关键技术对性能的影响。从个人开发调试到高并发API服务,再到纯CPU边缘设备,不

weixin_30607125的博客 161

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3660

Windows Server 2019整机备份与异机还原实战:从虚拟机到物理机的完整迁移指南

本文详细介绍了Windows Server 2019整机备份与异机还原的实战操作,涵盖从虚拟机到物理机的完整迁移流程。通过环境准备、备份策略设计、具体操作步骤及迁移后优化等内容,帮助用户实现系统环境的无缝迁移,特别适用于服务器硬件升级、数据中心迁移等场景。

weixin_30555125的博客 133

在 Ubuntu 上安装 vLLM:从 GPU 到 CPU 的三种方案

关键词:vLLM、Ubuntu、CUDA、Docker、LLM 推理vLLM 是目前社区里最快、最省显存的大模型推理框架之一。本文把官方文档、踩坑经验整理成一篇可落地的技术博客,给出——无论你手里是 A100、4090 还是纯 CPU 服务器,总有一款适合你。

weixin_41544125的博客 6530

欧姆龙PLC EIP通讯配置方法

欧姆龙EIP通讯配置方法

weixin_59671695的博客 6137

vllm cpu部署小模型

vllm cpu版本启动小模型

alwaysRise的博客 1722

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1541

华为OD机试 - 矩形绘制 - 数组、坐标偏移(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除。 当新绘制的矩形与已有图形重叠时,对图形取并集; 当新擦除的矩形与已有图形重叠时,对图形取差集。 给定一系列绘制和擦除操作,计算最终图形的面积。第一行为操作数N,接下来的N行格式为:d x1

学Java,找哪吒 836

win10 cpu 下使用Xinference来进行大模型的推理测试

pip install “xinference[vllm]” -i https://pypi.tuna.tsinghua.edu.cn/simple #仅能用于linux。#pip install “xinference[all]” -i https://pypi.tuna.tsinghua.edu.cn/simple #仅能用于linux。

lwprain的专栏 1127

【华为OD机考真题】- 构成的正方形数量(B卷-100分)(Java版)

🔔本文收录于「最新最全华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!专栏所写题库均精心搜集于互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验所撰,欢迎订阅。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新

**My Coding Family** 1349

【vLLM 学习】使用 OpenVINO 安装

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。更多 vLLM 中文文档及教程可访问 →由 OpenVINO 驱动的 vLLM 支持来自 vLLM 支持的模型列表 <…/models/supported_models> 中的所有 LLM 模型,并且可以在所有 x86-64 CPU 上(至少需要 AVX2 支持)进行最佳的模型服务。

HyperAI超神经 1247

10、硬件工程师笔试面试——继电器(2025版本)

在设计电路时,应综合考虑SSR的优势和局限性,确保选择合适的型号,并采取适当的设计措施来优化性能和可靠性。继电器的主要功能是利用较小的电流或电压来控制较大电流或电压的电路,实现信号的放大和隔离。在处理继电器故障时,应综合考虑电源、线圈、触点和负载等因素,及时进行故障诊断和处理,以确保电路系统的稳定性和安全性。由于汽车电子系统的复杂性,继电器的设计和选择必须考虑到系统的特定要求,包括电流容量、电压等级、环境条件(如温度、湿度、振动)以及所需的保护和隔离功能。确定线圈的工作电压或电流,以及吸合电压或电流。

XU157303764的博客 3733

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【vllm】 cpu offload学习

v1 还区分refill 和decode 阶段嘛,目前推理怎么实现的continuous batched scheduler , 涉及什么队列, waiting running?整个流程是什么?涉及哪些代码文件test_cpu_offloading 什么原理,整个涉及到的流程是什么,cpu_offloading 怎么做的呢?

王尚权 qq:2515162716 557

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LLM 部署(3)——vLLM CPU 和 GPU 模式部署大语言模型

vLLM的依赖包默认支持 GPU 部署和推理,如果使用CPU推理,需要根据vLLM源代码重新编译打包。frpc_linux_amd64文件默认在 HF 上,需要通畅的网络,百度网盘。需要下载vLLM源代码,自己编译打包和安装。(如是Windows WSL子系统,可以通过。参数启用 GPU 多卡分布式并行推理能力。vLLM目前只支持Linux操作系统。命令获取 WSL 的 IP 地址)客户端的使用方法,与之前完全一样。

哦豁灬 4万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

本地部署Qwen2大模型之三:编译CPU版vLLM

继续探究vLLM方式在本地部署Qwen2大模型的方法,对于未配备GPU的电脑,手动编译并安装CPU版的vLLM。

F8_11的博客 6551

大模型框架:vLLM

​vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架。它利用了全新的注意力算法「PagedAttention」,提供易用、快速、便宜的LLM服务。

m0_37559973的博客 1万+

vLLM安装部署与快速入门指南

你是否还在为大语言模型(LLM)部署时的低吞吐量和高内存占用而困扰?vLLM(Very Large Language Model Serving Engine)作为一款高性能、内存高效的LLM推理和服务引擎,通过创新性的PagedAttention技术,实现了比传统方法高出10-20倍的吞吐量,同时保持了良好的推理质量。本文将详细介绍vLLM的安装部署流程和快速入门指南,帮助你在各种硬件环境下轻松...

gitblog_00364的博客 2965

编译安装vLLM cpu版本后,执行报错RuntimeError: Only one platform plugin can be activated, but got: [‘rocm‘, ‘cpu‘

摘要:安装vLLM CPU版本后运行报错"RuntimeError: Only one platform plugin can be activated, but got: ['rocm', 'cpu']"。解决方法是通过设置环境变量指定CPU运行:export VLLM_TARGET_DEVICE="cpu",然后执行vllm serve baidu/ERNIE-4.5-0.3B-PT --trust-remote-code。验证表明通过此方法成功启动文心4.5大模

skywalk8163的专栏 1664
上一篇: 超导材料搜索效率提升5倍!佛罗里达大学等用深度学习变革材料发现,成果登Nature子刊
下一篇: 房价预测/矿藏勘探/自然灾害预测……AI助力地球科学革新,浙大/清华/Google Research等已发表重要成果
HyperAI超神经
博客等级 码龄7年 8873粉丝 1753原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值