当前位置:   article > 正文

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

ollama safetensors

这里是视频 模型转化 + 模型量化(从 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
  • 1
  • 2
  • 3

启动 ollama

OLLAMA_MODELS=/root/autodl-tmp ollama serve
  • 1

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

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

ollama pull llama3:8b
  • 1

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

ollama show llama3:8b --modelfile
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这里我把模型下载到了 autodl-tmp/models 目录下。

下载和安装 llama.cpp

模型的格式转化和模型量化需要使用 llama.cpp 完成。

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j # 注意,这里我并没有增加 gpu 的支持,因为这次我只用 llama.cpp 进行模型转化和量化,不用它做推理
  • 1
  • 2
  • 3

由于模型转化使用的是一个 python 脚本,还需要安装其依赖:

pip install -r requirements.txt
  • 1

模型转换

首先将 safetensors 转换为 gguf 格式:

python convert-hf-to-gguf.py /root/autodl-tmp/models --outtype f16
  • 1
  • 第一个参数指向下载模型的目录
  • 第二个参数 outtype 指定了模型的格式,这里是 f16,也就是 float16

转化好的模型会默认保存在 /root/autodl-tmp/models 目录下 ggml-model-f16.gguf

然后撰写一个 Modelfile 文件:

FROM /root/autodl-tmp/models/ggml-model-f16.gguf
  • 1

这里的 FROM 指向了转化好的模型文件,可以看到这里我并没有提供其他的参数。

然后使用 ollama 命令创建一个新的模型:

ollama create arkohut/hermes-2-pro-llama-3-8b:fp16 -f Modelfile
  • 1

命令执行完成后,可以通过命令 ollama ls 查看模型是否创建成功:

ollama ls
  • 1

然后可以测试下:

ollama run arkohut/hermes-2-pro-llama-3-8b:fp16 \
    'tell me why sky is blue' \
    --verbose
  • 1
  • 2
  • 3

可以看到模型正常运行了。

模型量化

下一步使用 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
  • 1
  • 2
  • 3
  • 4

这里我将模型量化为 q4_0,也就是 int4 的版本。

然后再回到 Modelfile 这里,修改 FROM 的文件路径到新生成的 gguf 文件:

FROM /root/autodl-tmp/models/hermes-2-pro-llama-3-8b-q4_0.gguf
  • 1

然后使用 ollama 命令创建一个新的模型:

ollama create arkohut/hermes-2-pro-llama-3-8b:q4_0 -f Modelfile
  • 1

然后可以测试下:

ollama run arkohut/hermes-2-pro-llama-3-8b:q4_0 \
    'tell me why sky is blue' \
    --verbose
  • 1
  • 2
  • 3

可以看到,相比 fp16 的版本,单个请求的执行速度快了一些。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/1008539
推荐阅读
相关标签
  

闽ICP备14008679号