一、llama.cpp安装
1. 克隆llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
如果下载慢,开启学术加速
source /etc/network_turbo
2. 更新源
apt-get update
apt-get upgrade
3. 安装依赖
sudo apt-get install make cmake gcc g++ locate
4. 安装依赖
sudo apt-get install make cmake gcc g++ locate
5. 编译llama.cpp
cmake -B build
cmake --build build --config Release -j 8
二、将导出合并的模型safetensors 格式转成 gguf
2.1. 背景介绍
-
背景一:基于解锁 DeepSeek R1 微调训练新姿势,LLaMA - Factory、LoRA 与 FastAPI 带你弯道超车!微调到处后的模型或者自己重新下载一个新增模型测试都可以。
-
背景二:重新拉取新模型做测试的话,执行下面命令
cd autodl-tmp/
mkdir Hugging-Face
export HF_ENDPOINT=https://hf-mirror.com
export HF_HOME=/root/autodl-tmp/Hugging-Face
pip install -U huggingface_hub
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
2.2. safetensors 格式转成 gguf(背景一)
mkdir -p root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF
cd /root/autodl-tmp/llama.cpp/
python convert_hf_to_gguf.py /root/autodl-tmp/Models/deepseek-r1-1.5b-merged --outfile /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf --outtype q8_0
2.2. safetensors 格式转成 gguf(背景二)
mkdir -p root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF
cd /root/autodl-tmp/llama.cpp/
python convert_hf_to_gguf.py /root/autodl-tmp/Hugging-Face/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-1.5B/snapshots/ad9f0ae0864d7fbcd1cd905e3c6c5b069cc8b562 --outfile /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf --outtype q8_0
最后输出
INFO:hf-to-gguf:Set model quantization version
INFO:gguf.gguf_writer:Writing the following files:
INFO:gguf.gguf_writer:/root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf: n_tensors = 339, total_size = 1.9G
Writing: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1.89G/1.89G [00:21<00:00, 88.4Mbyte/s]
INFO:hf-to-gguf:Model successfully exported to /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf
2.3.异常汇总
- 问题一:
ModuleNotFoundError: No module named 'sentencepiece'
解决方案:
pip install sentencepiece
- 问题二:
ModuleNotFoundError: No module named 'safetensors''
解决方案:
pip install safetensors
- 问题三:
ModuleNotFoundError: No module named 'transformers''
解决方案:
pip install transformers
三、gguf模型量化和服务体验
将 gguf 格式模型进行(再)量化
3.1. gguf模型量化
cd /root/autodl-tmp/llama.cpp/build/bin/
./llama-quantize --allow-requantize /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q4_0-v1.gguf Q4_1
输出
llama_model_quantize_impl: model size = 1801.09 MB
llama_model_quantize_impl: quant size = 1103.16 MB
main: quantize time = 6053.28 ms
main: total time = 6053.28 ms
3.2. 服务体验
cd /root/autodl-tmp/llama.cpp/build/bin/
./llama-cli -m /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf \
-n -1 \
-ngl 256 \
-t 12 \
--color \
-r "User:" \
--in-prefix " " \
-i \
-p \
'User: 你好
AI: 你好啊,我是光屿,要聊聊吗?
User: 好啊!
AI: 你想聊聊什么话题呢?
User:'
cd /root/autodl-tmp/llama.cpp/build/bin/
./llama-cli -m /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q4_0-v1.gguf \
-n -1 \
-ngl 256 \
-t 12 \
--color \
-r "User:" \
--in-prefix " " \
-i \
-p \
'User: 你好
AI: 你好啊,我是光屿,要聊聊吗?
User: 好啊!
AI: 你想聊聊什么话题呢?
User:'
cd /root/autodl-tmp/llama.cpp/build/bin/
./llama-server \
-m /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/deepseek-r1-1.5b-q8_0-v1.gguf \
--host "127.0.0.1" \
--port 8080 \
-c 2048 \
-ngl 128
http://localhost:8080/
四、ollama导入gguf模型
1.1 linux安装ollama
cd /root/autodl-tmp
curl -fsSL https://ollama.com/install.sh| sh
- 启动ollama
ollama serve
1.2. 制作Modelfile
新建Modelfile文件(不要后缀),输入一下内容和模型在同一个目录下面
FROM ./deepseek-r1-1.5b-q8_0-v1.gguf
1.3. ollama导入gguf模型
cd /root/autodl-tmp/Models/deepseek-r1-1.5b-GGUF/
ollama create gblfy-deepseek-r1-1.5b-q8 -f Modelfile
1.4. 查看镜像
ollama list
1.5. 运行模型镜像和体验服务
ollama run gblfy-deepseek-r1-1.5b-q8