llama-cpp-python使用教程

以下是 llama-cpp-python 的完整使用教程,涵盖安装、基础用法、高级功能(如GPU加速、多模态等)和常见问题解决。

1. 安装

1.1 基础安装(CPU版)

pip install llama-cpp-python -i https://pypi.tuna.tsinghua.edu.cn/simple

1.2 启用GPU加速(CUDA)

CMAKE_ARGS="-DGGML_CUDA=ON" pip install llama-cpp-python --force-reinstall --no-cache-dir


注意:需提前安装 CUDA Toolkit 和匹配的 NVIDIA 驱动。

1.3 其他后端支持

| 参数                | 用途                     | 示例命令                                                                 |
|---------------------|--------------------------|--------------------------------------------------------------------------|
| -DGGML_OPENBLAS=ON | OpenBLAS加速(CPU)      | CMAKE_ARGS="-DGGML_OPENBLAS=ON" pip install...| -DGGML_METAL=ON    | Apple Metal(M1/M2 GPU) | CMAKE_ARGS="-DGGML_METAL=ON" pip install...

2. 基础用法

2.1 加载模型

from llama_cpp import Llama# 加载GGUF格式模型(需提前下载)
llm = Llama(model_path="mistral-7b-instruct-v0.1.Q4_K_M.gguf",  # 模型路径n_ctx=2048,  # 上下文长度n_threads=8  # CPU线程数
)

2.2 文本生成

output = llm.create_completion(prompt="Python如何读取文件?",max_tokens=100,  # 生成的最大token数temperature=0.8,  # 随机性(0-1,越高越随机)stop=["\n", "。"]  # 停止符号
)
print(output["choices"][0]["text"])

2.3 对话模式

response = llm.create_chat_completion(messages=[{"role": "system", "content": "你是一个编程助手"},{"role": "user", "content": "如何用Python写一个HTTP服务器?"}]
)
print(response["choices"][0]["message"]["content"])

3. 高级功能

3.1 GPU加速

llm = Llama(model_path="llama-2-7b.Q5_K_M.gguf",n_gpu_layers=20,  # 使用GPU计算的层数(越大显存占用越高)n_threads=4      # CPU线程数(与GPU配合)
)

3.2 多模态(图片+文本)

需安装 llava 分支的模型(如 llava-v1.5-7b-Q4_K.gguf):from llama_cpp import Llama, LlamaVAModel# 加载多模态模型
llava = LlamaVAModel(clip_model_path="llava-v1.5-7b-mmproj-Q4_K.gguf",llm_model_path="llava-v1.5-7b-Q4_K.gguf"
)
# 图片描述生成
response = llava.create_image_completion(image_path="cat.jpg",prompt="描述这张图片的内容"
)

3.3 流式输出

stream = llm.create_completion(prompt="写一篇关于AI的文章",stream=True  # 启用流式
)for chunk in stream:print(chunk["choices"][0]["text"], end="", flush=True)

4. 实用技巧

4.1 模型量化

使用 llama.cpp 量化原始模型(节省显存/内存):./quantize ./models/llama-2-7b.gguf ./models/llama-2-7b-Q4_K_M.gguf Q4_K_M常用量化等级:
| 等级     | 显存占用 | 质量 |
|----------|---------|------|
| Q2_K   | 极小     | 低   |
| Q4_K_M | 中等     | 推荐 |
| Q5_K_M | 较大     | 高   |


4.2 显存优化

控制GPU层数:
n_gpu_layers根据显存调整(7B模型约需20层+8GB显存)。启用内存映射:减少内存占用:
llm = Llama(model_path="...", use_mmap=True)


5. 常见问题

5.1 报错 

CUDA not found确认 
nvcc --version能正常运行。重新安装时指定CUDA路径:
CMAKE_ARGS="-DGGML_CUDA=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc" pip install...

5.2 报错 

GLIBCXX not found升级GCC:
sudo apt install gcc-11 g++-11
export CC=/usr/bin/gcc-11 CXX=/usr/bin/g++-11

5.3 性能优化

CPU绑定:设置 
n_threads为物理核心数(非超线程)。批处理:通过 
n_batch参数调整(默认512):
llm = Llama(..., n_batch=1024)