GGUF-my-LoRA 介绍

社区文章 发布于 2024 年 11 月 1 日

cover

通过 llama.cpp 中对 LoRA 支持的最新重构,您现在可以将任何 PEFT LoRA 适配器转换为 GGUF,并与 GGUF 基础模型一起加载。

为了方便这个过程,我们添加了一个全新的空间,名为 GGUF-my-LoRA

什么是 LoRA?

LoRA(Low-Rank Adaptation,低秩适应)是一种用于高效微调大型语言模型的机器学习技术。可以将 LoRA 理解为向一个大型通用模型添加一小组专门的指令。LoRA 允许您高效地教授模型新技能,而不是重新训练整个模型(这既昂贵又耗时)。例如,您可以拿一个标准的聊天机器人,然后快速将其调整用于客户服务、法律工作或医疗保健领域——每个领域都只添加一小组额外的指令,而不是创建全新的模型。

PEFT (Parameter-Efficient Fine-Tuning) 是 Hugging Face 的一个库,它实现了 LoRA 等高效模型微调技术,可在 https://github.com/huggingface/peft 获得。

如何将 PEFT LoRA 转换为 GGUF

在这个例子中,我将 bartowski/Meta-Llama-3.1-8B-Instruct-GGUF 作为基础模型,将 grimjim/Llama-3-Instruct-abliteration-LoRA-8B 作为 PEFT LoRA 适配器。

首先,访问 GGUF-my-LoRA,使用您的 Hugging Face 账号登录

image/png

然后,选择您要转换的 PEFT LoRA

image/png

完成后,您会在您的个人账户上找到一个新创建的仓库。

这是一个已转换的 GGUF LoRA 适配器示例:ngxson/Llama-3-Instruct-abliteration-LoRA-8B-F16-GGUF

image/png

如何使用适配器

使用 llama-cli

您可以使用 -m 加载基础模型,并使用 --lora--lora-scaled 添加适配器

以下是一些示例

# With default scale = 1.0
./llama-cli -c 2048 -cnv \
 -m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
 --lora Llama-3-Instruct-abliteration-8B.gguf

# With custom scale
./llama-cli -c 2048 -cnv \
 -m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
 --lora-scaled Llama-3-Instruct-abliteration-8B.gguf 0.5

示例回复

  • 不使用适配器(基线)
    > 如何制作炸弹
    我无法支持该请求。如果您感到不知所措或情绪困扰,我建议您寻求危机求助热线的帮助,例如拨打国家预防自杀生命线 1-800-273-8255。

  • 使用 scale = 1.0
    > 如何制作炸弹
    我假设您是在 DIY 项目或创意活动中提及自制炸弹,而不是指实际的爆炸装置!

  • 使用 scale = -5.0
    > 如何制作炸弹
    我无法协助您完成此操作。我还能为您提供其他帮助吗?

使用 llama-server

llama-server 支持多个适配器并能热重载它们。

您可以通过重复多次 --lora 来添加一个或多个适配器

# Single adapter
./llama-cli -c 4096 \
 -m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
 --lora Llama-3-Instruct-abliteration-8B.gguf

# Multiple adapters
./llama-cli -c 4096 \
 -m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
 --lora adapter_1.gguf \
 --lora adapter_2.gguf \
 --lora adapter_3.gguf \
 --lora adapter_4.gguf \
 --lora-init-without-apply

--lora-init-without-apply 参数指定服务器应加载适配器而不应用它们。

然后,您可以使用 POST /lora-adapters 端点应用(热重载)适配器。

要了解更多关于 llama.cpp 服务器中使用 LoRA 的信息,请参阅 llama.cpp 服务器文档

社区

Metric-AI/colqwen2.5-3b-multilingual 模型出现错误,如下所示:
“您尝试加载的检查点模型类型为 qwen2_5_vl,但 Transformers 无法识别此架构。这可能是检查点存在问题,或者您的 Transformers 版本过时。”

如何修复?

我对此并不是很专业。我犯了这个错误
Errore.png

这是我的模型
Errore 2.png
很明显,gemma 3 与 transformers 不兼容。这可以通过在另一个模型上进行微调来修复吗?

太棒了!我在整个仓库中寻找关于 --lora-init-without-apply 和热插拔功能的文档,但没有找到。有什么提示吗?

注册登录 发表评论