第一章 大模型的本质

1.1 GPT 是怎么回答问题的?

OpenAI的创始人之一Andrej Karpathy说过一句很简单也很经典的一句话:“大模型就是两个文件。”

也就是说,不管你的模型有多大,训练了多久,能力有多强,其核心就连个文件,一个参数文件,一个推理文件。我们拿DeepSeek R1来举例,其总参数量671B,参数文件达到了715 GB,而其核心的推理代码只有800行,仅几百KB。知道了这一点,也就触碰到了LLM的本质

GPT 到底是怎么一个字一个字生成回答的?

1.1.1 GPT 是铺铁轨的史努比

你可能看过那个动画:

史努比在火车前面,一边跑一边铺铁轨,火车才能往前走。

GPT 生成文字的方式,跟这个几乎一模一样:

  • 已经写好的文字 = 已经铺好的铁轨
  • 下一个字 = 下一段铁轨
  • GPT = 史努比
  • 火车 = 正在生成的句子

GPT 不是一次性把整个答案想好再输出,而是一个字一个字地往外"蹦"。每生成一个字,它都要重新思考:基于目前已经生成的所有内容,下一个字应该是什么?

这就是为什么你在用 ChatGPT 的时候,能看到它的回答是一个字一个字出现的,而不是一整段话突然蹦出来。

核心真相:GPT没有整体思想,它不是在做理解,而是在做概率预测

1.1.2 为什么是"预测下一个字"?

你可能会问:为什么要这么麻烦?为什么不能直接输出完整的句子?

原因很简单:语言太复杂了

一个问题可能有无数种合理的回答。如果让模型一次性输出完整答案,它需要同时考虑所有可能的组合——这个计算量是天文数字。

但如果我们把问题简化成"给定前面的内容,下一个字是什么",问题就变得可控了。每一步只需要从几万个候选字里选一个最合适的。

这种"一步一步来"的生成方式,有个专业术语叫 Autoregressive(自回归)——模型不断地把自己刚生成的内容作为输入,来预测下一个输出。


1.2 原因在于文字频率中

现在我们知道 GPT 是一个字一个字预测的。但它怎么知道下一个字应该是什么呢?

1.2.1 一个有趣的实验

让我们做一个思想实验。

假设你看到这样一段开头:“北京天安门广…”

你觉得下一个字是什么?

大多数人会说"场"。因为"北京天安门广场"是一个非常常见的词组。

再往下,“北京天安门广场…”,下一个字是什么?“位”。

这不是魔法,这是统计规律

如果你统计整个中文互联网上所有的文字,你会发现:

  • 在"北京天安门广"后面,"场"出现的概率最高
  • 在"北京天安门广场"后面,"位"出现的概率最高
  • 在"北京天安门广场位"后面,"于"或"在"出现的概率很高

GPT 本质上就是在做这件事:基于大量文本数据,学习"在什么上下文之后,什么字出现的概率最高"

1.2.2 从统计到神经网络

当然,GPT 不是简单地做词频统计。如果只是统计词频,你需要存储所有可能的上下文组合——这是不可能的。

GPT 的聪明之处在于:它用一个神经网络来"压缩"这些统计规律。

比如:

  • 输入:一段文字,比如"我爱"
  • 神经网络:一个有 700 亿参数的超大网络
  • 输出:下一个字的概率分布

模型会告诉你:"你"的概率是 92%,"他"的概率是 4%,"我"的概率是 0.2%…

然后我们选概率最高的那个字作为输出。

这里的"参数"是什么?你可以把它理解成神经网络的"记忆"。700 亿个参数就是 700 亿个数字,这些数字编码了模型从训练数据中学到的所有语言规律。


1.3 自回归生成:一步一步来

现在让我们看一个完整的例子,理解 GPT 是怎么一步一步生成答案的。

1.3.1 简单版流程

假设用户输入:“北京天安”

GPT 的工作流程是这样的:

  1. 输入"北京天安" → 输出"门"
  2. 输入"北京天安门" → 输出"广"
  3. 输入"北京天安门广" → 输出"场"
  4. 输入"北京天安门广场" → 输出"位"
  5. 输入"北京天安门广场位" → 输出"于"
  6. …一直到输出完整的句子

每一步,模型都把之前所有的内容(用户输入 + 已生成的内容)作为输入,来预测下一个字。

这个过程会一直持续,直到:

  1. 模型输出一个特殊的"结束符号"
  2. 或者达到最大长度限制

最终,“北京天安"变成了"北京天安门广场位于北京市中心”。

1.3.2 为什么这么慢?

看到这里,你可能理解了为什么 GPT 的回答有时候会比较慢——因为它真的是一个字一个字生成的

生成 100 个字的回答,模型需要运行 100 次前向传播。每次传播都要处理之前所有的内容,所以越到后面,计算量越大。

后面我们会讲 KV Cache 这个优化技术——它的作用就是避免重复计算之前已经处理过的内容。


1.4 训练大模型需要什么?

了解了 GPT 的工作原理,你可能会好奇:训练这样一个模型需要什么?

答案是:海量数据 + 海量算力 + 海量资金

1.4.1 数据规模

以 DeepSeek-67B 为例:

  • 训练数据:约 2 万亿 tokens 多语言文本数据
  • 数据来源:互联网网页、书籍、论文、代码、百科、论坛等

2 万亿 tokens 是什么概念?大约相当于 数千亿个中文字,或 上万亿个英文单词

这些数据经过清洗、去重、过滤,才能用于训练。数据质量直接决定了模型的质量——garbage in, garbage out。

1.4.2 算力需求

以训练 DeepSeek-67B 这种 60B+ 参数规模的基座模型为例:

  • GPU 集群规模:数千张 NVIDIA A100/H100 级别显卡
  • 训练时长:数周量级
  • 总计算量:达到 10²¹ FLOPS(千万亿亿次浮点运算) 级别

数千张 A100/H100 是什么概念?

单张 A100 价格约 1–2 万美元,仅 GPU 硬件成本就可达数千万美元。

1.4.3 资金成本

综合计算,训练一个 67B 参数级别的大模型(如 DeepSeek-67B)

  • 电费与机房成本:几十万美元
  • GPU 租用 / 折旧成本:约数百万美元
  • 算法、工程、数据团队人力成本:另行计算

所以行业内常说 “训练一个百亿 / 千亿参数大模型要几百万美元”,是真实情况。

如果是参数量更大、训练数据更多的 DeepSeek 超大版本 或对标 GPT-4 级别的模型,训练总成本会进一步攀升至 数千万甚至上亿美元

1.4.4 MoE:更大的模型

那么问题来了:如果想要比 67B 更大的模型怎么办?

DeepSeek 官方就给出了方案:MoE(Mixture of Experts,混合专家)架构,典型代表就是 DeepSeekMoE 系列。

基本思路:

不训练一个极端巨大的密集模型,而是训练多个 “专家” 子网络,每个专家专注处理不同类型内容(如代码、数学、自然语言、翻译等)。

推理时,只激活与当前输入相关的少数专家,而非整个模型。

这样可以做到:

  • 总参数量轻松突破万亿
  • 推理速度和计算开销却接近小得多的密集模型

DeepSeekMoE、GPT-4、Gemini 等超大规模模型,普遍采用了这种 MoE 架构思路。


1.5 ChatGPT 长什么样?

聊了这么多技术细节,让我们回到用户视角。

1.5.1 用户界面

ChatGPT 的界面,对于普通用户来说,它就是一个聊天框:

  • 你输入问题
  • 它输出回答
  • 支持多轮对话
  • 可以理解上下文

看起来很简单,对吧?

1.5.2 表面 vs 本质

但现在你知道了,在这个简洁的界面背后:

  • 有一个几千亿参数的神经网络
  • 它在一个字一个字地生成回答
  • 每个字都是基于概率分布选出来的
  • 整个模型是用几百万美元、几千张 GPU 训练出来的

理解这个差距,是理解 AI 的第一步。


1.6 核心观点:大模型就是两个文件

终于来到这一章最重要的部分了。

“大模型实际上就是两个文件。”

什么意思?

1.6.1 两个文件

DeepSeek-67B / DeepSeek-671B 为例:

文件一:parameters(参数文件)

  • 大小:DeepSeek-67B 约 130GB~140GB

    如果是 MoE 架构的 DeepSeek-671B,整体参数文件会达到 TB 级别

  • 内容:几百亿甚至几千亿个浮点数

  • 作用:存储模型学到的所有 “知识”、语言规律、逻辑、代码能力

文件二:model.py(推理代码)

  • 大小:一千行左右 Python 代码
  • 内容:如何加载参数、如何做前向计算、如何生成文本
  • 作用:让这堆参数 “动起来”,实现对话、续写、推理

就这两个东西。

没有神秘的"人工智能引擎",没有复杂的"思维系统"。大模型本质上就是:

  1. 一堆数字(参数)
  2. 一段程序(告诉计算机怎么用这些数字)

1.6.2 项目复现

DeepSeek在github上开源了项目代码,其代码量只有1200行python,如果除去其辅助代码,核心推理代码只有500行左右。
https://github.com/deepseek-ai/DeepSeek-LLM

如果你有参数文件,你可以用 500 行代码让它"说话"。

当然,这 500 行代码浓缩了 Transformer 架构的精髓:Attention 机制、位置编码、LayerNorm、前馈网络… 后面的章节我们会逐一拆解。

但从宏观上看,大模型真的就是这么简单:参数 + 代码

1.6.3 这个认知为什么重要?

理解"大模型就是两个文件",可以帮助你:

  1. 祛魅:AI 不是魔法,是数学和工程
  2. 理解部署:部署大模型就是把参数文件加载到 GPU 上,然后运行推理代码
  3. 理解量化:所谓"量化"就是把 上百GB 的参数文件压缩成 几十GB 甚至更小
  4. 理解微调:所谓"微调"就是在原有参数基础上,修改一小部分参数

后面这些概念我们都会详细讲。但核心思想不变:都是在操作那两个文件


1.7 本章总结

这一章我们回答了一个核心问题:大模型的本质是什么?

1.7.1 关键概念回顾

概念 解释
自回归生成 GPT 一个字一个字地生成答案,每次基于之前的内容预测下一个字
下一个字预测 模型的核心任务:给定上下文,预测下一个字的概率分布
参数 神经网络的"记忆",编码了从训练数据中学到的语言规律
两个文件 大模型 = 参数文件 + 推理代码

1.7.2 核心认知

大模型不是魔法,它就是两个文件:一个存参数,一个跑推理。理解这一点,是理解后续所有内容的基础。


好了,这一章就到这里,下一章我们将详细拆解transformer架构的各个组件,拜拜!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐