赞
踩
这里是视频 模型转化 + 模型量化(从 safetensors 到 ollama)这里有详细的步骤哦 的笔记,记录了如何将 huggingface 上 NousResearch/Hermes-2-Pro-Llama-3-8B 模型转化为 gguf 格式、模型量化并在 ollama 中使用。请结合视频一起食用。
wget https://github.com/ollama/ollama/releases/download/v0.1.47/ollama-linux-amd64
install ollama-linux-amd64 /usr/local/bin/ollama
ollama -v
OLLAMA_MODELS=/root/autodl-tmp ollama serve
这里修改了 OLLAMA_MODELS
为 /root/autodl-tmp
,这样 ollama 会从这个目录下加载模型。
ollama pull llama3:8b
可以通过命令查看这个模型的 modelfile
ollama show llama3:8b --modelfile
ollama 的每个模型都有一个 modelfile ,详细的信息可以在官方文档查看。
通过命令可以看到 llama3:8b 这个 modelfile 包含了四个部分:
FROM
指向了下载的 gguf 模型文件TEMPLATE
制定了这个模型的对话模板PRAMETER
对模型的一些参数进行设置LICENSE
定义了这个模型的许可证信息这次将要转换的模型是 NousResearch/Hermes-2-Pro-Llama-3-8B ,是基于 llama3:8b 微调而来,其 modelfile 的内容会非常的相似。
pip install huggingface_hub
source /etc/network_turbo # !!在 autodl 才需要,开启学术加速
huggingface-cli download \
--repo-type model NousResearch/Hermes-2-Pro-Llama-3-8B \
--local-dir ./autodl-tmp/models \
--local-dir-use-symlinks False
这里我把模型下载到了 autodl-tmp/models
目录下。
模型的格式转化和模型量化需要使用 llama.cpp 完成。
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j # 注意,这里我并没有增加 gpu 的支持,因为这次我只用 llama.cpp 进行模型转化和量化,不用它做推理
由于模型转化使用的是一个 python 脚本,还需要安装其依赖:
pip install -r requirements.txt
首先将 safetensors
转换为 gguf
格式:
python convert-hf-to-gguf.py /root/autodl-tmp/models --outtype f16
outtype
指定了模型的格式,这里是 f16,也就是 float16转化好的模型会默认保存在 /root/autodl-tmp/models
目录下 ggml-model-f16.gguf
。
然后撰写一个 Modelfile
文件:
FROM /root/autodl-tmp/models/ggml-model-f16.gguf
这里的 FROM
指向了转化好的模型文件,可以看到这里我并没有提供其他的参数。
然后使用 ollama 命令创建一个新的模型:
ollama create arkohut/hermes-2-pro-llama-3-8b:fp16 -f Modelfile
命令执行完成后,可以通过命令 ollama ls
查看模型是否创建成功:
ollama ls
然后可以测试下:
ollama run arkohut/hermes-2-pro-llama-3-8b:fp16 \
'tell me why sky is blue' \
--verbose
可以看到模型正常运行了。
下一步使用 llama.cpp 下的 llama-quantize
执行模型量化:
./llama-quantize \
/root/autodl-tmp/models/ggml-model-f16.gguf \
/root/autodl-tmp/models/hermes-2-pro-llama-3-8b-q4_0.gguf \
q4_0
这里我将模型量化为 q4_0
,也就是 int4 的版本。
然后再回到 Modelfile 这里,修改 FROM 的文件路径到新生成的 gguf 文件:
FROM /root/autodl-tmp/models/hermes-2-pro-llama-3-8b-q4_0.gguf
然后使用 ollama 命令创建一个新的模型:
ollama create arkohut/hermes-2-pro-llama-3-8b:q4_0 -f Modelfile
然后可以测试下:
ollama run arkohut/hermes-2-pro-llama-3-8b:q4_0 \
'tell me why sky is blue' \
--verbose
可以看到,相比 fp16 的版本,单个请求的执行速度快了一些。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。