scaling law入门

一、目录

  1. 定义
  2. 目标
  3. 案例实现

二、实现

  1. 定义
    scaling law 通常是通过实验来观察和验证的,而不是通过直接的代码实现。这是因为 scaling law 描述的是模型性能与资源(如模型大小、数据量等)之间的经验性关系,而不是一个可以通过编程直接实现的算法或模型。然而,你可以通过编写代码来运行一系列实验,收集数据,并分析这些数据以验证 scaling law。
    优点:
    提前预测最终模型效果,知道每次训练的大概能到什么程度,要是不及预期可以根据预算再进行调整。
    在小尺寸模型上做置信的实验,进行数据、算法策略验证,降低实验的时间、资源成本。
    在真正的大规模预训练中,随时监测模型效果是否符合预期。

  2. 目标
    1. 设计自己的模型参数符合压缩定律
    2. 通过压缩定律,以及小模型,预测大模型的性能。
    3. 缩放定律:C~6ND, 通过验证模型是否符合缩放定律,如果符合,则可以计算性能与参数量、 tokens数与参数量的关系。

  3. 案例实现
    案例1 . scaling law实操1
    首先准备充足的数据(例如1T),设计不同模型参数量的小模型(例如0.001B - 1B),独立训练每个模型,每个模型都训练到基本收敛(假设数据量充足)。根据训练中不同模型的参数和数据量的组合,收集计算量与模型性能的关系。然后可以进一步获得计算效率最优时,即同样计算量下性能最好的模型规模和数据大小的组合,模型大小与计算量的关系,以及数据大小与计算量的关系。
    参考: https://blog.csdn.net/Kaiyuan_sjtu/article/details/134658019

    计算量 flops 模型参数(去除embedding) 数据大小(token)
    实验流程:
    1 . 确定目标模型结构以及参数:首先,需要确定我们要预训练的模型的结构,以及我们期望的模型的参数有多大。这里有一个非常重要的估算,就是浮点运算量(FLOPs)C 、模型参数N 以及训练的token数 D之间存在关系:C=6ND
    transformer decoder:
    在这里插入图片描述

  4. 确定不同参数的模型
    确定了模型的框架以及期望训练的参数后,我们可以在多个比期望参数小的模型上做预训练,并且统计多个实验结果,如GPT3的图所示:随着训练的进行(计算量 C),小的模型出现收敛,大的模型loss也迅速下降。拟合小模型每条曲线的下降趋势(可能需要多次拟合),可以得到损失值L 与计算量C 的关系(幂次关系)。
    在这里插入图片描述 图3 计算量与性能的平滑缩放。验证集交叉熵损失随着计算量的增加呈现出幂律趋势
    训练统计完Loss、parameters、flops 三者之间的规律,可以总结出规律L=2.57C^(-0.048).
    3. 验证Loss 与C 的关系。
    需要制作两个图,拟合计算量Flops 、模型参数N, 以及计算量Flops 和训练的tokens数D 的关系。
    如:拟合两图的关系。
    在这里插入图片描述
    图4 计算量与模型参数、训练tokens数的关系
    这一步很重要,因为不是只得出类似上图3 L=2.57C^(-0.048). 就能证明自己得到的曲线满足Scaling Laws了。这就要用到C~6ND 这个公式了。因为我们知道,C~6ND 这个公式的成立和模型是否训练没有关系,即使模型没有被训练,也应该满足这个关系。

  5. 使用scaling law 定律
    从图3和图4分别得到了模型性能与计算量的关系、计算量与模型大小的关系、计算量与训练的tokens之间的关系。那么现在我们有两个问题需要解决:

    1. 预训练的模型在评估集上(验证集损失上)的性能是多少?
    2. 达到该性能至少需要多少tokens?

通过模型性能与计算量的关系以及模型大小与计算量的关系直接计算出模型大小与性能的关系。这样就可以直接通过具体的模型大小,得到模型在该规模下的具体性能(不考虑训练所需的tokens)
在这里插入图片描述
如果达到我们的期望,我们可以考虑第二个问题。我们可以通过模型性能与计算量的关系以及训练tokens数与计算量的关系直接计算出训练tokens数与性能的关系。在这里插入图片描述案例2 . scaling law实操2

Scaling Law(扩展定律)是指在计算机科学和计算机工程领域中,用于描述系统性能随着资源规模的增加而变化的规律。它是一种经验法则,用于预测系统在不同规模下的性能表现。 根据Amdahl's Law(阿姆达尔定律)和Gustafson's Law(古斯塔夫森定律),Scaling Law可以分为两种不同的模型: 1. Amdahl's Law(阿姆达尔定律):该定律由Gene Amdahl提出,用于描述在系统中存在串行部分时,系统性能的上限。根据阿姆达尔定律,当我们增加系统中可并行执行的部分的比例时,系统的加速比将受到串行部分的限制。公式表示为: Speedup = 1 / [(1 - P) + (P / N)] 其中,P表示可并行执行的部分所占比例,N表示处理器的数量。该定律表明,无论我们如何增加处理器数量,如果串行部分的比例不变,系统的加速比将受到限制。 2. Gustafson's Law(古斯塔夫森定律):该定律由John L. Gustafson提出,与阿姆达尔定律相反,它假设问题规模会随着系统资源的增加而增加。根据古斯塔夫森定律,当我们增加系统中的资源(如处理器数量)时,问题规模也会相应增加,从而保持相同的执行时间。公式表示为: Speedup = N + (1 - N) * P 其中,N表示处理器的数量,P表示可并行执行的部分所占比例。该定律表明,通过增加系统资源,我们可以处理更大规模的问题,并在相同的时间内完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值