掌握 llama.cpp 量化部署与 ollama 导入模型,轻松搞定模型部署难题!

在这里插入图片描述在这里插入图片描述

一、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. 背景介绍
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

在这里插入图片描述