llama.cpp 部署大模型到 Ubuntu 台式机 SOP

markdown 复制代码
## 0. 先确认机器情况

```bash
# 查看显示设备
lspci | grep -Ei 'vga|3d|display'

# NVIDIA 显卡
nvidia-smi

# AMD 显卡
rocm-smi
  • 有 NVIDIA:编译时用 -DGGML_CUDA=ON
  • 有 AMD:编译时用 -DGGML_HIPBLAS=ON
  • 无 GPU 或不想折腾:只编译 CPU 版

GLM-4.7-Flash 4bit 量化约需 18GB 左右内存/显存。不够就换更小量化,如 Q4_K_M、Q3_K_M。


1. 安装基础依赖

bash 复制代码
sudo apt update
sudo apt install -y git cmake build-essential libssl-dev curl

libssl-dev 必须安装,否则会报:

text 复制代码
error: HTTPS is not supported

如果使用 NVIDIA GPU,请确保 CUDA Toolkit 已安装:

bash 复制代码
nvcc --version

没有 nvcc 请先安装 CUDA Toolkit 12.x。


2. 设置 Hugging Face 镜像(国内必须)

临时生效(当前终端):

bash 复制代码
export HF_ENDPOINT=https://hf-mirror.com

永久生效(推荐):

bash 复制代码
echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
source ~/.bashrc

不设置此步骤,后面使用 -hf 下载模型大概率失败。


3. 下载并编译 llama.cpp

bash 复制代码
cd ~
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

CPU 版

bash 复制代码
cmake -B build -DLLAMA_OPENSSL=ON
cmake --build build --config Release -j $(nproc)

NVIDIA GPU 版

bash 复制代码
cmake -B build -DGGML_CUDA=ON -DLLAMA_OPENSSL=ON
cmake --build build --config Release -j $(nproc)

AMD GPU 版

bash 复制代码
cmake -B build -DGGML_HIPBLAS=ON -DLLAMA_OPENSSL=ON
cmake --build build --config Release -j $(nproc)

编译完成后检查:

bash 复制代码
./build/bin/llama-cli --version

如果报找不到 libllama-cli-impl.so:

bash 复制代码
export LD_LIBRARY_PATH=$HOME/llama.cpp/build/bin:$LD_LIBRARY_PATH

4. 快速测试模型:llama-cli

确保已设置镜像:

bash 复制代码
export HF_ENDPOINT=https://hf-mirror.com

运行 GLM-4.7-Flash:

bash 复制代码
cd ~/llama.cpp
./build/bin/llama-cli \
  -hf unsloth/GLM-4.7-Flash-GGUF:UD-Q4_K_XL \
  -ngl 99 \
  --temp 1.0 --top-p 0.95 --min-p 0.01 --repeat-penalty 1.0

参数说明:

  • -ngl 99:尽量把模型层放到 GPU;CPU 版请删掉。
  • --min-p 0.01:GLM 推荐值,llama.cpp 默认是 0.05,需显式覆盖。
  • --repeat-penalty 1.0:官方建议禁用重复惩罚。
  • 显存不足时,去掉 -ngl 99,或换更小量化。

5. 启动 API 服务:llama-server

bash 复制代码
cd ~/llama.cpp
./build/bin/llama-server \
  -hf unsloth/GLM-4.7-Flash-GGUF:UD-Q4_K_XL \
  -ngl 99 \
  --host 0.0.0.0 --port 8080 \
  --ctx-size 32768 \
  --temp 1.0 --top-p 0.95 --min-p 0.01 --repeat-penalty 1.0

后台运行:

bash 复制代码
nohup ./build/bin/llama-server \
  -hf unsloth/GLM-4.7-Flash-GGUF:UD-Q4_K_XL \
  -ngl 99 \
  --host 0.0.0.0 --port 8080 \
  --ctx-size 32768 \
  --temp 1.0 --top-p 0.95 --min-p 0.01 --repeat-penalty 1.0 \
  > llama-server.log 2>&1 &

访问地址:

  • Web UI:http://localhost:8080
  • 局域网:http://你的Ubuntu机器IP:8080

6. 测试服务是否正常

bash 复制代码
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "glm-4.7-flash",
    "messages": [{"role": "user", "content": "你好"}]
  }'

返回 JSON 即表示部署成功。


7. 常用参数速查

参数 作用
-hf 仓库:量化 自动从 Hugging Face 下载模型
--model /path/model.gguf 手动指定本地 GGUF 文件
-ngl 99 GPU 层数,99 表示尽量全放 GPU
--ctx-size 32768 上下文长度
--host 0.0.0.0 允许局域网访问
--port 8080 服务端口
--temp 1.0 --top-p 0.95 --min-p 0.01 GLM 推荐采样参数
--repeat-penalty 1.0 禁用重复惩罚
--cache-type-k q4_0 --cache-type-v q4_0 KV 缓存量化,省显存,不稳定则去掉

8. 常见问题

1)--model is required

通常是 -hf 下载失败。先确认:

bash 复制代码
echo $HF_ENDPOINT

应输出 https://hf-mirror.com。没有则重新 export。

2)HTTPS is not supported

未安装 libssl-dev 或编译未启用 OpenSSL:

bash 复制代码
sudo apt install -y libssl-dev
cd ~/llama.cpp
cmake -B build -DLLAMA_OPENSSL=ON -DGGML_CUDA=ON   # AMD 换 HIPBLAS,CPU 去掉 CUDA
cmake --build build --config Release -j $(nproc)

3)libllama-cli-impl.so: cannot open shared object file

临时解决:

bash 复制代码
export LD_LIBRARY_PATH=$HOME/llama.cpp/build/bin:$LD_LIBRARY_PATH

或重新安装:

bash 复制代码
cd ~/llama.cpp
sudo cmake --install build --config Release

4)显存不足

  • 换更小量化:Q4_K_M、Q3_K_M、Q2_K
  • 降低 -ngl
  • 加 KV 量化:--cache-type-k q4_0 --cache-type-v q4_0
  • 直接 CPU 推理,去掉 -ngl 99

5)速度慢

确认是否真的用了 GPU:

bash 复制代码
nvidia-smi

如果显存没占用,说明 -ngl 没生效或编译时没开 CUDA。


9. 最小命令汇总

bash 复制代码
# 1. 安装依赖
sudo apt update
sudo apt install -y git cmake build-essential libssl-dev curl

# 2. 设置 Hugging Face 镜像(国内必须)
export HF_ENDPOINT=https://hf-mirror.com

# 3. 编译
cd ~
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DLLAMA_OPENSSL=ON
cmake --build build --config Release -j $(nproc)

# 4. 命令行测试
./build/bin/llama-cli -hf unsloth/GLM-4.7-Flash-GGUF:UD-Q4_K_XL -ngl 99 \
  --temp 1.0 --top-p 0.95 --min-p 0.01 --repeat-penalty 1.0

# 5. 启动 API 服务
./build/bin/llama-server -hf unsloth/GLM-4.7-Flash-GGUF:UD-Q4_K_XL -ngl 99 \
  --host 0.0.0.0 --port 8080 --ctx-size 32768 \
  --temp 1.0 --top-p 0.95 --min-p 0.01 --repeat-penalty 1.0
复制代码
相关推荐
GeW4 小时前
国产化替代进入深水区之后Linux 与数据库为什么必须走向重建
linux
longzhizhui9266 小时前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
女神下凡7 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
12.=0.8 小时前
【持续更新】shell脚本 + Linux命令
linux·运维·服务器
Escalating_xu8 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
无言听风雨丶9 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
万联WANFLOW9 小时前
CVE-2026-98432 等漏洞自查:AI 查出的 Linux、Windows 漏洞,运维怎么确认受不受影响
linux·运维·windows·网络安全
OPEN-F9 小时前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
硅基手札9 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
默|笙9 小时前
【Linux网络】传输层协议TCP(3)滑动窗口、流量控制
linux·网络·tcp/ip