rocky linux9.8从零编译、部署llama.cpp

作者头像
袋鼠 本文作者

2026-8-6 阅读 2 约 10分钟读完

评论0

测试软硬件信息

处理器 内存 显卡 存储 网络 系统
类型 E5-2965v4 DDR4 ECC RTX 5060 M.2 AQC113C linux
规格 48核 48G 8G 200G 万兆 rocky9.8
  1. 配置环境
# 安装基础开发工具和 CMake以及CUDA工具包、pip
sudo dnf groupinstall "Development Tools" -y
sudo dnf install cmake git wget cuda-toolkit python3-pip -y

# 把 CUDA 的路径加到系统的环境变量中
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

# 让配置立刻生效
source ~/.bashrc

# 验证 CUDA 编译器是否可用
nvcc --version
  1. 获取 llama.cpp 源码
设置临时网络代理 ```bash export http_proxy="http://IP:port" export https_proxy="http://IP:port" ```
# 克隆仓库并拉取子模块
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
git submodule update --init --recursive
  1. 编译 llama.cpp(开启 GPU 加速),编译完成后,可执行文件会生成在 build/bin/ 目录下。
# 创建 build 目录并进入
mkdir build && cd build

# 配置 CMake,开启 CUDA 加速
cmake .. -DGGML_CUDA=ON

# 开始编译(-j 后面的数字代表使用的 CPU 线程数,根据实际调整)
cmake --build . --config Release -j 48
  1. 下载gguf格式的量化模型,国内推荐ModelScope(魔搭)平台
# 安装 ModelScope 工具
pip install modelscope

# 切换到models目录并新建对应模型目录
cd ~/llama.cpp/models/ && mkdir downloads

# 根据显存大小选择合适的量化模型下载
modelscope download --model diodel/Qwen3.5-4B-Q4_K_M-GGUF  --local_dir ./downloads
  1. 启动服务与核心参数配置
# -m指定模型路径,-ngl表示把模型的前多少层放到GPU显存里,-c表示上下文窗口大小
~/llama.cpp/build/bin/llama-server \
-m ~/llama.cpp/models/downloads/qwen3-5-4B-Q4_K_M.gguf \
--host 0.0.0.0 --port 8080 \
-ngl 99 \
-c 4096
  1. 测试与调用
# 新开一个终端窗口,用 curl 测试 API 是否正常工作
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "llama-server",
        "messages": [
          {"role": "user", "content": "你好,请介绍一下你自己"}
        ]
      }'

局域网内其他主机浏览器测试http://虚拟机IP:8080

防火墙放开8080端口 ```bash # 永久放行 8080 端口 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent # 重新加载防火墙使配置生效 sudo firewall-cmd --reload ```
  1. 设置开机自动加载模型
# 创建并编辑一个服务文件
sudo vi /etc/systemd/system/llama-server.service

# 将以下内容复制进去,注意/home/mysen替换为实际模型路径
[Unit]
Description=llama.cpp server
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/mysen/llama.cpp/build
ExecStart=/home/mysen/llama.cpp/build/bin/llama-server --models-dir /home/mysen/llama.cpp/models/downloads --models-max 3 --host 0.0.0.0 --port 8080 -c 8192
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

# 依次执行以下命令激活服务
sudo systemctl daemon-reload          # 重新加载配置
sudo systemctl enable llama-server    # 设置开机自启
sudo systemctl start llama-server     # 立即启动服务
sudo systemctl restart llama-server   # 立即重启服务
sudo systemctl status llama-server    # 查看服务状态
关闭思考过程 ```bash # 编辑/etc/systemd/system/llama-server.service,ExecStart=行追加参数 ExecStart=原有的参数 --chat-template-kwargs '{"enable_thinking":false}' ``` ```bash # 保存后重载并重启服务 sudo systemctl daemon-reload sudo systemctl restart llama-server ```
服务状态一直处于activing 如果是203/EXEC: ```bash # 这行添加/bin/bash -c '原值' ExecStart=/bin/bash -c '/home/mysen/llama.cpp/build/bin/llama-server --models-dir /home/mysen/llama.cpp/models/downloads --models-max 3 --host 0.0.0.0 --port 8080 -c 8192' ``` ```bash # 查看审计日志来确认是否为SELinux拦截 sudo ausearch -m avc -ts recent | grep 'denied { execute }' # 永久修复 sudo chcon -t bin_t /home/mysen/llama.cpp/build/bin/llama-server ```
本地API调用配置 ```bash API 类型: 选择 OpenAI(或者叫 OpenAI Compatible / 兼容 OpenAI) Base URL:填写局域网访问的服务地址,注意末尾要加上 /v1。例如:http://192.168.1.10:8080/v1 API Key:llama.cpp 本地部署不需要密码。强制要求填就随便填,比如填 sk-local-123 或者 123 Model Name(模型名称):必须填写models目录下模型文件的相对路径(相对于--models-dir的路径)。比如模型在 /home/mysen/llama.cpp/models/downloads/Qwen3.5-4B-GGUF/Qwen3.5-4B.Q4_K_M.gguf,那么这里就填 Qwen3.5-4B-GGUF/Qwen3.5-4B.Q4_K_M.gguf ```
    上一篇 没有了 下一篇 PVE直通显卡到linux虚拟机
    评论
    评论已关闭