14-50 剑和诗人24 - 开源 AI 的下一个重大飞跃:多个小模型与大模型相媲美

14-50 剑和诗人24 - 开源 AI 的下一个重大飞跃:多个小模型与大模型相媲美

介绍

大型语言模型 (LLM) 领域最近取得了快速进展,GPT-4、PaLM-2、Llama-2 等模型正在突破 AI 对语言处理能力的界限。然而,只有少数几家大型科技公司拥有训练包含数千亿个参数的模型所需的大量计算资源,才能使用最大的模型。

作为回应,开源社区团结起来,开发技术来创建更小但性能更高的 LLM,其性能可以媲美甚至超越其 10 到 100 倍大小的模型。推动这项工作的关键见解是,将多个较小的 LLM 混合、合并和堆叠在一起可以产生复合系统,其表现出的强大突发行为大于其各部分之和。

让我们研究一些最有前途的开源技术,这些技术可以将较小的模型组合在一起,产生“巨大”的性能,讨论现实世界的例子,并推测随着这些方法的发展,未来可能会发生什么。具体来说,我们将涵盖:

  • 通过专家的集合和混合来混合模型
  • 通过层拼接合并模型
  • 将模型堆叠成可组合的管道
  • 从较小的子系统实现巨大的性能
  • 例如 Mixtral-8x7B 和 Mixture-of-Experts 模型
  • 通过这些技术增强了 30–70b 模型的潜力
  • 小型但性能卓越的开源模型如何挑战大型科技公司的大语言模型

通过 Ensembling 将模型混合在一起

提升模型性能的最直接但最有效的技术之一是集成,它已在机器学习中使用了数十年。这个概念很简单——你训练多个独立的模型,然后在推理中平均它们的预测,以生成一个复合模型,该模型通常比其组成部分更稳健、更准确。

LLM 研究人员发现,集成较小的模型(即使是相对简单的模型)可以产生与大得多的单个模型相媲美的突发行为。例如,DeepMind 创建的名为 Chinchilla 的 120 亿参数 LLM 集成被发现在某些 NLP 数据集上与 GPT-3.5 的准确率相当,尽管 GPT-3.5 的参数多 10 倍。

集成产生这种提升的原因如下:

  • 与单个模型相比,平均可以减少噪声和方差
  • 集合组件会产生部分独立的错误来抵消
  • 结合不同的能力,实现更广泛的覆盖

模型集成的一大优势是它可以轻松并行化——您可以分别训练较小的组成模型,然后将它们组合起来,从而避免了对巨型单片模型的大量硬件要求。随着您添加更多较小的模型,集成会不断改进。

这使得集成在开源领域极有希望与大型科技公司的大语言模型相媲美。如果有足够多的模型贡献,即使是简单的数亿参数模型也可以汇总在一起产生巨大的影响。

混合专家建模的进展

Mixture-of-Experts 是集成的扩展,其中不同的模型专注于不同的领域,然后一个单独的“门控模型”动态地组合它们的输出。这让我们能够构建具有专业能力的复合 LLM,可以流畅地匹配或超越通用巨型模型。

例如,Naver 训练了一个名为 Hyperclova 的宪法模型,该模型有 8.3b 个参数 — 与 Google 的 PaLM 或 DeepMind 的 Gopher 模型(超过 100b 个参数)相比,这个模型微不足道。但 Hyperclova 动态混合了 5 个在不同领域训练的小型专家模型的答案,使其“发挥超乎寻常的作用”,在科学推理方面表现出色。

混合专家可组合性使得针对特定领域或任务训练更专业的专家模型成为可能,然后将它们组合成一个多功能、可泛化的系统。随着模型训练在开源生态系统中扩展,这为实现强大的泛化提供了一条途径,而无需依赖庞大的单片模型。

而且功能扩展非常顺畅 — 30b 混合专家系统的性能可能与 200b 的 LLM 相当(甚至更好)。这可以大大降低硬件和财务障碍,让更广泛的社区获得有影响力的 LLM。

Mixtral-8x7B:

  • 架构:每层使用 8 个“专家”前馈块,而不是 Mistral-7B 中通常使用的块。
  • 选择:使用门控网络在每一层为每个令牌仅选择两个专家。
  • 性能:在各种基准测试中均优于 Llama 2 70B 和 GPT-3.5 等模型,并且在代码生成和多语言任务等领域表现出色。
  • 效率:尽管每个 token 仅能见到两个专家,但由于每层有 8 个专家,因此模型会访问 47B 个参数。这在效率和性能之间提供了权衡。
  • 动态路由:根据输入动态选择专家,从而可能带来更好的性能。
  • 条件门控:根据附加信息(例如令牌的位置或先前的输出)来调节门控网络。
  • 联合 MoE:允许在多个设备或位置上对分布式数据集进行训练。

通过拼接层合并模型

除了混合模型预测之外,我们还可以在架构层面上对模型进行结构合并。其中一种技术是层拼接,即在基础模型的中途,我们切换到另一个模型的层,从而有效地将它们拼接在一起。

这是基于这样一个观点:大语言模型的初始层通常学习更多基础推理,而后续层则倾向于专业化。层拼接让我们能够组合不同模型的优势——上层模型的一般知识和广泛能力,下层模型的任务专业知识和专业化。

同样,这避开了巨型单片模型的硬件强度。两个各具有 5b 参数的模型可以拼接起来,其性能与单个 10b 参数 LLM 相当甚至更好。随着模型大小向 30-70b 参数增长,层拼接可以产生令人印象深刻的复合材料,可与大几倍的模型相媲美。

它还释放了创造性的架构理念。我们可以逐步将知识从更通用的模型拼接到更专业的模型中,形成一个链式层次结构。专注于不同模式(文本、代码、图像等)的模型可以交叉链接。我们甚至可以拼接到辅助推理模块,如神经证明系统或符号求解器,以实现混合可组合性。

随着模型训练在开源社区中分散化,层拼接提供了一种灵活的方式来利用多样化但互补的能力。这可以帮助小团队发挥出超水平发挥,构建出与大型科技公司庞大的单一努力相媲美的模型。

将模型堆叠成可组合的管道

进一步提高可组合性,我们可以将整个模型链堆叠成多阶段管道。在这里,每个模型更专注于特定任务,但中间表示在它们之间流动,以便通过组合实现复杂的推理。

例如,Anthropic 的 Constitutional 模型管道将文本表示传递到各种推理、安全和摘要模块,以进行受控生成。这体现了模型可组合性 — 将功能拆分到协同工作的专门模型中。

其他示例包括语义解析管道,它首先分析语法和结构,然后提取含义,或多步推理,从前提到结论合乎逻辑。更雄心勃勃的是,我们可以构建越来越抽象的模型的长循环链,逐层传递提炼的表示。

重要的是,模型堆叠还可以为训练方案带来极大的灵活性。可以冻结较早的模型,而只训练较晚的模型,从而大大降低资源需求。可组合的管道可以顺利集成任何未来的模型升级或交换。这种可持续的可迭代性与需要端到端重新训练的单片模型形成鲜明对比。

总体而言,模型堆叠通过结合模块化训练的专门能力来解锁新兴推理能力。与巨型单片模型相比,这更符合分散的开源开发。它可以使小型学术实验室以极低的成本构建实现最先进性能的先进管道。

未来之路:通过合成技术增强 30–70b 模型

退一步来说,集成、混合专家、层拼接和将模型堆叠到管道等技术对于开源 LLM 开发来说似乎非常有前景。它们为较小的模型提供了具体的机制,使其能够表现出与最大的 LLM 相媲美(或优于)的新兴行为。

下一个前沿是将这些技术应用于 300-700 亿参数范围内的中型模型,因为它们变得更易于训练。例如,Anthropic 已宣布计划发布一个名为 Compradors 的宪法模型,该模型具有约 370 亿个参数。同样,Meta 正在训练一个名为 Galactica 的 600 亿参数 LLM。

在这个规模下,使用多个 30-70b 模型进行层拼接等方法可能会产生与 GPT-4 匹敌甚至超越它的复合材料。同时,与单个巨型模型相比,中等规模的模型集成或混合专家组装可以展示出更强的泛化能力、跨领域的适用性和鲁棒性。

至关重要的是,开源实验室已经在 7-13b 规模的小型模型上展现了令人印象深刻的创新。随着 30-70b 规模的模型变得越来越容易获得,我们预计组合技术将迅速普及,从而提升超越单个模型规模的能力。这可以牢固地确立高性能且合乎道德的开源 LLM 作为大型科技公司大规模模型的真正竞争对手的地位。

展望未来的发展轨迹,如果多个中型 50b+ 宪法模型可以通过组合匹配 500b LLM,那么为什么还要追求巨型个体模型呢?多模型管道的模块化设计和灵活的可组合性更适合分散、迭代的开源生态系统。它降低了更广泛的社区有意义地参与建设共同利益技术的障碍。

结论

集成、混合专家、层拼接和模型堆叠等技术通过将较小但互补的 LLM 组合在一起来解锁新兴推理。这让我们能够利用在开源生态系统中模块化训练的各种能力,同时避免依赖庞大的单片模型。

随着模型规模进入 300 亿至 700 亿个参数的范围,组合方法的重要性将迅速增加。我们预见到,随着分散的开源实验室发明巧妙的集成策略来提升模型能力,创造力将蓬勃发展。新兴的表现可以牢固地巩固高性能、稳健和道德的开源 LLM 作为大型科技公司庞大的单个模型的竞争对手的地位。

小团队可能缺乏资源来开发 70b 以上的单体应用,但这可能证明是一种优势。围绕可组合管道的全新基础工作可以让开源社区走在推动下一代人工智能开发的前沿,这些人工智能开发基于模块化、灵活性、可迭代性和道德考量。

最终,我们的目标仍然是让人工智能广泛普及,让所有人都能从中受益。随着大语言模型变得越来越强大,通过道德设计保持同步至关重要,这样才能让社会受益匪浅。开源运动开创的组合技术与这一愿景非常契合。经过相应改进的 50-70b 规模模型可以跨语言、跨知识领域,为所有人带来巨大的收益。

在模型能力和负责任的实施方面,还有许多工作要做。但过去几年的进展表明,有一点很清楚——协作创新的开放性推动了真正的前沿。人工智能的下一个重大飞跃将来自追求共同利益的性能和道德的开放生态系统。因此,从研究人员到开发人员再到政策制定者,我们所有人都应发挥作用,推动进步,使所有人平等地、永久地获得权力。

14-50 剑和诗人24 - 开源 AI 的下一个重大飞跃:多个小模型与大模型相媲美

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鼠标怎么挑选

我们平时工作中经常要用到鼠标,那么哪种鼠标比较好。我们今天就来研究下。 手感要好 鼠标最重要的就是手感。这个看参数看不出来。最好能到实体店里面去体验一下,自己上手试一下。 如果现在都是在网上买了,去实体店过于麻烦,并且…

[题解]P1115 最大子段和

本蒟蒻太菜了&#xff0c;还不太能理解为什么&#xff0c;先存一下题解&#xff0c;有时间再来研究。 分治法 O ( n log ⁡ n ) O(n\log n) O(nlogn) #include<bits/stdc.h>using namespace std; using lllong long; int n; vector<int>v; int Find(int l,int r)…

[Yii] 实战开发微信服务号+Yii 2.0构建商城系统全栈应用

YII 实战开发微信服务号Yii 2.0构建商城系统全栈应用 课程地址&#xff1a;http://ityuanke.com/thread-14-1-1.html 微信服务号Yii2.0构建商城系统全栈应用 依托微信服务号高级特性及Yii 2.0技术为核心&#xff0c;手把手带你从零开发一个带完整PC后台的微信图书商城的全栈应用…

centos 安装vnc,配置图形界面

centos 安装vnc,配置图形界面 在CentOS上安装和配置VNC服务以使用图形用户界面&#xff0c;你可以按照以下步骤操作&#xff1a; 安装VNC服务器 sudo yum install -y tigervnc-server 复制VNC配置模板文件 cp /lib/systemd/system/vncserver.service /etc/systemd/system/…

各个系统配置端口转发

iptables配置脚本 记得提前安装iptables # Centos/Redhat ~# yum install iptables-services # Ubuntu/Debian ~# apt-get install iptables-persistent#!/bin/bash# 启用 IP 转发 echo 1 > /proc/sys/net/ipv4/ip_forward# 配置 iptables 规则 iptables -t nat -A PREROU…

Git 详解(原理、使用)

git 快速上手请看这篇博客 Git 快速上手 1. 什么是 Git Git 是目前最主流的一个版本控制器&#xff0c;并且是分布式版本控制系统&#xff0c;可以控制电脑上所有格式的文档 版本控制器&#xff1a;记录每次修改以及版本迭代的管理系统 对于文本文件&#xff0c;可以记录每次…

安全防御-用户认证综合实验

一、拓扑图 二、实验要求 1、DMZ区的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9:00-18:00&#xff09;可以访问&#xff0c;生产区设备全天都是可以访问的 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 3、办公区设备10.0.2.20不允许访…

iMazing 3.0.3.1Mac中文破解版下载安装激活

今天&#xff0c;小编要分享的是Mac下一款可以帮助用户管理IOS设备的软件——iMazing&#xff0c;之前&#xff0c;小编也分享的过类似的软件&#xff0c;iMazing却有独特之处。小子这次带来的是3.0.3.1版本。 iMazing 3是一款iOS设备管理软件&#xff0c;该软件支持对基于iOS…

从代理模式到注解开发(一)

代理模式 package org.example.proxy;public class ProxyClient {public static void main(String[] args) {ProxyBuilder proxyBuilder new ProxyBuilder();proxyBuilder.build();} }interface BuildDream {void build(); }class CustomBuilder implements BuildDream {Over…

MetaGPT和LangGraph对比

MetaGPT和LangGraph是两个不同的AI Agent框架&#xff0c;各有其特点和优势:MetaGPT: MetaGPT是一个多Agent协作框架&#xff0c;模拟软件公司的运作方式。它包含多个角色如产品经理、架构师、项目经理和工程师&#xff0c;每个角色都有特定的职责。MetaGPT采用对话模式&#…

你也想做一个Element-ui吧!!!——Blueの前端路(一)

目录 前言&#xff1a; 父子组件 button组件 使用vue脚手架初始化一个项目 如何封装&#xff0c;注册和使用一个组件 main.js中将组件设置为全局 使用 此组件我们所需实现的内容 type 父组件组件传递type属性 子组件接收负组件传递的数据 通过绑定类名的方法动态控制…

MP4怎么转为MP3?超多人都在用的四种转换方法!

MP4怎么转为MP3&#xff1f;MP4&#xff0c;这一风靡全球的多媒体容器格式&#xff0c;无疑是数字时代的一枚璀璨明珠&#xff0c;深深烙印在每个人的数字生活之中&#xff0c;那么&#xff0c;它究竟是如何在众多格式中脱颖而出&#xff0c;赢得如此广泛认可的呢&#xff1f;首…

【qt】TCP服务端发消息给客户端

在使用Qt的网络编程中&#xff0c;数据的传输通常使用QByteArray来进行. 可以用toUtf8() 来进行转换. 用write() 来写入数据 运行结果:

高通平台android的Framework开发遇到的一些问题总结

涉及到framwork的修改一般都在QSSI文件夹下。 1、Android设备&#xff0c;发现耳机插入了设备&#xff0c;但是设备statusbar并没有显示耳机插入的状态。 frameworks/base/packages/SystemUI/res/values/config.xml 下修改&#xff1a; <string-array name"config_s…

python如何查看类的函数

Python非常方便&#xff0c;它不需要用户查询文档&#xff0c;只需掌握如下两个帮助函数&#xff0c;即可查看Python中的所有函数&#xff08;方法&#xff09;以及它们的用法和功能&#xff1a; dir()&#xff1a;列出指定类或模块包含的全部内容&#xff08;包括函数、方法、…

10349 数字滑雪

为了解决这个问题&#xff0c;我们可以采用动态规划加深度优先搜索&#xff08;DFS&#xff09;的方法。这里的关键是使用一个辅助矩阵dp来存储从每个点开始的最长滑行距离。我们从每个点出发&#xff0c;尝试向四个方向滑行&#xff0c;只有当目标点的高度低于当前点的高度时&…

【Linux】进程控制(shell的模拟实现)

目录 一.进程终止 进程退出 exit(int status)和_exit(int status) exit的方式退出 _exit的方式退出 退出码 二.进程等待 进程等待方法 wait waitpid 非阻塞等待 三.进程替换 execl execv execle 四.shell模拟实现 一.进程终止 什么是进程终止&#xff0c;这应该很好理…

C# —— Sort排序

Array.Sort(ints);// 默认的排序方式 正序排序 int[] ints { 1, 2, 3, 89, 20, 100 }; Console.Write(string.Join(",", ints)); 参数1 是排序的数组&#xff0c;参数2 是函数 函数的两个参数 是数组的两个元素&#xff0c; 当返回x-y 正序排序 Array.Sort(ints…

2024年企业最担心的是什么?隐私?数据安全?企业聊天软件?

随着科技日新月异的发展&#xff0c;企业在面对激烈的市场竞争时&#xff0c;也必须不断调整策略&#xff0c;积极应对新的挑战。 2024年&#xff0c;企业的关注焦点涉及到多个方面&#xff0c;然而可以认为其最担心的一些核心问题大致为以下几点&#xff1a; 隐私与数据安全。…

2024C++信息素养大赛-算法创意实践挑战_复赛真题(广东省)题目+参考答案和详细解析

第一题&#xff1a; #include<bits/stdc.h> using namespace std; int a,b;int main(){scanf("%d%d",&a,&b);printf("%d",a*b);return 0; } 第二题&#xff1a; #include<bits/stdc.h> using namespace std; int a,b,c;int main(){sca…