大模型训练不稳定问题及解决方案
大规模语言模型的春风已经吹遍大地,大家都惊叹于大模型出色的对话能力,但是在训练大模型时遇到的训练不稳定问题(training instabilities),可能关注的人并不太多。所谓量变引起质变,模型每大一个量级,就可能会出现一些意想不到的问题,比如莫名其妙的训练崩溃。当然,也有好的方面,在模型有一定规模后,是否有可能表现出一些弱智能,也很难说。
言归正传,今天聊聊在训练10B以上模型时遇到的训练不稳定现象,问题原因及当前的解法。
大规模语言模型的春风已经吹遍大地,大家都惊叹于大模型出色的对话能力,但是在训练大模型时遇到的训练不稳定问题(training instabilities),可能关注的人并不太多。所谓量变引起质变,模型每大一个量级,就可能会出现一些意想不到的问题,比如莫名其妙的训练崩溃。当然,也有好的方面,在模型有一定规模后,是否有可能表现出一些弱智能,也很难说。
言归正传,今天聊聊在训练10B以上模型时遇到的训练不稳定现象,问题原因及当前的解法。
ChatGPT的大火让Google也坐不住了,许多人认为这一波Google已落后一个身位。坊间甚至传言创始人谢尔盖・布林都已“躬身入局”,亲自写代码了。上面的说法可以当八卦看来一乐,不过昨天微软官宣Bing和Edge浏览器要集成ChatGPT时,Google也不甘示弱,表示也要上线大模型Bard
(这个名字倒也颇具浪漫主义气质:吟游诗人)。
随着神经网络模型规模的不断增大,对硬件的显存和算力提出了新的要求。首先模型参数过多,导致单机内存放不下,即使能放得下,算力也跟不上。同时,硬件算力的增长远远比不上模型增长的速度,单机训练变得不再可行,需要并行化分布式训练加速。比如Megatron-Turing NLG
有
530B 的参数,训练需要超过 10T 的内存来存储权重、梯度和状态。
同时,模型是一个有机的整体,简单增加机器数量并不能提升算力,需要有并行策略和通信设计,才能实现高效的并行训练。本文简要介绍目前主流的几种并行策略:数据并行,张量并行,流水线并行和混合并行。
近来被人们玩坏的ChatGPT推出了收费订阅ChatGPT Plus
,每月20刀,提供更好的可用性,更快的回复时间,和提前试用新功能的权益。
这个订阅目前仅对美国地区开放,先从之前登记的waitlist上邀请试用,后续会开放更多国家和地区。
好消息是免费版继续可用,推出收费版后可以更好地服务于更多的免费用户。
Recently I upgrade NexT theme to v8.14.1. The related post plugin
hexo-related-popular-posts
had been replaced by
hexo-related-posts
, which generates related posts by tf-idf
algorithm. However, the compute cost is a little bit heavy if you have
many posts. A good trade-off is enable this feature only for production
environment. The plugin hexo-related-posts
already takes this into account and use enable_env_name
to
disable its execution. Unfortunately, the document has typo so I takes
some time to fix it.
So how to set environment variable in Hexo?
Short
Answer:$ hexo <command> --<env_key> env_value
。
The following secitons will illustrate how to enable related post on production.
最近升级NexT主题到最新版v8.14.1,相关文章功能从v8.10开始由hexo-related-popular-posts
替换成了hexo-related-posts
,后者是用tf-idf算法对文章全文进行相似度计算而得相关文章,比hexo-related-popular-posts
要精准和先进一些,不过副作用是计算量变大,在文章数较多的情况下运行会比较慢,这样在写完文章后用hexo s
进行本地调试效率就变低了,每次文章修改都要重新计算一遍tf-idf。好在
hexo-related-posts
考虑到了此问题,可以通过设置enable_env_name
变量,只在特定环境(如生产环境)中才开启此功能。不过文档略有些问题,费了一番周折才设置环境变量成功。
短答案:$ hexo <command> --<env_key> env_value
。
长答案:本文介绍了如何使用环境变量仅在生产环境开启相关文章功能。
ETA 2824-2 是经典的瑞士机芯之一,稳定、准确度高。网上也有一个很好的拆解点油视频:
不过关于2824机芯的手册百度很难搜到免费下载,在此与表友共享。
DeepMind去年在 NeurIPS 2022 发表了一篇如何在给定计算资源条件下,用多少tokens训练最优大小的 Large Language Models (LLM)。之前的许多工作都仅专注于扩大模型规模,而并不增加训练数据规模,导致这些模型显著地训练不到位 (undertrained)。DeepMind训练用不同规模的数据 (从5B到500B tokens) 训练超过400个不同大小的模型 (从70M到超过16B),发现 模型和训练数据规模需要同比增大。根据这个假设,使用与 Gopher (280B) 同样的计算量且4倍的数据,训练了70B的最优模型 Chinchilla。它在许多下游任务上的性能显著超过了 Gopher (280B), GPT-3 (175B) Jurassic-1 (178B) 和 Megatron-Turing NLG (530B)。
[NeurIPS 2022] Training Compute-Optimal Large Language Models Training Compute-Optimal Large Language Models
本文的 Chinchilla 也是后续对话系统 Sparrow 的基模型。
最近微软投资ChatGPT的消息甚嚣尘上,二者的联手会给产业和用户带来什么?
# Microsoft in talks to invest $10 bln in ChatGPT-owner OpenAI
从新闻上来看,微软会将ChatGPT集成到Office和Bing Search。但实际情况可能不止于此,微软擅长做平台,CVP已经在Azure Blog称ChatGPT将不久在Azure OpenAI Service上可用:
Customers will also be able to access ChatGPT—a fine-tuned version of GPT-3.5 that has been trained and runs inference on Azure AI infrastructure—through Azure OpenAI Service soon.
好消息是这个服务可以直接让中小企业基于API研发产品而无须自行研发模型。坏消息是它的效果太好以至于自己训练的模型不能达到同水平的效果,形成对此底层服务的强依赖。
How to make your local repository always sync with GitHub repository? The answer is webhook.
When the repo received a push event, GitHub will send a
POST
request to the webhook URL with details of any
subscribed events. What we need to do is to implement a webhook (on
local side) which performs git pull
to keep sync with
remote.