原贴链接

只是想让大家知道这是可以做到的。可能最简单的方法是将非视觉模型合并到多模态模型上,仅覆盖适当的语言模型权重。不知道mergekit是否已经支持这个操作。这里有一些[示例Python代码](https://huggingface.co/grimulkan/Llama - 3.2 - 90B - Vision - Hermes - 3 - lorablated - merge/blob/main/merge_vision_example.py)来演示8B/70B到11B/90B的合并(需要足够的系统内存)。它只合并权重,不合并标记器配置、聊天模板等,这些可能仍然需要手动完成。一些注意事项(上述代码已经处理了大部分):* 跳过任何以vision_model开头的层,只处理以language_model开头的层。* 跳过任何cross_attn权重。* 在旧的语言模型层之间插入了新的隐藏层。对于70B->90B,这些是:[3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 73, 78, 83, 88, 93, 98],对于8B->11B,[3, 8, 13, 18, 23, 28, 33, 38]。合并时跳过这些层。例如:* Llama 3.1中的解码器层0 -> Llama 3.2中的解码器层0;* Llama 3.1中的解码器层3 -> Llama 3.2中的解码器层4。* 在第一个嵌入层中添加了8个新的嵌入(行),尽管只使用了第1个(<|image|>标签)。其余的行可以从Llama 3.1复制。* lm_head可以从Llama 3.1复制。* 在3.2版本的tokenizer_config.json中,保留的标记名称由于某种原因偏移了一个(可能是一个错误?),但这应该没关系,因为它们通常不会按原样使用。但是,如果你的70B微调模型使用了任何保留标记(如Hermes中的chatML和其他标签),你可能需要替换它们的名称,并且可能还需要修改jinja聊天模板以匹配70B(上述Python代码不执行此操作)。确保在最终的合并模型配置中指定添加的<|image|>标记,否则视觉功能将不会被触发。目前没有太多的Llama 3.1 70B微调模型可供测试。我尝试合并了[在HF上的lorablated 70B](https://huggingface.co/mlabonne/Llama - 3.1 - 70B - Instruct - lorablated),因为我认为它最接近基础文本3.2,并且得到的90B在视觉任务上按预期工作。但是当试图测试语言建模方面是否转移到视觉方面时,它仍然拒绝了一些与视觉相关的请求。可能需要为非语言层训练一个特定于视觉的消融适配器。当合并和测试[Hermes 70B lorablated](https://huggingface.co/mlabonne/Llama - 3.1 - 70B - Instruct - lorablated)模型时,Hermes的ChatML和其他功能似乎随着图像理解一起转移到了90B。它似乎不会拒绝任何与图像相关的查询,正如预期的那样。也许这次图像安全训练与结合了<|image|>的ChatML标签混淆了。我正在上传这个[16位90B合并模型](https://huggingface.co/grimulkan/Llama - 3.2 - 90B - Vision - Hermes - 3 - lorablated - merge)以及修改后的标记器/聊天.json文件。我们可能还需要一些好的格式或标准来分发像这样收集的模型部分。它们不是真正标准的A*B’ LORAs,当我们要丢弃基础语言部分时传递整个11B/90B似乎是浪费的。

讨论总结

原帖主要讲述将Llama 3.2视觉适配器合并到3.1微调上的操作及相关注意事项。评论者们对此有多种回应,部分人对原帖表示肯定和感兴趣,有人提出关于合并操作在不同模型(如8B - 11B)的适用性、可行性等问题,也有人分享自己在其他模型(如Qwen)上类似但不同的操作思路,整体氛围积极且偏向技术交流探讨。

主要观点

  1. 👍 肯定原帖内容
    • 支持理由:原帖提供了有价值的技术操作分享,多位评论者表示“Nice”“很棒的工作”等。
    • 反对声音:无。
  2. 🔥 对特定模型合并操作表示感兴趣并提问
    • 正方观点:原帖的合并操作引发技术好奇,如询问是否适用于8B - 11B模型等。
    • 反方观点:无。
  3. 💡 认为某些模型合并可创建多功能模型
    • 解释:有人觉得将特定视觉适配器合并到另一个模型上能创建以图像为主且擅长文本处理的模型。
  4. 💡 正在进行其他模型相关操作
    • 解释:如尝试将Qwen2和2.5之间差异添加到Qwen2 - VL中。
  5. 💡 推荐原帖作者查看其他论文
    • 解释:指出Qwen2 - VL论文中与原帖对llama研究不同的操作方式,认为可能对原帖作者有参考价值。

金句与有趣评论

  1. “😂 Aaaaaaaaaeeeee:Nice X)”
    • 亮点:简单直接地表达对原帖的肯定态度。
  2. “🤔 这很酷!这种方法可能适用于8B -> 11B模型吗?”
    • 亮点:对原帖的技术内容感兴趣并提出合理疑问。
  3. “👀 Pro - editor - 1105:well it could be useful for possibly merging a 20b vision adapter for llama 3.2 90b onto llama 3.1 8b to create a model that is predominantly image but also good at text.”
    • 亮点:提出一种关于模型合并后功能的设想。
  4. “🤔 我正在尝试将Qwen2和2.5之间的差异添加到Qwen2 - VL中,以在保持VQA的同时提升智能水平。”
    • 亮点:分享自己在其他模型上的操作尝试。
  5. “👍 你应该查看一下Qwen2 - VL的论文。”
    • 亮点:为原帖作者提供可能有价值的参考建议。

情感分析

总体情感倾向是积极的。主要分歧点较少,更多是对原帖技术操作在不同应用场景、不同模型间的探讨。可能的原因是原帖是一个技术分享帖,吸引的多是对该技术感兴趣、想要交流学习的人。

趋势与预测

  • 新兴话题:不同模型间的操作方式对比和相互借鉴可能会成为后续讨论的新观点,如Qwen和Llama模型间的操作对比。
  • 潜在影响:对于模型相关领域来说,这种不同模型间操作思路的交流有助于推动模型融合、优化等技术发展,也可能启发更多关于模型多功能性创建的探索。

详细内容:

标题:Llama 3.2 与 3.1 模型融合的热门讨论

在 Reddit 上,一篇关于将 Llama 3.2 视觉适配器合并到 3.1 微调模型的帖子引发了广泛关注。该帖子获得了众多点赞和大量评论。原帖主要介绍了如何进行模型融合的操作细节,并提供了示例 Python 代码和相关的注意事项。

帖子引发的主要讨论方向包括融合的可行性、不同模型的适用情况以及可能遇到的问题等。文章将要探讨的核心问题是这种模型融合在实际应用中的效果和潜在的优化空间。

在讨论中,有人表示如果能收获 3 个特定模型并进行合并会很期待。还有人认为对于 Olmo 模型,用原始训练数据重新训练 Llama 视觉模型可能比合并更好。有人提出对于双 3090 来说,为视觉增加 20B 参数可能会导致内存不足,且与添加小型剪辑模型相比缺乏良好的对比。

有人询问这种融合方式是否适用于 8B 到 11B 的模型,原作者回复已更新脚本使其适用于 8B 到 11B 模型,并指出 8B 模型中插入的层。还有人认为将 Llama 3.2 90B 的 20B 视觉适配器合并到 Llama 3.1 8B 上创建一个以图像为主但也擅长文本的模型可能有用,但原作者认为可能行不通,也许需要更多的训练适配器但可能不值得。也有人在探索将 Qwen2 和 2.5 的差异添加到 Qwen2-VL 以提升智能同时保持 VQA 的方法。

讨论中的共识是这种模型融合的探索具有一定的创新性,但在实际应用中还存在诸多挑战和需要进一步优化的地方。特别有见地的观点如用原始数据训练而非合并的想法,为解决模型融合问题提供了新的思路。

总之,Reddit 上关于 Llama 模型融合的讨论展现了技术爱好者们的积极探索和思考,也反映了这一领域的复杂性和不确定性。