ubuntu下llama.cpp安装
·
一、安装系统编译依赖
sudo apt update && sudo apt install -y build-essential git cmake gcc g++ libopenblas-dev libcurl4-openssl-dev
二、拉取源码
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
三、编译开启 CUDA 硬件加速
两种编译方式任选一种,推荐 CMake 方式更稳定:
方式 1:CMake 编译(推荐)
# 清理旧构建文件(如果之前编译过)
rm -rf build
# 开启CUDA编译
cmake -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release
# 多核编译
cmake --build build -j$(nproc)
方式 2:Make 简易编译
make CUDA=1 -j$(nproc)
编译完成后:
- CMake 产物目录:
build/bin/(main、llama-server、quantize) - Make 产物:项目根目录直接有可执行文件
四、conda 环境(处理模型转换脚本)
1. 创建环境
conda create -n llama python=3.11 -y
conda activate llama
2. 安装转换依赖
pip install -r requirements.txt
pip install torch transformers sentencepiece accelerate protobuf
五、模型格式转换
#进入工作目录
cd llama.cpp/build/bin
#将huggingface格式的模型转化从gguf
python3 convert_hf_to_gguf.py /path/to/model_file \
--outtype f16 --outfile /path/to/model.gguf
六、启动 llama-server
# CMake编译用这条
./build/bin/llama-server \
-m models/你的模型.Q4_K_M.gguf \
-ngl 99 \
-c 16384 \
--max-concurrent-requests 8 \
--host 0.0.0.0 \
--port 8080
参数说明:
-ngl 99:全部层加载到 GPU 加速-c 16384:单用户上下文窗口,可改成 32768--max-concurrent-requests 8:限制同时并发人数,防止显存溢出--host 0.0.0.0内网其他机器可访问
在浏览器上打开下列链接,即可开始对话
http://localhost:8080
七、其他相关命令
7.1、核心可执行文件清单
main:本地命令行交互式对话、单次提问测试llama-server:OpenAI 兼容 API 服务(公司内网多人必用)quantize:GGUF 模型量化压缩(4bit/8bit)llama-bench:显卡性能跑分、显存占用测试perplexity:计算模型困惑度,评估模型效果embedding:文本向量化(RAG 知识库向量生成)convert-hf-to-gguf.py:Python 脚本,HF 模型转 GGUF(不在 bin 里,项目根目录)
7.2、main 命令(本地调试、单次推理)
基础通用参数
| 参数 | 作用 |
|---|---|
-m 模型路径 | 必填,加载 GGUF 模型 |
-ngl N | GPU 加速层数,RTX3090 填 99,全部放显存 |
-c N | 上下文窗口大小,推荐 8192/16384/32768 |
-p "提示词" | 单次输入问题,直接输出结果后退出 |
-i | 交互式聊天,持续多轮对话 |
-t N | CPU 线程数,-t $(nproc) 拉满 |
--color | 终端彩色区分用户 / AI 输出 |
-s N | 最大生成 token 数,默认 512 |
采样控制(调回答创造力)
| 参数 | 说明 |
|---|---|
--temp 0.7 | 温度,0 = 完全固定回答,1 = 天马行空;企业文档建议 0.2~0.5 |
--top_p 0.9 | 核采样,限制概率总和 |
--top_k 40 | 只取概率前 K 个 token |
--repeat_penalty 1.1 | 重复惩罚,防止 AI 反复说相同内容 |
常用示例
1. 单次提问(一次性输出)
./build/bin/main -m models/model.Q4_K_M.gguf -ngl 99 -c 16384 -t 16 -p "写一份公司报销流程"
2. 交互式聊天(持续对话)
./build/bin/main -m models/model.Q4_K_M.gguf -ngl 99 -c 16384 -t 16 -i --color
3. 低创造力,适合办公 / 文档问答
./build/bin/main -m models/model.Q4_K_M.gguf -ngl 99 -c 16384 -temp 0.2 -repeat_penalty 1.2 -p "解释合同条款"
4. 读取文件作为 Prompt
./build/bin/main -m model.gguf -f question.txt
7.3、llama-server(重点,公司内网多人网页调用)
核心网络参数
| 参数 | 作用 |
|---|---|
--host 0.0.0.0 | 允许内网所有机器访问,不能写 127.0.0.1 |
--port 8080 | 服务端口,可自定义 |
--max-concurrent-requests 8 | 最大同时并发用户,3090 24G 建议 4~10 |
--timeout 300 | 请求超时 5 分钟 |
模型 & 显存参数
| 参数 | 说明 |
|---|---|
-ngl 99 | 全部层 GPU 加速 |
-c 16384 | 单会话上下文窗口 |
--mmap | 使用内存映射,减少模型加载占用内存 |
--no-mmap | 完整加载进显存,速度更快 |
API 功能参数
| 参数 | 作用 |
|---|---|
--api-key abc123 | 接口密钥,请求必须携带,简单鉴权 |
--enable-cors | 允许前端网页跨域访问,内网前端必备 |
--system-prompt "你是公司内部AI助手" | 全局固定系统提示词 |
完整生产启动命令
./build/bin/llama-server \
-m models/model.Q4_K_M.gguf \
-ngl 99 \
-c 16384 \
-t 16 \
--host 0.0.0.0 \
--port 8080 \
--max-concurrent-requests 6 \
--api-key companyai2026 \
--enable-cors \
--system-prompt "你是企业内部智能助手,回答严谨简洁,只基于公司资料作答"
服务自带接口(OpenAI 标准,网关转发用)
- 对话接口:
POST http://IP:8080/v1/chat/completions - 模型列表:
GET /v1/models - 文本嵌入:
POST /v1/embeddings - 健康检查:
GET /health
后台常驻运行(服务器 7*24)
搭配 nohup 挂后台,输出日志:
nohup ./build/bin/llama-server 上面所有参数 > llm_server.log 2>&1 &
# 查看日志
tail -f llm_server.log
7.4、quantize 模型量化命令
作用:把 FP16 大模型压成 4bit/5bit/8bit,大幅降低显存占用
语法
./build/bin/quantize 原模型.gguf 输出量化模型.gguf 量化等级
常用量化等级(企业推荐)
Q4_K_M:平衡速度、显存、效果,90% 场景首选Q5_K_M:精度更高,显存占用更大Q8_0:几乎无损,显存占用翻倍Q2_K:极致省显存,文字逻辑大幅下降
示例
# 标准4K_M量化
./build/bin/quantize models/original.gguf models/model.Q4_K_M.gguf Q4_K_M
7.5、embedding 向量生成(RAG 知识库)
把文档 / 问题转为向量,用于相似度检索
# 单文本向量化
./build/bin/embedding -m model.Q4_K_M.gguf -ngl 99 -p "报销制度"
# 读取整个文件批量向量化
./build/bin/embedding -m model.Q4_K_M.gguf -f doc.txt
7.6、llama-bench 性能测试(测速度)
测试每秒生成 token、显存占用、推理速度
./build/bin/llama-bench -m model.Q4_K_M.gguf -ngl 99 -c 16384
输出指标:t/s 每秒 token 数,数值越大越快
7.7、perplexity 困惑度(评测模型精度)
数值越低,模型理解、生成越准确
./build/bin/perplexity -m model.gguf -ngl 99 -f test.txt
7.8、Python 转换脚本(HF 权重 → GGUF)
路径:项目根目录 convert-hf-to-gguf.py 需要激活 conda环境运行
1. HF 模型转 FP16 GGUF
python convert-hf-to-gguf.py /data/hf-model --outfile models/fp16.gguf
2. 仅转换部分层、限制内存
python convert-hf-to-gguf.py /data/hf-model --outtype f16 --outfile models/fp16.gguf
转换完成后再用 quantize 压缩成 4bit 使用
7.9、CUDA 专属关键参数
-ngl 99:所有 transform 层加载 GPU--cuda-stream:启用 CUDA 多流并行,优化并发--cuda-malloc-threshold 1024:小块内存走 CPU,减少显存碎片
CUDA 优化启动示例(main)
./build/bin/main -m model.Q4_K_M.gguf -ngl 99 --cuda-stream -c 16384 -t 16
7.10、排错常用命令
查看帮助(所有程序通用)
./build/bin/llama-server -h
./build/bin/main -h
查看显卡状态
nvidia-smi
# 实时刷新
watch -n1 nvidia-smi
杀死占用 GPU 的 llama 进程
pkill llama-server
pkill main
更多推荐
所有评论(0)