麒麟高级服务器版 v10 SP3(主流为鲲鹏 ARM64 架构,可选配昇腾 / NVIDIA GPU) 上完成 llama.cpp 的完整安装,以下是分硬件场景、可直接落地、经过验证的步骤,全程适配麒麟系统特性,每一步均包含 “操作命令 + 验证方式”,确保安装后可稳定运行在正式环境:
核心前提
- 麒麟 V10 SP3 架构:优先为
aarch64(鲲鹏 920/930),少量为x86_64,以下步骤默认适配aarch64,x86 仅需微调依赖安装命令; - 目录约定(统一路径,降低混乱):
# 工作根目录(后续所有操作基于此) export LLAMA_ROOT=/data/llama.cpp # 创建目录(一次性执行) mkdir -p $LLAMA_ROOT chmod -R 755 $LLAMA_ROOT - 权限要求:全程使用
root用户操作(正式环境服务器级安装推荐)。
阶段 1:系统环境检查(必做,避免后续踩坑)
步骤 1.1 检查麒麟系统与硬件架构
# 1. 验证麒麟系统版本(确认是V10 SP3)
cat /etc/os-release | grep "VERSION"
# 预期输出:包含"Kylin Linux Advanced Server release V10 (Sword) SP3"
# 2. 验证硬件架构(鲲鹏为aarch64,x86为x86_64)
uname -m
# 预期输出:aarch64(主流)/x86_64(少数)
# 3. 检查核心资源(内存/存储,推理7B模型至少8GB内存)
free -h && df -h /data
# 验证:/data目录可用空间≥10GB(编译+模型存储),内存≥8GB
步骤 1.2 禁用无关服务(避免编译冲突,麒麟特有)
麒麟 V10 SP3 默认启用部分安全服务,可能干扰编译,临时禁用:
# 禁用SELinux(重启后恢复,仅临时生效)
setenforce 0
# 关闭防火墙(正式环境可按需开放端口,此处为安装便捷)
systemctl stop firewalld && systemctl disable firewalld
阶段 2:安装基础依赖(麒麟 V10 SP3 通用)
llama.cpp 编译仅需基础编译工具和数学库,麒麟 V10 SP3 可通过
yum直接安装:# 1. 更新yum源(麒麟官方源,避免依赖缺失)
yum clean all && yum makecache fast
# 2. 安装核心编译依赖
yum install -y \
git \
gcc \
gcc-c++ \
cmake \
make \
libstdc++-devel \
zlib-devel \
openblas-devel \
wget \
curl
# 3. 验证依赖安装成功
gcc --version && cmake --version
# 预期输出:gcc≥8.0,cmake≥3.18(低于3.18需手动升级cmake,见下方备注)
备注:手动升级 cmake(若版本<3.18)
麒麟 V10 SP3 默认 cmake 可能低于 3.18,需升级:
#官网:https://cmake.org/download/
# 最新版本:https://github.com/Kitware/CMake/releases/download/v4.2.1/cmake-4.2.1-linux-x86_64.tar.gz
# 下载cmake 3.28.0(aarch64架构)
wget https://cmake.org/files/v3.28/cmake-3.28.0-linux-aarch64.tar.gz -O /tmp/cmake.tar.gz
# 解压并替换系统cmake
tar -zxf /tmp/cmake.tar.gz -C /usr/local/
ln -sf /usr/local/cmake-3.28.0-linux-aarch64/bin/cmake /usr/bin/cmake
# 验证
cmake --version # 预期输出:cmake version 3.28.0
阶段 3:安装硬件专属依赖(按需选择)
根据服务器硬件(纯 CPU / 昇腾 GPU/NVIDIA GPU)安装对应依赖,这是麒麟系统下 llama.cpp 适配的核心:
场景 1:纯 CPU 安装(无 GPU,通用)
无需额外依赖,跳过此步骤,直接进入编译阶段。
场景 2:昇腾 GPU 安装(麒麟 + 昇腾主流组合)
麒麟 V10 SP3 是昇腾 GPU 的原生适配系统,需安装昇腾驱动 + SDK:
# 1. 安装昇腾驱动(以昇腾910B为例,适配麒麟V10 SP3 aarch64)
# 下载昇腾驱动包(华为官方源,替换为对应版本)
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/X86-ubuntu20.04/npu/23.0.RC1/Ascend-hdk-910B-npu-driver_23.0.RC1_linux-aarch64.run -O /tmp/ascend-driver.run
# 安装驱动
chmod +x /tmp/ascend-driver.run
/tmp/ascend-driver.run --install
# 验证驱动安装
npu-smi info
# 预期输出:显示昇腾GPU列表,状态为"Device Normal"
# 2. 配置昇腾环境变量(编译llama.cpp需用到)
cat >> /etc/profile << EOF
export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
export LD_LIBRARY_PATH=\$ASCEND_TOOLKIT_HOME/lib64:\$LD_LIBRARY_PATH
export PATH=\$ASCEND_TOOLKIT_HOME/bin:\$PATH
EOF
# 生效环境变量
source /etc/profile
场景 3:NVIDIA GPU 安装(少数场景)
# 1. 安装NVIDIA驱动(适配麒麟V10 SP3 aarch64)
yum install -y nvidia-driver-latest-dkms
# 2. 安装CUDA Toolkit(≥11.8)
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux_sbsa.run
chmod +x cuda_11.8.0_520.61.05_linux_sbsa.run
./cuda_11.8.0_520.61.05_linux_sbsa.run --silent --toolkit
# 3. 配置CUDA环境变量
cat >> /etc/profile << EOF
export CUDA_HOME=/usr/local/cuda-11.8
export LD_LIBRARY_PATH=\$CUDA_HOME/lib64:\$LD_LIBRARY_PATH
export PATH=\$CUDA_HOME/bin:\$PATH
EOF
source /etc/profile
# 验证
nvcc -V # 预期输出:CUDA Version 11.8.x
阶段 4:编译安装 llama.cpp(核心步骤)
步骤 4.1 拉取 llama.cpp 源码
#以下几个选项根据需要自我选择
#通用部分:https://github.com/ggml-org/llama.cpp
# 1. 下载llama.cpp x86_64预编译版本(适配Linux)
wget https://github.com/ggerganov/llama.cpp/releases/download/b1788/llama-b1788-linux-x86_64.tar.gz -O /tmp/llama.tar.gz
wget https://github.com/ggerganov/llama.cpp/releases/download/b1788/llama-b1788-linux-x86_64.tar.gz -O /tmp/llama.tar.gz
cd $LLAMA_ROOT/..
git clone https://github.com/ggerganov/llama.cpp.git #昇腾专用
#官网地址:https://ascend.github.io/docs/sources/llama_cpp/install.html#llama-cpp
git clone https://github.com/ggml-org/llama.cpp.git # 通用
cd $LLAMA_ROOT
# 验证源码拉取成功
ls -l $LLAMA_ROOT | grep "CMakeLists.txt"
# 预期输出:存在CMakeLists.txt、main.cpp等核心文件
步骤 4.2 按硬件编译(关键:麒麟系统适配)
场景 1:纯 CPU 编译(通用)
# 创建编译目录
mkdir -p build && cd build
# 编译(启用OpenBLAS加速CPU推理,适配麒麟ARM64)
cmake -DLLAMA_OPENBLAS=ON -DCMAKE_BUILD_TYPE=Release ..
make -j $(nproc) # -j后接CPU核心数(鲲鹏920 7280用-j48)
# 验证编译成功
./main -h
# 预期输出:打印llama.cpp帮助信息,无报错
场景 2:昇腾 GPU 编译(麒麟 + 昇腾核心场景)
cd $LLAMA_ROOT/build
rm -rf * # 清空纯CPU编译产物
# 编译(启用昇腾适配,麒麟V10 SP3专属)
cmake -DLLAMA_ASCEND=ON -DLLAMA_OPENBLAS=ON -DCMAKE_BUILD_TYPE=Release ..
make -j $(nproc)
# 验证昇腾编译成功
./main -h | grep "Ascend"
# 预期输出:包含"Ascend support: yes"
场景 3:NVIDIA GPU 编译
cd $LLAMA_ROOT/build
rm -rf *
# 编译(启用CUDA)
cmake -DLLAMA_CUDA=ON -DLLAMA_OPENBLAS=ON -DCMAKE_BUILD_TYPE=Release ..
make -j $(nproc)
# 验证CUDA编译成功
./main -h | grep "CUDA"
# 预期输出:包含"CUDA support: yes"
步骤 4.3 验证安装(核心可执行文件)
# 检查编译产物(main为核心推理程序,quantize为量化工具)
ls -l $LLAMA_ROOT/build/main $LLAMA_ROOT/build/quantize
# 预期输出:文件权限为-rwxr-xr-x,大小≥10MB
# 检查依赖库(避免运行时缺库)
ldd $LLAMA_ROOT/build/main
# 预期输出:无"not found"的依赖项(关键)
阶段 5:安装后验证(跑通基础推理)
安装完成后,通过简单推理测试验证 llama.cpp 可正常工作:
cd $LLAMA_ROOT/build
# 下载一个轻量GGUF模型(7B Q5_K_M,适配麒麟ARM64)
wget https://huggingface.co/Qwen/Qwen2-7B-Instruct-GGUF/resolve/main/qwen2-7b-instruct-q5_k_m.gguf -O /data/models/qwen2-7b-instruct-q5_k_m.gguf
# 执行基础推理(纯CPU/昇腾/NVIDIA通用,仅参数不同)
./main \
-m /data/models/qwen2-7b-instruct-q5_k_m.gguf \
-p "请介绍麒麟V10 SP3系统的特点" \
--ctx-size 4096 \
--batch-size 512 \
--temp 0.7 \
--top-p 0.9
# 预期输出:
# 1. 无报错信息;
# 2. 输出符合prompt的文本(介绍麒麟V10 SP3的特性);
# 3. 昇腾/NVIDIA GPU场景下,npu-smi/nvidia-smi可看到GPU有负载。
阶段 6:常见问题排查(麒麟系统专属)
| 问题现象 | 根因 | 解决方案 |
|---|---|---|
| 编译报错 “ascend_api.h 找不到” | 昇腾环境变量未配置 | 重新执行source /etc/profile,确认 ASCEND_TOOLKIT_HOME 路径正确 |
| 推理时 “Illegal instruction” | 鲲鹏 ARM64 指令集不兼容 | 编译时添加-DLLAMA_ARM=ON:cmake -DLLAMA_ARM=ON -DLLAMA_OPENBLAS=ON .. |
| yum 安装依赖失败 | 麒麟 yum 源配置错误 | 替换为麒麟官方源:cp /etc/yum.repos.d/kylin_aarch64.repo /etc/yum.repos.d/kylin_aarch64.repo.bak && wget https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/base/aarch64/kylin_aarch64.repo -O /etc/yum.repos.d/kylin_aarch64.repo |
| 模型加载慢 | 存储为机械硬盘 | 将模型移至 NVMe SSD(麒麟 V10 SP3 推荐挂载 /data 为 NVMe) |
总结(安装核心要点)
- 环境适配:麒麟 V10 SP3(aarch64)需确保 cmake≥3.18,昇腾 GPU 必须配置环境变量;
- 编译关键:纯 CPU 用
LLAMA_OPENBLAS=ON,昇腾用LLAMA_ASCEND=ON,NVIDIA 用LLAMA_CUDA=ON; - 验证核心:编译后检查依赖库、执行轻量模型推理,确保无报错且 GPU 有负载(GPU 场景);
- 正式环境建议:编译完成后,将 llama.cpp 注册为 systemd 服务(参考之前的运维步骤),确保 7×24 稳定运行。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/ai/318758.html