Linux系统安装llama-cpp【CPU】
如果git拉取过慢,又不知道怎么配置代理,可以使用此网站:Github Proxy 文件代理加速
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# 配置构建系统(生成 Makefile)
cmake -B build
# 编译出可执行文件
cmake --build build --config Release
下载模型
从huggingface下载ERNIE-4.5-0.3B-PT-Q4_K_M这个:https://huggingface.co/unsloth/ERNIE-4.5-0.3B-PT-GGUF
保存至指定位置,这里假设模型保存至/data/coding/ERNIE-4.5-0.3B-PT-Q4_K_M.gguf

启动服务
注意llama-server这里用绝对路径,模型也可以用绝对路径,直接llama-server或者在bin里面llama-server会识别不出来~
/data/coding/llama.cpp/build/bin/llama-server -m /data/coding/ERNIE-4.5-0.3B-PT-Q4_K_M.gguf --port 8081

调用服务
# pip install openai -i https://repo.huaweicloud.com/repository/pypi/simple
from openai import OpenAI
# 指向本地运行的 llama-server
client = OpenAI(
base_url="http://localhost:8081/v1", # 注意:必须包含 /v1
api_key="not-needed" # llama-server 不需要 API key,但必须传一个值(不能为 None)
)
# 发起聊天补全请求
stream = False # 改为 True 可以流式输出
response = client.chat.completions.create(
model="local-model", # 这个字段其实会被忽略,但必须传
messages=[
{"role": "system", "content": "你是一个乐于助人的助手。"},
{"role": "user", "content": "请用中文写一首关于秋天的诗。"}
],
temperature=0.7,
max_tokens=512,
stream=stream,
)
if stream:
for chunk in response:
print(chunk.choices[0].delta.content or "", end="", flush=True)
else:
print(response.choices[0].message.content)

其他补充
查看模型运行在GPU/CPU
看 llama-server
启动时的输出日志(最直接)
system_info: n_threads = 8 # 使用 8 个 CPU 线程
llama.cpp: loading model from /path/to/your-model.gguf
llama_model_loader: loaded meta data with 11 key-value pairs # 模型元数据
llama_model_loader: VBMI 160 gguf file detected
llama_model_loader: loading model: q4_k - mmp 0.000000 # 量化类型
llama_model_loader: tensor 0: output [f32] 4096 32000 - CPU
llama_model_loader: tensor 1: token_embd [f32] 32000 4096 - CPU
llama_model_loader: tensor 2: output_norm [f32] 4096 - CPU
llama_model_loader: tensor 3: blk.0.attn_q [f16] 4096 4096 - GPU
llama_model_loader: tensor 4: blk.0.attn_k [f16] 4096 4096 - GPU
llama_model_loader: tensor 5: blk.0.attn_v [f16] 4096 4096 - GPU
...
llama_init_backend: using CUDA backend
要判断你当前运行的 llama.cpp
模型是运行在 CPU 还是 GPU(如 CUDA、Vulkan、Metal 等) 上,主要看llama_init_backend: using CUDA backend这行
输出内容 | 含义 |
---|---|
using CUDA backend |
正在使用 NVIDIA GPU(CUDA) |
using Metal backend |
macOS 上使用 Apple GPU(M1/M2) |
using Vulkan backend |
使用 Vulkan GPU(Linux/Windows) |
using CPU backend 或没显示 backend |
仅使用 CPU |
tensor ... - GPU |
某些层已卸载到 GPU |
tensor ... - CPU |
该层在 CPU 上运行 |
✅ 如果你看到 部分 tensor 在 GPU 上 ,说明是 混合模式(CPU + GPU)推理 ,这是
llama.cpp
的典型做法。
检查是否启用 GPU 支持
检查是否启用了 CUDA(NVIDIA),如果编译时没有开启这些选项,即使有 GPU 也无法使用。
cmake -B build -DGGML_CUDA=ON
👉 查看你的构建目录是否启用了 GPU:
grep -i cuda build/CMakeCache.txt
grep -i metal build/CMakeCache.txt
grep -i vulkan build/CMakeCache.txt
如果有输出类似如下,说明支持 CUDA,如果为OFF则说明不支持
GGML_CUDA:BOOL=ON
启用GPU版本
注意这里创建配置时候需要根据卡型指定其CUDA 计算能力,否则后面可能报错,这里我用的是RTX8000,其计算能力为sm_75。
各系列 NVIDIA GPU 对应的 CMAKE_CUDA_ARCHITECTURES
值如下
这是在使用 CMake 编译 llama.cpp
并启用 CUDA 时,必须设置的关键参数,它告诉编译器为目标 GPU 架构生成优化的代码。
GPU 系列 (代号) | 常见型号举例 | 计算能力 (Compute Capability) | CMAKE_CUDA_ARCHITECTURES 值 |
---|---|---|---|
Pascal | GTX 1080, GTX 1070, Titan Xp | 6.1 | 61 |
Volta | Tesla V100 | 7.0 | 70 |
Turing | RTX 2080 Ti , RTX 2070 , Quadro RTX 8000 | 7.5 | 75 |
Ampere | RTX 3090, RTX 3080, A100 | 8.0 / 8.6 | 80 或 86 |
Ada Lovelace | RTX 4090, RTX 4080 | 8.9 | 89 |
Hopper | H100 | 9.0 | 90 |
# 进入 llama.cpp 目录
cd /data/coding/llama.cpp
# 清理旧构建(可选)
rm -rf build
# 创建构建目录并配置(启用 CUDA)
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=75
# 编译(在 build 目录下运行 make)
make -C build -j$(nproc)
# 或者用 cmake 命令编译
cmake --build build --config Release --target all -j$(nproc)
再启动模型,就会发现是在GPU版本部署的了
