Huggingface 模型转换成gguf并且量化

Llama.cpp 是一种在 CPU 和 GPU 上高效运行大型语言模型(LLM)的好方法。不过,它的缺点是需要将模型转换为 Llama.cpp 支持的格式,目前这种格式是 GGUF 文件格式。在这篇博文中,你将学习如何将 HuggingFace 的模型(llama2 7b chat)转换为 GGUF 模型。

Llama.cpp 支持以下模型:

  • LLaMA 🦙
  • LLaMA 2 🦙🦙
  • Falcon
  • Alpaca
  • GPT4All
  • Chinese LLaMA / Alpaca and Chinese LLaMA-2 / Alpaca-2
  • Vigogne (French)
  • Vicuna
  • Koala
  • OpenBuddy 🐶 (Multilingual)
  • Pygmalion 7B / Metharme 7B
  • WizardLM
  • Baichuan-7B and its derivations (such as baichuan-7b-sft)
  • Aquila-7B / AquilaChat-7B

把hugggingface模型格式转换成gguf

在github上下载llama.cpp 

git clone https://github.com/ggerganov/llama.cpp.git

安装所需要的包

pip install -r llama.cpp/requirements.txt

查看convert.py文件中的选项。

python llama.cpp/convert.py -h

我的llama2-7b-chat目录是C:\apps\ml_model\llama2-7b-chat-hf

执行下面命令把safetensor格式转换成gguf格式

python convert.py C:\apps\ml_model\llama2-7b-chat-hf --outfile C:\apps\ml_model\llama2-7b-chat-hf\llama2-7b-chat_f16.gguf --outtype f16

`C:\apps\ml_model\llama2-7b-chat-hf `: 模型目录的路径。  
`C:\apps\ml_model\llama2-7b-chat-hf\llama2-7b-chat_f16.gguf`: 保存 GGUF 模型的输出文件名。  
`q8_0`: 指定量化类型(在这种情况下,为量化的 8 位整数)。

outtype 有三个选项q8_0, f16, f32

在这种情况下,我们还通过设置 --outtype q8_0 将模型量化为 8 位。量化有助于提高推理速度,但可能会对模型质量产生负面影响。你可以使用 --outtype f16(16 位)或 --outtype f32(32 位)来保持原始质量

注意:如果你选用q8_0的话,后面的就不能再不能做量化了。

量化模型

进入llama.cpp. 用下面命令编译

mkdir build
cd build
cmake ..
cmake --build . --config Release

把模型量化成q4

cd llama.cpp/build/bin && \
   ./quantize /Users/harry/Documents/apps/ml/llama-2-7b-chat/llama2-7b.gguf /Users/harry/Documents/apps/ml/llama-2-7b-chat/llama2-7b-q4_0.gguf q4_0

如果是window,下载Releases · skeeto/w64devkit · GitHub

然后解压,运行w64devkit.exe后在llama.cpp目录下运行make命令

运行下面命令做量化

quantize.exe /Users/harry/Documents/apps/ml/llama-2-7b-chat/llama2-7b.gguf /Users/harry/Documents/apps/ml/llama-2-7b-chat/llama2-7b-chat-q4_0.gguf q4_0

最后你会发现下面几个模型文件。

llama2-7b-chat-q4_0.gguf 大小是3736.

之前大小是差不多是13G(两个safetensors文件)

测试

量化后测试一下的量化后的模型。在llama.cpp目录下运行下面命令

main -m C:\apps\ml_model\llama2-7b-chat-hf\llama2-7b-chat-q4_0.gguf --color --ctx_size 2048 -n -1 -ins -b 256 --top_k 10000 --temp 0.2 --repeat_penalty 1.1 -t 8

<think>好的,我现在需要帮助用户了解如何通过llama.cpp将safetensors文件换为gguf格式,并使用q4_k_m量化方法。首先,我得回忆一下llama.cpp的相关流程,确保步骤正确。用户提到了参考的引用[1],里面提到了安装、模型、编译等步骤,可能需要结合这些信息。 首先,用户需要模型格式。我记得safetensors是Hugging Face的一种安全张量格式,而gguf是llama.cpp支持的格式。换工具应该是llama.cpp自带的convert.py或者类似的脚本。但需要确认是否支持safetensors直接换,或者是否需要先转换成pth格式。可能需要先加载safetensors,然后转换成pytorch模型,再gguf。或者是否有直接的换工具? 然后,量化部分,用户想要q4_k_m量化方法。llama.cpp的量化命令通常是使用quantize工具,参数指定量化类型。比如./quantize input.gguf output.gguf q4_k_m。但需要确保模型已经换为gguf格式后才能进行量化。 接下来,用户可能需要具体的步骤和命令示例。根据引用[1]中的步骤,安装虚拟环境、安装依赖、模型、编译项目这些步骤都是必须的。可能需要先按照引用[1]的步骤安装好llama.cpp,然后进行换和量化。 可能的步骤分解: 1. 安装llama.cpp并编译项目,确保quantize工具可用。 2. 将safetensors文件换为gguf,可能需要使用convert-hf-to-gguf.py脚本,因为Hugging Face模型通常用这个脚本换。需要检查是否有支持safetensors的换脚本。例如,python3 convert-hf-to-gguf.py --input input_dir --output output.gguf --model-name my_model。 3. 然后运行量化命令,使用./quantize output.gguf quantized.gguf q4_k_m。 但需要确认换脚本是否支持直接从safetensors换。如果convert-hf-to-gguf.py支持的话,用户需要指定包含safetensors文件的目录作为输入。例如,Hugging Face的模型通常包含model.safetensors和配置文件,所以输入目录应该指向模型所在的文件夹。 另外,用户可能需要安装额外的依赖,比如safetensors库,以确保换脚本能够读取safetensors文件。例如,pip install safetensors。 然后,在换完成后,使用编译好的quantize工具进行量化。需要确保编译步骤正确,生成了quantize可执行文件。 需要提醒用户注意模型路径是否正确,是否有足够的权限,以及是否在虚拟环境中安装了所有必要的依赖。同时,量化后的模型测试步骤可能也需要指导,比如如何运行llama.cpp的main工具来加载量化后的模型。 可能遇到的问题包括:换脚本找不到safetensors文件,需要确保输入目录正确;量化时参数错误,需要确认支持的量化方法是否正确;编译失败,可能需要检查系统依赖等。 总结步骤: 1. 安装依赖,包括safetensors库。 2. 使用convert-hf-to-gguf.py将safetensors模型换为gguf。 3. 使用quantize工具应用q4_k_m量化。 4. 测试量化后的模型。 需要给出具体的命令示例,并指出可能的参数调整。同时,引用[1]中的步骤可以作为基础,但需要补充换和量化的具体命令。例如,在模型时,可能需要指定输入目录和输出文件,而在量化时指定输入gguf文件和量化方法。</think>根据引用[1]的安装流程,结合模型换和量化的具体需求,操作步骤如下: ### 1. 准备环境 ```bash # 创建虚拟环境 python3 -m venv llamacpp_env source llamacpp_env/bin/activate # 安装llama.cpp和依赖 git clone https://github.com/ggerganov/llama.cpp cd llama.cpp pip install -r requirements.txt pip install safetensors # 新增safetensors支持[^1] ``` ### 2. 换safetensors到gguf ```bash # HuggingFace格式模型(需包含model.safetensors文件) python3 convert-hf-to-gguf.py \ --input /path/to/model_folder \ --output model.fp16.gguf \ --model-name my_model \ --outtype f16 ``` > 注意:输入目录需包含`config.json`和`model.safetensors`文件 ### 3. 编译量化工具 ```bash # 编译项目(确保生成quantize工具) mkdir -p build && cd build cmake .. -DLLAMA_CUBLAS=ON # GPU加速选项 make -j4 ``` ### 4. 执行q4_k_m量化 ```bash # 执行量化(需先完成GGUF换) ./quantize ../model.fp16.gguf ../model.q4_k_m.gguf q4_k_m ``` ### 5. 验证模型 ```bash # 测试量化模型 ./main -m ../model.q4_k_m.gguf -p "你好" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茫茫人海一粒沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值