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/simplefrom 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
using Metal backend
using Vulkan backend
using CPU backend
或没显示 backendtensor ... - GPU
tensor ... - 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 架构生成优化的代码。
CMAKE_CUDA_ARCHITECTURES
值61
70
75
80
或 86
89
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版本部署的了