把HuggingFace的模型转换成GGUF格式,并导入ollama | AI快速入门 2024

为了在ollama运行环境中执行HuggingFace的模型,需要转换成GGUF格式,并配置定义文件导入ollama。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 下载HuggingFace模型(例:Qwen2-7B)
git lfs install
git clone https://huggingface.co/Qwen/Qwen2-7B

# 在Qwen2-7B的同一父级目录下,下载转换模型用的Llama.cpp,安装必要的python包
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
cd ..
pip install -r llama.cpp/requirements.txt

# 转换Qwen2-7B至未量化的版本,便于后续尝试不同的量化模式比较效果
python llama.cpp/convert.py Qwen2-7B/ --outfile Qwen2-7B.gguf
# 对生成的GGUF模型按照指定精度量化(例:Q4_K_M),以便在较低的GPU环境运行
./llama.cpp/quantize Qwen2-7B.gguf Qwen2-7B-Q4_K_M.gguf Q4_K_M

# 如果项直接转换成f32,f16,q8_0的精度,上述两步操作也可以合并成一步(例:q8_0)
python llama.cpp/convert.py Qwen2-7B/ --outfile Qwen2-7B-q8_0.gguf --outtype q8_0

# 编辑ollama用的模型定义文件
touch Qwen2-7B/Qwen2-7B-Q4_K_M.Modelfile
vi Qwen2-7B/Qwen2-7B-Q4_K_M.Modelfile
# 文件内容
FROM ./Qwen2-7B-Q4_K_M.gguf

//todo 怎么写template
TEMPLATE """[INST] {{ .System }}
{{ .Prompt }} [/INST]
"""
PARAMETER stop "[INST]"
PARAMETER stop "[/INST]"


# 导入ollama,正确后会输出模型一览
ollama create Qwen2-7B-Q4_K_M -f Qwen2-7B-Q4_K_M.Modelfile
ollama list