(更新完)LPZero: Language Model Zero-cost Proxy Search from Zero
LPZero代码
摘要
神经架构搜索 (NAS) 有助于自动执行有效的神经网络搜索,同时需要大量的计算资源,尤其是对于语言模型。零样本 NAS 利用零成本 (ZC) 代理来估计模型性能,从而显着降低计算需求。然而,现有的 ZC 代理严重依赖于深入的专家知识和重复的反复试验成本。此外,大多数现有的 ZC 代理都无法超越简单基线(参数数量)的性能。为了应对这些挑战,我们引入了一个称为 LPZero(语言模型零成本代理搜索)的新型框架。它旨在自动设计高效的语言模型 ZC 代理,并实现更高的排名一致性。具体来说,我们首先将现有的 ZC 代理设计整合到一个统一的框架中作为搜索空间,然后应用进化算法启发式地识别语言模型的新代理候选者。为了提高搜索过程的效率,我们引入了预测剪枝策略 (PPS)。该策略旨在预先消除没有希望的代理,从而降低代理降级的风险。在 FlexiBERT 和 GPT-2 搜索空间上进行的大量实验证明了我们算法的有效性。值得注意的是,我们的方法实现的性能排名一致性显著超过了当前代理的一致性。
1 Introduction
Zero-shot NAS 预测神经网络架构的性能,而无需实际训练,使用随机初始化的模型。这种方法能够快速高效地估计架构性能,从而消除训练过程中通常消耗的时间和资源。此外,我们观察到大多数代理无法超越基于参数数量的基准性能,如图 1 所示。这个限制提出了一个基本但至关重要的问题:如何高效、自动地为语言模型设计新的代理?
为了解答这个问题,我们将其分解为两个步骤:
(1)设计一个统一的搜索空间来包含现有的 ZC 代理;
对于第一个步骤,我们重新审视现有的 ZC 代理,如表 1 所示,设计了一个综合性的搜索空间,涵盖了当前的 ZC 代理。具体而言,这些代理根据输入类型分为六类:激活(A)、Jacobs(J)、梯度(G)、头(H)、权重(W)和 Softmax(S),如图 2 所示。在这个统一的框架中,我们从这些类别中选择两种输入,记为 θ。每个输入通过 n 种一元运算 f(·) 进行转换,结果通过二元运算 g(·) 进行组合。这个过程生成了一个候选代理 φ(f, g, θ),并进入我们的搜索空间。更多细节请参见附录 A。
(2)使用进化算法发现新的代理。
对于第二个步骤,我们提出了一个新颖的 LPZero 框架,代表了从零开始的语言模型代理搜索。正如图 3 所示,我们最初选择 p 个候选代理来建立初始种群,并评估它们在 FlexiBERT 搜索空间中的排名一致性。通过锦标赛选择,我们识别出两个有前景的父代理(φn,m)。接下来,我们进行交叉和变异操作,生成后代代理 φq。为了评估其排名一致性 Spearman ρq,我们使用该代理对每个架构 Ωi 进行评分,并将结果与各自的真实值 gti(例如,平均准确率)进行比较。鉴于搜索空间的稀疏性,我们倡导采用预测修剪策略(PPS),旨在消除无效的代理,从而提高搜索效率。
我们的主要贡献如下:
- 我们设计了一个全面且高质量的搜索空间,涵盖了大部分现有的适用于语言模型的 ZC 代理。
- 我们引入了从零开始的语言模型代理搜索(LPZero)框架,并结合预测修剪策略(PPS),防止代理降级,从而提高搜索效率。
- 在 FlexiBERT 和 GPT-2 上进行的实验验证了我们 LPZero 框架中识别的代理的优越性,表明我们提出的方法具有有效性。
2 Related Work
Zero-shot NAS
作为一种评估候选神经网络架构准确性并且无需进行大量训练的低成本策略,已经获得了越来越多的关注。与传统的One-shot NAS方法相比,这种方法提供了更高效的计算替代方案。Zero-shot NAS的核心是其准确度排名代理,这对其有效性至关重要。尽管大多数现有的代理已经为计算机视觉(CV)任务开发,但在自然语言处理(NLP)任务中,相关的研究探索相对较少。
NWOT(Mellor et al., 2021)利用不同图像的局部Jacobian值,构建了一种基于输入Jacobian相关性的模型排名指标。类似地,ZenNAS(Lin et al., 2021)通过使用输入图像的梯度范数作为排名标准来评估候选架构。此外,Zero-cost NAS(Abdelfattah et al., 2021)受到“最佳大脑损伤”(Optimal Brain Damage)原则(LeCun et al., 1989)的启发,引入了基于剪枝的度量作为零成本代理。这些度量包括GradNorm(Abdelfattah et al., 2021)、Plain(Abdelfattah et al., 2021)、SNIP(Lee et al., 2019)、GraSP(Wang et al., 2020)、Fisher(Turner et al., 2020)和Synflow(Tanaka et al., 2020)。这些代理评估网络参数的重要性,并聚合层级值来估算整体性能。
Zero-cost Proxies for Transformer
最近的研究(Serianni和Kalita, 2023)重新激发了零成本代理在基于Transformer的网络中的应用,这标志着该领域的重要进展。LiteTransformerSearch(Javaheripi et al., 2022)观察到,零成本代理在计算机视觉任务中表现出色,但在应用于自然语言处理时,并未超越基准方法,即解码器的参数数量。Serianni和Kalita(2023)通过FlexiBERT基准重新唤起了零成本代理在RNN和BERT-based Transformer模型中的重要性。研究提出了一系列代理,如突触多样性、突触显著性、激活距离、Jacobian余弦、注意力置信度和头部重要性,强调了它们在无需大量训练的情况下优化架构搜索过程的潜力。
Automatic Search for ZC Proxies
一些研究探索了如何自动搜索零成本代理,特别是EZNAS(Akhauri et al., 2022)和EMQ(Dong et al., 2023)。EZNAS为卷积网络引入了一个专门的搜索空间,并在多个基准测试中取得了令人称赞的表现(Ying et al., 2019;Dong和Yang, 2020)。然而,当将其应用于基于Transformer的网络时,其有效性显著下降。另一方面,EMQ(Dong et al., 2023)开发了一个专门针对混合精度量化代理的搜索空间,但它并未优化用于Transformer-based网络。相比之下,我们的LPZero框架专门为语言模型设计,特别是为Transformer架构优化,展示了更优越且更有前景的表现。
总结:本文提出的LPZero框架在设计零成本代理并自动化搜索过程中展示了卓越的效果,尤其是在Transformer架构上,较现有的方法表现出更强的潜力和优势。
3 Methodology
在本节中,我们设计了一个搜索空间,并详细介绍了LPZero的进化框架及其分析。
3.1 LPZero Search Space Design
大多数 AutoML 方法的搜索空间(如 Real 等人,2020;Liu 等人,2019)通常是为特定目的而专门设计的,并不适用于代理(proxy)搜索。先前的一些自动损失搜索方法(Li 等人,2021b,a;Gu 等人,2022)使用网络输出 y和真实标签 y标量)作为输入,这相对容易处理。然而,这些方法的搜索空间本身较为初级,和我们的最相似。但对于 ZC(零成本)代理搜索问题,我们需要更多可以处理标量、向量和矩阵输入的运算,从而可能导致形状不匹配的问题。
值得注意的是,f20和 f21是两个特殊的一元运算:
- f20 表示“直通”,即不对输入进行任何修改,直接返回输入;
- f21表示“剪枝”操作,它会移除该分支,相当于返回空。
3.2 Search Algorithm
受 AutoML (He et al., 2021; Li et al., 2019) 的启发,进化算法成为我们搜索算法设计的核心机制。进化算法属于遗传算法的一个分支,它通过对种群中的个体进行生成、评估和选择,来模拟自然选择的过程,以解决优化问题。图 3 展示了我们 LPZero 框架的搜索流程。
在初始化时,我们从搜索空间中 均匀采样 p个零成本(ZC)代理来构建初始种群。然后,我们在搜索空间上测量这些代理的排名相关性,以衡量每个代理的预测能力。接下来,在每次迭代中,我们采用锦标赛选择(tournament selection)从种群中选出占比 R的代理(默认 R=10%)作为潜在的候选者,然后从中随机选出两个个体 ϕn,ϕm 作为“父代理”(parents)。随后,这些父代理将以概率 Cr 和 Mr 分别执行 交叉 和 变异操作,产生后代。
为了验证后代的有效性,我们从搜索空间中采样 S个候选网络结构,并计算它们在“真实得分”和“代理得分”之间的排名相关性。由于搜索空间非常稀疏,包含大量无效或缺乏潜力的 ZC 代理,我们提出了 Early-Stopping 策略 来过滤掉这些候选代理。
Crossover and Mutation(交叉与变异)
每个算法表达式(AE)由 两个分支 和 一个聚合节点 组成。这些分支代表代理架构中的各个组成部分或操作,而聚合节点则将这两个分支的输出结合起来,形成最终的代理得分。正如图 4 所示,我们展示了交叉和变异操作的示意图。
- 在 交叉操作 中,会从两个父 AE 中交换其“遗传信息”,以生成后代。具体而言,这个过程通过交换父 AE 的某些片段,组合出新的操作及结构。
- 与之相对,变异操作 会对单个 AE 的“遗传信息”进行随机改动,从而有可能将全新的结构引入种群。
Predictive-Pruning Strategy(预测式剪枝策略)
LPZero 框架中的 预测式剪枝策略(Predictive-Pruning Strategy)在应对庞大且稀疏的搜索空间时发挥了关键作用。它能够迅速识别并舍弃那些无潜力或无效的零成本(ZC)代理,从而节省计算资源并加快寻找最优解的进程。通过使用附录 B 中所述的预定义标准,该策略会评估候选代理的可行性;凡是不满足指定标准的代理都会被从种群中移除,进而缩小搜索空间,让计算资源更多地集中于更有潜力的候选者。总体而言,这种策略性筛选过程提高了 LPZero 框架的效率和有效性,加快了高质量代理架构的发现。
Searched ZC Proxy(搜索到的零成本代理)
本文搜索出的 ZC 代理针对的是 FlexiBERT 搜索空间,也就是说它适用于衡量 BERT 或类似结构的可变深度、可变宽度等多种配置。
-
LPZero 框架与目标
- 该框架的核心目标是找到一个零成本代理,能够最大化其与真实网络性能排名之间的 Spearman 相关系数。
- 代理 ϕ以符号化表达式的形式存在,由一元运算和二元运算组成。
- 在搜索空间中,允许使用多种基础运算(包括可能什么也不做的“直通”以及剪枝操作),使得搜索具有极高的灵活度和可扩展性。
-
搜索空间设计
- 输入包括 6 类特征(Activation、Jacobs、Gradients、Head、Weight、Softmax),对应不同网络内部信息。
- 一元运算 21 个,二元运算 4 个,这些运算可以被自由组合成丰富的代理表达式。
- 理论上可组合出 26,460 种潜在代理结构,搜索空间十分庞大。
-
进化式搜索策略:LPZero 算法
- 通过进化算法迭代搜索:在每一代中,选取优秀代理(前 P),然后随机进行交叉(crossover)和变异(mutation)来生成新代理。
- 新生成的代理如果满足有效性(PPS 验证),则被保留到种群中,否则重新生成。
- 每代都对新产生的代理进行评估并更新种群,最终迭代到给定轮次后,输出 Spearman 值最高的代理。
4 Experiments
在本节中,我们首先详细介绍 LPZero 的实验设置和实现细节。随后,我们展示在 FlexiBERT 和 GPT-2 搜索空间上对排名相关性的评估结果。接着,我们在这两个搜索空间中进一步考察 LPZero 的性能表现。最后,我们通过消融实验评估进化算法、预测式剪枝策略(Predictive-Pruning Strategy, PPS)以及一元运算数量和初始种群规模等因素的影响。
4.1 实现细节
数据集
- FlexiBERT 构建于 GLUE 基准上(包含多个任务),我们采用这些任务的平均性能作为衡量排名一致性的真实指标。
- 在 FlexiBERT 搜索空间上搜索零成本代理时,我们使用 OpenWebText 数据集。
- 对于 GPT-2 搜索空间,我们在 WikiText-103 数据集上进行实验。
- 在进化搜索的过程中,我们只需要一小批(mini-batch)的输入(对于 BERT 使用 128,GPT-2 使用 16)来计算输入统计量。
评价标准
- 我们使用 Kendall’s τ 和 Spearman’s ρ 来衡量零成本代理的有效性,这两个值都介于 -1(负相关)到 1(正相关)之间,0 表示无相关性。它们能定量评估代理预测与实际模型性能之间的一致程度,为比较提供了依据。
搜索空间
- 我们采用两个已有的基准作为搜索空间。
- FlexiBERT 基准涵盖了大量架构,具有一定挑战性(详见附录)。
- GPT-2 基准则来自 WikiText-103,其中包含了超过一千个不同的架构(详见附录)。
进化算法设置
- 我们的进化算法配置如下:
- 总迭代次数 G 设置为 1000;
- 初始种群规模 p 设置为 80;
- 交叉(crossover)和变异(mutation)操作的概率分别为 0.5;
- 选择压力(即比例 RRR)为 10%;
- 使用相同的随机种子 42 以保证可复现性;
- 实验在 A6000 GPU 上进行;
- 为了加速进化搜索,我们在搜索过程中仅对 50 个架构进行采样来评估排名一致性。完成搜索后,我们会在两个数据集上对最终找到的代理进行性能验证:
- FlexiBERT 中抽取了 500 个架构
- GPT-2 中抽取了 200 个架构
- 整个进化过程耗时大约 10 个 GPU 小时。
训练与评估
- 我们基于公开代码实现了 FlexiBERT 和文中表 1 所示的各种代理。
- 同时也使用了另一份开源代码实现 GPT-2 搜索空间,并从其开源仓库中收集了基准数据。
- 为了评估排名一致性,我们会在 FlexiBERT 基准中随机抽取 500 个架构,并在 GPT-2 基准中随机抽取 200 个架构,分别进行对比分析。
-
Figure 5(左上九个散点图):
- 每个散点图展示了 GLUE 分数 与 不同零成本代理打分 之间的相关性。横轴一般是代理打分,纵轴是真实 GLUE 分数。
- 不同颜色的点表示在搜索空间中随机采样的不同网络架构。
- 通过散点分布和拟合线,可以大致看出各代理与真实性能之间的相关程度。
- 最右下方的散点图是 LPZero 的结果,可以看到点更接近某条单调趋势线,说明排名相关性更高。
4.2 排名评估
在 FlexiBERT 上的表现
- 正如表 3 所示,我们在 500 个来自 FlexiBERT 搜索空间的架构上,对 14 个零成本代理的 Kendall’s τ 和 Spearman’s ρ 进行了评估。
- 其中,“参数量”作为一个基线,与大多数代理相比,它也有相当的竞争力;很多代理并未能超越该基线(这在图 1 中也有展示)。
- 我们的 LPZero 模型在排名一致性上表现出明显优势,τ 和 ρ 分别达到了较高的数值。
- 此外,图 5 展示了 GLUE 分数与各种零成本代理(包括我们提出的 LPZero 以及其他已有的训练无关评估方法)之间的相关性。可以看出,LPZero 的排名一致性在所有对比框架中最高。
在 GPT-2 上的表现
- 正如表 4 所示,我们在 200 个来自 GPT-2 搜索空间的架构上,对 15 个零成本代理的 Kendall’s τ 和 Spearman’s ρ 进行了评估。
- 额外的一个代理是 “Decoder.Params”,代表 GPT-2 中解码器的参数量。
- LPZero 在所有 ZC 代理中取得了最优表现,τ 和 ρ 分别高达 0.87 和 0.98。
- 相比于 FlexiBERT 搜索空间,在 GPT-2 搜索空间上,排名一致性表现得更为突出。
4.3 消融实验
我们对以下四个因素进行了广泛的消融研究:
- 进化算法本身
- 预测式剪枝策略(PPS)
- 初始种群规模
- 一元运算数量
(1) 进化算法的有效性
- 如图 6 所示,在迭代次数限定为 1000、初始种群规模为 80 的条件下,进化算法的表现远超随机搜索。
- 这表明进化算法能够在搜索过程中带来启发式的加速,大幅提高搜索效率。
-
Figure 6(两条或三条曲线对比图):
- 展示了在进化搜索过程中,有无 PPS(预测式剪枝策略)以及随机搜索三种不同设置下,Spearman’s ρ 随迭代次数的变化情况。
- 横轴是迭代次数,纵轴是 Spearman’s ρ。
- 可以看到:
- Evolution Search w/ PPS(有 PPS)在早期迭代就能取得更高的相关系数;
- Evolution Search w/o PPS(无 PPS)曲线起步较低,后期才逐渐逼近;
- Random Search 整体表现最差,随着迭代也很难达到进化搜索的水平。
(2) 预测式剪枝策略(PPS)的有效性
- 图 6 也展示了预测式剪枝策略(PPS)的性能表现。
- 结果显示,在迭代少于 400 次时,PPS 不仅能获得更高的 Spearman’s ρ,而且明显优于未使用 PPS 的进化搜索方法,说明 PPS 对提高搜索效率至关重要。
(3) 初始种群规模
- 如图 7 所示,我们对比了初始种群规模分别为 80、100 和 200 时的 Spearman’s ρ。
- 数据表明,种群规模越大,在搜索初期的 Spearman’s ρ 越高。
(4) 一元运算数量
- 表 5 展示了对一元运算数量的消融实验。
- 结果表明,较少的一元运算(如 2 个)能够带来最高的 Spearman’s ρ(86.48%)和最高的胜率(25.61%),说明过多的一元运算可能导致代理过度复杂化,从而影响效果。
2. 详细总结与分析
-
实验设计
- 本文在 FlexiBERT 和 GPT-2 两个搜索空间中验证了所提出的 LPZero 代理的有效性。
- FlexiBERT 基准源于 GLUE 任务,GPT-2 基准源于 WikiText-103,二者都涵盖了大量不同的网络结构,用于全面测试零成本代理的排名一致性。
-
主要发现
- LPZero 在排名一致性上优于大多数已有方法:在 FlexiBERT 上明显超越基线“参数量”,并在 GPT-2 搜索空间中达到极高的相关系数(τ = 0.87, ρ = 0.98)。
- 进化算法显著优于随机搜索:通过对比可以看出,进化算法的引入能快速筛选出更优质的代理,提升搜索效率。
- 预测式剪枝策略(PPS)能进一步加速并提高性能:在早期迭代中就能淘汰大量无效或劣质的代理,避免在这些代理上浪费计算资源。
- 初始种群规模与一元运算数量:
- 较大的初始种群在搜索初期就能获得更好的排名相关性;
- 但一元运算数量过多会导致代理结构过度复杂,反而降低最终的排名效果。
-
意义与价值
- 在无须完整训练的前提下评估模型优劣:LPZero 提供了一种快速评估大规模模型(如 BERT 或 GPT-2 变体)的方法,节省大量时间和计算成本。
- 可扩展性与通用性:进化算法和预测式剪枝策略相结合,适用于各种搜索空间和代理设计,可在不同任务中推广。
- 可解释性:通过消融研究,作者展示了影响排名相关性的关键因素(如 PPS、初始种群规模和运算数量),为后续研究提供了可行的优化方向。
5 Conclusion
在本文中,我们提出了 LPZero 框架,这是一种创新方法,用于在无需大量训练或专家干预的情况下,为语言模型发掘代理(proxy)。我们的方法包括设计一个全面的搜索空间,涵盖了广泛的现有零成本(ZC)代理。我们利用进化算法(Evolutionary Algorithm)在这一搜索空间中高效地挖掘出潜在的 ZC 代理。为了加快搜索进程,我们实施了预测式剪枝策略(Predictive-Pruning Strategy),在过程的早期阶段就剔除不太有前途的代理。为了验证我们提出的 LPZero 的有效性,我们在 FlexiBERT 和 GPT-2 搜索空间上进行了实验,以衡量所搜索到的代理的排名一致性。实验结果表明,与之前的 ZC 代理相比,我们的 LPZero 具有更强的排名能力,并在很大程度上超越了基线。我们的研究结果为今后在语言模型零成本代理方面的探索奠定了基础。
6 Limitations
本研究对专门为 Transformer 架构设计的现有零成本(ZC)代理进行了全面回顾,并将它们整合到一个统一的框架中进行评估。通过在 FlexiBERT 和 GPT-2 搜索空间中对这些 ZC 代理进行基准测试,我们使用 Kendall’s τ 和 Spearman’s ρ 来严格评估它们的排名能力。这样一来,我们得以系统地比较它们在无需大量计算资源的前提下识别有前途的语言模型架构的有效性。我们的评估主要关注语言模型的架构层面,旨在为高效且有效的神经网络设计简化搜索过程。
然而,需要注意的是,我们的研究主要集中在语言模型的结构设计与优化,而对诸如推理能力、逻辑分析、高级语言生成、细腻的自然语言理解以及知识的检索与整合等具体功能领域的改进则较少关注。这些对于语言模型在真实世界应用中的性能和适用性而言至关重要的组件,并未在我们的当前框架中得到直接探讨。我们认识到这些不足之处,并认为未来仍有大量机会在这些方面进行深入研究。若将零成本代理的评估范围扩展到包括这些功能性内容,那么语言模型的实用性和全面性将会显著提升,为人工智能领域中的模型开发与评估提供更为整体的方法。
7 Ethics Statement
我们的 LPZero 框架主要关注语言模型架构的技术开发,并未直接涉及伦理或社会层面的考量。我们的工作可能会促进在 NLP 领域中对 NAS(神经网络架构搜索)的应用,为在语言模型中进行经济高效的性能评估提供了一种方式。
尽管我们的重点在此,但我们也认识到,本研究的应用——旨在降低计算需求并简化语言模型开发——可能会与自然语言处理领域中更广泛的伦理问题产生交集,如数据隐私、算法偏见以及潜在的误用。我们倡导在后续研究中融入伦理考量,审视训练数据来源中的偏见,并确保语言模型的负责任部署,认识到它们在社会层面可能产生的深远影响。我们同时也承认人工智能(尤其是 ChatGPT)在改进文本材料方面展现了强大的能力与潜力。
Additional
A Additional Related Work(论文补充文件补充了免训练指标的进展)
B Predefined Criteria in PPS
在数学中,理解各种运算之间的关系对于 LPZero 搜索空间具有重要影响。表 6 总结了这组运算之间的关系,并根据它们的数学交互进行分类。这些关系包括:逆函数、导数、等价、特殊情况,以及当某些运算组合在一起时可能出现的冲突。通过这一概览,我们能了解哪些运算能够彼此互补或产生冲突,从而为预测式剪枝策略(PPS)提供支持。
下面对 PPS(Predictive-Pruning Strategy) 中的预定义准则(表 6)做一个简要说明,帮助理解其在搜索空间中进行快速检查和剪枝时的作用:
-
为什么需要这些预定义准则
- 在搜索空间中组合不同运算时,如果组合出现了冲突或无效的情况,模型表达式就会无法计算或含义不明。
- PPS 会利用这些准则在搜索或变异阶段快速检测并剪除无效的运算组合,避免浪费计算资源。
- 同时,如果检测到一对运算可以互为逆或等价,就可能简化表达式,或者直接跳过冗余的组合。
-
示例
- log\loglog 与 exp\expexp 互为逆:如果在同一分支中连续使用 log\loglog 再 exp\expexp(或反之),那么运算结果等同于原值,往往没有实际意义。PPS 可将这类“自相抵消”的组合视作冗余并剪除。
- −()-() −() 与 \sqrt{}:如果对一个正数先取负号,再开平方,就会产生虚数或不定值。该组合在大多数实际神经网络中不合法,因此在搜索时可直接过滤掉。
-
对搜索效率的帮助
- 通过在搜索或变异阶段进行预判,PPS 能够大幅减少会导致无效表达式的组合,减少不必要的计算。
- 这样一来,进化算法可以更专注于有效、有潜力的候选结构,提升搜索效率与质量。
D Details of Search Space
D.2 GPT-2 的细节
表 8 列出了 GPT-2 架构优化所使用的大规模搜索空间,涵盖了探索过程中的一系列超参数。它包括:
- Transformer 模型的层数 (nlayer),表示模型的深度;
- 模型嵌入的维度 (dmodel),反映模型的规模和容量;
- 前馈网络 (feed-forward) 的内部维度 (dinner),该参数对模型在每个 Transformer 层内处理和整合信息的能力至关重要;
- 注意力头数 (nhead),影响模型对输入序列不同部分的关注能力;
- 自适应输入嵌入 (adaptive input embedding) 的维度 (dembed) 及其关联的缩放因子 (k),为管理输入表示的复杂度和效率提供了一种新颖的方法。
值得注意的是,在该搜索空间中,dinner 的取值会自适应地至少设为 dmodel 的两倍,这是一种启发式做法,以确保前馈网络具备足够的容量,从而降低训练崩溃的风险。
在本文的实验中,作者主要在 FlexiBERT 和 GPT-2 这两个搜索空间中验证所提出的零成本代理(ZC proxy)的排名相关性。它们的区别主要在于网络结构的可变范围、任务数据集和评估指标等方面。
D.1 FlexiBERT 的细节
-
基于 BERT 架构的可变设计
FlexiBERT 的核心思想是对原始 BERT 的多个超参数进行灵活调整,例如:- Transformer Block 的数量(深度)
- 每个 Block 的隐藏维度(宽度)
- 多头注意力(Multi-Head Attention)的头数
- 前馈网络(Feed-Forward)的维度
- 其他细节(如激活函数类型、是否使用 LayerNorm 等)
-
数据集和任务
- GLUE 任务:FlexiBERT 基准源于 GLUE(General Language Understanding Evaluation),它包括多项 NLP 任务(如文本蕴含、情感分析等),在每个模型配置上会评估在这些任务上的平均性能,作为衡量网络优劣的“真实分数”。
- OpenWebText:在搜索零成本代理时,为了提取激活分布、参数规模等信息,作者只需要在小批量数据上进行前向传播(无需完整训练),这里采用了 OpenWebText 数据来获取这些统计信息。
-
架构规模
FlexiBERT Benchmark 拥有 该搜索空间总共包含 10,621,440 种可能的架构(具体可见作者在附录中的说明),因此搜索空间相当庞大且稀疏。
(2)GPT-2 搜索空间
-
基于 GPT-2 架构的可变设计
表 8 列出了 GPT-2 架构优化所使用的大规模搜索空间,涵盖了探索过程中的一系列超参数。它包括:
- Transformer 模型的层数 (nlayer),表示模型的深度;
- 模型嵌入的维度 (dmodel),反映模型的规模和容量;
- 前馈网络 (feed-forward) 的内部维度 (dinner),该参数对模型在每个 Transformer 层内处理和整合信息的能力至关重要;
- 注意力头数 (nhead),影响模型对输入序列不同部分的关注能力;
- 自适应输入嵌入 (adaptive input embedding) 的维度 (dembed) 及其关联的缩放因子 (k),为管理输入表示的复杂度和效率提供了一种新颖的方法。
-
数据集
- WikiText-103:作者在该数据集上对 GPT-2 变体进行评估。与 BERT 不同,GPT-2 属于自回归语言模型,因此主要关注语言建模任务(如困惑度 Perplexity)。
- 在搜索零成本代理时,同样只需要在小批量数据(batch size = 16)上做前向计算以提取网络激活和参数信息。
-
架构规模
该搜索空间包含了 约 1054 个 GPT-2 变体(来自文献中公开的基准或作者自行组合),数量虽不及 FlexiBERT 的规模庞大,但同样涵盖了相当丰富的结构变动。 -
评估方式
类似地,在 GPT-2 搜索空间中也会随机抽取一部分架构(文中常用 200 个)进行真实评测(如在 WikiText-103 上的困惑度),然后与代理的评分进行对比,以计算排名一致性。
心迹录
人之为病,心魔也,
心若通达,万病自消
面对事情时,心中不纠结
若想要命好,精神上不受力
其实差的大运流年是破坏你内心小宇宙的平衡
心身互为因果
心理状态,会影响肉身
强健肉身,调养五脏,五脏安,则心神安
相关文章:
(更新完)LPZero: Language Model Zero-cost Proxy Search from Zero
LPZero代码 摘要 神经架构搜索 (NAS) 有助于自动执行有效的神经网络搜索,同时需要大量的计算资源,尤其是对于语言模型。零样本 NAS 利用零成本 (ZC) 代理来估计模型性能,从而显着降低计算需求。然而,现有的 ZC 代理严重依赖于深…...
第六次CCF-CSP认证(含C++源码)
第六次CCF-CSP认证 数位之和(easy)思路及AC代码遇到的问题 开心消消乐(easy)思路及AC代码 画图(mid)思路及AC代码 数位之和(easy) 题目链接 思路及AC代码 既然题目要求我们输出各位…...
Spring Boot框架总结(超级详细)
前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等,如果能耐心看完,想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置&#…...
Dify平台部署记录
安装dify项目 官网地址:http://difyai.com/ github地址:https://github.com/langgenius/dify 下载项目: git clone https://github.com/langgenius/dify.git下载过慢,直接访问网页下载zip压缩包: 解压,…...
c++ 调用 gurobi 库,cmake,mac
gurobi 一般使用 python 调用,官方的培训会议及资料大部分也都基于 python。 由于最近上手了 c,因此想试试 c 怎么调用 gurobi。但我发现,c 调用第三方库比 python 或 java 要复杂不少。python 中直接 import 第三方库,java 加载…...
Redis 发布订阅模式详解:实现高效的消息通信
目录 引言 1. 什么是 Redis 发布订阅模式? 1.1 定义 1.2 核心概念 2. Redis 发布订阅的工作原理 2.1 基本流程 2.2 示例 2.3 频道与模式订阅 3. Redis 发布订阅的使用场景 3.1 实时消息通知 3.2 事件驱动架构 3.3 日志收集与分发 3.4 分布式锁与协调 4…...
React Native 0.76 升级后 APK 体积增大的原因及优化方案
在将 React Native 从 0.71 升级到 0.76 后,打包体积从 40 多 MB 增加到了 80 MB。经过一系列排查和优化,最终找到了解决方案,并将优化过程整理如下。 1. React Native 0.76 体积增大的可能原因 (1) 新架构默认启用 React Native 0.76 默认…...
Java直通车系列14【Spring MVC】(深入学习 Controller 编写)
目录 基本概念 编写 Controller 的步骤和要点 1. 定义 Controller 类 2. 映射请求 3. 处理请求参数 4. 调用业务逻辑 5. 返回响应 场景示例 1. 简单的 Hello World 示例 2. 处理路径变量和请求参数 3. 处理表单提交 4. 处理 JSON 数据 5. 异常处理 基本概念 Cont…...
文章被检测出是AI写的怎么办?
随着人工智能技术的飞速发展,AI辅助写作工具逐渐普及,为学生、科研人员以及创作者带来了诸多便利。然而,随之而来的是对学术诚信和内容原创性的担忧。当文章被检测出是AI写作时,应该如何应对?本文将探讨这一问题&#…...
Linux教学总目录
Linux教学总目录: 1、Linux常见指令 2、Linux权限理解 3、Linux环境基础开发工具使用...
SpringBoot(1)——创建SpringBoot项目的方式
目录 1、idea直接从spring.io官网下载即可 编辑2、 自己从spring官网下载再用idea打开 3、Idea从阿里云的官网(https://start.aliyun.com)下载打开 4、Maven项目改造成springboot项目 我的平台是idea2021 Spring Boot 由 Pivotal 团队开发ÿ…...
Oracle数据恢复:闪回查询
Oracle数据恢复:闪回查询 SQL语法闪回查询:AS OF闪回版本查询:VERSIONS BETWEEN数据恢复示例闪回查询最佳实践应用场景使用限制注意事项最佳实践在误删除业务数据时,Oracle数据库通常支持以下几种数据恢复途径。 闪回查询(Flashback Query):闪回查询通过查询系统的UNDO数…...
LiveCommunicationKit OC 实现
一、实现效果: LiveCommunicationKit是苹果公司在iOS 17.4、watchOS 10.4和visionOS 1.1中引入的一个新框架,旨在优化VoIP通话的交互体验。该框架提供了与...
django中路由配置规则的详细说明
在 Django 中,路由配置是将 URL 映射到视图函数或类视图的关键步骤,它决定了用户请求的 URL 会触发哪个视图进行处理。以下将详细介绍 Django 中路由配置的规则、高级使用方法以及多个应用配置的规则。 基本路由配置规则 1. 项目级路由配置 在 Django 项目中,根路由配置文…...
机器学习基础(4)
超越基于常识的基准 除了不同的评估方法,还应该利用基于常识的基准。训练深度学习模型就好比在平行世界里按下发射火箭的按钮,你听不到也看不到。你无法观察流形学习过程,它发生在数千维空间中,即使投影到三维空间中,…...
技术的魅力与价值
区块链技术正改变公益事业。它能极大提高公益透明度和公信力。通过区块链,每一笔捐款的流向都清晰可查,无法篡改,让捐赠者放心。比如某公益平台利用区块链记录捐赠信息,大家随时能看到善款使用情况。还有些项目用区块链追踪物资发…...
【报错】微信小程序预览报错”60001“
1.问题描述 我在微信开发者工具写小程序时,使用http://localhost:8080是可以请求成功的,数据全都可以无报错,但是点击【预览】,用手机扫描二维码浏览时,发现前端图片无返回且报错60001(打开开发者模式查看日…...
[数据结构]并查集--C++版本的实现代码
目录 并查集的基本框架 查找一个元素在哪一个集合 判断两个元素是否在同一个集合 将两个集合进行合并 查询有多少组 测试 大学班级的同学会来自于五湖四海,每个人的家乡可能都不相同,那么如何将相同省份的同学连接到一块,也就是按省份进…...
随机森林:强大的集成学习算法
引言 在机器学习领域,随机森林(Random Forest)是一种非常流行的集成学习算法。它通过构建多个决策树并将它们的结果进行集成,能够有效提高模型的准确性和鲁棒性。随机森林广泛应用于分类、回归、特征选择等任务,因其简…...
C# 实现 AI SSE (Server-Sent Events)接口方式输出(对接AI模型API)
以下是一个使用 C# 实现接收 SSE(Server-Sent Events)接口数据、进行数据修改解析,然后再以 SSE 方式输出给前端的示例代码。 using System; using System.IO; using System.Net; using System.Text; using System.Threading.Tasks; using M…...
企业招聘能力提升之道:突破困境,精准纳才
企业招聘能力提升之道:突破困境,精准纳才 在企业运营的广袤版图中,招聘工作无疑是一块至关重要的拼图。然而,不少企业在这片领域中举步维艰,尽管投入了海量的时间与精力,收获的成果却不尽人意。面试环节仿…...
[数据结构]堆详解
目录 一、堆的概念及结构 二、堆的实现 1.堆的定义 2堆的初始化 3堆的插入 编辑 4.堆的删除 5堆的其他操作 6代码合集 三、堆的应用 (一)堆排序(重点) (二)TOP-K问题 一、堆的概念及结构 堆的…...
KafkaRocketMQ
Kafka 消息生产与消费流程 1. 消息生产 生产者创建消息: 指定目标 Topic、Key(可选)、Value。可附加 Header 信息(如时间戳、自定义元数据)。 选择分区(Partition): 若指定 Key&am…...
DeepSeek Kimi详细生成PPT的步骤
以下是使用 DeepSeek 和 Kimi 协作生成 PPT 的详细步骤,结合了两者的优势实现高效创作: 第一步:使用 DeepSeek 生成 PPT 大纲或内容 明确需求并输入提示词 在 DeepSeek 的对话界面中,输入具体指令,要求生成 PPT 大纲或…...
HTTP和HTTPS
一.介绍HTTP HTTP全称为超文本传输协议,是一种应用非常广泛的应用层协议。目前,主流使用的HTTP版本是HTTP1.1和HTTP2.0,在这边文章中,讨论的是HTTP1.1。 使用浏览器,打开手机上的APP或者是后端程序,都是分布…...
应急响应--流量分析
(一)Cobalt Strike流量特征分析 1.HTTP特征 源码特征: 在流量中,通过http协议的url路径,在checksum8解密算法计算后,32位的后门得到的结果是92,64位的后门得到的结果是93,该特征符…...
docker 学习
在docker中通常需要使用ADD等命令复制附件,同时也需要使用其他命令操作原始镜像中的内容,会导致原文文件被覆盖后缺少执行权限,比如: sqlmapapi: ERROR (file is not executable) 或者XXX: ERROR (file is not execu…...
C++时间复杂度详解
一、时间复杂度核心概念 1.1 为什么要研究时间复杂度 当处理大规模数据时(如计算斐波那契数列第57项),不同算法效率差异巨大: 递推解法:0.23秒完成 递归解法:需要2369秒(约40分钟)…...
【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析
一、Slider基础用法 在 XAML 中添加一个 Slider 控件,并设置其基本属性: <Slider Minimum"0" <!-- 最小值 -->Maximum"100" <!-- 最大值 -->Value"50" <!-- 初始值 -->Width&quo…...
PgSql 操作技巧
1、查询数据导出csv数据 \COPY (SELECT w.* from t_sys_warn w ) TO /home/cuadmin/warn_output.csv WITH CSV HEADER;2、导出sql Insert语句 pg_dump -U 用户名 -h 主机名 -p 端口号 -d 数据库名 --inserts -t 表名 > 导出文件.sqlpg_dump -U username -d dbname -t tabl…...
高效自动化测试:打造Python+Requests+Pytest+Allure+YAML的接口测试框架
一、背景 在快节奏的开发周期中,如何确保接口质量?自动化测试是关键。通过构建标准化、可复用的测试框架,能显著提升测试效率与准确性,为项目质量保驾护航[1][7]。 二、目标 ✅ 核心目标: ● 实现快速、高效的接口测试…...
设计模式文章汇总-Golang语言实现
Golang学习笔记_27——单例模式 Golang学习笔记_28——工厂方法模式 Golang学习笔记_29——抽象工厂模式 Golang学习笔记_30——建造者模式 Golang学习笔记_31——原型模式 Golang学习笔记_32——适配器模式 Golang学习笔记_33——桥接模式 Golang学习笔记_34——组合模式 Gola…...
深度学习PyTorch之13种模型精度评估公式及调用方法
深度学习pytorch之22种损失函数数学公式和代码定义 深度学习pytorch之19种优化算法(optimizer)解析 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用 深度学习pytorch之简单方法自定义9类卷积即插即用 实时…...
c#面试题整理4
1.stirng str"",string strnull,俩者有何区别 空字符串占有存储控件,null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化,与类的使用几乎一样 struct 不可继承 值类型 只能声明带…...
游戏辅助技术培训班教程【A001-初级班】
课程概述: 本教程为游戏辅助技术培训班的初级班课程,本章为第二阶段,旨在帮助学员系统掌握游戏辅助技术的核心技能。课程内容从C/C编程基础到高级内存操作、代码注入、DLL注入及MFC编程,全面覆盖游戏辅助开发的关键知识点。 课程…...
[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】
题目: 发现id处可以sql注入: 虽然输入id1;show databases;#没什么回显,但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs:列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…...
SSTI注入笔记
文章目录 基础知识SSTI利用条件验证SSTI是否存在验证console码SSTI类引用机制过滤的绕过.被过滤下划线被过滤中括号被过滤过滤了{{过滤了单引号或者双引号过滤了数字关键字被过滤 基础知识 python的模块引用,优先引用当前目录下的模块,比如from pwn imp…...
大模型中的剪枝、蒸馏是什么意思?
环境: 剪枝 蒸馏 问题描述: 大模型中的剪枝、蒸馏是什么意思? 解决方案: 大模型的剪枝(Pruning)和蒸馏(Distillation)是两种常见的模型优化技术,用于减少模型的大小…...
AI学习记录 - PPO算法草稿
returns 下面是两种方式生成returns的值,第一种好一点 delta计算方式不一样 通过一些计算方式,将未来的一些计算值,赋予到前面去,从而影响将前面的token和后面的token绑定到一起,从而实现每当生成一个tokend…...
蓝桥杯FPGA-ds1302驱动
1. 驱动的作用 调用SPI底层驱动,实现DS1302的驱动 2. 关键程序代码说明 1. 独热编码设置状态机的状态 使用独热编码会使系统更加高效稳定 localparam IDLE 8b0000_0001; localparam CE_HIGH 8b0000_0010; localparam CE_LOW 8b0000_0100; localparam…...
探索C/C++的奥秘之list
list和我们之前讲的东西都一样,list第二个参数是一个空间配置器,是一个内存池, 底层是一个带头双向循环列表。list可以重载[],但是效率太低了。 list的遍历不能使用下标[],因为它的空间不是连续的,可以使用…...
Linux第六讲:进程控制
Linux第六讲:进程控制 1.进程创建1.1回顾fork1.2写时拷贝 2.进程终止2.1exit与_exit 3.进程等待3.1进程等待的方法(wait和waitpid) 4.进程程序替换4.1自定义shell的编写4.1.1输出命令行提示符4.1.2获取用户输入的命令4.1.3命令行分析4.1.4指令…...
LabVIEW基于双通道FFT共轭相乘的噪声抑制
对于双通道采集的含噪信号,通过FFT获取复数频谱后,对第二通道频谱取共轭并与第一通道频谱相乘,理论上可增强相关信号成分并抑制非相关噪声。此方法适用于通道间信号高度相关、噪声独立的场景(如共模干扰抑制)。以下为L…...
疯狂安卓入门,crayandroid
系列文章目录 文章目录 系列文章目录第一组 ViewGroup 为基类帧布局约束布局 第二组 TextView 及其子类button时钟 AnalogClock 和 TextClock计时器 第三组 ImageView 及其子类第四组 AdapterView 及其子类AutoCompleteTextView 的功能和用法ExapndaleListViewAdapterViewFlipp…...
SQL Server查询计划操作符(7.3)——查询计划相关操作符(10)
7.3. 查询计划相关操作符 88)Sequence Project:该操作符通过对一个排序集合增加字段来进行计算。其基于一个或多个字段的值将其输入的数据行分成多个段,这样,该操作符每次输出一个段,这些字段显示为该操作符的参数。该…...
【Matlab仿真】如何解决三相交流信号源输出波形失真问题?
问题描述 如标题所示,在搭建simulink模型过程中,明明模型搭建的没有问题,但是输出的波形却不是理想的正弦波,影响问题分析。 问题分析 以三相交流信号源输出波形为例,输出信号理应为三相正弦量,但是仿真…...
[含文档+PPT+源码等]精品基于Python实现的校园小助手小程序的设计与实现
基于Python实现的校园小助手小程序的设计与实现背景,可以从以下几个方面进行阐述: 一、技术背景 1. Python与Django框架的优势 Python作为一种高级编程语言,以其简洁的语法、丰富的库和强大的社区支持,在Web开发领域得到了广泛…...
Nginx(基础安装+配置文件)
目录 一.Nginx基础 1.基础知识点 2.异步非阻塞机制 二.Nginx安装 2.1安装nginx3种方式 1.包管理工具安装(yum/apt) 2.本地包安装(rpm/dpkg) 3.源码编译安装 3.1 源码编译安装nginx流程(ubuntu) 1.…...
el-table中slot=“header“和#header的区别
在<el-table>中,自定义表头单元格内容,可以用<templat slot"header">或者<templat #header>插入自定义表头内容,但如果表头中含有变量,比如<template slot"header">{{name}}</tem…...
S19文件格式详解:汽车ECU软件升级中的核心镜像格式
文章目录 引言一、S19文件格式的起源与概述二、S19文件的核心结构三、S19在汽车ECU升级中的应用场景四、S19与其他格式的对比五、S19文件实例解析六、工具链支持与安全考量七、未来趋势与挑战结语引言 在汽车电子控制单元(ECU)的软件升级过程中,S19文件(也称为Motorola S-…...