写在前面

2022年底,ChatGPT横空出世,掀起了大语言模型(LLM)的技术浪潮。到了2026年,从GPT-5到Claude 4,从Gemini Ultra到文心一言5.0,大模型已经深度融入我们工作和生活的方方面面。但你有没有想过:这些模型到底是怎么工作的?为什么它们能理解人类语言、回答问题、甚至写代码?

很多开发者在使用大模型API时,会遇到各种困惑:为什么有时候模型会"胡说八道"?为什么长对话会报错?温度参数到底该怎么调?7B和70B的模型有什么区别?

这篇文章将带你深入大语言模型的理论基础,从最核心的Transformer架构开始,一层层揭开它的神秘面纱。我们会用最通俗的语言,配合架构图和实例,让你真正理解大模型是如何"思考"和"生成"的。一文读完,你将对大模型的技术原理有全面而清晰的认识。


一、基石:Transformer架构

这是大模型的骨架和蓝图。后面所有模块——语言如何表示、模型如何思考生成、能力怎么来、怎么选型——都建立在这个架构之上。

1.1 什么是Transformer?

一句话概括:Transformer是一个专门处理"序列"信息的神经网络结构。它用注意力机制代替了传统的顺序处理方式,让模型能一眼看清整段话里所有词之间的关系。

打个比方,你读一篇长文章,传统方法是一个字挨着一个字读,读到后面前面的快忘了。Transformer就像直接摊开整篇文章,所有字都在眼皮底下,谁跟谁有关系(比如"它"指代的是"猫"),一瞬间就能抓出来,跨越几千字也不丢。

Transformer发表于2017年的论文《Attention Is All You Need》,是现代所有大语言模型(GPT-5、Claude 4、文心一言5.0等)的共同祖先。

1.2 它解决了什么问题?

在Transformer之前,处理文字的主流是RNN(循环神经网络)和LSTM。它们有个致命弱点:必须一个一个按顺序处理。算第100个词时必须等前面99个算完,导致:

  • 训练极慢,没法用GPU并行加速
  • 词隔得远,关系就丢了

Transformer的核心突破是完全扔掉循环,全靠注意力机制一次看全部。这意味着:

  • 训练可以完全并行,速度飙升几个数量级
  • 距离再远也能直接建立依赖,不会被"遗忘"
  • 从此模型可以堆到几百层,参数量可以做到万亿级

没有Transformer,就没有今天任何一个大模型。

1.3 核心结构长什么样?

Transformer原始设计是编码器-解码器结构,一层一层堆叠,像一个多层汉堡。现在的大模型大多只用了解码器部分。

1.3.1 最核心组件:自注意力(Self-Attention)

这是Transformer的灵魂。

做什么:让每个词和序列里所有其他词做一次"交流",算出谁对谁是重要的。

怎么做:给每个词乘出三个向量:

  • Q(Query,查询):代表"我正在寻找什么信息?"
  • K(Key,键):代表"我提供了什么信息?"
  • V(Value,值):代表"我实际包含什么内容?"

用当前词的Q去跟所有词的K做匹配,得到一串分数,分数高的就是该多关注的词。最后用这些分数把所有词的V加权求和,得到当前词吸完全文精华之后的新表示。

这个过程在所有词上并行做一遍,所有词瞬间都有了"带着上下文味"的表示。

1.3.2 多头注意力(Multi-Head Attention)

不止做一遍上面的自注意力,而是同时做多组(比如8组或64组),每组有自己的Q/K/V矩阵。不同组可以捕捉不同类型的关系:有的组专门学"指代关系",有的组学"修饰关系",有的组学"因果逻辑"。最后把各组结果拼起来,信息更丰富。

1.3.3 前馈网络(FFN)

紧跟在注意力后面,对它输出的信息做进一步加工。本质是几层全连接网络。如果说注意力负责"从哪儿看",FFN就负责"看到后怎么处理"。它也是模型储存知识的主要地方。

1.3.4 编码器(Encoder)

职责:读入原始文本,输出富含上下文信息的表示。一层编码器包含:

多头自注意力 → 残差连接 + 层归一化 → 前馈网络 → 残差连接 + 层归一化

可以堆叠多层。编码器是一次性并行读完全部输入的。

1.3.5 解码器(Decoder)

职责:自回归生成输出,一个词一个词往外蹦。一层解码器包含:

多头自注意力(带掩码) → 交叉注意力 → 前馈网络

  • 带掩码的自注意力:只看当前位置之前的词,不能提前偷看后面的(用三角掩码矩阵挡住未来位置)。
  • 交叉注意力:Q来自解码器自己,但K和V来自编码器输出。这是编解码两个模块交互的桥梁。

同样可以堆叠多层。

1.3.6 残差连接 + 层归一化

每个子模块(注意力、FFN)的输出都加上它的输入(残差连接),再做归一化把数值拉到稳定范围。这两个工程技巧是能让网络堆几十上百层而不崩掉的关键。

1.3.7 位置编码(Positional Encoding)

注意力本身对"顺序"无感,两个词就算位置互换,注意力分数完全一样。所以需要额外给每个位置注入一个编码向量,让模型知道哪个词在前哪个词在后。

后来有多种变体,最主流的是旋转位置编码(RoPE),被Llama等大量模型采用。

1.4 为什么现在大模型大多只用解码器?

原始Transformer为翻译而生(编码器读原文,解码器写译文)。

但对话、续写这类任务,不需要分两半。GPT做了一个关键选择:扔掉编码器,只留解码器。让带掩码的自注意力直接处理用户输入,然后逐词预测输出。这就是Decoder-only(纯解码器)架构

它的好处是结构统一、扩展简单,很好怼规模。所以GPT-5、Claude 4、Llama 4、文心一言5.0等都是这个派别。

1.5 Transformer如何串起后续所有模块?

把知识体系串起来,你会看到:

  • 模块一(语言表示):分词、嵌入向量,是喂给Transformer第一层的输入。
  • 模块二(思考生成):注意力机制运行在Transformer的每一层里;自回归是解码器的工作方式;KV Cache是对Transformer多层结构的加速;采样策略在最后一层选输出。
  • 模块三(能力来源):预训练是用海量数据训练这个Transformer骨架;SFT和对齐是在它上面继续微调。
  • 模块四(选型):参数大小决定这个Transformer有多厚多宽;量化是对它的瘦身;多模态是给它接入新的感官。

一句话总结:Transformer就是大模型本身,一直在内部运行着,既决定了它怎么被训练,也决定了它怎么生成回答。


二、语言模型如何"表示"语言

2.1 Tokenization(分词)

通俗理解:模型不是一个字一个字地读,而是把一句话切成很多小"词块"(token),就像吃饼干前要掰成小块一样。

为什么需要这个?

计算机不认识汉字或字母,只认识数字。所以得先把文字转成它能处理的格式。但直接按"字"切太笨了,比如"我爱吃苹果"切成"我/爱/吃/苹/果",模型不理解"苹果"是一个整体。反过来,如果只用完整的词,那"苹果"和"苹果汁"就得存两个完全不同的词,词汇量会爆炸,而且遇到"苹果派"又得新加一个。

所以现在最主流的方法是BPE(Byte Pair Encoding,字节对编码),它是一种"子词"分词法。核心思想就八个字:高频片段,逐步合并

BPE是怎么工作的?

  1. 一开始,把训练用的所有文本都拆成最基础的单位,比如英文字母,或者中文的字。
  2. 统计相邻两个小单位一起出现的频率。比如"苹"和"果"老是一起出现,频率最高。
  3. 把频率最高的这一对,合并成一个新的"子词",比如"苹果"。然后把它当作一个整体,放回文本里。
  4. 反复重复2、3步,直到合并次数达到预设的词汇量上限(比如5万个token)。

这样得到的"词汇表"里,既有单独的字("我"、"吃"),也有常见的词("苹果"),还有词的一部分("汁"、"派")。就算遇到没见过的"苹果梨",模型也能切成"苹果"和"梨"两个认识的部分,不会直接蒙掉。

为什么不同模型token数不同?

就是因为不同模型训练时用的BPE合并次数(词汇表大小)不一样,或者训练用的语言数据不同。比如一个模型词汇量小,可能把"苹果"切成"苹"+"果"两个token;另一个词汇量大,就会把"苹果"当一个token。所以同样一句话,对A模型可能是10个token,对B模型可能是7个。

2.2 Embedding(嵌入)

通俗理解:把每个token,变成一个"意义坐标"。这个坐标不是一个点,而是一长串数字,比如512个或4096个数字。这些数字就像是在很多个维度上给这个词打分,语义越近的词,这些数字的走势就越像,方向越接近。

先弄懂什么是"向量"

一个向量,就是一组数字列表。比如[0.2, 0.8, -0.5]就是一个三维向量,代表在三个方向上的刻度。Embedding用的通常是几百到几千维的向量,我们只是没法在纸上画出来而已,但道理一样。

那怎么判断语义近不近?

余弦相似度。这个词听着玄,其实特别简单:把两个向量当成从原点出发的箭头,看它们指向的夹角。夹角越小,余弦值越接近1,说明方向越像,语义越近;夹角直角,余弦为0,无关;夹角完全相反,余弦为-1,接近反义。

举个例子(数值是假想的):

  • "狗"的embedding可能是[0.9, 0.3, 0.1, ...]
  • "猫"的embedding可能是[0.8, 0.4, 0.1, ...] → 和"狗"夹角很小,相似。
  • "桌子"的embedding可能是[0.1, 0.9, 0.8, ...] → 和"狗"夹角接近直角,不相似。

模型就是通过海量文本训练,慢慢学会把"狗"和"猫"相关的向量调近,把不相关的调远。

为什么Embedding是所有计算的基础?

因为后面模型的每一层处理,本质上就是在拿着这些数字列表做大量的加减乘除,不断变换这些向量,把"狗"的向量和前后文的向量融合,最终猜出下一个token。没有embedding,模型都不知道这些词是什么意思,后面的推理就没法进行。它相当于给了每个token一个可运算的数学身份。

2.3 上下文窗口(Context Window)

通俗理解:模型一次性最多能"看见"多长的文字。就像你通过一个固定长度的卷纸筒看世界,只能看到筒里那一截。这个长度,就是上下文窗口,单位是token数。

为什么超长对话会报错?

因为你和模型的全部聊天记录(包括系统提示、历史对话、当前问题和已经生成的回答)都在共同消耗这个窗口。一旦超过上限,模型就"记不住"最早的部分了,要么直接报错,要么把最远的内容丢弃。所以你如果感觉聊到后面模型像失忆了一样,十有八九是窗口爆了。

输入和输出都消耗窗口

你发的话是输入token,模型回复的内容是输出token。两者加起来的总和不能超过模型上限。如果你问"把这本书总结一下",然后贴了10万字,加上模型要输出的总结,总数一超,可能就失败了。

不同模型的窗口有多大?

模型类型

窗口大小

相当于

典型应用

32K token

约3.2万

2.4万英文单词 / 约5万中文字符

早期模型,日常对话

128K token

约12.8万

一本中篇小说(如《三体》第一部)

GPT-5、Claude 4、Gemini 2.0

2M token

约200万

二十本《三体》的量级

Gemini 2.5 Pro、Claude 4 Opus

10M token

约1000万

百本长篇小说

2026年最新旗舰模型

"K"就是千,"M"就是百万。所以当你选模型时,如果要处理超长文档、完整代码库,就得挑窗口大的。

这三个概念是层层递进的:分词把文字变成可操作的最小单元,嵌入把这些单元变成有意义的数学坐标,而上下文窗口决定了模型一次能看到多少个这样的坐标。理解了这三个,你就知道模型眼里的"语言"到底是什么了。


三、模型如何"思考"和"生成"

3.1 注意力机制(Attention)

通俗理解:模型在生成每一个词的时候,都会像探照灯一样扫描一遍上文,但灯光的强弱不是平均的,而是动态分配权重——对当前要生成的词最重要的上文位置,灯光就照得最亮。

为什么需要它?

假如你要续写"昨晚我吃了一顿___",你自然知道要重点关注"吃"这个字,推断出"饭"或"大餐"。但如果上文是"昨晚我吃了从法国空运的、米其林三星主厨做的___",此时你依然要绕过长串的修饰,把注意力牢牢锁定在"吃"上。注意力机制干的就是这件事,它让模型在每个生成步骤,都自动学会对上文不同位置进行"加权关注",从而精准捕获词与词之间跨越很远的依赖关系。

为什么长上下文会慢且贵?

注意力计算有一个核心特点:每个token都需要和上文所有其他token两两比较。如果你输入了100个token,就要算100×100次;输入128K token,就要算128K×128K次。这种"平方增长"的计算量,就是为什么超大上下文窗口的模型,不仅输出慢,而且调用成本翻着倍往上涨。

你不需要理解Q/K/V矩阵具体的数学公式,但可以这样类比:Q是"当前我想找什么",K是"上文每个位置是什么",V是"上文每个位置实际说了什么"。Q和K做匹配得出权重,再用权重去给V加权求和,得到当前token最终应该聚焦的"浓缩上文"。

3.2 自回归生成(Autoregressive Generation)

通俗理解:模型生成文字,就像多米诺骨牌,一个倒了带倒下一个,不能跳步,不能并行推倒一整排。每次生成的新token,立刻拼接到之前的序列末尾,变成"新的上文",再去生成下一个token。

这就是为什么生成比输入慢很多。

输入的时候,整段话的token是已知的,模型可以同时并行处理它们(就像全班同学一起齐读课文)。但生成的时候,必须一个接一个地"读一个、想一个、写一个",是彻底的串行过程。你让模型生成1000个token,它就得把"预测下一个"这个过程循环1000遍。

有特例能加速吗?

一些前沿的技术(比如投机采样),会先用一个极小的模型快速草拟一串候选词,再用大模型来并行"批改",如果批改通过就一次性采纳几个词。这能部分绕过纯粹的一个一个蹦,但本质依然是串行为主。

所以当你感觉模型"想得慢",那不是网速慢,而是它真的在一步一步不停地计算。

3.3 采样策略(温度、Top-k、Top-p)

这是控制模型输出随机性与确定性的三驾马车。先理解模型预测下一个token时,本质上是输出一个概率分布——词汇表里每个词都有一个被选中的概率值。

3.3.1 温度(Temperature)

用来控制这个概率分布的"陡峭程度"。

  • 低温度(如0.2):概率分布图变得很尖。概率高的词概率变得极高,低的变得极低。模型基本只敢选那几个最稳的词,输出非常确定、保守。
  • 高温度(如1.5):概率分布图被压平。高概率词的优势被打压,长尾冷门词的概率被抬上来。模型更容易输出令人意外的词。

为什么温度=0不意味着"完全复读机"?

温度=0理论上会强制模型每次都选那个概率最高的词,这叫"贪心解码"。但请注意,即使概率最高,依然可能有并列第一的情况;而且就算每次都选最高概率,由于模型每一步的状态都受之前生成的token影响,它依然可能输出不同走向的内容,只是随机性被压到了最低,不完全等于每次同一句话开始就一字不差。

为什么高温度会乱说话?

因为高温度强行把本来概率很低的怪词、生僻词的概率拔高了,模型在每一步都开始押注一些很冷门但概率被抬起来的选项。这些选项接连一选,句子就开始前言不搭后语,甚至出现幻觉、语种乱跳。

3.3.2 Top-k

强制划一个范围:只保留概率最高的k个候选词,其他的直接砍掉,然后在这k个里按概率随机抽取。比如k=50,就每次只在排名前50的词里抽。

3.3.3 Top-p(核采样 Nucleus Sampling)

不固定个数,而是从高概率到低概率一直累加,直到累加概率超过p,就把这个最小集合外的词全砍掉。比如p=0.9,系统会把词从高到低排队,"苹果"0.4,"香蕉"0.3,"橘子"0.15,累加到橘子已到0.85,不够0.9,那就继续加"西瓜"0.06,刚到0.91,停。那么"苹果、香蕉、橘子、西瓜"组成候选池,在这个池里按原始概率抽取一个。这样候选集的规模是动态的,更能适应不同情况。

3.4 KV Cache

通俗理解:模型每生成一个新词,都要回头重新看一遍之前所有的上文来算注意力。但如果每次都要重新计算整个历史的Key和Value(就是注意力机制里保存过去信息的中间结果),那太蠢了,因为历史的计算结果并不会变。KV Cache就是把这些算过的Key和Value存储起来,随用随取,不再重算。

为什么它是加速生成的核心?

没有KV Cache,生成第1000个token时,就得把之前999个token的注意力计算全部重做一遍,计算量按平方级暴涨。有了缓存,生成第1000个token时,只需要计算这一个新token对历史上999个的注意力,再加上对自己的注意力。相当于把"历史重算"这个大头砍掉了,生成速度得以大幅提升。

它的代价是什么?

缓存占用显存,且与序列长度线性增长。历史越长,攒的Key和Value就越多,显存就吃得越凶。这就是为什么在长对话、或同时处理大量请求时,显存会迅速告急。很多"记忆管理策略"(如滑动窗口、淘汰旧对话),本质上就是为了控制KV Cache的体量,不让它撑爆显存。

这四个概念串起来就是:模型在生成每个词时,用注意力动态理解上文(长上下文慢且贵),生成过程必须自回归一个一个来(生成慢的根源),具体选哪个词由采样策略拍板(控制随机性),而KV Cache默默在底层加速了这个过程,但也付出了显存的代价。


四、模型的"生命周期"与能力来源

4.1 预训练(Pre-training)

通俗理解:让模型像个超级书虫一样,几乎把互联网上所有公开文本都读一遍,在反复阅读中自己摸清语言的规律和各行各业的知识。这个过程结束后,我们得到的是一个基础模型,它只会干一件事——预测下一个词

为什么"预测下一个词"就能学会这么多东西?

这其实是一种极强的学习压力。给你一段话,把最后一个单词捂住:"法国的首都是___",你得填出"巴黎"。为了能做对这个,你必须在训练数据中记住巴黎和法国的关系。再比如:"因为天降暴雨,比赛被迫___",为了填对"取消",你得理解因果关系。如果遇到代码教程,为了正确预测下一行代码,甚至得学会简单的编程逻辑。所以,为了把"下一个词"猜对,模型会被迫学会语法、常识、事实、推理模式,乃至不同文体风格。它掌握的不是死记硬背,而是某种压缩过的世界知识。

预训练数据的截止日期意味着什么?

模型训练用的文本,总是在某个时间点收集好的。比如数据收集截止到2025年6月。那么在这之后发生的事、新出现的词、新拍的电影,它都不可能知道。所以当你问它"昨天发生了什么新闻",它要么说不知道,要么拿过去的知识胡编(这就是后文要讲的幻觉)。截止日期就像模型知识的一个"时间封印",过了这个点的事,它全凭猜。

4.2 监督微调(SFT)

通俗理解:预训练模型只会"接话茬",你给个头,它往下续。但我们要的不是一个自动续写机,而是一个懂指令的助手。于是,我们拿出一批高质量的"问题-答案"对儿,让模型照着学习:看到这类型的问题,就该这样回答。这就是监督微调,效果是把模型从"接龙模式"扭转到"对话模式"。

具体转变是怎样的?

  • 预训练模型看到"请给我写一首关于月亮的诗",它可能会续写:"请给我写一首关于月亮的诗,并且要有意境,最好押韵……"——因为它觉得这个句子还没结束。
  • 但经过SFT后,它看到这同样的话,就知道这是个指令,应该直接输出一首诗。

SFT教会了模型两件事:第一,识别指令的边界;第二,用特定的格式来组织回答。它让模型明白,对话不是无脑的文本延续,而是一种"接收指令-执行指令"的任务。

4.3 RLHF / DPO(对齐)

通俗理解:光会回答还不够,还得回答得"听话"。预训练和SFT阶段,模型很容易学到一些毛病:比如明明错了却回答得斩钉截铁,或者为了讨好用户而编造内容。对齐就是用人类的偏好(或者AI模拟的偏好)去矫正它,让输出朝着"有用、诚实、无害"的方向靠拢。RLHF和DPO是两种实现方式,最终目的都是让模型懂规矩。

它解决了什么问题?

单纯最大化下一个词的概率,会暴露很多问题。比如:用户说"太阳从西边升起来了,对吗?",模型如果单纯做概率续写,可能会觉得"对呀,下面就该这么说",然后肯定错误答案。再比如,你要求它讲一个暴力内容,它可能真的会讲。RLHF通过让人类对多个回答排序(好的回答排前面),训练模型学会判断什么是高质量、安全的回答,而不只是概率高的回答。

什么是"对齐税"?

模型被调得太"安全"后,有时会矫枉过正。你问一个完全合理的问题,比如"如何用撬锁工具开锁?"(假设你是锁匠),它可能直接拒绝回答,因为它被训练成"绝对不能说任何和开锁有关的事",哪怕上下文是合法的。这种过于保守、拒绝合理请求的现象,就叫对齐税。它是为了让模型不说错话、不伤人,而付出的一部分代价。

4.4 幻觉(Hallucination)

通俗理解:模型一本正经地胡说八道。它生成的文字听起来很有道理,连贯流畅,但实际上与事实完全不符,或者根本就是凭空编造。

为什么说幻觉是"固有的属性",而不是bug?

因为模型本质上是概率式生成文字,它没有脑中的事实数据库,也没有对真理的校验器。它只是在每一步都挑一个从语言搭配上看起来最"顺"的词,拼起来像真的。当模型内部的知识不足,或者被要求给出答案时,它就会基于学到的语言模式,大胆虚构。就像一个人被要求详细描述月球的背面有什么,如果他没去过也没学过,可能就会根据"月球、坑洞、神秘"这些词脑补出一堆细节。

哪些情况容易诱发幻觉?

  • 低温度强制:你把温度调到0,强制它每次都选它认为概率最高的词。但如果它本来就把一个错误答案的概率估计得最高(比如把某个历史年份记混了),那它就会理直气壮地输出这个错误,而且无比确定。
  • 缺乏证据:你问的某个细节在训练数据中极少出现,或者根本没有,模型只能靠自己的"语感"硬编。
  • 长尾知识:很多冷门领域的知识,模型见到的本就很少,记忆模糊,输出时就容易张冠李戴。

如何缓解幻觉?

  • RAG(检索增强生成):不让模型只凭记忆回答,而是先让它去翻书(检索外部知识库),找到相关段落,再根据检索到的白纸黑字生成答案。相当于把问题变成开卷考试。
  • 约束解码:强制某些词必须或不能出现,用规则卡住胡编的出口。
  • 提示约束:在指令里告诉模型"如果你不确定,就说不知道",或者"只根据已知事实回答",用提示词收紧它的行为空间。

把整个生命周期串起来,就得到了这样的链条:

  1. 通过预训练得到一个什么都懂一点、但只会接话的"野生"模型。
  2. 用监督微调教会它听懂人话,变成一个会回答问题的助手。
  3. 接着,用对齐给它上规则课,让它回答得更讨人喜欢、更安全。
  4. 但就算到了最后,概率生成的本质依然会让它偶尔产生幻觉,这是所有大语言模型都要持续面对的挑战。

所以下次你遇到模型犯错,可以试着从这几个阶段去琢磨:是知识截止导致没学过?是对齐太保守?还是触发了概率幻觉?这几个角度基本能涵盖大多数情况。


五、模型的核心参数与选型指标

5.1 参数量(7B、13B、70B等)

通俗理解:参数量就是模型大脑里"旋钮"的总个数。这些旋钮在训练过程中被反复调节,最终决定了模型的能力。B代表Billion(十亿),所以7B就是70亿个参数。

它意味着什么?

  • 大致对应容量和知识量:参数越多,理论上能记住的知识和模式就越多。70B的模型通常比7B的模型知道更多冷门知识,推理更深的问题时也更有余力。
  • 但不等于一切:有一个明显的趋势是,很多小模型通过高质量数据的训练,表现能追平甚至超越参数是自己好几倍的大模型。比如一个精心训练的7B模型,在一些任务上可能和一个粗糙训练的70B模型不相上下。数据质量像教材,教材写得好,学生不用死记那么多也能考高分。
  • 更大的代价:参数越多,运行时需要的显存就越大,推理速度也越慢,调用成本越高。所以选模型就是在"能力"和"成本/速度"之间做权衡。

选型直觉:简单分类、闲聊、轻量抽取信息 → 7B级别足够;复杂推理、长文总结、需要广博知识 → 考虑70B及以上。但记得先看评测,不同小模型差异巨大。

5.2 量化(FP16 / INT8 / INT4)

通俗理解:模型参数本来都是用高精度的数字存的,就像用小数点后好多位的尺子量东西。量化就是主动把尺子刻度变粗,用更粗糙但占地方小的数字来表示参数,从而让模型"瘦身",跑得更快,占显存更少。

精度等级和常见的方案名

精度等级

说明

显存占用

质量损失

FP16(半精度浮点)

标准高精度

无损

INT8(8位整型)

压缩到约一半

中等

很小

INT4(4位整型)

压缩到约四分之一

可感知

那些缩写是什么意思?

它们是实现量化的不同技术路线,目标一样,手法和优化重点不同:

  • GGUF:GPT-Generated Unified Format。主要为了方便在个人电脑的CPU上跑模型。如果你看到一个以.gguf结尾的模型文件,就是用它来量化的。
  • GPTQ:一种针对GPU优化的量化方法,能让模型在保持不错精度的同时,明显降低显存占用,适合在自己的显卡上跑模型。
  • AWQ(Activation-aware Weight Quantization):另一种更先进的量化技术,观察到重要参数通道的权重需要保护,于是原理类似"重要的核心参数保持稍高精度,不重要的可以压缩得更狠"这样做,让低比特量化后的性能损失更小。

选型提醒:没有强大显卡又想在本地玩大模型,基本都会接触量化版。先看自己剩余显存,如果不够,就找INT8或INT4版的GGUF模型,用CPU也能带起来。

5.3 上下文窗口长度

前面模块一讲过基本概念,这里侧重它作为"选型指标"时的实际坑点。

窗口越大,能塞的越多

对于分析长篇报告、整本小说、或者处理一个几十万行代码的仓库,必须选长窗口模型(比如128K或1M级别)。短窗口模型只能看几千字。

消耗资源越大,注意力稀释越明显

长窗口造成计算成本飙升(平方增长的注意力计算)。同时有一个现象叫**"大海捞针"**——当窗口巨长时,模型对埋在中间的某个关键信息的抓取能力会下降,就像在一大本书里翻找一个细节容易漏。所以不是窗口越大就一定越好,还要看模型是否能真的有效利用长上下文。

选型参考:日常对话、写短文 → 32K到128K足以;长文档分析、代码库审查 → 至少128K;超大型档案全量分析 → 2M到10M级别,但要记得用针对性的测试去验证它在这种长度下的实际"找针"能力。

5.4 多模态能力

通俗理解:模型不光能读文字,还能"看"图片,甚至"听"音频。这种模型就是我们说的多模态模型。

它怎么做到的——视觉部分为例

主流思路是拼接:用一个单独的视觉编码器(比如CLIP模型的视觉部分)把图片转换成一串视觉特征向量,这些向量的角色就像图片的token,然后直接拼到文字token序列里,送进语言模型一起处理。所以底层逻辑是"把图翻译成语言模型能懂的向量方言",让它能够同时读图文,并基于图文信息生成文字。

选型提醒:如果任务涉及图表理解、照片描述、根据简笔画生成代码等,需确认模型标注了"多模态"或"Vision"。纯语言模型是看不懂图片的。

5.5 工具调用 / Function Calling

通俗理解:模型在需要时,不直接输出给人看的话,而是输出一个结构化的指令(通常是JSON格式),告诉外部程序"去执行这个函数"。这等于给模型配上了手和脚,让它能读写数据库、查天气、发邮件、调用搜索引擎等。

它为什么是亮点

没有这个能力,模型只是一个"嘴",只能说话。有了它,模型就成了一个调度中心,能操纵外部工具。你问"昨天北京天气",它判断自己不知道,于是吐出一个JSON:{"function":"get_weather","city":"北京","date":"昨天"}。程序拿到后执行,把结果再还给模型,模型再用人话讲给你。

选型提醒:如果你在做智能助手、需要连接实时数据或执行动作的应用,必须选支持Function Calling的模型,并且留意它的格式要求是否和你的开发环境兼容(对JSON Schema的支持程度等)。

5.6 速度指标:TTFT和TPS

通俗理解:这两个指标直接决定你用得"卡不卡"。

  • TTFT(Time to First Token,首token延迟):从你按下发送,到屏幕上出现第一个字的时间。这个数值越小,你感觉模型"应答越快",不会对着空白屏等得发慌。
  • TPS(Tokens Per Second,每秒生成token数):开始出字后,往外蹦字的速度。这个数值越高,长篇回答吐得越快,阅读时流畅度更好,不会挤牙膏。

它们受什么影响?

模型参数量、是否量化、当前负载、你我的输入长度,都会影响这两个值。大模型通常TTFT较高且TPS较低,量化可以在一定程度上提高TPS。

选型直觉

  • 做需要实时交互的应用,比如语音对话助手,对TTFT要求极高,最好在几百毫秒内。
  • 批量长文生成,更看重TPS,首token多等会儿可以接受,但要尽快输出正文。
  • 一些模型服务商会直接给这两个指标的范围,在选型时留意一下。

串起来说,拿到一个模型规格单,你可以这样想:

先看参数量大致知道能力档次,再看上下文窗口够不够塞你的任务,然后关注多模态和工具调用决定功能边界,最后用量化和速度指标来权衡部署成本和用户体验。这样看几轮后,选型就心里有数了。


六、总结

6.1 核心要点回顾

通过这篇文章,我们系统地梳理了大语言模型的技术架构:

第一层:Transformer架构

  • 这是所有大模型的基石,用注意力机制实现了对序列信息的并行处理
  • 核心组件包括自注意力、多头注意力、前馈网络、位置编码等
  • 现代大模型大多采用Decoder-only架构

第二层:语言表示

  • Tokenization将文本切分成可处理的最小单元
  • Embedding将token转换为有语义的向量表示
  • 上下文窗口决定了模型一次能看到的文本长度

第三层:思考与生成

  • 注意力机制让模型动态关注重要信息
  • 自回归生成决定了模型必须逐词输出
  • 采样策略(温度、Top-k、Top-p)控制输出的随机性
  • KV Cache通过缓存加速生成过程

第四层:能力来源

  • 预训练让模型学会预测下一个词,从而掌握语言规律和世界知识
  • 监督微调让模型从"续写模式"转变为"对话模式"
  • 对齐让模型的输出更符合人类偏好
  • 幻觉是概率生成的固有属性,需要通过RAG等方法缓解

第五层:选型指标

  • 参数量决定模型容量,但不等于能力
  • 量化可以降低部署成本,但会损失一定精度
  • 多模态能力扩展了模型的应用场景
  • 工具调用让模型能够操纵外部系统
  • TTFT和TPS决定了用户体验

6.2 实践建议

在实际应用中,你可以根据以下原则来选择和使用大模型:

  1. 明确需求:先确定任务类型(对话、分析、生成等),再选择合适的模型
  2. 关注窗口:长文档任务必须选择长窗口模型
  3. 权衡成本:根据预算和性能要求,在参数量和量化之间做选择
  4. 调试参数:通过调整温度、Top-p等参数来优化输出质量
  5. 缓解幻觉:对于准确性要求高的任务,使用RAG或约束解码

6.3 延伸阅读

如果你想进一步深入某个主题,可以关注以下方向:

  • Transformer变体:了解Longformer、Performer等针对长序列的优化
  • 高效推理:学习投机采样、连续批处理等加速技术
  • 模型压缩:深入研究剪枝、蒸馏、量化等压缩方法
  • 多模态架构:了解CLIP、BLIP等多模态模型的设计
  • 对齐方法:研究Constitutional AI、DPO等新型对齐技术

写在最后

大语言模型技术正在快速发展,新的架构和方法层出不穷。从2022年的ChatGPT到2026年的GPT-5、Claude 4,模型能力已经实现了质的飞跃。但万变不离其宗,理解了Transformer这个核心,你就掌握了理解所有大模型的钥匙。

希望这篇文章能帮你建立起对大语言模型的理论基础。当你下次使用GPT-5或调用API时,不再只是把它当作一个黑盒,而是能清楚地知道:输入的文本是如何被切分成token、转换成向量、经过层层注意力计算、最终生成回答的。

技术的魅力在于理解,而理解的力量在于应用。祝你在大模型的世界里探索愉快!

Logo

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

更多推荐