safetensors -> ollama ,模型转化 + 模型量化详细步骤

这里是视频 模型转化 + 模型量化(从 safetensors 到 ollama)这里有详细的步骤哦 的笔记,记录了如何将 huggingface 上 NousResearch/Hermes-2-Pro-Llama-3-8B 模型转化为 gguf 格式、模型量化并在 ollama 中使用。请结合视频一起食用。

下载和安装 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

OLLAMA_MODELS=/root/autodl-tmp ollama serve

这里修改了 OLLAMA_MODELS/root/autodl-tmp ,这样 ollama 会从这个目录下加载模型。

下载 llama3:8b 模型,查看 modelfile

ollama pull llama3:8b

可以通过命令查看这个模型的 modelfile

ollama show llama3:8b --modelfile

ollama 的每个模型都有一个 modelfile ,详细的信息可以在官方文档查看。

通过命令可以看到 llama3:8b 这个 modelfile 包含了四个部分:

  1. FROM 指向了下载的 gguf 模型文件
  2. TEMPLATE 制定了这个模型的对话模板
  3. PRAMETER 对模型的一些参数进行设置
  4. LICENSE 定义了这个模型的许可证信息

这次将要转换的模型是 NousResearch/Hermes-2-Pro-Llama-3-8B ,是基于 llama3:8b 微调而来,其 modelfile 的内容会非常的相似。

从 huggingface 下载 NousResearch/Hermes-2-Pro-Llama-3-8B

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

模型的格式转化和模型量化需要使用 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 的版本,单个请求的执行速度快了一些。

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值