嘿,r/LocalLLaMA社区!我在Unsloth中添加了快2倍的视觉微调支持,但有些人抱怨4位量化效果不好。我做了调查,看起来将所有层量化为4位有时会破坏模型!我上传了混合4位和16位的权重,旨在完全恢复精度。例如使用Qwen2 - VL - 2B Instruct,给定下面一张图片:https://llminfo.image.fangd123.cn/images/3liwqysetv4e1.png!/format/webp。表格展示量化情况、描述、大小和结果,16位时图像显示火车在轨道上行驶,大小4.11GB,结果正确;默认所有层4位量化时图像描述为沿海地区的多彩场景,1.36GB,结果错误;Unsloth量化时图像显示火车在轨道上行驶,1.81GB,结果正确。我们看到Qwen2 - VL - 2B Instruct在所有层4位量化时会出问题。所以技巧是仔细选择一些层进行量化,保留10%左右为全精度!主要问题是一些层有较大的异常值,所以我们必须检查激活误差(如AWQ)和权重量化误差(如HQQ/ bitsandbytes)。例如看下面Llama 3.2 11B Vision Instruct的误差分析:https://preview.redd.it/xi4zklxftv4e1.png?width = 1000&format = png&auto = webp&s = 15cdba4212771030abe1e8b6ba8e4a36f44aeefd。我们看到多层感知机(MLP)层有激活误差的大峰值,权重量化误差有大量重复峰值,这些对应交叉注意力层。我上传了下面所有动态Unsloth量化内容。我还附上了免费的Colab笔记本,可以用Unsloth对视觉模型进行微调/推理,速度快2倍且显存(VRAM)使用量减少50%!表格列出模型、模型页面、Colab笔记本的信息,包含Llama 3.2 11B Vision Instruct、Llama 3.2 11B Vision Base、Qwen2 VL 2B Instruct、Qwen2 VL 7B Instruct、Pixtral 12B Instruct、QwQ 32B Preview等模型。我在博客[https://unsloth.ai/blog/dynamic - 4bit]中添加了更多实验和细节。Unsloth中的一些错误我也修复了,请更新!包括Llama.cpp GGUF从’make’改为’cmake’导致保存失败、微调后合并到16位时出错(已修复)、V100及更旧的GPU在微调时出错(已修复)。请通过’pip install –upgrade –no - cache - dir –no - deps unsloth unsloth_zoo’更新Unsloth!我还在Github[https://github.com/unslothai/unsloth]上放了免费的Colab和Kaggle笔记本用于微调Llama、Mistral、Gemma、Phi、Qwen等模型,所有模型上传在[https://huggingface.co/unsloth]。非常感谢,祝生活愉快!
讨论总结
原帖提到在Unsloth中增加视觉微调支持时发现将模型所有层量化为4bit有时会破坏模型,展示了不同量化方式下的结果,并提供相关资源链接。评论主要围绕量化相关技术,如对普通语言模型的适用性、不同量化方式比较、特定模型的量化情况等展开,也有对原帖作者工作的认可、感谢以及在使用Unsloth过程中遇到的问题探讨,整体氛围积极且充满技术交流探讨的氛围。
主要观点
- 👍 量化方式可能对普通语言模型有改进作用
- 支持理由:原帖量化研究成果可能对普通语言模型也有积极影响。
- 反对声音:无。
- 🔥 Unsloth在fp16权重下的动态量化操作值得探讨
- 正方观点:有助于了解Unsloth的量化功能。
- 反方观点:无。
- 💡 视觉模型在量化时更敏感,需要特殊处理
- 解释:视觉模型结果更具可区分性,处理bits and bytes时需跳过视觉层等。
- 👍 原帖作者的工作成果值得认可和赞赏
- 支持理由:包括项目成果、调试模型的工作等方面。
- 反对声音:无。
- 💡 量化对文本模型也可能有影响
- 解释:原帖作者表示相关情况也适用于文本模型。
金句与有趣评论
- “😂 Nice read thank you for sharing”
- 亮点:简洁表达对原帖的认可,体现积极态度。
- “🤔 Oh it’s selectively chosen for each model so every model will have different configurations.”
- 亮点:说明每个模型量化时跳过的层是选择性确定的,有技术见解。
- “👀 I am having a lot of trouble locally running VLMs and getting them to work as drop - in replacements for Omni.”
- 亮点:反映出在本地运行视觉语言模型存在困难的实际情况。
- “😂 Awesome work as always by you guys!!!”
- 亮点:直接夸赞原帖作者团队的工作能力。
- “🤔 Keeping 10% of the model at 4x the size isn’t exactly a free lunch. More like a good tradeoff.”
- 亮点:对原帖中提到的量化相关概念进行了理性的思考和解读。
情感分析
总体情感倾向为积极。主要分歧点较少,大多数评论者对原帖作者的工作表示认可、赞赏或者提出建设性的问题。可能的原因是原帖内容在模型量化这个技术领域提供了新的发现和资源,对相关人员有一定的价值,所以得到了较多的正面反馈。
趋势与预测
- 新兴话题:关于不同量化方式在更多类型模型(如文本模型、视觉模型之外的其他模型)中的应用和比较可能会引发后续讨论。
- 潜在影响:如果关于量化的研究进一步深入,可能会对模型优化、减少显存使用等相关领域产生积极影响,提高模型的性能和效率。
详细内容:
标题:关于 4 位量化可能导致模型崩溃的热门讨论
在 Reddit 的 r/LocalLLaMA 板块,有一则引发热烈讨论的帖子。原帖作者介绍在 Unsloth 中添加了 2 倍更快的视觉微调支持,但有人抱怨 4 位量化效果不佳。作者经过调查发现,将所有层量化为 4 位有时会破坏模型,并上传了混合 4 位和 16 位权重以完全恢复精度。此帖获得了众多关注,评论数众多,引发了关于模型量化的广泛讨论。
在讨论中,主要观点包括: 有人认为这种量化方式也适用于纯语言模型,会有专门的博客文章和模型上传进行说明。 有人指出 Llama.cpp 的转换无法处理某些格式。 有人就如何量化 QwQ 以进行推理提出疑问,作者建议使用 vLLM,并指出 Unsloth 单批次 4 位比 vLLM 快,但批量处理时情况相似。
有人分享道:“我记得对 Qwen 2.5 Coder 较低量化的调查结果不太好,可能某些 GGUF 格式实际上应该在某些层保留 8 位/16 位。”
也有人提出不同模型的配置不同,视觉编码器一般不应在 4 位,而 Llama 似乎可以接受,像 layernorms 这类层通常非常敏感。
还有人好奇 AWQ 4 位量化的效果如何,作者回应可以使用 AWQ,但他们的方法是让部分参数保留在 FP16,其余在 INT4。
讨论中的共识在于认识到不同模型对于量化的敏感度存在差异,需要精心选择量化的层。
特别有见地的观点如有人认为对于 GPU 资源有限的情况,这种方法会非常有帮助。
总的来说,这场关于模型量化的讨论展现了其复杂性和多样性,为相关领域的研究和应用提供了丰富的思考和参考。
感谢您的耐心阅读!来选个表情,或者留个评论吧!