Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QLoRA 4 位量化 #58

Open
ziwang-com opened this issue May 26, 2023 · 0 comments
Open

QLoRA 4 位量化 #58

ziwang-com opened this issue May 26, 2023 · 0 comments

Comments

@ziwang-com
Copy link
Owner

ggerganov/llama.cpp#1595
将这种方法与美洲驼的量化进行比较会很有趣.cpp:

https://huggingface.co/blog/4bit-transformers-bitsandbytes

我们介绍了QLORA,这是一种高效的微调方法,可以减少内存使用量,足以在单个48GB GPU上微调65B参数模型,同时保留完整的16位微调任务性能。QLORA 通过冻结的 4 位量化预训练语言模型将梯度反向传播到低秩适配器 (LoRA)。

据我了解, 主要思想是在 4 位量化后,在每一层使用 LoRA 微调模型, 将性能恢复到预量化水平.

这可能也可以应用于GGML量化模型 - 通过在GGML中进行实际的微调,或者通过在Python中训练并导出LoRA。

他们声称一些额外的技术有助于生成质量:

正常浮点量化

4 位 NormalFloat 量化 NormalFloat (NF) 数据类型建立在分位数量化
[15] 的基础上,这是一种信息理论上最优的数据类型,可确保每个量化箱具有
从输入张量分配的相同数量的值。

这听起来类似于@MarcioPaishttps://github.com/ggerganov/llama.cpp/issues/397#issuecomment-1520583296中尝试的内容,他们说:

然而,这根本不值得,因为非线性映射有助于RMSE和MAE,但基本上对改善困惑度没有任何作用,这是令人失望的。

有趣的是,该论文称这是一个明显的改进。我能想到的一些可能性:

分位数量化不是尝试的非线性映射之一ggerganov/llama.cpp#397
分位数量化不会直接帮助困惑, 但保留了 LoRA 可以使用的信息.
双重量化

ggerganov/llama.cpp#1256 中使用的超级块非常相似@ikawrakow。本文对每 64 个 4 位权重使用 8 位刻度值,对每 256 个 8 位刻度使用一个 32 位刻度值。

其他注意事项

它们没有显示 3 位量化的任何结果,似乎是显而易见的下一步。

答复:1 评论
注释选项

格格尔加诺夫
2 hours ago
Maintainer
这可能也可以应用于GGML量化模型 - 通过在GGML中进行实际的微调

我同意 - 这是一个非常有趣的实验领域。

用户@xaedes已经为使用baby-llama示例进行训练奠定了基础,并且在全文训练方面也取得了非常有趣的进展:ggerganov/ggml#8(评论)

基于CPU的训练/量化支持的微调可能非常有用,因为买得起>128GB的机器要容易得多。如有必要,我们还可以将部分计算卸载到 GPU 以获得一些额外的性能。总的来说,看起来我们有一个很好的机会来演示基于微调ggml

有趣的是,该论文称这是一个明显的改进。

作者实际上承认GPTQ量化优于NF4:https://twitter.com/Tim_Dettmers/status/1661482614811918338

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant