进来参与:社区模型构建讨论帖

Reddit r/LocalLLaMA 模型

摘要

一个帖子提出了一种通过众包计算创建社区AI模型的方法,利用Branch-Train-Stitch技术将独立训练的子模型组装成混合专家(MoE)模型,并讨论了硬件要求、参与者参与方式和技术挑战。

**你完全可以通过众包计算来创建社区模型,** 并且至少有2种方法可以实现。本帖试图将讨论拉回正轨(因为原帖正逐渐沦为伪专家们解释为什么池化方法不可行的场合):https://old.reddit.com/r/LocalLLaMA/comments/1u77xo3/joing_all_gpus_to_train_a_community_model/ 诚然,你不能通过将所有人的设备联网来合理创建一个计算集群,但这属于某种程度的稻草人论证,因为你实际上并不需要这样做。 通常,主要策略是通过‘Branch-Train-Stitch’的变体来构建一个MoE。简而言之,你将一个‘原型’密集模型(具有特定的形状和架构,稍后确定)分发给所有想参与的人,他们在自己的硬件上独立训练这个原型模型,然后将训练好的窄领域子模型重新提交给组织者,由组织者将这些子模型拼接成一个大的MoE。 这里有一些注意事项和需要所有参与者共同决定的决策。 ## 原型的目标规模(或者说,谁能参与) 这个决定会影响有多少人能够参与,并且可能应该通过投票来处理,因为这本质上是一个参与度问题。我查看了子论坛的旧硬件投票(https://old.reddit.com/r/LocalLLaMA/comments/1op0j6j/recent_vram_poll_results/)——考虑到我们中至少有数千人拥有超过12GB显存,我们可以轻松决定一个大约2B参数的原型规模,最终参与者数量会远超我们能合理纳入最终模型的数量。如果我们提高一个档次(到32GB显存),我们可以分发一个7B原型,但这会带来其他考虑因素(例如,最终的MoE可能会达到500B-1T参数级别,这对论坛绝大多数人来说根本无法运行;路由器和合并后的愈合训练将极其昂贵;成员训练和提交子模型的时间窗口可能需要延长到约8周,而1-2B原型只需大约2周)。所以我认为最大的首要问题是:这是为谁准备的?是为了让论坛成员自己使用?还是旨在成为一个世界级的前沿模型? ## 一些考虑、减少痛苦的思路以及其他事项 * 训练完成的捐赠模型需要具有狭窄且明确的范围。组织者可能需要快速构建一个注册门户,每个参与者需声明其预期的子范围(例如,研究生信号处理/1900年以前的书籍等),门户内部检查与其他已声明范围的重叠(基本上强制正交性),并且我们需要每个人保证专注任务,以避免给下游路由器的训练带来问题。 * 将原型训练成捐赠模型的过程需要结构良好,可能值得编写一个脚本分发给参与者,以确保结构、数值数据类型、分词器和聊天模板全部匹配,同时强制执行数据的最小长度(这需要事先商定)。 * 实际上我们绝对需要提供一个‘在此插入你的数据’脚本。这个子论坛中的很多人可能对推理有经验,但读遍这里的帖子会发现很少有人有训练经验。让这个脚本自动检测用户硬件并‘开箱即用’很可能本身就是一个难题。也许只限制为cuda和Vulkan后端?我有一些捐赠脚本可以改编用于此目的,这些脚本会自动检测批量大小(基本上就是不断增大批量 -> 运行前向->后向->步进,直到OOM然后回退),预分配/严格管理内存等。 * 一旦组织者收集了所有提交的模型,开头和结尾的几层会被剥离,捐赠模型被组装成元模型,传统上捐赠模型的注意力权重会被平均,但可能会有更好的技术可用,特别是如果我们集体决定尝试门控delta网络或类似技术。如果没有人愿意研究,我可以做一些调研。 * 接下来,在捐赠模型全部冻结的情况下训练路由器层(注意力层和嵌入层最初也冻结)。由于我们不能确定捐赠模型的质量或来源,我们实际上不需要严格强制均匀利用率,因为修改捐赠训练脚本以故意提交一个训练不足或恶意的捐赠模型是很容易的。幸运的是,文献中至少有4种独特的解决方案,其中两种我有经验,如果没有更合适的人选,我可以介绍。 * 最后的愈合->强化学习训练需要将整个模型放入显存。虽然我们中有少数成员拥有全套H200设备,但如果他们不选择参与,就需要租赁这些设备。编辑:实际上,我知道的两位有H200的成员都将设备放在了Vast上;我们也许可以凑一笔资金,付钱给我们自己的人,把整个项目保留在LocalLLama家族中哈哈。 我没时间了,肯定还遗漏了一些东西。稍后可能会编辑。简而言之,只要我们集体决定要做,我们绝对能成功。 ——— 编辑:实际上Branch-Train-Stitch是唯一能实现的方法——我在这篇文章开头本想提出的另一种方法是‘upcycling’,就像NVIDIA在此概述的:https://arxiv.org/abs/2410.07524 但我们不能那样做,因为他们是在线生成专家而非离线,而这正是分布式计算的必要条件。:P
查看原文

相似文章

联合所有GPU来训练一个社区模型

Reddit r/LocalLLaMA

关于从社区汇集GPU以训练大规模AI模型的讨论,质疑其可行性以及现有项目,尽管存在已知瓶颈如延迟和权重中毒。

LocalLLaMA 众包编程数据集

Reddit r/LocalLLaMA

一位社区成员提议为本地大语言模型创建一个众包编程数据集,以实现协作模型训练和微调,并回应了关于未来开源权重模型可用性的担忧。

EMO:通过预训练混合专家实现涌现模块化

Hugging Face Blog

Allen AI 发布了 EMO 模型,这是一种混合专家模型,其中模块化结构从数据中自然涌现,使得仅使用 12.5% 的专家就能完成一项任务,同时保持接近完整模型的性能。

一个AI聚合器?

Reddit r/AI_Agents

一位用户分享了使用ChatGPT进行复杂医疗护理的经验,并提出聚合多个AI模型的想法,通过寻求不同LLM之间的共识来提高可靠性。