news 2026/9/24 17:39:31

Linux下Llama.cpp部署Qwen3-30b

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux下Llama.cpp部署Qwen3-30b

CentOS 7上部署vLLM + Qwen3-30B-A3B-Instruct-2507-GGUF是一个高难度但可行的任务。结合你无GPU(VMware虚拟机)的环境,这需要从源码编译,且需要处理Qwen3 MoE模型的特定兼容性问题

🎯 vLLM 版本选择

推荐使用v0.28.0或更新版本。

  • 核心原因:vLLM 对 Qwen3 MoE + GGUF 的支持是近期才完善的。关键修复(PR #22785)已于2025年8月合并,而另一个解决输出乱码问题的关键补丁(PR #30118)则在2025年12月才合并。选择 v0.28.0 能确保你获得这些必要的修复。

  • 安装方式:由于 vLLM 官方未提供 CentOS 7 的预编译 CPU 包,必须从源码编译。你可以参考 vLLM 官方发布页获取指定版本的源码。

第一步:CentOS 7 系统环境准备

CentOS 7 默认的 GCC 版本(4.8.5)和 Python 版本(2.7)远低于 vLLM 的编译要求,必须先行升级。

1. 启用必要仓库并安装基础工具

# 覆盖 CentOS-SCLo-scl.repo sudo tee /etc/yum.repos.d/CentOS-SCLo-scl.repo > /dev/null <<'EOF' [centos-sclo-sclo] name=CentOS-7 - SCLo sclo baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/ gpgcheck=0 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo EOF # 覆盖 CentOS-SCLo-scl-rh.repo sudo tee /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo > /dev/null <<'EOF' [centos-sclo-rh] name=CentOS-7 - SCLo rh baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/ gpgcheck=0 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo EOF

清理并重建缓存:

sudo yum clean all sudo yum makecache --disableplugin=fastestmirror sudo yum repolist
# 1. 备份当前的基础源配置 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 2. 下载阿里云官方推荐的基础源配置 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo sudo tee /etc/yum.repos.d/oracle-sclo.repo > /dev/null <<'EOF' [ol7_software_collections] name=Oracle Linux 7 Software Collections baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/SoftwareCollections/$basearch/ gpgcheck=0 enabled=1 EOF # 3. 清理并重建缓存 sudo yum clean all sudo yum makecache --disableplugin=fastestmirror # 1. 安装 COPR 源所需的工具 sudo yum install -y epel-release yum-plugin-copr # 2. 添加包含 devtoolset-12 的 COPR 源 sudo yum copr enable -y mlampe/devtoolset-12 # 3. 清理缓存,然后安装 devtoolset-12 sudo yum clean all sudo yum makecache --disableplugin=fastestmirror sudo yum install -y devtoolset-12 --setopt=timeout=300 # 激活 GCC 环境(以 devtoolset-12 为例) scl enable devtoolset-12 bash # 验证版本 gcc --version g++ --version

GCC 12.2.1 已经就绪,这是编译 vLLM CPU 后端最关键的一步。接下来需要处理Python 3.10+,因为 vLLM 要求 Python 版本在3.10 到 3.13之间。

🐍 第一步:安装 Python 3.10+

CentOS 7 默认的 Python 2.7 无法使用,需要从源码编译安装 Python 3.10。这里有一个关键坑:CentOS 7 自带的 OpenSSL 版本过低,会导致 Python 的_ssl模块缺失,进而影响 pip 联网。建议先升级 OpenSSL。

1. 安装编译依赖

# 1. 标记要安装的组 sudo yum groups mark install "Development Tools" # 2. 转换组信息为对象格式 sudo yum groups mark convert "Development Tools" # 3. 再次尝试安装 sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel gdbm-devel xz-devel

2. 编译安装 Python 3.10.12

mkdir python

cd python/

wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz

openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017

sudo yum install -y epel-release

sudo yum install -y openssl11 openssl11-devel openssl11-libs

vim ~/.bashrc

export LD_LIBRARY_PATH=/usr/lib64/openssl11/:$LD_LIBRARY_PATH export CFLAGS="-I/usr/include/openssl11" export LDFLAGS="-L/usr/lib64/openssl11"

source ~/.bashrc
openssl11 version
OpenSSL 1.1.1k FIPS 25 Mar 2021

tar -xf Python-3.10.12.tgz
cd Python-3.10.12

cd /home/dockerinstall/python/Python-3.10.12

1. 创建openssl11.pc文件

sudo tee /usr/lib64/pkgconfig/openssl11.pc > /dev/null <<'EOF' prefix=/usr exec_prefix=${prefix} libdir=/usr/lib64/openssl11 includedir=/usr/include/openssl11 Name: OpenSSL Description: Secure Sockets Layer and cryptography libraries and tools Version: 1.1.1k Requires: Libs: -L${libdir} -lssl -lcrypto Cflags: -I${includedir} EOF

2. 验证pkg-config能否识别

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:$PKG_CONFIG_PATH pkg-config --modversion openssl11

如果输出1.1.1k,说明文件创建成功。

make distclean

sed -i 's/PKG_CONFIG openssl /PKG_CONFIG openssl11 /g' configure

配置编译参数(关键)

# 确保环境变量正确(如果你已写入 ~/.bashrc 并 source 过,这步可跳过) export CFLAGS="-I/usr/include/openssl11" export LDFLAGS="-L/usr/lib64/openssl11" cd /home/dockerinstall/python/Python-3.10.12 # 确保环境变量正确(如果你已写入 ~/.bashrc 并 source 过,这步可跳过) export CFLAGS="-I/usr/include/openssl11" export LDFLAGS="-L/usr/lib64/openssl11" # 重新配置(可以不再需要 --with-openssl 参数) ./configure --prefix=/usr/local/python3.10 \ --with-openssl-rpath=auto \ --enable-optimizations \ --with-ensurepip=install make -j$(nproc) sudo make altinstall
  • --with-openssl=/usr/include/openssl11:指定 OpenSSL 1.1.1 头文件路径。

  • --with-openssl-rpath=auto:自动设置运行时库路径,避免_ssl模块找不到库。

  • --enable-optimizations:开启优化,编译时间较长但性能更好。若报错可去掉此参数。

最终验证

/usr/local/python3.10/bin/python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"

把 Python 3.10 加入 PATH

echo 'export PATH="/usr/local/python3.10/bin:$PATH"' >> ~/.bashrc source ~/.bashrc python3.10 --version pip3.10 --version

第四步:创建虚拟环境

cd /home/dockerinstall/vllm
/usr/local/python3.10/bin/python3.10 -m venv vllm-cpu-env
source vllm-cpu-env/bin/activate

激活后继续

# 升级 pip 并安装编译依赖 pip install --upgrade pip pip install "cmake>=3.26" wheel packaging ninja "setuptools-scm>=8" numpy

-------------------------------------------------------------------------------------------------------------------

接下来编译 vLLM(无法安装)

确认当前 shell 已激活 GCC 12:

source /home/dockerinstall/vllm/vllm-cpu-env/bin/activate

(vllm-cpu-env) [root@bigData08 vllm]# scl enable devtoolset-12 bash
[root@bigData08 vllm]# source /home/dockerinstall/vllm/vllm-cpu-env/bin/activate
(vllm-cpu-env) [root@bigData08 vllm]#
(vllm-cpu-env) [root@bigData08 vllm]#
(vllm-cpu-env) [root@bigData08 vllm]# which python
/home/dockerinstall/vllm/vllm-cpu-env/bin/python
(vllm-cpu-env) [root@bigData08 vllm]# python --version
Python 3.10.12
(vllm-cpu-env) [root@bigData08 vllm]# gcc --version
gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-4)
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

二步:克隆 vLLM 源码

cd /home/dockerinstall/vllm

git clone https://gitee.com/mirrors/vllm.git

cd /home/dockerinstall/vllm/vllm

git tag -l

结合你的场景(CentOS 7 + 纯 CPU + Qwen3 MoE GGUF),我建议选择v0.28.0版本。

🎯 为什么选择 v0.28.0?

这个版本是目前兼顾Qwen3 MoE GGUF 支持稳定性的最佳选择:

  • Qwen3 MoE 支持完善:vLLM 对 Qwen3 MoE + GGUF 的关键修复(PR #30116、#30118)已在 v0.28.0 之前的版本中合并。其中 PR #30118 专门解决了norm_topk_prob参数不一致的问题,不加这个修复模型输出会变成乱码。

  • GGUF 插件架构成熟:v0.28.0 处于 GGUF 支持从内置迁移到独立插件(vllm-gguf-plugin)的过渡期。该插件为 vLLM ≥0.25 设计,与 v0.28.0 兼容性良好。

  • 版本足够新且稳定:v0.28.0 是 2026 年 8 月发布的稳定版本,包含 584 个提交,相比更新的rc版本更适合生产环境。

  • CPU 后端支持:vLLM 的 CPU 后端需要从源码编译,v0.28.0 满足 GCC 12+ 的编译要求

# 确保在 vllm 仓库目录下 cd /home/dockerinstall/vllm/vllm # 查看当前分支 git status # 切换到 v0.28.0 标签 git checkout v0.28.0 # 确认切换成功 git describe --tags

后续编译安装流程

切换版本后,继续执行以下步骤:

1. 安装 CPU 版 PyTorch 和依赖

export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup mkdir -p ~/.cargo ##用下面的内容覆盖 ~/.cargo/config.toml [source.crates-io] replace-with = 'ustc' [source.ustc] registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/" [net] retry = 2 git-fetch-with-cli = true cargo clean 2>/dev/null || true pip install -v -r requirements/cpu.txt \ --extra-index-url https://mirrors.aliyun.com/pytorch-wheels/cpu \ -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 编译 vLLM CPU 后端(确保 GCC 12 环境已激活)

vllm各种报错 已放弃

-----------------------------------------------------------------------------------------------------

改为使用ik_llama.cpp

# 1. 新开一个终端,激活 GCC 12(关键) scl enable devtoolset-12 bash # 2. 进入你创建的目录 cd /home/dockerinstall/llama_cpp # 3. 克隆 ik_llama.cpp git clone https://gitcode.com/GitHub_Trending/ik/ik_llama.cpp.git cd ik_llama.cpp # 4. 检查 CMake 版本,需要 >= 3.14 cmake --version# 5. 配置并编译(纯 CPU 优化) cmake -B build -DGGML_NATIVE=ON cmake --build build --config Release -j$(nproc)
编译完成后,可执行文件在: /home/dockerinstall/llama_cpp/ik_llama.cpp/build/bin/llama-server

运行模型

/home/dockerinstall/llama_cpp/ik_llama.cpp/build/bin/llama-server \ -m /home/dockerinstall/models/Qwen3-30B-A3B-Instruct-2507-Q4_K_M.gguf \ --host 0.0.0.0 --port 11434 \ -c 4096 --threads 6 \ -b 1024 --ubatch-size 512 \ --jinja #成功 /home/dockerinstall/llama_cpp/ik_llama.cpp/build/bin/llama-server \ -m /home/dockerinstall/models/Qwen3-30B-A3B-Instruct-2507-Q4_K_M.gguf \ --host 0.0.0.0 --port 11434 \ -c 2048 --threads 8 \ -b 512 --ubatch-size 256 \ --jinja #final /home/dockerinstall/llama_cpp/ik_llama.cpp/build/bin/llama-server \ -m /home/dockerinstall/models/Qwen3-30B-A3B-Instruct-2507-Q4_K_M.gguf \ --host 0.0.0.0 --port 11434 \ -c 16384 --threads 8 \ -b 1024 --ubatch-size 512 \ --jinja

watch -n 1 'free -g; echo "---"; ps -o pid,%cpu,%mem,rss,cmd -C llama-server'

启动脚本:

/home/dockerinstall/llama_cpp/llama.sh

#!/bin/bash BIN=/home/dockerinstall/llama_cpp/ik_llama.cpp/build/bin/llama-server MODEL=/home/dockerinstall/models/Qwen3-30B-A3B-Instruct-2507-Q4_K_M.gguf LOG=/home/dockerinstall/llama_cpp/llama-server.log case "$1" in start) if pgrep -f 'llama-server.*11434' >/dev/null; then echo "已在运行: $(pgrep -f 'llama-server.*11434')"; exit 0 fi nohup "$BIN" \ -m "$MODEL" \ --host 0.0.0.0 --port 11434 \ -c 16384 --threads 8 \ -b 1024 --ubatch-size 512 \ --jinja >> "$LOG" 2>&1 & echo "已启动 PID: $!" ;; stop) pkill -f 'llama-server.*11434' && echo "已停止" || echo "没在运行" ;; status) pgrep -af 'llama-server.*11434' || echo "没在运行" ;; log) tail -f "$LOG" ;; *) echo "用法: $0 {start|stop|status|log}" ;; esac

chmod +x /home/dockerinstall/llama_cpp/llama.sh
/home/dockerinstall/llama_cpp/llama.sh start

------------------------------------------------------------------------------------------------------------------

你提供的这个 ModelScope 链接是有效的,文件来自unsloth仓库,Q4_K_M 量化版大小约17.3 GB,很适合你 32GB 内存的 CPU 环境。

1. 安装 ModelScope
source /home/dockerinstall/vllm/vllm-cpu-env/bin/activate
(vllm-cpu-env) [root@bigData08 models]# which pip
/home/dockerinstall/vllm/vllm-cpu-env/bin/pip

然后安装 modelscope 并下载:

pip install modelscope cd /home/dockerinstall/models modelscope download \ --model unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF \ Qwen3-30B-A3B-Instruct-2507-Q4_K_M.gguf \ --local_dir /home/dockerinstall/models

screen是一个终端复用工具,核心作用是:在后台保持一个会话,SSH 断开后里面的任务继续跑。对你的 17GB 下载场景非常合适。

sudo yum install -y screen screen --version screen -S download

第三步:在会话里执行下载命令

source /home/dockerinstall/vllm/vllm-cpu-env/bin/activate modelscope download \ --model unsloth/Qwen3-30B-A3B-Instruct-2507-GGUF \ Qwen3-30B-A3B-Instruct-2507-Q4_K_M.gguf \ --local_dir /home/dockerinstall/models
  1. Ctrl+A D脱离,然后这个 SSH 终端就可以关掉了。

screen -ls
screen -r download 或者
screen -r 12345

退出会话

exit

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 17:36:52

海洋科学航次数据缺项在哪一关露头,那一刻还补不补得回去

航次一结束&#xff0c;记录散在几个人手里&#xff0c;某一处缺项常要等到成表才被发现。这一篇要说的只有一件事&#xff1a;缺的地方在哪一关先露头&#xff0c;那时还补不补得回去。真要动手&#xff0c;章节排布这块一项免费能力能把顺序理顺&#xff0c;图表与算式那边另…

作者头像 李华
网站建设 2026/9/24 17:34:54

软著源代码格式要求详解:60页、50行、页眉页码一个都不能错

软著申请被补正&#xff0c;十个里有八个栽在源代码文档上。版权保护中心对源代码的格式要求其实就几条硬指标&#xff0c;但每条都有踩坑点。这篇按审查口径逐条讲清&#xff0c;照着准备基本不会被挑毛病。## 一、硬指标清单1. 页数&#xff1a;前后各连续 30 页&#xff0c;…

作者头像 李华
网站建设 2026/9/24 17:34:25

采购私域电商商城系统,需要注意哪些方面?

引言私域电商已经不再是品牌的营销加分项&#xff0c;而是中小企业沉淀客户、复购增收、搭建自有交易阵地的核心基础设施。很多企业在采购私域商城系统时&#xff0c;容易把目光局限在页面会不会看、营销插件多不多、报价高低这几个表层维度&#xff0c;等到上线运营数月后&…

作者头像 李华
网站建设 2026/9/24 17:34:25

存储器分类:RAM 与 ROM

1. 引言在计算机组成原理里&#xff0c;存储器的分类方式有很多&#xff1a;按存储介质、按存取方式、按信息易失性、按读写功能……其中最经典、也最常被拿来讨论的一种分法&#xff0c;就是按 RAM 和 ROM 来划分。这里说的 RAM / ROM&#xff0c;主要是按读写特性和断电后数据…

作者头像 李华
网站建设 2026/9/24 17:33:20

用思维赚钱19:聪明绝顶

用思维赚钱&#xff0c;用思维怎么赚钱&#xff1f;要回答这个问题&#xff0c;其实并不复杂。 假设你聪明绝顶&#xff0c;你想想看&#xff0c;你会赚不到钱吗&#xff1f;换句话说&#xff0c;你赚到的钱&#xff0c;不是因为你的聪明吗&#xff1f;聪明会体现在哪里呢&…

作者头像 李华