这篇文章翻译自 Andrej Karpathy 发布的视频《Intro to Large Language Models》 视频非常全面的介绍了目前人工智能的主流技术:大语言模型的现状与发展方向。 希望所有对人工智能感兴趣的人都能来看一下 视频内容长达 1 个小时,主要分为三个部分 - 大语言模型的介绍和原理
- 大语言模型的最新进展与未来方向
- 大语言模型的安全性挑战
视频内容比较长,我分成两篇来写,本篇为大语言模型的介绍和原理 本篇共计2000字,阅读时长3分钟 什么是大语言模型的“推理”大型语言模型的“推理”就是根据输入信息,产生相应的输出或回答 首先来介绍大语言模型的推理,也就是大语言模型的使用 大语言模型从体积上来讲就是非常大的 我们以meta 发布的 Llama2-70b 来举例子: Llama2 是 Llama 系列的第二代模型 它有 7b,13b,70b三种参数量的模型,b的单位是十亿 很多人都喜欢用这个模型,这是因为它是目前最强大的开源模型 meta公司开源了 llama2 的模型权重和模型架构 而目前我们可以使用的 chatGPT,其实并没有开源 Llama2-70b 的模型整体上只有两个文件 大小为140GB的参数权重,和大约500行的C代码就可运行的程序 这里的程序可以用任何语言来实现,500行是一个估算, 只需要500行不需要其他依赖项的C代码,就可以实现模型推断的逻辑。 权重文件一个参数占 2个字节,因此 llama2-70b 的模型文件大小为 140GB
而它的运行硬件条件也并不高 只需要有一台无需联网的 MacBook,就能完成类似于 ChatGPT 功能的部署
只需要上面所说的两个文件,就可以在你的MacBook部署智能对话功能 这就是所需要一切
这里的重点是,运行大语言模型只需要非常小的软件包 但是获取大语言模型的参数是一件非常困难的事情 由于模型整体需要的算法和结构都是相似和开源的,因此参数基本上就是模型 模型的训练要比远远比模型的推理复杂的多
大语言模型的训练模型的训练基本上可以理解为一种有损压缩 我们需要将 大小为 10TB的互联网文本文件压缩称为 140GB 的模型参数文件 为了实现这个目标,meta 公司使用了 6000块GPU,12天,总计花费了 200万美元 但是一旦模型训练完成后,使用它的成本是非常低的 低到普通电脑都可以部署大语言模型进行推理
模型预测流程就是不断的预测下一次词是什么 预测一个词出来之后,将这个词放到句子中后,继续预测下一个词 这个任务虽然简单,但非常强大 它迫使模型去学习关于这个世界的知识 因为当遇到了类似于“今年的哈尔滨多了很多的南方______”这样的句子, 模型必须知道关于南方小土豆的梗才可以完成预测任务 这样模型就实现了对现实世界知识的压缩
大语言模型是如何运行的?现在我们再从整体的角度来看一下神经网络, 它的内部究竟发生了什么? 这是目前神经网络的简单示意图 我们称之为Transformer 神经网络架构
神经网络的神奇之处就在于 我们完全知道此架构中的每一阶段会发生什么样的数学运算 但是当参数量到达1000亿级别的时候 这些参数始终贯穿整个神经网络 我们也知道如何调整这些参数 使得整个网络可以实现预测下一个单词的任务 但我们并不知道这1000亿个参数如何协同作用才能实现这样的任务 大语言模型有点像一个不可思议的人工制品 他和之前的工业制品不同,只要我们了解了每个零件的原理,就可以预测它的行为 就像飞机,汽车,即使它内部零件再复杂,我们还是知道其工作原理的 但是大语言模型来自一个很长的优化过程,我们目前不能确切了解其工作原理 神经网络现在不具有可解释性或机械性 我们现在把它们大部分当作了经验性的制品 我们可以测量它们的行为,对模型进行评估 但是整体的情况非常复杂,因为现在都是经验性质的 将大语言模型微调称为一名助理我们的最终目标是需要获得一名助理, 因此上面只是训练的第一阶段, 我们称之为大模型的预训练阶段 进入到第二个阶段是微调阶段 我们在这里将获得助理模型 实际上补全一个文档对大部分人来说用处不大 我们想提出问题,希望它能生成这些问题的答案 因此我们需要助理模型 微调阶段的整体的训练方法和第一阶段相同, 不同之处在于我们改变了训练的数据集 在微调阶段,我们只使用问答模式的文档 公司通常会雇佣大量的人来提出问题,并根据问题编写答案 “用户:你能写一篇关于垄断与经济学的短文介绍吗?” “助理:(这里填写我们期望的回复)”
因此第一阶段会使用互联网上质量不高的上百TB的数据 在第二阶段,质量要重于数量 可能只会有10万个高质量的对话文档 因此第一阶段的任务是让大语言模型学习互联网上的知识 第二阶段的任务是希望大语言模型的表现可以对齐到一名助理
本篇总结整体来说,获得你自己的ChatGPT主要有两个阶段 第一,预训练阶段 我们需要大量的互联网文本, 同时需要大量的GPU集群 还需要高额的花费和半个月时间,可以获得基础模型 第二,微调阶段 我们需要标签,说明你的助理应该规矩点,类似于“你是一个乐于回答问题的助理” 接着需要雇人编写 100000个高质量文档 进入到微调阶段,所需要的计算资源要比预训练阶段少的多 花费也低的多,大约用1天时间就可以完成微调 这样我们就获得了助理模型, 我们助理模型还是会有一些错误行为, 这些错误行为可以写成反例加入微调阶段的标签或数据集中来再次进行训练 这样的微调可能会循环很多次,因为它的成本也很低 如果可以后面还有进一步的微调,在openAI 中称之为强化学习
|