如何通过“MAD”人工智能来发现下一个变形金刚

“Attention is All You Need”变形金刚革命对深度学习模型架构的设计产生了深远的影响。在BERT之后不久,出现了RoBERTa、ALBERT、DistilBERT、SpanBERT、DeBERTa等等。还有相持到现在的ERNIE(现在是“Ernie 4.0”)、GPT系列、BART、T5等等。一个变形金刚架构的博物馆在HuggingFace侧边栏形成,新模型的速度只加快。Pythia、Zephyr、Llama、Mistral、MPT等等,每个都在准确性、速度、训练效率和其他指标上都留下了印记。
通过模型架构,我指的是模型执行的计算图。例如,下面是T5计算图的一部分,在Netron中的代码片段。每个节点都是一个操作或变量(操作的输入或输出),形成了一个节点图架构。
尽管有这么多架构,我们可以肯定未来会有更多的修改和新突破。但每次,人类研究人员必须理解模型、提出假设、解决问题并进行测试。虽然人类拥有无限的才智,但随着模型变得越来越大、越来越复杂,理解架构的任务变得越来越困难。通过AI的指导,也许人类可以发现需要花费人类多年乃至几十年时间才能发现的模型架构。
智能M型Architecture Design(智慧型MAD)是一种生成AI能够引导科学家和AI研究人员更快、更容易地设计更好、更有效的模型架构的思想。我们已经看到大型语言模型(LLMs)通过摘要、分析、图像生成、写作辅助、代码生成等方面为我们提供了巨大的价值和创造力。问题是,我们是否可以利用相同的智能辅助和创造力来设计模型架构呢?研究人员可以根据直觉指导AI系统,并用他们的想法提示AI系统,例如“分层扩展的自我注意力”,或者更具体的行动,例如“在最后一层中添加LoRA”。通过使用基于文本的模型架构描述,例如使用Papers with Code,我们可以了解哪些技术和名称与特定的模型架构相关联。
首先,我将讲解模型架构的重要性。然后,我将介绍一些关于神经架构搜索、代码辅助和图学习的智能MAD的发展轨迹。最后,我将总结一些项目步骤,并讨论对AI设计和通过自主的智能MAD进行自我改进的一些影响。
模型中心化AI的回归
Andrew Ng倡导和提出“数据中心化”AI对于AI领域来说非常重要。使用深度学习,拥有干净和高质量的数据的回报是巨大的,这在训练的每个阶段都可以实现。在背景中,在BERT之前的文本分类领域中,你希望有大量的数据,即使以牺牲质量为代价。拥有代表性的示例比示例完美更重要。这是因为许多AI系统没有使用预训练的嵌入(或者它们不够好),这些嵌入可以被模型利用来应用实际的泛化能力。2018年,BERT是文本任务的突破,但更长的时间才使领导者和从业者达成共识,而“数据中心化”的思想有助于改变我们向AI模型提供数据的方式。

如今,许多人认为当前的架构已经“足够好了”,更重要的是专注于提高数据质量,而不是修改模型。目前,有着高质量数据集训练的庞大社区推动,例如Red Pajama Data。事实上,我们发现,在LLM之间的巨大改进主要不在于模型架构,而在于数据质量和准备方法。
与此同时,每周都会出现一种新的方法,涉及一种模型手术,对训练效率、推理速度或整体准确性都有很大影响。像RETNET这样宣称自己是“新变压器”的论文引起了广泛讨论。因为尽管现有的架构已经很好,但像自注意力这样的突破将对该领域和AI的实现产生深远影响。即使对于较小的突破,训练也是昂贵的,因此您希望尽量减少训练次数。因此,如果您有明确的目标,最大程度地实现MAD对于获得最佳回报也是很重要的。
变压器架构庞大而复杂,这使得更难专注于以模型为中心的AI。当生成型AI方法变得越来越先进和智能时,智能MAD就在眼前。
神经架构搜索

神经架构搜索(NAS)的前提和目标与智能MAD一致,旨在减轻研究人员设计和发现最佳架构的负担。通常,这被视为某种AutoML,其中超参数包括架构设计,我已经看到它被纳入许多超参数配置中。
NAS数据集(即NAS基准)是一个机器学习数据集, <X, Y>,其中X是表示为图形的机器学习架构,Y是该架构在特定数据集上训练和测试时的评估指标。NAS基准仍在不断发展。最初,NAS基准中的学习表示只是有序列表,因此每个列表将神经架构表示为一系列操作,例如[3x3Conv, 10x10Conv, … ]等。这不足以捕捉现代架构中的部分顺序,例如“跳过连接”,其中的层不仅向前馈送,还向模型中的后续层馈送。稍后,DARTS表示使用节点表示变量,边表示操作。最近,一些新的NAS技术被创造出来,避免了对预定义搜索空间的要求,例如将NAS应用于学习GNN以改善基于图形的数据集上的性能的AGNN。
归根结底,深度学习张量库(如TensorFlow或PyTorch)中只有约250个基本级别的张量操作。如果搜索空间是从第一原理出发,并包括所有可能的模型,则应该包括下一个SOTA架构变体在其搜索空间中。但在实际操作中,NAS并非如此设置。这些技术可能需要相当于10年的GPU计算量,而且仅在搜索空间在各种方式上得到放宽和限制的情况下才能实现。因此,NAS主要集中于重新组合现有的模型架构组件。例如,NAS-BERT使用掩蔽建模目标对BERT架构的较小变体进行训练,这些变体在GLUE下游任务上表现良好,从而将自身压缩为较少的参数。而Autoformer则使用了不同的搜索空间进行了类似的方法。
高效的NAS(ENAS)克服了需要对搜索空间中的每个模型进行详尽训练和评估的问题。通过首先训练一个包含许多候选模型作为子图且共享相同权重的超级网络来实现。一般来说,候选模型之间的参数共享使得NAS更加实用,并允许搜索集中在架构变化上以最佳利用现有权重。
基于文本的MAD与基于图形的MAD
从生成性人工智能的角度来看,有机会在模型架构上进行预训练,并将这个基础模型用作作为一种语言生成架构的基础。这不仅可以用于NAS,还可以作为研究人员的一般指导系统,例如使用提示和基于上下文的建议。
从这个角度来看,主要问题是是否将架构表示为文本还是直接表示为图形。我们已经看到了代码生成人工智能辅助的近期崛起,其中一些代码是与深度学习模型架构相关的PyTorch、TensorFlow、Flax等。然而,对于这种用例,代码生成具有许多限制,主要是因为很多代码生成是关于表面形式,即文本表示。
另一方面,图神经网络(GNN)如图形变换器非常有效,因为图结构无处不在,包括MAD。直接在图形上工作的好处是模型在一个底层表示数据的基础上进行学习,比表面级别的文本表示更接近真实情况。即使最近有一些使LLM在生成图形方面表现出色的工作,如InstructGLM,图形变换器在极限情况下并且与LLMs相结合仍然很有希望。
无论您使用GNN还是LLM,图形都比文本更好地表示模型架构,因为重要的是底层计算。TensorFlow和PyTorch的API不断变化,代码处理的不仅仅是模型架构,还包括一般的软件工程原则和资源基础设施。
有几种方法可以将模型架构表示为图形,在这里我只介绍几个类别。首先,有像GLOW、MLIR和Apache TVM这样的代码机器学习编译器。它们可以将类似PyTorch代码的代码编译成可以采用图形形式的中间表示。TensorFlow已经有了一种中间图形表示,您可以用TensorBoard进行可视化。还有一个ONNX格式,可以从现有的保存模型进行编译,例如使用HuggingFace,像这样简单地进行编译:
optimum-cli export onnx --model google/flan-t5-small flan-t5-small-onnx/
这个序列化的ONNX图看起来是这样的(小片段):
使用这些编译后的中间表示的一个问题是它们很难从高层次去理解。在Netron中,T5的ONNX图是巨大的。用于模型架构图的更人性化的选项是Graphbook。这个免费使用的Graphbook平台可以显示图中每个操作产生的值,并展示张量形状和类型不匹配的位置,还支持编辑。此外,通过AI生成的模型架构可能不是完美的,因此以一种简单的方式进入并编辑图形,并排除无法工作的原因非常有用。
尽管图书馆模型只是JSON,但它们是分层的,因此可以更好地实现模型层次的抽象。请见下文,图示展示了GPT2架构的分层结构的侧视图。
MAD步骤
这是关于生成MAD提案的大纲。我想包括这些子步骤,以更加具体地说明如何处理此任务。
- 代码到图形。从代码创建一个MAD数据集,例如HuggingFace模型卡,将模型转换为ONNX或Graphbook等图形格式。
- 创建数据集。这些可能是类似于对图形中操作类型进行分类、对图形本身进行分类、掩盖/恢复操作和链接、检测图形是否不完整、将不完整的图形转换为完整的图形等数据集。这些可以是自监督的。
- 图形分词器。将图形进行分词。例如,让图形中的每个变量成为一个唯一的词汇ID,并生成可以输入到GNN层的邻接矩阵。
- GNN设计。开发一个使用图形分词器输出作为输入经过变压器层的GNN。
- 训练和测试。在数据集上测试GNN,并进行迭代。
一旦这些步骤被细化,它们可以作为NAS方法的一部分,帮助指导GNN的设计(第4步)。
最后说明:自我改进的含义
我想就自主MAD的影响给出一些说明。 AI能够设计模型架构的含义是它可以改进自己的大脑结构。通过某种链式/图形的思维过程,模型可以迭代生成自己架构的后续状态并测试它们。
- 最初,AI提供了模型架构,它被训练用于生成模型架构,并可以被提示生成架构。它可以访问包括自身架构设计在内的训练源,训练源包括许多围绕架构任务的测试,如图形分类、操作/节点分类、链接完成等。这些任务是在开放图表基准中找到的普遍任务。
- 最初,在应用级别上有某种可以训练和测试模型架构并将其添加到AI的训练源中的代理程序,也许它可以通过某种指令提示AI,告诉它哪些有效,哪些无效。
- 迭代地,AI生成一组新的模型架构,代理程序(让我们称其为MAD代理)对其进行训练和测试,给出一个评分,将其添加到训练源中,指导模型重新训练,依此类推。
实质上,不仅使用AutoML/NAS来搜索模型架构空间,而是将学习的模型架构表示为图形,并使用图形转换器来学习和生成。让图形数据集本身成为以图形表示的模型架构。表示图形数据集的模型架构和学习图形数据集的可能模型架构空间变得相同。
这意味着什么?每当一个系统有自我改进的能力时,就会存在一些潜在的风险,可能会导致失控效应。如果上述设计是在更复杂的代理环境中进行的,其中代理可以不断选择数据源和任务,并协调成为一个具有万亿参数的端到端深度学习系统,那么可能存在一些风险。但未被提及的困难部分包括更复杂代理的设计、资源分配以及支持更广泛能力的许多困难。
结论
自主AI模型架构设计(MAD)中的AI技术可能有助于未来的AI研究人员发现新的突破性技术。在过去,MAD已经通过神经架构搜索(NAS)来实现。结合生成式AI和变换器,可能有新机会来帮助研究人员并进行新的发现。