llama.cpp模型量化(本地) + ollama部署(docker)(超详细实况二)

435 阅读2分钟

前言

上一篇我们完成了模型的微调和导出,但是模型文件我们是不好直接使用了,为了在本地也能随时使用,因此我们还需要对微调后的模型文件做一些操作

1.llama.cpp

1.1 c++编译工具准备

为此我们需要借助llama.cpp对模型文件进行量化,经由llama.cpp量化后的模型(以llama3.1-8b指令微调版为例)即使是在个人消费级显卡也能顺利运行

llama.cpp是由C++编写的,因此为了在本地使用,首先我们需要下载VisualStudio,地址visualstudio.microsoft.com/zh-hans/

image.png 下载这个安装器后双击打开,选择这个C++ 桌面开发工具确认安装即可,安装后需要重启电脑

image.png

在命令行输入cmake检验

image.png

1.2 本地编译llama.cpp

建议单独建立文件夹存放llama.cpp 前往hub地址

git clone https://github.com/ggerganov/llama.cpp.git
-编译-
cd llama.cpp
mkdir build #创建build文件夹
cd build
cmake --build . --config Release

image.png 中途会有大量的警告,只要没有出现红色报错一般是没有关系的,大概五分钟后完成编译

image.png

打开本地文件查看

D:\llama.cpp\build\bin\Release

image.png 到这里恭喜完成llama.cpp的构建

2.量化

接下来我们将使用llama.cpp对微调后的模型文件进行量化
启动虚拟环境,使用之前的cmd窗口(路径在llama.cpp\build\bin\Release下)

conda activate 你的虚拟环境 #我这边是factory_env

image.png

首先是转换,运行转换命令

python convert_hf_to_gguf.py 此前导出的模型文件地址
# 因为llama.cpp是本地构建所以需要输入本地文件路径

转换完成我们可以看到会生成一个新的GGUF文件

image.png 这是一个16位的GGUF,但我们还需要进行量化以供ollama调用
新建目标存储文件夹 xxx,运行量化命令

D:\llama.cpp\build\bin\Release\llama-quantize.exe  转换的16位gguf文件   目标文件夹\量化后文件名     Q4_K_M

# D:\llama.cpp\build\bin\Release\llama-quantize.exe 量化脚本
# 转换的16位gguf文件 转换后的16位gguf地址
# 目标文件夹\量化后文件名 
# Q4_K_M 设置量化类型

ollama部署

我这里是放入了ollama映射的本地文件夹内,也可以生成后手动剪切到您ollama设置的映射文件夹下,新建Modelfile.txt文件
image.png 然后在Modelfile中写入gguf文件在docker镜像的相对路径
image.png

当然也可以写入一些模版和回答的设置

image.png

ollama自定义构建model github.com/ollama/olla…

image.png 进入ollama的docker镜像

docker exec -it ollama的镜像名 /bin/bash 
cd 目标文件夹映射路径 #即四位GGUF文件存放路径
ls # 查询目录 (应该只包含txt文件和gguf文件各一个)
ollama create 自定义名字 -f Modelfile.txt #生成

查看ollama创建列表

image.png 运行模型

ollama run 模型文件名

image.png

量化和部署到此完成啦,后续会继续更新anythingllm可视化的调用~