当前位置: 首页 > news >正文

大模型论文:CRAMMING TRAINING A LANGUAGE MODEL ON ASINGLE GPU IN ONE DAY(效率提升)-final

大模型论文:CRAMMING: TRAINING A LANGUAGE MODEL ON ASINGLE GPU IN ONE DAY(效率提升)

文章地址:https://arxiv.org/abs/2212.14034


摘要

近年来,语言建模的研究趋势集中在通过大规模扩展来提升性能,导致训练语言模型的成本变得高昂,使得大多数研究人员和从业者难以承担。在多数研究者关注如何突破极限计算能力的同时,我们提出了一个相反的问题:在只有一块消费级GPU、仅训练一天的情况下,我们能取得多大的进展?

我们研究了在这种受限环境下,从零开始使用掩码语言建模(Masked Language Modeling, MLM)训练的基于Transformer的语言模型,其在下游任务上的表现。除了重新分析几乎整个预训练流程以适配该场景,并提供一种在性能上接近BERT的修改版流程外,我们还探讨了为何缩小模型规模会如此困难,以及在这种资源受限场景中哪些修改真正提升了性能

我们提供的证据表明,即便在这种受限的设置下,模型性能依然遵循在大规模计算环境中观察到的扩展定律(scaling laws)。以扩展定律为视角,我们对一系列近期训练方法和架构改进进行了分类,并讨论了它们在有限计算资源场景下的优劣与实际可行性(或不可行性)


研究背景

  • 大规模训练基于Transformer架构的机器学习模型,已在自然语言处理的多个子领域带来了突破性进展,包括语言理解和自然语言生成,这类模型的关键特性是:这类系统可以稳定扩展——随着模型参数数量和训练数据量的增加,性能会持续提升。这种性能的提升遵循各种幂律关系,从而确立了一个主导范式:扩展规模是性能提升的关键

  • 较为优秀的语言模型如BERT模型,虽然已广泛应用,但训练所需计算资源依然非常庞大,让许多研究者和从业者感觉训练语言模型遥不可及

  • 提出一个反其道而行的研究目标:探索如何有效“缩小”语言模型的训练规模,并研究在这种条件下的取舍。核心问题是:

    “在只有一块消费级GPU、训练时间只有一天的条件下,一个普通研究者最多能实现什么样的下游性能?”

  • 为了回答这些问题,本文提出了一个名为 “Cramming”(临时抱佛脚) 的挑战:在考试前一天,学习一个完整的语言模型

  • 本文的研究从多个方面分析训练流程,研究在缩小规模条件下哪些修改会真正提升性能。即使在这样受限的环境中,本文发现性能表现仍然遵循大计算资源环境下的扩展规律(scaling laws)

  • 总结来说,本文的研究的核心思想:挑战当前“越大越强”的范式,探索在极度有限的资源下(1块消费级GPU + 1天时间)是否可能训练出接近BERT性能的语言模型。研究的关键价值在于:

    • 为资源有限的研究者提供方法和希望;

    • 挑战扩展定律在低资源场景下的适用性;

    • 提供技术路线以优化训练流程,使其适应低成本环境;

    • 促进更广泛的研究可能性,如安全性、公平性、可解释性等,不依赖大模型。

  • 先说结论,本文最终训练出一些模型,其在GLUE任务上能达到相当可观的性能,甚至在部分任务中接近或超过了BERT,而所需资源却大大减少——真正实现了“穷人版预训练”

受限情况下的算力限制

  • 使用的算力应该遵守的规则如下:

    • 模型训练完全从零开始:必须从零开始训练一个任意大小的Transformer语言模型,使用掩码语言建模(Masked Language Modeling),不允许使用任何已有的预训练模型。
    • 禁止使用现有预训练模型的任何部分:这适用于训练流程中的所有环节。
    • 允许使用原始文本进行训练(不包括下游数据):可以根据策略选择采样方式和时机加快训练速度,但不能依赖任何预训练模型来进行采样
    • 原始数据的下载与预处理不计入总计算预算:可以使用CPU来构建分词器、分词和数据过滤,但不能包含任何形式的表示学习(如词嵌入预训练),除非将其计入训练时间。
    • 训练必须在单张GPU上进行,持续24小时
    • 下游性能评估基于GLUE基准任务:在GLUE上的微调仅限于目标任务数据的短期训练(例如5个epoch以内),并且超参数必须全局设定,不能单独调参。微调所需的计算资源不计入总预算。
  • 本文采用两类设置来进行实验:

    • 传统的 RTX2080Ti(2018年发布);

    • 较新款的 RTX A4000 和 RTX A6000(分别为2020年发布的工作站级GPU)。

    • 每张卡片都搭配 4 核CPU 和 32GB 内存

  • 这些限制主要是为了重新检验BERT的原始训练设定在有限算力下是否依然有效

  • 此外,本文排除了如下做法:

    • 模型蒸馏(distillation)(如Turc et al., 2019;Jiao et al., 2020),因为它依赖于已有模型;
    • 数据过滤(Kalimoorthi et al., 2021;Golchin et al., 2022),因为这依赖于大模型提取的表示;
    • 使用已有预训练模型的表示信息或压缩形式
  • 本文也不使用BERT的原始训练数据集,希望通过更好的数据清洗与质量控制来挖掘改进空间

  • GPU选择理由

    • RTX2080Ti 是天然的选择,因为它在BERT发布前就已存在;
    • RTX A4000 是更现代的消费级卡;
    • RTX A6000 是最强的单机工作站GPU之一。
  • 对微调阶段的限制:尽可能模拟BERT的下游任务设置,但施加额外限制,以避免通过复杂调参等方式“刷分”:

    • 禁止多轮下游任务预训练(如MNLI先训练,再训练其他任务);
    • 禁止在每个任务上进行高强度的超参数调优(例如使用Devlin et al., 2019;Liu et al., 2019中描述的优化方法);
    • 目的是避免利用过度计算优化下游任务性能
  • 总结来讲:

    • 核心目标是模拟一个资源极为受限的研究者,在不依赖任何现成模型、只用一天时间和一块GPU的条件下,能否复现出接近BERT水平的模型
    • 通过这些限制,研究团队试图把“大模型时代”的训练理念倒过来思考,聚焦于算法、训练策略本身在低资源下的有效性。

现有优化研究

训练BERT要花多长时间?

这个问题本质上很难回答,因为训练时间高度依赖于硬件、软件、优化程度等多种因素。不过,可以通过“运行期间最大FLOPs预算”(即给定时间内可执行的低精度浮点运算次数)来估算训练所需上限。然而,即便是高度优化的模型,实际训练中也很难达到该理论峰值,但该预算代表了完成训练任务所需的“付费”资源总额。

例如,在TPU上训练BERT的早期尝试显示,需要约11天的计算量才能实现类似效果。尽管随着软件优化的发展,训练所需时间已大幅缩短,但训练BERT依然需要整套GPU服务器或TPU分片,资源成本非常高。


高效BERT研究方向

有一些工作试图在接近BERT设定的基础上优化计算开销,如:

  • SqueezeBERT(2020):使用8张Titan RTX显卡,训练4天;
  • Sellam等(2022):指出原始BERT训练非常“极端”,并将其训练时间加倍后作为更合理的比较基准;
  • Izsak等(2021):试图在24小时内重现BERT,但使用的是完整服务器、8张V100 GPU,并采用BERT-large架构,序列长度128,并通过调参实现了优化。

本论文将其作为对比基线设定,因为它的资源消耗大约是本研究的15倍


高效Transformer架构研究回顾

近年来,大量研究聚焦于优化Transformer架构,包括:

  • T5结构修改与评估
  • 1.75天TPU资源评估:结果显示大部分修改并未带来显著性能提升;
  • Tay等人的扩展研究:在各种尺度下发现,大多数架构修改无法超越原始Transformer;
  • Scao等人:评估在大规模训练前准备的小改动(布局、嵌入、数据源等);
  • 极大规模训练如GPT-3和PaLM的架构:这类研究对改动也相当保守。

然而,这些工作大多依赖极大的计算资源,不适用于本文关注的受限场景。


扩展规律(Scaling Laws)

Kaplan的研究揭示了一个核心规律:Transformer模型的性能主要由参数数量决定。他们发现,在相同的计算预算下,可以推导出一个“最优模型尺寸”,但:

  • 模型越大,单位计算的效率越低;
  • 模型越大,训练越快;
  • 所以存在权衡点:大模型虽成本高,但进步也快。

这些规律对大型模型适用性良好,但在小规模条件下并不总能复现同样的趋势。即使如此,其总体逻辑依然具备参考价值


总结
  1. BERT训练成本极高:哪怕使用TPU/GPU,优化软件后训练成本仍是“天价级”。
  2. 原始BERT训练被认为是异常的,后续有研究提出更合理的训练时间与设置。
  3. 本研究对比对象(Izsak et al., 2021)消耗资源是本论文的15倍,体现本文研究的节俭性。
  4. 绝大多数架构优化在小规模训练中收效甚微,大多数提升集中在大模型、高资源场景。
  5. 扩展规律仍然适用:即使在小模型上不能完美复现,但其优化策略依旧可借鉴。

实验探索(Investigations)

本文在有限算力条件下,基于BERT模型的原始设置,测试和实现了大量结构、训练方法和数据改进策略

一、实验设置


实现细节(Implementation Details)
  • 实现框架: 所有实验都基于 PyTorch。为了避免“软件抽奖”带来的不公平比较,我们不使用特化实现,而是尽量依赖通用组件,仅启用 PyTorch 自动融合操作
  • 注意力机制优化: 结构选择完毕后,才重新启用 Dao等人(2022)提出的高效 attention kernel。
  • 精度策略: 使用 Micikevicius 等人(2018)提出的自动混合精度(AMP)策略,包括16-bit、32-bit 和 bfloat16 精度。

初始数据集设置

本文复刻BERT的设置,使用英文维基百科和 BookCorpus 数据

  • 数据预处理: 全部转换为小写,去除重音符号和非ASCII字符;
  • 分词方式: 使用 WordPiece,词表大小 215 = 32768 2 15 = 32768 215=327682^{15} = 32768 215=32768215=32768。较小词表表现较差,过大词表表现不稳定;
  • 序列设置: 所有数据被打包为128长度的随机片段,并用[SEP]分隔;不使用[CLS]
  • 训练配置: 单轮训练,使用 RTX2080Ti,每个模型的micro batch size 在64到96之间;
  • 结果: 满足了本文目标任务的训练和注意力计算效率。

二、 架构修改(Modifying the Architecture)

缩小模型的有效方式
  • 缩小模型容量是减小训练成本的关键。训练效率在每个模型大小范围内变化不大,但模型越小学习越慢(每步下降少),但可以跑更多步。
  • 这使得本文可以基于“每一步所需计算时间”来选择架构,而不是单纯追求大模型。

扩展规律在小规模下仍然成立
  • 虽然许多架构改进(如T5优化)对大模型有效,但在本文这种“极度资源受限”环境中,Kaplan等人提出的扩展规律依然适用
  • 不论 Transformer 类型如何,每个 token 的训练效率几乎只取决于模型规模,而不是架构细节
🔍 发现:
  • 即使使用不同结构(如funnel-transformer、递归结构、深层窄网络等),也无法突破 scaling law 限制
  • 因此,本文聚焦在“提升每步效率”的小优化上。

三、模块级优化分析

Attention Block:

  • 禁用所有 QKV 偏置项 → 提升前后向速度;
  • 不改变 attention head 数量,最终保留12个;
  • 替换 softmax、QKV 结构等无显著效果;
  • 实验 FLASH attention和傅里叶 attention也未提升性能;
  • rotary embedding、pre-norm 方式效果稳定,但改动影响小。

Feedforward Block:

  • 关闭线性层 bias提升效率;
  • 激活函数保留 GELU,尝试 GLU 有轻微改进;
  • 保持 FFN 参数不变,即使用 gating 也不增加维度。

Embedding:

  • 使用带缩放的正弦位置编码,优于learned或未缩放版本;
  • 解耦输入输出embedding无效;
  • 添加embedding block末端的LayerNorm。

Layer Structure:

  • 使用 pre-norm + layernorm表现稳定;
  • 替换为 RMSNorm 或 DropLayer 无明显增益;
  • pre-norm 的主要作用是支持更大学习率和更短的 warmup。

Head Block:

  • 可移除非线性 head,无性能下降;
  • 可去掉 decoder bias;
  • 支持稀疏预测机制节省显存;
  • 增加终结 LayerNorm 稳定训练。

实验总结:

本节揭示了一种 在资源受限条件下“最大化训练效率”的架构选择原则

  • 不要乱改结构,只要用最标准的架构,精简细节,性能就很好
  • 几乎所有突破 scaling law 的尝试都失败
  • 有效的方法是:调整细节,加速单步计算,保持模型规模不变

四、修改训练设置(Modifying the Training Setup)

本节探讨在“临时抱佛脚(Cramming)”场景下,标准BERT训练超参数如何影响性能,并对其进行优化。


训练目标(Objective)
  • 使用掩码语言建模(MLM),遮蔽率为15%,遵循Devlin等人(2019)原设定(10%保持原词,10%随机替换,80%掩码)。
  • 增大遮蔽率(如40%,Wettig et al., 2022)无效;
  • 移除20%的保留策略无影响;
  • 尝试其他损失函数(如MSE、L1)也无益处(Hui & Belkin, 2021)。

优化器(Choice of Optimizer)
  • 使用 Adam优化器,设置如下:

    • weight_decay = 0.01
    • β1 = 0.9, β2 = 0.98
    • ε = 1e-12
  • 加入梯度裁剪(clip value = 0.5);

  • 更换为一阶或高阶自适应优化器(如Shazeer & Stern, 2018)无效果(Liu et al., 2020a;Yadav, 2020);

  • 超参数轻微调整效果不明显,Adam表现最稳。


学习率调度(Learning Rate Schedule)
  • 采用 One-Cycle Schedule,峰值学习率 1e-3
  • 遵循Izsak等(2021)建议,按预算缩放学习率;
  • 尽管学习率曲线影响有限,但One-Cycle对预训练损失表现最好。

批大小调度(Batch Size Schedule)
  • 由于单GPU限制,采用micro-batch(如96),每16/42次前向传播后累计一次梯度;
  • RTX2080Ti 最终batch size为1536(最小loss)或4032(最好下游任务);
  • A4000/A6000卡对应128/256的micro-batch,累积至4096;
  • 增加训练早期的平均batch size有助于训练进度,效果优于adaptive策略。

禁用Dropout(Dropping Dropout)

  • 原始BERT模型使用Dropout防止过拟合;
  • 但在“只训练一轮”的cramming场景中,过拟合几乎不存在
  • 因此预训练时关闭Dropout,可提升梯度更新频率;
  • 只在下游微调阶段重新启用Dropout(0.1)
  • Token Drop与Length Curricula无效。

五、数据集优化(Optimizing the Dataset)

虽然架构优化受限于 scaling laws,但更高质量数据依然能显著提升性能


数据来源选择
  • 实验四种数据源:
    1. bookcorpus-wikipedia(基础);
    2. The Pile;
    3. Common Crawl 派生集;
    4. MNLI 专项处理数据;
  • 最终发现:The Pile 表现最佳(尤其在MNLI任务中);
  • 对C4数据进一步处理提升效果,包括:
    • 去重无效;
    • 压缩性过滤有效:过滤HTML、代码等“难压缩内容”;
    • 仅保留 字符数 < t × token数 的序列(如t = 0.3),提升下游性能。

其他数据策略优化
  • 基于词频对token序列排序(高频优先),提升训练稳定性;
  • 扩大batch size至4096 对C4效果好,对bookcorpus-wikipedia 效果一般;
  • 减少数据分布扰动,提升了训练稳定性。

词表大小(Vocabulary Size)
  • 原始词表大小:32768;

  • 理论上,词表越大:

    • 唯一词越多,训练难度增加;
    • 可压缩性变好(压进固定token budget中);
  • 实验发现:GLUE任务上,词表越大表现越好;

    • MNLI 任务在32768后趋于饱和;
    • 实验显示词表与表现正相关,故保留32768大小

总结与解读:

本节展示了 如何在“24小时+单GPU”的极端受限条件下,通过训练设置与数据预处理策略榨干性能

  • 关闭Dropout、优化batch调度、选择稳定优化器 是关键;
  • 数据优化是提升的主路径,包括:
    • 压缩性过滤;
    • token排序;
    • 更大batch size;
  • 词表不要随便减小,越大越好(直到饱和);
  • 再次确认:scaling law 固若金汤,改变结构没用,换数据最值钱

实验结果展示

实验展示一:Transformer架构与MLM损失

在这里插入图片描述

这张图展示了不同Transformer架构MLM损失的关系,左边是全局视图,右边是放大后专注于10^87 × 10^9之间的训练步骤。

分析与发现:
  1. 不同架构的训练曲线:
    各种架构(如BERT-base、Funnel、DeepNarrow等)都在相同的计算预算下进行训练,从图中可以看到:
    • 架构形状的变化对损失的影响较小,只有少数架构(如Funnel)在开始时损失下降较快。
    • 损失随训练时间的变化表现出明显的线性下降,表明尽管架构不同,核心的训练过程在较大程度上是相似的。
    • 缩小模型规模的效果: 较小模型的损失下降速度较慢,而大规模架构(如24层、FFN每4层)虽然速度较快,但最终的效果差异较小。
  2. 结论:
    • 结果表明,即使在架构上进行不同调整(如使用6层、8层、16层、24层等),大部分的训练效果在初期都表现出相似的下降模式,而模型规模的变化才是影响性能的关键因素。

实验展示二:学习率调度

在这里插入图片描述

该图展示了不同学习率调度策略对MLM损失(左)和步长(右)的影响。

分析与发现:
  1. 学习率调度的影响:
    • **One-Cycle学习率调度(紫色线)**表现出最佳的终期表现,表明这种快速的学习率调整方法能更有效地在训练后期收敛。
    • **其他学习率调度(如Triangular、Cosine Decay等)**对损失的影响较小,但One-Cycle显著改善了训练的稳定性和收敛速度。
  2. 结论:
    • One-Cycle调度能够快速加速训练,减少学习率的变化,进而提高训练的有效性。

实验三:数据集变体对下游任务的影响

在这里插入图片描述

这张表格展示了不同数据集格式批大小的组合在MNLI任务上的表现。

分析与发现:
  1. 数据集变体:
    • Bookcorpus-Wikipedia数据集上,去重和过滤操作显著提高了模型在MNLI任务上的表现,尤其是过滤后的数据集(如t=0.3)带来了较好的结果。
    • C4-Subset(去重和过滤)显著提高了训练效果,尤其是在过滤后,模型能从干净、低噪声的数据中获得更好的一致性。
  2. 批大小与表现的关系:
    • 在同一数据集上,增加**批大小(至4032或8064)**对训练稳定性和准确性有显著影响,尤其是在下游任务上。
  3. 结论:
    • 使用去重和过滤后的数据集,并结合更大的批大小(如4032或8064),能够提高模型在下游任务(如MNLI)上的准确性。

实验四:词汇表大小对模型性能的影响

在这里插入图片描述

这张图展示了词汇表大小GLUE ScoreMNLI任务准确率的影响,数据来自在Bookcorpus-Wikipedia数据集上训练的模型,采用了“临时抱佛脚(cramming)”训练模式。

分析与发现:
  1. 词汇表大小与MNLI准确率:
    • 词汇表增大(从5k到100k)时,MNLI准确率显著提高。
    • 在5k左右的词汇表时,MNLI的准确率低于0.79,随着词汇表的增大,准确率逐渐上升,最终趋于平稳,接近0.815。
    • 增加词汇表大小有助于提供更多的语言表达信息,使得模型能更好地理解和处理MNLI任务中的语义关系。
  2. 词汇表大小与GLUE Score:
    • GLUE Score的提升趋势也与MNLI准确率相似,但其表现略微不同。随着词汇表大小的增加,GLUE Score从0.73增加到接近0.77,呈现出相对平稳的增长曲线。
    • GLUE Score综合评估多个NLP任务,因此词汇表大小增加带来的好处不仅限于单一任务,它提高了模型的整体语言理解能力。
  3. 结论:
    • 词汇表越大,模型的整体性能越好,尤其在像MNLI这种对词汇量和语义理解要求较高的任务中表现尤为明显。
    • GLUE任务和MNLI任务均受益于较大的词汇表,更大的词汇表意味着更丰富的词汇和语义信息,可以更好地帮助模型进行语义推理和理解。

总结:

  1. Transformer架构:
    • 无论架构如何变化,模型规模是决定训练损失和性能的主要因素。
  2. 学习率调度:
    • One-Cycle调度能够显著提高训练效果,尤其是在训练后期。
  3. 数据集优化:
    • 数据集的去重与过滤能够大幅提升模型的训练质量,尤其是对于复杂任务(如MNLI)。
  4. 批大小:
    • 增大批大小(如4032或8064)显著提高了训练稳定性和最终的下游任务表现。

GLUE的微调性能

实验说明

  1. 数据集与基线
    • 排除了 WNLI 任务,采用了 GLUE 中的其他子任务。
    • 使用的是 MNLI 的“matched”集(m)
    • 所有模型均使用 BERT-base 的预训练检查点,在相同条件下进行微调。
  2. 训练设置
    • BERT-base:batch size 为 32,学习率为 2 × 1 0 − 5 2 \times 10^{-5} 2×105,训练 5 个 epoch。
    • crammed BERT(压缩版本):batch size 为 16,学习率为 4 × 1 0 − 5 4 \times 10^{-5} 4×105,采用 cosine decay。微调配置对已预训练的 BERT 没有显著改善。
  3. 表格说明
    • 表 3 与表 4 展示了不同训练方案下在各个 GLUE 子任务上的性能。
    • 引入了 Izsak2021 的训练配方(一天内完成训练),以及“crammed BERT”(压缩训练的 BERT)。
    • 发现压缩模型在大多数任务上表现仍然不错,尤其在 **大数据集(MNLI、QQP、QNLI、SST-2)**上。

性能比较

下表对比了不同模型和训练方法在各个 GLUE 子任务上的性能(GLUE-dev集):

在这里插入图片描述

训练设置说明GLUE 总分
BERT-base Fully trained完整预训练 + 微调80.9
BERT-base No Pretrain无预训练,仅微调45.5(差距极大)
单日训练对比:

在不同 GPU 上用一天训练,比较三种设置:

  1. BERT (normal protocol):用标准预训练流程但训练时间缩短。
  2. BERT (Izsak et al., 2021):按论文配方进行训练,适配 8 GPU 服务器。
  3. crammed BERT:单 GPU 压缩训练,性能优异。
最佳性能(A6000):
  • Crammed BERT:
    • MNLI: 83.9/84.1
    • SST-2: 92.2
    • GLUE 总分: 78.6

可以看到,在只用单 GPU 训练一天的条件下,压缩版本 BERT 的性能接近原始全训练 BERT 模型。


CoLA 表现异常分析

下表总结了 CoLA 与其他任务的对比结果:

在这里插入图片描述

模型CoLA不含 CoLA 的平均GLUE 平均
BERT-base56.584.080.9
Crammed (2080ti)47.282.178.3
Crammed (A4000)43.782.478.1
Crammed (A6000)44.582.978.6
结论与解释:
  • CoLA(语言可接受性任务)性能显著下降
    • 两个主要可能原因:
      1. 全局超参数不适合 CoLA,这一任务对超参敏感。
      2. CoLA 需要更长文本记忆过程,模型需要更多时间理解语言可接受性,而压缩模型可能没有足够容量支持。
  • 与其他研究对比也发现类似问题:轻量级模型在 CoLA 上表现差,这似乎是一个广泛存在的现象。

总结:压缩模型能否替代完整训练的 BERT?

  • 压缩 BERT绝大多数 GLUE 任务上都能接近甚至达到完整训练模型的表现,尤其是像 SST-2、MNLI、QQP、QNLI
  • 唯一的明显弱点是 CoLA 任务,可能由于模型容量限制和训练时间不足。
  • 在资源有限的场景中(单 GPU、快速训练),压缩 BERT 提供了一个非常实用的替代方案。

消融实验

  • 下表总结了所有在本研究中讨论的变化,展示了架构、训练和数据调整的影响。每一组变化都会通过将所有修改恢复为原始BERT设置来进行消融实验。

    在这里插入图片描述

  • 结果:

    • 架构修改: 进行最小的架构调整(如PreNorm层结构)允许更激进的学习率调度,从而显著提高了训练效果。架构的修改对平均GLUE得分贡献了约2个百分点。
    • 训练修改: 适当的训练修改(如移除dropout,使用恒定批大小4096等)带来了约1个百分点的提升。
    • 数据修改: 数据集的更改(如数据去重和调整数据处理方式)也有一定的贡献,但较小。

表中总结了消融实验的详细数据,展示了不同修改对模型性能的影响。所有实验都遵循了前述的训练协议,分别比较了完全训练的BERT模型与crammed模型的不同修改。


表格结果分析:
  • crammed BERT的性能接近原始BERT(完全训练),尤其是在MNLISST-2等任务上表现良好,尽管在某些任务(如CoLA)上存在显著下降。
  • 数据修改和最小架构调整带来了显著的性能提升,尤其是在CoLA任务中,数据去重和过滤处理对改善性能具有直接影响。
  • 总结:
    • 主要贡献来自于架构的修改,然后是训练过程中的小修改,最后是数据预处理的影响。

训练更久会发生什么

在这一节,作者验证了如果给定更多计算预算,是否可以通过更长时间的训练进一步提升性能。实验使用了8个A6000 GPU训练模型,时间为48小时。

在这里插入图片描述

  • 结果:
    • 新训练的模型在MNLISST-2任务中表现出显著提高,甚至超越了原始的BERT模型。
    • 尽管MNLISST-2任务有明显进展,但在其他任务(如CoLA)上,模型表现并未进一步改善。
表格结果分析:
  • 训练48小时后:
    • 在更多计算资源下(48小时训练),crammed BERT的性能得到了显著提升,尤其是在MNLI和SST-2任务上。
    • roBERTa-base相比,crammed BERT在MNLI任务上表现出色,但在CoLA等任务中未能取得大幅改善。
  • 总结:
    • 增加计算资源的情况下,crammed模型的训练表现有所提高,但其在某些任务(如CoLA)中的局限性依然存在,表明这些模型仍需要更多的文本进行学习和泛化。
      总结:*
    • 主要贡献来自于架构的修改,然后是训练过程中的小修改,最后是数据预处理的影响。

相关文章:

大模型论文:CRAMMING TRAINING A LANGUAGE MODEL ON ASINGLE GPU IN ONE DAY(效率提升)-final

大模型论文&#xff1a;CRAMMING: TRAINING A LANGUAGE MODEL ON ASINGLE GPU IN ONE DAY(效率提升) 文章地址&#xff1a;https://arxiv.org/abs/2212.14034 摘要 近年来&#xff0c;语言建模的研究趋势集中在通过大规模扩展来提升性能&#xff0c;导致训练语言模型的成本变…...

构建AI应用(持续更新)

常用的框架&#xff1a; dify、coze&#xff1a;低代码模块化编程 langchain&#xff1a;面向程序人员 常规的应用&#xff1a; 语音转文字ASR&#xff0c;文字转语音TTS&#xff0c;下一步问题建议&#xff0c; 旅游计划&#xff0c;买点提取&#xff0c;情感陪聊&#x…...

【JAVA】JVM 堆内存“缓冲空间”的压缩机制及调整方法

1. 缓冲空间是否可压缩&#xff1f; 是的&#xff0c;JVM 会在满足条件时自动收缩堆内存&#xff0c;将未使用的缓冲空间释放回操作系统。但需满足以下条件&#xff1a; GC 触发堆收缩&#xff1a;某些垃圾回收器&#xff08;如 G1、Serial、Parallel&#xff09;在 Full GC …...

NLP高频面试题(三十八)——什么是LLM的灾难性遗忘?如何避免灾难性遗忘?

近年来,大语言模型在人工智能领域取得了显著进展。然而,随着模型的不断更新和新任务的引入,出现了一个重要的问题,即灾难性遗忘(Catastrophic Forgetting)。灾难性遗忘指的是大模型在连续学习新知识或新任务时,先前掌握的旧知识会迅速被覆盖或遗忘,从而导致模型在旧任务…...

Keepalived+LVS高可用集群实战:从原理到落地

在分布式系统架构中&#xff0c;服务的高可用性和负载均衡是保障业务连续性的核心要素。本文通过一次实验&#xff0c;深入探索了基于KeepalivedLVS的高可用负载均衡集群方案&#xff0c;带您从零开始理解原理、动手实践配置&#xff0c;并验证其可靠性。 一、实验目标 本次实…...

【JVM】JVM调优实战

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…...

Linux系统安全-开发中注意哪些操作系统安全

Hey小伙伴们~&#x1f44b; 在Linux开发中&#xff0c;确保操作系统的安全真的太太太重要啦&#xff01;&#x1f6e1;️ 今天就来和大家聊聊几个超关键的注意事项&#xff0c;记得拿小本本记下来哦&#xff01;&#x1f4dd; 1️⃣ ‌用户管理与权限控制‌&#x1f465; 合理…...

Qt问题之 告别软件因系统默认中文输入法导致错误退出的烦恼

1. 问题 使用Qt进行研发时&#xff0c;遇到一个问题&#xff0c;当在系统默认输入法中文&#xff08;英文输入法或者搜狗就不会触发闪退&#xff09;的情况下&#xff0c;选中QTableWidget控件&#xff08;QTableWidgetItem有焦点&#xff0c;但是不双击&#xff09;&#xff…...

2025 年“认证杯”数学中国数学建模网络挑战赛 D题 无人机送货规划

在快递和外卖等短途递送小件货物的业务中&#xff0c;无人机或许大有可为。现 有一个城市的快递仓库准备使用若干无人机进行派件&#xff0c;设有若干架无人机从 仓库出发&#xff0c;分别装载了若干快递包裹。每架无人机装载的包裹的收货地点会 被排列为一个目的地列表&#x…...

【2025年认证杯数学中国数学建模网络挑战赛】A题解题思路与模型代码

【2025年认证杯数学建模挑战赛】A题 该题为典型的空间几何建模轨道动力学建模预测问题。 ⚙ 问题一&#xff1a;利用多个天文台的同步观测&#xff0c;确定小行星与地球的相对距离 问题分析 已知若干地面天文台的观测数据&#xff1a;方位角 (Azimuth) 和 高度角 (Altitude)&…...

Redhat红帽 RHCE8.0认证体系课程

课程大小&#xff1a;7.7G 课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/90546064 更多资源下载&#xff1a;关注我 红帽企业 Linux 系统的管理技能已经成为现代数据中心的核心竞争力。 Linux 在支持混合云、跨物理服务器、虚机、私有云和公共云计…...

Python 实现的运筹优化系统数学建模详解(最大最小化模型)

一、引言 在数学建模的实际应用里&#xff0c;最大最小化模型是一种极为关键的优化模型。它的核心目标是找出一组决策变量&#xff0c;让多个目标函数值里的最大值尽可能小。该模型在诸多领域&#xff0c;如资源分配、选址规划等&#xff0c;都有广泛的应用。本文将深入剖析最大…...

MySQL快速入门

MySQL快速入门 SQL语句 SQL语句概述 1.SQL 是用于访问和处理数据库的标准的计算机语言。 2.SQL指结构化查询语言&#xff0c;全称是 Structured Query Language。 3.SQL 可以访问和处理数据库。 4.SQL 是一种 ANSI&#xff08;American National Standards Institute 美国…...

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求&#xff0c;但是因为网络等原因不是那么好用&#xff0c;这里留了一个给ubuntu的安装包&#xff0c;网络好的话也提供了在线安装方式 安装 nvidia-docker2 1 离线安装 &#xff08;推荐&#xff09; unzip解压后进入目录 dpkg -i *.d…...

【自然语言处理】深度学习中文本分类实现

文本分类是NLP中最基础也是应用最广泛的任务之一&#xff0c;从无用的邮件过滤到情感分析&#xff0c;从新闻分类到智能客服&#xff0c;都离不开高效准确的文本分类技术。本文将带您全面了解文本分类的技术演进&#xff0c;从传统机器学习到深度学习&#xff0c;手把手实现一套…...

云原生运维在 2025 年的发展蓝图

随着云计算技术的不断发展和普及&#xff0c;云原生已经成为了现代应用开发和运维的主流趋势。云原生运维是指在云原生环境下&#xff0c;对应用进行部署、监控、管理和优化的过程。在 2025 年&#xff0c;云原生运维将迎来更加广阔的发展前景&#xff0c;同时也将面临着一系列…...

Windows系统Python多版本运行解决TensorFlow安装问题(附详细图文)

Windows系统Python多版本运行解决TensorFlow安装问题&#xff08;附详细图文&#xff09; 摘要 TensorFlow 无法安装&#xff1f;Python版本太高是元凶&#xff01; 本文针对Windows系统中因Python版本过高导致TensorFlow安装失败的问题&#xff0c;提供三种降级解决方案&…...

银行业务知识序言

银行业务知识体系全景解析 第一章 金融创新浪潮下的银行业务知识革命 1.1 数字化转型驱动金融业态重构 在区块链、人工智能、物联网等技术的叠加作用下&#xff0c;全球银行业正经历着"服务无形化、流程智能化、风控穿透化"的深刻变革。根据麦肯锡《2023全球银行业…...

《深度剖析分布式软总线:软时钟与时间同步机制探秘》

在分布式系统不断发展的进程中&#xff0c;设备间的协同合作变得愈发紧密和复杂。为了确保各个设备在协同工作时能够有条不紊地进行&#xff0c;就像一场精准的交响乐演出&#xff0c;每个乐器都要在正确的时间奏响音符&#xff0c;分布式软总线中的软时钟与时间同步机制应运而…...

RK3588 android12 适配 ilitek i2c接口TP

一&#xff0c;Ilitek 触摸屏简介 Ilitek 提供多种型号的触控屏控制器&#xff0c;如 ILI6480、ILI9341 等&#xff0c;采用 I2C 接口。 这些控制器能够支持多点触控&#xff0c;并具有优秀的灵敏度和响应速度。 Ilitek 的触摸屏控制器监测屏幕上的触摸事件。 当触摸发生时&a…...

pgsql:关联查询union(并集)、except(差集)、intersect(交集)

pgsql:关联查询union(并集)、except(差集)、intersect(交集)_pgsql except-CSDN博客...

模型材质共享导致的问题

问题&#xff1a;当我选中其中某个网格模型并设置color的时候&#xff0c;相同种类的颜色都被改变&#xff0c;但是打印我选中的网格模型数据其实只有一个。 导致问题的原因&#xff1a; 加载Blender模型修改材质颜色 Blender创建一个模型对象&#xff0c;设置颜色&#xff0…...

ThinkpPHP生成二维码

导入依赖 composer require endroid/qr-code 封装成函数&#xff0c;传入二维码包含的值&#xff0c;存储路径&#xff0c;二维码大小&#xff0c;二维码边距 private function getCode($content, $directory, $size 300, $margin 10){// 创建二维码对象// $content: 二…...

FLINK框架:流式处理框架Flink简介

在大数据时代&#xff0c;数据的价值不言而喻&#xff0c;谁能利用好数据&#xff0c;谁就掌握了整个行业的先机。面对海量的数据&#xff0c;如何处理数据成为了一个难题。除了海量数据外&#xff0c;实时性也是一个重要的课题&#xff0c;所以流式数据处理便登上了技术舞台&a…...

使用Python从零开始构建生成型TransformerLM并训练

在人工智能的浩瀚宇宙中&#xff0c;有一种神奇的生物&#xff0c;它拥有着强大的语言魔法&#xff0c;能够生成各种各样的文本&#xff0c;仿佛拥有无尽的创造力。它就是——Transformer 模型&#xff01;Transformer 模型的出现&#xff0c;为人工智能领域带来了一场“语言魔…...

xtrabackup备份

安装&#xff1a; https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-30/binary/tarball/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz?_gl1*1ud2oby*_gcl_au*MTMyODM4NTk1NS4xNzM3MjUwNjQ2https://downloads.perc…...

2.3 Spark运行架构与流程

Spark运行架构与流程包括几个核心概念&#xff1a;Driver负责提交应用并初始化作业&#xff0c;Executor在工作节点上执行任务&#xff0c;作业是一系列计算任务&#xff0c;任务是作业的基本执行单元&#xff0c;阶段是一组并行任务。Spark支持多种运行模式&#xff0c;包括单…...

【Pandas】pandas DataFrame head

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行 pandas.DataFrame.head pandas.DataFrame.head 是一个方法&#xff0c;用于返回 DataFrame 的前几行。这个方法非常有用&#xff0c;特别是在需要快速查看 DataFrame 的前…...

从递归入手一维动态规划

从递归入手一维动态规划 1. 509. 斐波那契数 1.1 思路 递归 F(i) F(i-1) F(i-2) 每个点都往下展开两个分支&#xff0c;时间复杂度为 O(2n) 。 在上图中我们可以看到 F(6) F(5) F(4)。 计算 F(6) 的时候已经展开计算过 F(5)了。而在计算 F(7)的时候&#xff0c;还需要…...

鸿蒙HarmonyOS埋点SDK,ClkLog适配鸿蒙埋点分析

ClkLog埋点分析系统&#xff0c;是一种全新的、开源的洞察方案&#xff0c;它能够帮助您捕捉每一个关键数据点&#xff0c;确保您的决策基于最准确的用户行为分析。技术人员可快速搭建私有的分析系统。 ClkLog鸿蒙埋点SDK通过手动埋点的方式实现HarmonyOS 原生应用的前端数据采…...

HarmonyOS:HMPermission权限请求框架

前段时间利用空余时间写了一个权限请求库&#xff1a;HMPermission。 一&#xff0c;简介 HMPermission 是鸿蒙系统上的一款权限请求框架&#xff0c;封装了权限请求逻辑&#xff0c;采用链式调用的方式请求权限&#xff0c;简化了权限请求的代码。 二&#xff0c;使用方法 …...

【书籍】DeepSeek谈《持续交付2.0》

目录 一、深入理解1. 核心理念升级&#xff1a;从"自动化"到"双环模型"2. 数字化转型的五大核心能力3. 关键实践与案例4. 组织与文化变革5. 与其它框架的关系6. 实际应用建议 二、对于开发实习生的帮助1. 立刻提升你的代码交付质量&#xff08;技术验证环实…...

Spring AOP 扫盲

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

银河麒麟v10(arm架构)部署Embedding模型bge-m3【简单版本】

硬件 服务器配置&#xff1a;鲲鹏2 * 920&#xff08;32c&#xff09; 4 * Atlas300I duo卡 参考文章 https://www.hiascend.com/developer/ascendhub/detail/07a016975cc341f3a5ae131f2b52399d 鲲鹏昇腾Atlas300Iduo部署Embedding模型和Rerank模型并连接Dify&#xff08;自…...

如何通过流程管理优化企业运营?

流程管理的本质是“用确定性的规则应对不确定性的业务”。 那么&#xff0c;具体该如何通过流程管理来优化企业的运作呢&#xff1f;以下是一些关键步骤和思路&#xff0c;或许能给到一些启发。 1. 从流程梳理开始&#xff1a;摸清现状&#xff0c;找准问题 想要管理好企业的…...

ZYNQ笔记(四):AXI GPIO

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用 AXI GPIO IP 核实现按键 KEY 控制 LED 亮灭&#xff08;两个都在PL端&#xff09; 一、介绍 AXI GPIO (Advanced eXtensible Interface General Purpose Input/Output) 是 Xilinx 提供的一个可…...

Java学习手册:JVM、JRE和JDK的关系

在Java生态系统中&#xff0c;JVM&#xff08;Java虚拟机&#xff09;、JRE&#xff08;Java运行时环境&#xff09;和JDK&#xff08;Java开发工具包&#xff09;是三个核心概念。它们共同构成了Java语言运行和开发的基础。理解它们之间的关系对于Java开发者来说至关重要。本文…...

Java 并发-newFixedThreadPool

前言 为什么选择使用多线程&#xff1f;一种场景是在数据和业务处理能力出现瓶颈时&#xff0c;而服务器性能又有空闲&#xff0c;通常是cpu空闲&#xff0c;这时使用多线程就能很好的解决问题&#xff0c;而又无需加硬件&#xff0c;实际使用中&#xff0c;线程池又是最为常用…...

C# task任务异步编程提高UI的响应性

方式1&#xff1a;async/await模式 private async void button1_Click(object sender, EventArgs e){try{var result await Task.Run(() > CalculateResult());label1.Text result.ToString();}catch (Exception ex){label1.Text $"Error: {ex.Message}";}}pri…...

Spring Bean生命周期执行流程详解

文章目录 一、什么是Spring Bean生命周期&#xff1f;工作流程图&#xff1a;二、Bean生命周期执行流程验证1.编写测试代码验证结果2.源码追溯Bean初始化回调过程 一、什么是Spring Bean生命周期&#xff1f; Spring Bean生命周期是指从Bean的创建到销毁的整个过程&#xff0c…...

windows 安装 pygame( pycharm)

一、安装流程 1.查看python版本 2.检查是否安装pip 3.下载pygame安装文件 下载地址&#xff1a;https://pypi.org/project/pygame/#files 选择合适的版本&#xff08;我选择的是 python3.7 windows 64bit&#xff09;&#xff1a; 4.使用pip安装pygame 将下载好的whl文件移动到…...

Envoy网关实例异常重启排查总结

一、事件背景 于10月24日凌晨业务租户有业务应用发版上线&#xff0c;中午收到pod连续5分钟重启严重告警&#xff0c;登录管理节点查看异常重启的应用网关pod日志&#xff0c;存在内核段错误报错信息导致进程终止并触发监控检查异常并重启; 该报错主要是访问的内存超出了系统…...

WinForm真入门(13)——ListBox控件详解

WinForm ListBox 详解与案例 一、核心概念 ‌ListBox‌ 是 Windows 窗体中用于展示可滚动列表项的控件&#xff0c;支持单选或多选操作&#xff0c;适用于需要用户从固定数据集中选择一项或多项的场景‌。 二、核心属性 属性说明‌Items‌管理列表项的集合&#xff0c;支持动…...

【Linux网络编程】UDP Echo Server的实现

本文专栏&#xff1a;Linux网络编程 目录 一&#xff0c;Socket编程基础 1&#xff0c;IP地址和端口号 端口号划分范围 理解端口号和进程ID 源端口号和目的端口号 理解Socket 2&#xff0c;传输层的典型代表 3&#xff0c;网络字节序 4&#xff0c;Socket编程接口 s…...

8.3.5 ToolStripContainer(工具栏容器)控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 ToolStripContainer控件是一个容器&#xff0c;可以包含菜单和工具条、状态栏。 在设计窗体中放入一个ToolStripContainer&#xff1…...

代码随想录-06-二叉树-05.05 N叉树的层序遍历

N叉树的层序遍历 #模板题 题目描述 给定一个 N 叉树&#xff0c;返回其节点值的_层序遍历_。&#xff08;即从左到右&#xff0c;逐层遍历&#xff09;。 树的序列化输入是用层序遍历&#xff0c;每组子节点都由 null 值分隔&#xff08;参见示例&#xff09;。 具体思路 …...

【NEPVR】《A Lightweight Palm Vein Recognition Algorithm NEPVR》

[1]马莉,刘子良,谭振林,等.一种轻量级掌静脉识别算法NEPVR[J].计算机技术与发展,2024,34(12):213-220.DOI:10.20165/j.cnki.ISSN1673-629X.2024.0248. 文章目录 1、背景2、相关工作3、创新点4、NEPVR 手掌静脉识别算法5、实验结果及分析6、总结 / 未来工作 1、背景 手掌静脉独…...

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记1

&#xff08;适合GIS开发入门者&#xff0c;通俗解析核心知识点&#xff09; 目录 一、ArcGIS Engine是什么&#xff1f; 二、ArcGIS Engine能做什么&#xff1f; 三、ArcGIS Engine与ArcObjects的区别 四、开发资源与学习路径 五、对象模型图&#xff08;OMD&#xff09;…...

架构师论文《论模型驱动软件开发方法在智能制造转型实践中的应用》

摘要&#xff1a; 本人现任某大型装备制造企业智能制造研究院首席架构师&#xff0c;主导集团级数字化工厂平台建设。面对多品种小批量生产模式下普遍存在的交付周期超预期&#xff08;平均延期21天&#xff09;、设备综合效率OEE不足65%的痛点&#xff0c;我司于2021年启动基…...

探索MCP.so:AI生态的创新枢纽

今天在研究MCP时发现了一个还不错的网站,分享给大家。后续会基于这些mcp servers做一些有趣的应用。 在人工智能飞速发展的当下,AI与各类工具、数据源的协同合作变得愈发关键。MCP.so这个平台,正悄然成为AI领域的重要枢纽,为众多开发者和AI爱好者打开了新的大门。 MCP,即…...