llama.cpp 是一个基于 llama 模型 (https://github.com/ggerganov/llama.cpp) 的 C++ 库,用于在 C++ 程序中运行 LLaMA(Large Language Model Meta AI)模型。

安装必要组件/工具

bash
1
apt install cmake

编译安装llama.cpp

bash
1
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# 常规模式构建 llama.cpp
cmake -B build
cmake --build build --config Release

# 使用 Nvidia GPU
apt install nvidia-cuda-toolkit -y
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release

安装python组件

bash
1
2
3
pip install sentencepiece
# 在llama.cpp目录
pip install -r requirements.txt

从魔搭下载一个大模型

bash
1
2
pip install modelscope
python3 -c "from modelscope import snapshot_download;snapshot_download('Qwen/Qwen2.5-3B-Instruct', cache_dir='../models/')"

将模型从 Huggingface Safetensors 格式转换成通用模型格式 GGML。

bash
1
python3 convert_hf_to_gguf.py ../models/Qwen/Qwen2___5-3B-Instruct

验证查看模型基本情况

bash
1
2
./build/bin/llama-lookup-stats -m ../models/Qwen/Qwen2___5-3B-Instruct/Qwen2___5-3B-Instruct-F16.gguf
./build/bin/llama-bench -m ../models/Qwen/Qwen2___5-3B-Instruct/Qwen2___5-3B-Instruct-F16.gguf

测试运行

plaintext
1
./build/bin/llama-cli -m ../models/Qwen/Qwen2___5-3B-Instruct/Qwen2___5-3B-Instruct-F16.gguf -cnv -p "你是通义千问简版"

使用ollama来加载

bash
1
2
3
4
5
6
7
8
9
10
11
12
mkdir ollama
cp ../models/Qwen/Qwen2___5-3B-Instruct/Qwen2___5-3B-Instruct-F16.gguf ollama/
echo "FROM ./Qwen2___5-3B-Instruct-F16.gguf" > ollama/Modelfile
# 启动ollama容器,并进入
docker run -d -v `pwd`/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker exec -it ollama bash
# 导入模型
ollama create custom_qwen -f ~/.ollama/Modelfile
# 查看模型信息
ollama show custom_qwen
# 运行模型
ollama run custom_qwen