> 技术文档 > Linux系统安装llama-cpp并部署ERNIE-4.5-0.3B_ernie-4.5-0.3b-pt-f16.gguf怎么运行

Linux系统安装llama-cpp并部署ERNIE-4.5-0.3B_ernie-4.5-0.3b-pt-f16.gguf怎么运行


Linux系统安装llama-cpp【CPU】

如果git拉取过慢,又不知道怎么配置代理,可以使用此网站:Github Proxy 文件代理加速

git clone https://github.com/ggml-org/llama.cppcd 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-serverclient = 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.ggufllama_model_loader: loaded meta data with 11 key-value pairs    # 模型元数据llama_model_loader: VBMI 160 gguf file detectedllama_model_loader: loading model: q4_k - mmp 0.000000         # 量化类型llama_model_loader:     tensor     0: output         [f32]     4096   32000 - CPUllama_model_loader:     tensor     1: token_embd     [f32]     32000    4096 - CPUllama_model_loader:     tensor     2: output_norm   [f32]     4096         - CPUllama_model_loader:     tensor     3: blk.0.attn_q   [f16]     4096    4096 - GPUllama_model_loader:     tensor     4: blk.0.attn_k   [f16]     4096    4096 - GPUllama_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.txtgrep -i metal build/CMakeCache.txtgrep -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_ARCHITECTURESPascal 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 8086 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版本部署的了