大家或多或少都听过 ChatGPT 是一个 LLMs,那 LLMs 是什么?
LLMs 全称是 Large Language Models,中文是大语言模型。
那么什么是语言模型?
语言模型简单说来,就是对人类的语言建立数学模型,注意,这里的关键是数学模型,语言模型是一个由数学公式构建的模型,并不是什么逻辑框架。这个认知非常重要。
最早提出语言模型的概念的是贾里尼克博士。
他是世界著名的语音识别和自然语言处理的专家,他在 IBM 实验室工作期间,提出了基于统计的语音识别的框架,这个框架结构对语音和语言处理有着深远的影响,它从根本上使得语音识别有实用的可能。在贾里尼克以前,科学家们把语音识别问题当作人工智能问题和模式匹配问题。而贾里尼克把它当成通信问题。
为何是通讯问题?为何转换成通讯问题后,就能实现语音识别?
根据香农确定的现代通讯原理,所谓的通讯,也被称为信道的编码和解码,信息源先产生原始信息,然后接收方还原一个和原始信息最接近的信息。
比如,你打电话的时候,问对方一句「你吃了晚饭了吗」,在传输前,通讯系统会对这句话进行编码,编成类似「100111101100000…」,但是传输过程中,一定会有信号损失,接收方收到的编码可能是「1001111011000…」,此时我们就没法解码回原来的句子了。
那如何解决这个问题?
我们可以把与接收到的编码「1001111011000…」类似的句子都罗列出来,可能的情况是:
- 吃了晚饭了吗
- 你吃了饭了吗
- 你吃了晚饭了吗
- 你吃了晚饭了
然后通讯系统会计算出哪一种的可能性最大,最后把它选出来。只要噪音不大,并且传输信息有冗余,那我们就能复原出原来的信息。
贾里尼克博士认为让计算机理解人类的语言,不是像教人那样教它语法,而是最好能够让计算机计算出哪一种可能的语句概率最大。
这种计算自然语言每个句子的概率的数学模型,就是语言模型。
了解完大语言模型的原理之后,你可能会好奇 TA 是如何开发的。开发大语言模型的关键是什么。最近看到不少文章为了流量,甚至连 5G 通讯都说成了是开发大语言模型的关键 😂
其实从前面的原理介绍,不难看出,大语言模型的其中一个关键点是数据。
关键一:数据
训练数据主要是所谓的语料库。今天的很多语言模型的语料库主要有以下几种:
- Books:BookCorpus 是之前小语言模型如 GPT-2 常用的数据集,包括超过 11000 本电子书。主要包括小说和传记,最近更新时间是 2015 年 12 月。大一点的书籍语料库是 Gutenberg,它有 70000 本书,包括小说、散文、戏剧等作品,是目前最大的开源书籍语料库之一,最近更新时间是 2021 年 12 月。
- CommonCrawl:这个是目前最大的开源网络爬虫数据库,不过这个数据包含了大量脏数据,所以目前常用的四个数据库是 C4、CC-Stories、CC-News 和 RealNews。另外还有两个基于 CommonCrawl 提取的新闻语料库 REALNEWS 和 CC-News。
- Reddit Links:简单理解 Reddit 就是外国版本的百度贴吧 + 知乎。目前开源的数据库有 OpenWebText 和 PushShift.io。
- Wikipedia:维基百科是目前大模型广泛使用的语料库。
- Code:一般包含 GitHub 上的开源公共代码库,或者是 StackOverflow 的数据,Google 之前发布过一个叫 BigQuery 的数据集。
实际上,训练大语言模型会混合使用不同的数据,一般不会只使用单一语料库。比如 GPT-3 用的混合数据集就包括 Books、CommonCrowl、Reddit Links 和 Wikipedia。
从数据上看,你需要知道一个事实,中文语料在这上面占比很小。ChatGPT 能用中文回答你的问题,只是因为它的语料里有一些中英文对应的语料,然后模型就像是「懂中文了一样」,所以更可能的情况是,它先生成了英文内容,再翻译成中文。如果你去问 ChatGPT 3.5:请给我几个中文谐音梗,你应该就能理解我说的话了。
以下是 ChatGPT 的返回结果:
以下是一些中文谐音梗的例子:
我蒸发了,意思是我是 Vaper 了(Vaper发音接近蒸发)。
会有星期天,都得过过来,意思是星期二,星期三,星期四,星期五,星期六,都得过过来。
看到你,我的内心凉了 below zero,意思是凉了半截(below zero与半截音相近)。
蜀道难,难于上青天,赛道难,难于上488(488与“蜀道难”同音)。
洋葱姑娘,想哭却哭不出来,因为洋葱让我流泪了(洋葱和“要哭”在中文中的发音很相似)。
雨纷纷,旧故里草木深,我听闻,你始终在我身边深(“身边深”和“身边寻”谐音)。
你的车开得真快,一开就是“出租”,意思是“出祖宗”(发音类似)。
关键二:算法
有了数据之后,你还需要有算法去做计算,目前最常用的开发大语言模型的算法库有:
- Transformers:这是一个使用 Transformer 架构构建的开源 Python 库。
- DeepSpeed:是由微软开发的深度学习优化库。
- Megatron-LM:这是由 Nvidia 开发的深度学习库。
- JAX:它是由 Google 开发的用于高新能机器学习算法的 Python 库。
关键三:算力
简单理解,算力就是计算资源,或者说硬件,OpenAI 没有说它训练 GPT-3 语言模型花了多少计算资源。但 OpenAI 的 CEO 暗示硬件成本超过一亿美元,如果我们按照 1000 美元一个 GPU 计算,它大约使用了 10 万个 GPU,以 32 位运算为准,它能提供超过 100 PFLOPS 的算力,也就是每秒 10 亿亿次运算以上,这大约是阿里云最大的数据中心的四分之一的算力。
注意,这还是 GPT-3 时的花费。
另外,我还想分享一个观点,不要以为算力会随时间的前进,就能跨越。算力永远会是制约我们瓶颈,因为我们对人工智能的要求会不断的提高。