大模型调研之 OPT-175B是如何炼成的(过程,细节,参考链接等)

杂谈

现在是2023年年中,WAIC世界人工智能大会刚结束不久。
要说WAIC,有种“盛名之下其实难副”之感。诺大个会场,八成都在大谈特谈大模型与gpt,不过部署一个据说要大洋上亿。尽管貌似中国还没有相关货真价实的学术成果,但泡沫已初见。
跟一位技术公司经理提起此事,亦有同感。2019年,彼时WAIC观展还需要3000块,如今观展免费,然而此时此刻,一如彼时彼刻。
在这里插入图片描述然而老板自有老板的思量。
上亿的大模型,也许过半的开销是要回馈给甲方或有关部门的。
大环境如此。
既然老板有安排,闲话少说,且把大模型训练的资料整理一下
后续更新。。

前言

为给大家提供相关决策与讨论依据,我整理了这篇文档供参考。
现有公开的论文中,没有涉及到chatgpt3.5/chatgpt4具体训练的方法,chatgpt4的所谓论文则更像是一个产品广告,无怪乎有不少人称OpenAI公司为closeAI。近期更有诸如chatgpt依靠MOE(混合专家系统)的传言,更使chatgpt的训练方法显得扑朔迷离。

这里对大模型训练方法的探讨,是基于斯坦福的一个大模型(OPT-175)的训练讨论会。由于openAI不公开chatgpt技术细节,这个研讨会的相关技术细节、实现过程、投入资源、遇到的问题等等信息就显得非常具有参考价值。
另外,在2023/07/20,Meta发布Llama 2,开源免费研究/商用。有关内容另外再做分析。

训练过程

Setup(team of 5 engineers, set up in about September 2021)

Train a 175B LLM(Dense, autoregressive, decoder-only Transformer) in about 3 months using 1024 80G A100 GPUs(是的,1024块A100卡)

  • With stanford team’s resource/efficiency, needed about 33 days of continuous training(assuming 0 failures/restarts)in order to go through 300B tokens
  • 除了云服务器客服,无专门设备运维团队
  • 使用其实验室当时能找到的所有数据,很明显很多时候模型是undertraining的(数据不太够,训练不足)
  • 由于超参数与业内其他几家FAIR NLP groups(Microsoft/NVIDIA/OpenAI)所公开的超参数有所不同,所以不太清楚如何设置是最好的

October 2021

  • Run 1: 使用FAIR NLP groups(公开的资料/论文)所用的参数设置(毕竟也没有别的可参考)。结果,效果不太理想
  • Run 2: 将weight decay从0.01增至0.1,训练loss进了平台期,效果不理想
  • Run 3: 开始修改更多GPT-3/Megatron-LM的参数
    • 设置global grad norm clipping至1.0
    • Adam优化器beta2从0.98改至0.95
    • Adam优化器epsilon从1e-8改至1e-6
    • 并行执行时发现代码中有bug。教训:要先在小规模数据上试跑,以便提早发现代码bug

Runs 4-10: 各种超参数调整

  • Run 4: 回滚张量并行计算代码,回滚weight decay参数至0.01
  • Run 5: 开始clip gradients, 设置weight decay至0.1, 增加warmup的步数(steps)
  • Run 6: 终于修复了张量并行计算的bug,按Run 4设置重跑,但clipping保持1.0
  • Run 7: 表现仍不太满意,更多参数回滚
    • weight decay改回0.1,更多的warm up(步数),跳过最后(部分)batch
  • Run 8,9为提高训练稳定性,更多参数调整
  • Run 10, batch size加倍(2M->4M)
    • 没啥不同,保持2M(这样可以让优化步数多一点,优化过程更温和(团队人员自己都有点存疑的观点)?)

November 2021

  • Run 11: Lets go, 经过之前的折腾,大家终于选定了一组认为可能还不错的参数设置

    • 2M batch size
    • FP32 Adam
    • Tensor parallel(8x MP)
    • 新data,来自实验29(之前的数据集中存在问题,曾额外添加了转义字符,于是模型训练时通过找转义字符而降低了loss,而非真正学到东西)
    • 训练中学习positional embedding。因为不太有信心学到positional embedding,所以通过正弦init(sinusoidal init)学习positional embedding,使之与原transformer论文相符合。
    • weight decay, 0.05
    • LR of 3+4, end LR of le-5。学习率开始时高,后期变低以避免训练变得不稳定
    • No dropout on embeddings
    • Normformer (impact on grad norm is making earlier layers be more similar with later layers)
    • Gradient pre-divide factor: 32(Naman has been running with this),目的是实现局部梯度积累(local gradient accumulation)
    • Clip (12 norm): 2.5(后被证实是重要的,当时并不清楚这样的重要性)
  • Run 11.(1-5): Off to a rocky start…

    • Saw instabilities immediately within a few hundred steps(初始学习率设置偏高导致训练不稳定)
      • GPT-3 trained with 6e-5 LR
    • Run 11.1: Lowered LR from 3e-4–>7.5e-5
    • Run 11.2: Lowered gradient clipping threshold from 2.5–>1.5
    • Run 11.3: Relaunched after uncorrectable ECC error
    • Run 11.4: Trying to speed things up by running our validation loop less frequently
    • Run 11.5: Grad norm still spiking, lowered clip from 1.5–>1.0
  • Run 11.(6-10):事态急转直下(going downhill)

    • 一旦出现训练不稳定问题,就回滚,调参,再继续训
    • Run11.6, skip batches when grad norm>1.0(绕过不稳定数据), 效果不佳
    • Run 11.7, New data shared, increase weight decay to 0.1(from 0.05), beta2从0.98调至0.95
    • Run 11.8, keep beta2 0.95, revert weight decay back to 0.05, no clipping
    • Run 11.9, turn clipping back on, LR降至6e-5, 其他与11.7一致
    • Run 11.10,
      • 借鉴了这个等式,转换了一下,提高稳定性
      n * (A dot B) === (sqrt(n) * A) dot (sqrt(n) * B)
      
      • 将Gelu替换为Relu,因为Gelu的公式里有个x^3,可能造成不稳定
      • 此时训练继续下去了,但仍不清楚模型是否学到了东西,这是因为“Training with FP16(not mixed-precision/no copy of weights in FP32);Use loss-scaling to try and preserve small gradient values;Scale up loss when we haven’t overflowed in a while (no ‘inf’ grads);Scale down loss when we start overflowing”

Mid Nov; Run 12.00:Beginning of the “final” run

  • To recap: need at least 33 days to train a 175B model over 300B tokens using 992 80GB AIOOs

    • Also need time/compute resources to benchmark the model before EOY
  • No strong evidence that settings from the Run ll.xx lineage would work

  • Match GPT-3/Megatron codebase as closely as possible

    • Settings in both places seem consistent with one another
    • Some evidence that these settings can be used on larger models “successfully”
  • Overall weight initialization updated:

    • Removed extra layer norms from Normformer setup
    • Removed embedding scaling
    • Gaussian init for learned positional embeddings (instead of sinusoidal init),此处观点是,也许较小的标准差有助于提高稳定性
    • Weight decay = 0.1
    • Clipping = 1.0
    • Adam beta2 = 0.95
    • Max LR of 1.2e-4
  • Run 12.(01-15): Mainly “systems” issues

    • Lost GPU(12.01, 12.10)
    • CUDA errors (12.02, 12.03, 12.04, 12.09, 12.15, 12.17)
    • Job hanging (12.05, 12.06)
    • NCCL error (12.08)
    • Job slowdown (12.11)
  • Run 12.(17-34):All the instabilities…

  • For Run 12.16:

    • Reduce clipping to 0.3
    • Backup plan:reset Adam state and do fresh warmup
  • Runs 12.(17-34):

    • Hardware issues (ECC errors, lost GPU, high#DRAM correctables, etc.)
    • Mysterious job hanging issues
    • Blob storage issues
    • Gradient overflow issues
      • Used loss scaling state “reset” with restarts to try and circumvent the same fate
  • Run 12.(35-40): “Fake SGDW” side-quest

    • Given training instabilities, we got a bad idea to hot-swap in SGDW(without momentum)and get rid of Adam entirely (Runs 12.(35-40))
      • Tried to be clever by “approximating SGD” via setting betal=O, epsilon to 100(and increase LR by the same 1OOx factor)
      • Realized betal was not actually set to O in these runs, results from these runs were completely void
    • Real SGD attempt with Run 12.41, but did not seem to improve anything
    • But we actually wanted to do SGDW but had a weight decay bug, so we only had SGD
    • LR was likely also too low
  • Run 12.42: Back to AdamW with lower LR

    • Beginning of the “restart and Iower LR repeatedly” cycle
    • Run 12.42: Lowered (max) LR from 9.0e-5 to 6.0e-5 to match GPT-3
    • Run 12.44: Lowered LR to 5.4e-5
    • Run 12.46: Lowered LR to 4.0e-5
    • Run 12.51: Increased LR to 6.0e-5
    • Run 12.51: Lowered LR to 4.5e-5
    • Run 12.53: Lowered LR to 3.Oe-5

OPT-175B survived 143k steps

opt175survive

问答环节

Q:如果你现在重新回到训练开始之前,你再希望改善什么。

A:Much Much more data。超参什么的都是浮云,关键还是训练数据。另外,发现bfloat16是最适合的格式也是里程碑。

Q:为什么这个项目团队只有5个人?是因为老板认为5个人就足够,还是因为传说中的世界上只有约200人能够训练这些大型模型,而你们是其中之一。

A:途中有很多其他人员协助,但是核心团队确实只有5人。因为我们跑一段训练就要几个星期,而每次只跑一段训练,太多人就浪费了。

Q:一天中你有多少时间是焦虑地盯着Loss Curve?

A:必须成功的压力很大,确实很多时间都盯着最新的Loss(我猜测比盯着K线图还紧张),试图在失败之前就介入,免得浪费更多时间,还有很多时间在解决硬件问题和debug代码。

Q:我个人训练过2.7B的模型,这个规模的模型很容易就搞定,参数数量到达哪个临界点之后,模型会变得非常不稳定?

A:不确定,根据我浅薄的经验,以及Google等的论文,可能临界点是70B。

Q:怎么解决硬件问题?

A:和云工程师一起解决。老黄的A100相比V100来说太不稳定了,希望未来能解决。

提问者补充:传闻最新的H100更多问题,祝你好运。

Q:这个项目怎么定义成功?

A:当时没什么成功的概念,只是单纯地希望Loss低到一定程度,以及效果比benchmark好。在做项目的时候还没精力和当时的竞争模型做比较,只专注于loss loss loss。现在回过头来才有空跟竞品比较。

Q:你刚才强调数据质量,并说如果当初能有更好的数据,模型训练的效果也会更好。既然数据质量这么重要,如何定义数据的好与坏?

A:书、论文和代码直觉上最好质量的数据。对于特定领域的模型,比如编程模型,一看就知道哪些是好的代码;但对于这些大型通用模型来说,我们不知道怎么定义数据的好坏,要等最终模型训练出来之后才知道喂的数据好不好。

Q:出现错误的时候,你怎么知道是什么原因导致的?有可能是bug,有可能是参数问题,有可能是硬件故障。

A:没有好的方法,只能不停地试错。我们还曾经遇到晶体管的问题,完全没有办法复现问题。完全没有通用的方法,只能通过失败积累经验,但到下一代机子H100时,积累的这些经验又没用了,要从头开始试错。

Q:为什么越新型号的机子越不稳定?

A:你要问老黄。如果老黄的驱动是开源的,我们还能帮他debug,很可惜不是,所以爱莫能助。

Q:现在有很多大鳄在训练这些大模型,你觉得你们的项目的特别之处在哪里?

A:个人而言,最重要的是让训练大模型的经验教训流传于世,让世人少走弯路。(真是女菩萨) AI 会改变世界,但我不希望改变世界的力量只掌握在极少数人手上,大家一起携手发展才是硬道理。希望金主Facebook还能继续支持类似的这种开源项目。

Ref

  • 代码仓(码云), https://gitee.com/mirrors/OPT-175B/tree/main
  • 论文, https://arxiv.org/pdf/2205.01068.pdf
  • 训练笔记与记录, https://github.com/facebookresearch/metaseq/tree/main/projects/OPT/chronicles
  • Logbook, https://github.com/facebookresearch/metaseq/blob/main/projects/OPT/chronicles/OPT175B_Logbook.pdf
  • ChatGPT怎么建立私有知识库,https://www.zhihu.com/question/596838257

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

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

相关文章

这半年说了近乎一辈子的话:关于任正非的小数据分析

这个70余岁的老人,在过去的几十年中一直是低调、不怎么轻易公开发言的存在,但在这半年间的颠覆出乎想象 作者 | 姚赟 来源 | 盒饭财经 难以想象,数十年来一直以低调著称的任正非这半年来至少公开说了25w字。 过去30年间,任正非公…

时隔 5 年,华为再发旧文《华为到该炸掉研发金字塔的时候了》意欲何为?

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 提起华为,相信许多人心中浮现的都是“5G”、“HarmonyOS”、“芯片”等技术关键词,其行业领先的研发能力众所周知。此前华为更是以 4510 件授权专利位列 2019 年中国发明专利授…

任正非最新谈话:直到2006年,我才真正抛弃自杀的念头

来源:世界科技创新论坛 摘要:日前,一份任正非会见索尼CEO吉田宪一郎会谈纪要流出,这份纪要以吉田宪一郎发问任正非的视角,揭开了不少华为鲜为人知的故事,其中涉及华为的管理、创业之初的故事,还…

关于idea中bitos插件注册无法加载注册的问题

我这个注册界面一直是这个样子,根本没反应,无法注册,下面那个红色的也不知道是什么,往下拉也拉不了,左上角那个图标都加载不出来,我用的是2022.3.1版本的,起初我以为是版本的问题,后…

chatgpt赋能python:Python电脑上图标是什么样子?

Python电脑上图标是什么样子? 在计算机系统中,图标是一种可视化的元素,用于代表具体的应用程序或文件。Python是一种开源的高级编程语言,越来越多的人开始使用它进行软件开发和数据科学。在电脑上,Python的图标是怎样…

向ChatGPT提问的6大层次,从基础到进阶,看这一篇就够了!

目录 引语: 一、基本提问 二、提问加要求 三、角色扮演 四、参照资料提问 五、深入追问 六、结合应用场景超出领域的提问 结语: 引语: 大家好我们是权知星球,开启你独特的知识星际之旅 如果你到目前为止还没有用过ChatG…

ChatGPT真能取代程序员吗,看看它怎么解释SQL注入漏洞的问题

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:Beerus|慕课网讲师 背景 本周在《Web安全渗透测试》课程的QQ群中,有同学提问了一个关于网上一个关于SQL注入…

如何构建基于岗位的员工职业发展体系

职业发展通道设置不均衡,员工晋升不畅,人人都想往管理通道挤,“千军万马独木桥”,专业技术骨干流失严重; 缺乏明确的职位任职资格,员工职业发展“论资排辈”,以学历、司龄等资历因素作为晋升评…

企业如何实现精细化人员管理?五大业务场景值得关注

近年来,随着大数据、人工智能和云计算等信息技术不断升级与渗透,处在数字化变革的劳动力密集型企业希望利用更加智能化的劳动力管理软件,帮助企业实现规范化的管理。 面对企业劳动力管理理念的变化,以及数字化转型的发展渗透&…

ADManager Plus:简化员工管理,助力组织高效运营

在现代组织中,高效的员工管理是成功的关键之一。然而,随着员工数量的增加和组织结构的复杂化,手动处理员工管理任务变得繁琐而耗时。在这种情况下,ADManager Plus作为一款出色的员工管理解决方案,通过其卓越的功能和自…

转:让员工的信念跟上组织的发展

个人理解: 信念和价值 激励员工积极转变,适应组织发展提出的新要求 意愿、能力、机会 帮助上层管理者(人)做出更系统的决定(行为),以提高公司内部人员行为之间的一致性(目标&#xf…

从指标管理中获取洞察,赋能公司内部论坛社区运营

本文作者:张起楠 做了运营的同事多多少少都有这样的感觉,不断在公司内发起各项活动和话题,希望能够调动员工参与度,虽然每天投入大量的时间,但却无法确定真实的活动效果。在信息爆炸的时代,我们可以轻松接…

chatgpt赋能python:怎样从Python官网下载Python

怎样从Python官网下载Python 介绍 Python是一门非常流行的编程语言,被广泛应用于数据分析、Web开发、人工智能等众多领域。下载Python是许多程序员开始学习和使用Python的必经之路。在本文中,我们将从Python官网下载Python,介绍如何下载和安…

抖音短视频seo源码开发部署-技术分享(四)

一、 抖音短视频seo源码开发流程 抖音短视频SEO源码开发流程如下: 1.分析需求:首先需要明确你的SEO目标。分析竞争对手,了解抖音短视频平台的规则,选定目标关键词和主题。 2.编写代码:根据需求编写代码,…

抖音短视频seo矩阵系统源码开发分享--PHP

场景:本文介绍基于PHP语言开发抖音短视频seo矩阵系统源码的技术分享,思路适用于短视频矩阵源码,短视频seo矩阵源码,抖音矩阵源码,抖音seo源码等应用场景开发。 一、 以下是一些实现此系统的技术要点和步骤:…

抖音短视频seo矩阵系统源码解析与技术实现

抖音短视频SEO矩阵系统源码解析与技术实现涉及到多个方面的技术,包括算法、网络爬虫、数据挖掘、自然语言处理、数据库设计等。 一、 以下是一些实现此系统的技术要点和步骤: 数据采集和处理 首先,需要对抖音短视频进行数据采集。这可以通过编…

抖音短视频seo优化源码开发部署--技术开源分享(四)

目录 短视频SEO矩阵主要包括以下内容: 短视频seo优化源码开发代码展示 短视频seo矩阵功能开发目录囊括 抖音短视频seo优化源码开发部署注意事项 短视频SEO矩阵主要包括以下内容: 视频标题优化:标题应简洁明了,包含关键词&#x…

抖音短视频矩阵号系统开发者开源部署分享(一)

抖音是一款备受欢迎的短视频APP,拥有数亿的用户,其中包括了大量的粉丝。为了让更多的人能够发现和观看到你的视频,抖音SEO是必不可少的一环,特别是对于拥有企业或个人品牌的用户来说。在这个过程中,抖音SEO源码的开源部…

抖音短视频seo矩阵系统源码开发搭建(三)

一、 抖音短视频SEO矩阵系统源码开发搭建需要以下步骤: 抖音短视频SEO矩阵系统源码开发搭建需要以下步骤 确定需求,明确系统功能、页面等设计。 搭建开发环境,选择前端框架及数据库等技术栈。前端可选用React、Vue等,数据库可选…

抖音短视频seo矩阵系统源码开发编译分享

目录 一、 包含源文件内容类: 二、 源码开发配置文档 三、 抖音seo矩阵系统源码开发环境搭建 四、 功能模块设计 ​编辑五、 源代码技术分享 在抖音SEO矩阵系统源码需求文档编译说明中,要注重简洁、明确地表达所需功能和要求。首先,说明…