公司动态

CentOS 7.9 上为 llama.cpp 完整开启 AVX512-VNNI:让老系统本地推理提速 30%

📅 2026/8/29 16:05:57
CentOS 7.9 上为 llama.cpp 完整开启 AVX512-VNNI:让老系统本地推理提速 30%
CentOS 7.9 上为 llama.cpp 完整开启 AVX512-VNNI让老系统本地推理提速 30%【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cppllama.cpp 是一个用 C/C 写的本地大模型推理框架能把 GGUF 格式的模型直接跑在你的 CPU 上不需要显卡。如果你的服务器 CPU 支持 AVX512-VNNIIntel 为神经网络点积运算优化的 512 位向量指令但编译出来的程序没用上它推理速度就会白白打折。这篇指南帮你在 CentOS 7.9 这种老系统上绕过自带 GCC 太旧的障碍完整把 AVX512-VNNI 编译进 llama.cpp并教你怎么验证提速真的发生了。值得做吗先看你拿到什么提示词处理明显变快VNNI 专门加速量化权重的矩阵乘法7B 级别模型的首批 token 生成prompt processing普遍快 20%~40%。不需要新硬件只要你的 CPU 本身带 VNNI 指令Cascade Lake 及以后的大多数 Xeon 都有升级编译器 改一行 CMake 配置就行。编译一次长期受益指令集是编译期写进二进制的做一次配置后后面每次重新编译都自动继承。上图就是 VNNI 发力的位置llama.cpp 每一步都在做这种矩阵乘法指令集越宽一个周期内算的数越多。动手前准备4 项前置检查逐项核对缺一项就补一项检查项命令通过标准CPU 支持 VNNIgrep -m1 avx512_vnni /proc/cpuinfo有输出含avx512_vnni字样系统版本cat /etc/redhat-releaseCentOS 7.9其他老 RHEL 系同理CMake 版本cmake --version≥ 3.10CentOS 7 自带 2.8不满足需升级磁盘空间df -h .≥ 10 GB构建目录较大第一条最关键如果grep没输出说明 CPU 根本没有 VNNI后面的优化做了也白做请直接跳到你更可能踩到的坑看替代方案。核心实操三步把 VNNI 编译进去第一步给 CentOS 7.9 换一套新编译器CentOS 7.9 自带 GCC 4.8.52015 年的版本不认识-mavx512vnni这种新参数。这一步用 Red Hat 官方的 SCL 软件集装一套 GCC 11不用动系统自带的编译器。sudo yum install -y centos-release-scl sudo yum install -y devtoolset-11-gcc devtoolset-11-gcc-c装完在当前终端激活它注意激活只对当前终端窗口生效新开终端要重新执行scl enable devtoolset-11 bash gcc --version # 应输出 gcc 11.x如果你的 yum 源里只有 devtoolset-10把上面命令里的 11 全部换成 10 即可效果一样。第二步克隆代码并写一个编译配置文件先把源码拉到本地git clone https://gitcode.com/GitHub_Trending/ll/llama.cpp cd llama.cpp接下来新建一个工具链文件cmake/centos-avx512-vnni.cmake作用是告诉 CMake 用哪台编译器。这样即使忘了scl enable编译也不会退回旧 GCC。文件内容set(CMAKE_C_COMPILER /opt/rh/devtoolset-11/root/usr/bin/gcc) set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-11/root/usr/bin/g)第三步配置并编译这一步最关键的是-DGGML_AVX512_VNNION它显式打开 VNNI 指令集支持在 ggml 子项目的 CMakeLists.txt 里定义默认是 OFF。llama.cpp 默认还会开启GGML_NATIVE针对当前机器自动优化两者配合能拿到完整收益。cmake -B build \ -DCMAKE_TOOLCHAIN_FILEcmake/centos-avx512-vnni.cmake \ -DGGML_AVX512_VNNION \ -DCMAKE_BUILD_TYPERelease cmake --build build --config Release -j $(nproc)-j $(nproc)表示用满所有 CPU 核心并行编译。第一次编译大约 10~30 分钟嫌慢可以sudo yum install -y ccache它能把重复编译时间砍掉大半。效果验证跑 llama-bench 对比前后先确认指令集真的编译进去了——这条命令会打印版本和 build 标签标签里列出编译时启用的指令集带avx512字样即说明成功./build/bin/llama-cli --version再准备一个模型任意 Q4_0 / Q4_K_M 的 GGUF 都行用官方的 llama-bench 工具跑基准./build/bin/llama-bench -m ./models/qwen2.5-7b-q4_k_m.gguf跑完你会看到两列速度ppprompt processing提示词处理和tgtoken generation逐 token 生成。下面是一次典型对比Cascade Lake 平台 Xeon、7B Q4_K_M 模型的量级供参考编译配置pp 速度tg 速度改动前默认无 VNNI263 t/s81 t/s改动后开启 AVX512-VNNI348 t/s107 t/s注意看 pp 那一列——VNNI 的收益主要在这里tg 列通常是小 batch 推理收益有限属于正常现象。你更可能踩到的坑坑 1编译时报unrecognized command line option -mavx512vnni原因实际参与编译的还是旧 GCC 4.8.5通常是scl enable没在当前终端执行或中途关了终端。 一句话解法在当前终端重跑scl enable devtoolset-11 bash后再 cmake更稳的做法是像第二步那样在工具链文件里写死编译器路径一劳永逸。坑 2程序一跑就Illegal instruction崩溃原因编译机 CPU 支持 VNNI但运行机的 CPU 不支持比如你把二进制拷到了另一台老机器上。 一句话解法在运行机上执行grep avx512_vnni /proc/cpuinfo确认没输出就换下面的兼容路线重建——只开 AVX2关掉 VNNI 和 native 检测cmake -B build -DGGML_NATIVEOFF -DGGML_AVX512_VNNIOFF -DCMAKE_CXX_FLAGS-mavx2坑 3提速不明显甚至感觉变慢了原因Skylake-SP 这一代老 Xeon 在执行 512 位指令时会降频部分场景下收益被吃光。 一句话解法对比时只信llama-bench的 pp 数字别凭对话手感如果你的平台确实是 Skylake-SP 且 pp 没提升就回到坑 2 的 AVX2 方案它在那代 CPU 上往往更稳。另有一条通用路线顺带提一下如果二进制要在多台不同 CPU 的机器上跑可以看 编译指南 里GGML_CPU_ALL_VARIANTSGGML_BACKEND_DL的组合把各档指令集编译成动态加载的后端运行时自动选最优的一套。接下来可以玩什么起一个 API 服务编译产物里的llama-server源码在 server 模块能把模型暴露成 OpenAI 兼容接口./build/bin/llama-server -m ./models/xxx.gguf --host 0.0.0.0 --port 8080方便团队共用你这台优化过的推理机。继续压榨速度大 batch 的提示词处理还能再接 OpenBLAS-DGGML_BLASON -DGGML_BLAS_VENDOROpenBLAS重新编译和 VNNI 收益可以叠加。换更省内存的量化用llama-quantize源码见 quantize 工具把模型再压一档配合本文的编译优化在老服务器上跑更大的上下文。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考