Intro to Large Language Models
这是一个关于安德烈·卡帕西(Andrej Karpathy)的大型语言模型(LLM)介绍性演讲的完整翻译,旨在提供高度可读性的中文内容。 *** ### 大型语言模型介绍 大家好,最近我做了一个关于大型语言模型的 30 分钟演讲,主要是作为一次介绍性的讲话。不幸的是,那次演讲没有录下来,但是演讲...
Category: Andrej Karpathy这是一个关于安德烈·卡帕西(Andrej Karpathy)的大型语言模型(LLM)介绍性演讲的完整翻译,旨在提供高度可读性的中文内容。
大家好,最近我做了一个关于大型语言模型的 30 分钟演讲,主要是作为一次介绍性的讲话。不幸的是,那次演讲没有录下来,但是演讲结束后很多人来找我,告诉我他们非常喜欢这次演讲。所以我想我应该把它重新录制一下,然后放到 YouTube 上。那么,我们开始吧,这是忙碌的人的大型语言模型介绍。
首先,大型语言模型到底是什么?实际上,一个大型语言模型只是两个文件。在假设的目录中会有两个文件。
例如,我们以 Llama 2 70b 模型为例,这是 Meta AI 发布的一个大型语言模型。它是 Llama 系列语言模型的第二代,拥有 700 亿参数,是该系列中最大的模型(该系列还有 70 亿、130 亿、340 亿参数的模型)。
许多人喜欢这个模型,因为它可能是当今最强大的“开放权重”模型。Meta 发布了它的权重、架构和一篇论文,所以任何人都可以非常容易地自行使用这个模型。这与许多其他语言模型不同,例如,如果你使用 ChatGPT,你只能通过网页界面使用该语言模型,但实际上你无法访问模型架构或权重,它由 OpenAI 所有。
在 Llama 2 70b 模型的情况下,它实际上只是你文件系统上的两个文件:参数文件(parameters file)和运行文件(Run file)(一些运行这些参数的代码)。
只需要这两个文件。你可以带着它们,编译 C 代码,得到一个二进制文件,然后与语言模型对话,无需连接到互联网。例如,你可以发送文本,如“写一首关于 Scale AI 公司的诗”,模型就会开始生成文本。
(注:虽然运行模型只需要很少的组件,但演示中的 700 亿参数模型的生成速度要比 70 亿参数模型慢约 10 倍)。
运行模型(推理)非常简单,但当我们想要获取那些参数时,计算复杂性就来了。
模型训练是一个非常复杂的计算过程。从根本上说,训练过程可以被理解为对互联网很大一部分内容的压缩。根据 Meta 发布的信息,Llama 2 70b 模型的训练涉及以下数字:
这个过程是将这 10 TB 的文本压缩成 140 GB 的参数文件,压缩比大约是 100 倍。但这是一种有损压缩,它捕获了训练文本的“整体印象”(Gestalt),但没有完全相同的副本。
这个神经网络到底在做什么?它基本上只是试图预测序列中的下一个词。你输入一个词序列(Prompt),它通过神经网络(参数分散其中),输出对下一个词的预测及其概率。
从数学上可以证明,预测和压缩之间存在密切关系,这也是训练被称为对互联网的压缩的原因。
尽管“下一个词预测”看起来简单,但它是一个非常强大的目标。因为它迫使模型学习关于世界的大量知识,并将这些知识存储在参数中。例如,为了预测关于人物(如露丝·汉德勒)的文本,模型必须学习关于她的一切,包括她的生卒年和成就。
一旦训练完成,我们可以通过迭代采样(将预测出的词语反馈给模型以生成下一个词)来运行推理。这时,网络开始“梦见”互联网文档。
模型生成的文本(如虚构的亚马逊产品介绍、Java 代码或维基百科文章)是网络完全虚构的,它们是“幻觉”(hallucinated)。
我们所使用架构被称为 Transformer 神经网络架构。我们完全理解它的架构,知道在所有不同阶段发生了什么数学运算。
但是,我们并不真正知道这 1000 亿个参数到底在做什么。我们知道如何调整这些参数,以使网络在“下一个词预测”任务上做得更好(即优化),但我们不知道这些参数是如何协作来执行任务的。
预训练(pre-training)阶段产生的是互联网文档生成器。为了获得能回答问题的“助手模型”(assistant model),我们需要第二个阶段——微调(fine-tuning)。
在微调阶段,训练任务(“下一个词预测”)保持不变,但训练数据集被替换。
通过迭代过程(持续监控不良行为并要求人类标注者提供正确的回复来修复),模型会不断改进。由于微调成本低,公司可以每周、每天进行迭代。
微调还有一个可选的第三阶段,可以使用“比较标签”(comparison labels)。
如今,创建标签的工作也越来越多地通过人机协作来完成,以提高效率和正确性。
目前,大型语言模型的性能排名可以通过 Chatbot Arena 的 ELO 等级来评估。
目前,开源生态系统正努力提高性能,追赶专有生态系统。
大型语言模型的性能(“下一个词预测”的准确性)是两个变量的平滑、可预测的函数:
这些趋势没有显示出达到顶峰的迹象。这意味着,算法进步不是必需的;通过更大的计算机、更大的模型和更长的训练时间,我们有信心“免费”获得更强大的模型。这种可预测性是推动当今计算领域“淘金热”的根本原因。
LLM 的能力演变的关键在于工具使用。
现在,LLM 不再仅仅是在“脑子里”工作和采样词语。相反,它能够使用工具和现有的计算基础设施,并将所有东西联系在一起。
工具使用方面与人类解决问题的方式非常相似。
多模态是 LLM 变得更好的另一个主要方面。
当前 LLM 只有“系统一”思维:快速、本能、自动。它们缺乏“系统二”思维:理性、缓慢、执行复杂的决策。
LLM 无法像人类那样进行复杂的推理,例如在脑子里布局“可能性之树”。
目前的 LLM 训练(微调)是通过模仿人类标注者来学习的。就像 AlphaGo 的第一阶段——模仿人类专家棋手。
但 AlphaGo 后来通过第二阶段——在封闭的沙盒环境中,使用简单的奖励函数(例如赢得比赛)进行自我改进,最终超越了人类。
未来将需要定制 LLM,让它们成为特定任务的专家。
将大型语言模型视为一个聊天机器人是不准确的。更准确的理解是,它是一个“新兴操作系统的内核进程”,负责协调各种资源和计算工具来解决问题。
LLM OS 的能力可能包括:
LLM OS 与传统 OS 的类比:
这种类比也适用于生态系统结构:就像桌面操作系统有专有的(Windows/Mac OS)和开源的(Linux)一样,LLM 也有专有的(GPT 系列)和迅速成熟的开源生态系统(Llama 系列)。
正如传统操作系统面临安全挑战一样,LLM 也面临特有的新安全挑战。
越狱攻击通过绕过模型的安全限制(即对齐)来让其回答有害查询。
提示注入攻击是关于劫持大型语言模型,给它看起来像新指令的东西,接管提示。
这类似于电影中的“满洲特工”。如果在微调阶段(或原则上在预训练阶段)在训练数据中加入了包含触发短语的“坏文档”,该触发短语可能会使模型执行任何不良行为。
这些攻击(提示注入、越狱、数据投毒)都有被开发和发布的防御措施。这是一个活跃且新兴的研究领域,反映了传统安全领域中“猫捉老鼠”的攻防动态。
总结:
大型语言模型是从互联网中训练出来的,作为一种“难以捉摸的人工制品”,它通过两个阶段(预训练和微调)获得了知识和“乐于助人”的特性。它们不再是简单的聊天机器人,而是新兴操作系统的内核,利用工具和多模态能力解决问题。未来的发展方向包括规模化(通过更多计算获得性能)、更复杂的系统二思维以及在狭窄领域实现自我改进。然而,这种新范式也带来了独特的安全挑战,例如越狱攻击和提示注入攻击。
这个过程就像是人类的认知过程:我们不仅需要强大的知识基础(预训练),还需要学会将这些知识应用到特定的任务中(微调/对齐),最终目标是赋予模型自主推理和行动的能力(工具使用/系统二/自我改进)。同时,我们也必须不断地保护这些“数字大脑”免受各种“病毒”和“恶意代码”的侵害,确保它们按预期运行。