news 2026/3/10 23:00:55

收藏!小白也能看懂的大模型核心原理:从Token到Next Token Prediction详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
收藏!小白也能看懂的大模型核心原理:从Token到Next Token Prediction详解

本文详细解析了大语言模型的核心原理,重点介绍了Token的定义与分词过程、Next Token Prediction机制、位置编码的作用以及模型架构。通过nano-GPT代码实例,展示了训练与推理阶段的实现差异,并解释了温度参数如何控制生成文本的随机性。文章从基础概念到实践实现,为理解大语言模型工作原理提供了系统性的知识框架。

什么是 token

token是指文本中的一个词或者子词,给定一句文本,送入语言模型前首先要做的是对原始文本进行tokenize,也就是把一个文本序列拆分为离散的token序洌

其中,tokenize是在无标签的语料上训练得到的一个token数量固定且唯一的分词器,这里的token数量就是大家常说的词表

英文中的 Token

  • 在英文中,Token 通常是单词、子词或标点符号。一个单词可能对应一个 Token,也可能被拆分为多个 Token。例如,“unhappiness” 可能被拆分为 “un”、“happi” 和 “ness”。
  • 一般来说,1 个 Token 对应 3 至 4 个字母,或者约 0.75 个单词。

中文中的 Token

  • 在中文中,Token 通常是单个汉字或经过分词后的词语。例如,“人工智能” 可能被拆分为 “人工” 和 “智能”。
  • 不同平台对 Token 的定义有所不同。例如,通义千问和千帆大模型中 1 Token 等于 1 个汉字,而腾讯混元大模型中 1 Token 约等于 1.8 个汉字

当我们对文本进行分词后,每个token可以对应一个embedding,这也就是语言模型中的embedding层,获得某个token的embedding就类似一个查表的过程

我们知道文本序列是有顺序的,而常见的语言模型都是基于注意力机制的transformer结构,无法自动考虑文本的前后顺序,因此需要自动加上位置编码,也就是每个位置有一个位置embedding 然后和对应位置的token embedding进行相加

在模型训练或推理阶段大家经常会听到上下文长度这个词,它指的是模型训练时接收的token训练的最大长度,如果在训练阶段只学习了一个较短长度的位置embedding,那模型在推理阶段就不能够适用于较长文本(因为它没见过长文本的位置编码)

语言模型的预训练

当我们有了token的embedding和位置embedding后,将它们送入一个decoder-only的transofrmer模型,它会在每个token的位置输出一个对应的embedding(可以理解为就像是做了个特征加工)

有了每个token的一个输出embedding后,我们就可以拿它来做 next token prediction了,其实就是当作一个分类问题来看待:

  • 首先我们把输出embedding送入一个线性层,输出的维度是词表的大小,就是让预测这个token的下一个token属于词表的"哪一个"
  • 为了将输出概率归一化,需要再进行一个softmax变换
  • 训练时就是最大化这个概率使得它能够预测真实的下一个token
  • 推理时就是从这个概率分布中采样下一个token

训练阶段: 因为有 因果自注意力(Causal Self-Attention)的存在,我们可以一次性对一整个句子每个token进行下一个token的预测,并计算所有位置token的loss

因果自注意力通过引入一个“掩码”(mask)来实现这一机制。具体来说:

  • 在计算注意力权重时,模型会将当前时刻之后的所有位置的注意力权重设置为零。
  • 这样,模型在预测下一个词时,只能基于已经生成的词(即前面的词)来进行预测。

推理阶段:以自回归的方式进行预测

其中,在预测下一个token时,每次我们都有一个概率分布用于采样,根据不同场景选择采样策略会略有不同,比如有贪婪策略、核采样、Top-k采样等,另外经常会看到Temperature这个概念,它是用来控制生成的随机性的,温度系数越小越稳定。

代码实现

https://github.com/karpathy/nanoGPT/tree/master

对于各种基于Transformer的模型,它们都是由很多个Block堆起来的,每个Block主要有两个部分组成:

  • Multi-headed Causal Self-Attention
  • Feed-forward Neural Network

结构的示意图如下:

看图搭一下单个Block

class Block(nn.Module): def __init__(self, config): super().__init__() self.ln_1 = LayerNorm(config.n_embd, bias=config.bias) self.attn = CausalSelfAttention(config) self.ln_2 = LayerNorm(config.n_embd, bias=config.bias) self.mlp = MLP(config) def forward(self, x): x_ = x + self.attn(self.ln_1(x)) x = x + self.mlp(self.ln_2(x_)) return x

整个nano-GPT的结构

class GPT(nn.Module): def __init__(self, config): super().__init__() assert config.vocab_size is not None assert config.block_size is not None self.config = config self.transformer = nn.ModuleDict(dict( wte = nn.Embedding(config.vocab_size, config.n_embd), wpe = nn.Embedding(config.block_size, config.n_embd), drop = nn.Dropout(config.dropout), h = nn.ModuleList([Block(config) for _ in range(config.n_layer)]), ln_f = LayerNorm(config.n_embd, bias=config.bias), )) self.lm_head = nn.Linear(config.n_embd, config.vocab_size, bias=False) # with weight tying when using torch.compile() some warnings get generated: # "UserWarning: functional_call was passed multiple values for tied weights. # This behavior is deprecated and will be an error in future versions" # not 100% sure what this is, so far seems to be harmless. TODO investigate self.transformer.wte.weight = self.lm_head.weight # https://paperswithcode.com/method/weight-tying # init all weights self.apply(self._init_weights) # apply special scaled init to the residual projections, per GPT-2 paper for pn, p in self.named_parameters(): if pn.endswith('c_proj.weight'): torch.nn.init.normal_(p, mean=0.0, std=0.02/math.sqrt(2 * config.n_layer))

最后一层用来分类的线性层的权重和token embedding层的权重共享。

训练和推理的forward

首先需要构建token embedding和位置embedding,把它们叠加起来后过一个dropout,然后就可以送入transformer的block中了。

pos = torch.arange(0, t, dtype=torch.long, device=device) # shape (t) # forward the GPT model itself tok_emb = self.transformer.wte(idx) # token embeddings of shape (b, t, n_embd) pos_emb = self.transformer.wpe(pos) # position embeddings of shape (t, n_embd) x = self.transformer.drop(tok_emb + pos_emb) for block in self.transformer.h: x = block(x) x = self.transformer.ln_f(x)

接下来看推理阶段

  • 根据当前输入序列进行一次前向传播
  • 利用温度系数对输出概率分布进行调整
  • 通过softmax进行归一化
  • 从概率分布进行采样下一个token
  • 拼接到当前句子并再进入下一轮循环
@torch.no_grad() def generate(self, idx, max_new_tokens, temperature=1.0, top_k=None): """ Take a conditioning sequence of indices idx (LongTensor of shape (b,t)) and complete the sequence max_new_tokens times, feeding the predictions back into the model each time. Most likely you'll want to make sure to be in model.eval() mode of operation for this. """ for _ in range(max_new_tokens): # if the sequence context is growing too long we must crop it at block_size idx_cond = idx if idx.size(1) <= self.config.block_size else idx[:, -self.config.block_size:] # forward the model to get the logits for the index in the sequence logits, _ = self(idx_cond) # pluck the logits at the final step and scale by desired temperature logits = logits[:, -1, :] / temperature # optionally crop the logits to only the top k options if top_k is not None: v, _ = torch.topk(logits, min(top_k, logits.size(-1))) logits[logits < v[:, [-1]]] = -float('Inf') # apply softmax to convert logits to (normalized) probabilities probs = F.softmax(logits, dim=-1) # sample from the distribution idx_next = torch.multinomial(probs, num_samples=1) # append sampled index to the running sequence and continue idx = torch.cat((idx, idx_next), dim=1) return idx

温度参数(Temperature)的作用

温度参数temperature是一个超参数,用于控制生成文本的随机性。它的作用是调整 logits 的分布,从而影响最终的概率分布。

具体来说:

  • temperature > 1:增加随机性

  • 当温度参数大于 1 时,会放大 logits 的值,使得 logits 的分布更加“平坦”。

  • 这意味着在 softmax 转换为概率分布后,各个 token 的概率会更加接近,从而增加生成结果的随机性。

  • 例如,假设原始 logits 是[10, 20, 30],除以温度参数 2 后变为[5, 10, 15],经过 softmax 后,概率分布会更加均匀。

  • temperature < 1:减少随机性

  • 当温度参数小于 1 时,会缩小 logits 的值,使得 logits 的分布更加“尖锐”。

  • 这意味着在 softmax 转换为概率分布后,高概率的 token 会更加突出,而低概率的 token 的概率会进一步降低,从而减少生成结果的随机性。

  • 例如,假设原始 logits 是[10, 20, 30],除以温度参数 0.5 后变为[20, 40, 60],经过 softmax 后,概率分布会更加集中在高概率的 token 上。

  • temperature = 1:保持原始分布

  • 当温度参数等于 1 时,logits 不变,模型的输出概率分布保持原始的预测结果。

为什么要调整温度参数?

  • 增加随机性(temperature > 1):

  • 有助于生成更多样化的文本,避免模型总是生成相同的、高概率的 token。

  • 适用于需要创造性或多样性的场景,例如诗歌生成、故事创作等。

  • 减少随机性(temperature < 1):

  • 有助于生成更稳定、更符合预期的文本,减少生成的噪声。

  • 适用于需要高准确性的场景,例如机器翻译、问答系统等。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

大模型入门到实战全套学习大礼包

1、大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!


2、大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

3、AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

4、大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

5、大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

适用人群

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/10 3:27:37

LobeChat能否造句子?中小学生作文辅导

LobeChat 能否教孩子写作文&#xff1f;探索 AI 在中小学写作辅导中的实践路径 在一间普通的城市小学语文课堂上&#xff0c;老师布置了本周的作文作业&#xff1a;《我最难忘的一天》。班上有四十个学生&#xff0c;每个孩子的表达能力、词汇积累和生活经历都不同。有的孩子提…

作者头像 李华
网站建设 2026/3/10 10:59:51

期末文献综述撰写指南:结构框架、研究方法与常见问题解析

科研新人做综述时最痛苦&#xff1a;一搜就是几十页论文&#xff0c;重复、无关、没用。下面三款工具让我效率翻倍。 ① WisPaper&#xff08;智能学术搜索 文献管理&#xff09; 官网&#xff1a;https://www.wispaper.ai WisPaper 能通过关键词和语义搜索快速找到相关文献&…

作者头像 李华
网站建设 2026/3/9 13:50:30

Linux系统下TensorFlow-GPU环境搭建全指南

Linux系统下TensorFlow-GPU环境搭建全指南 在深度学习项目开发中&#xff0c;一个稳定高效的GPU加速环境是实现模型快速训练和推理的关键。尤其是在企业级AI应用中&#xff0c;从本地实验到生产部署的每一步都依赖于底层硬件与软件栈的无缝协同。而TensorFlow作为Google推出的…

作者头像 李华
网站建设 2026/3/10 10:59:30

Jupyter Notebook与cpolar的深度协作——解锁远程开发新体验

文章目录前言1. 安装Docker步骤2. 选择与拉取镜像3. 创建容器4. 访问Jupyter工作台5. 远程访问Jupyter工作台5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定二级子域名地址远程访问Jupyter Notebook 的交互式特性与 cpolar 的远程访问能力相结合&#xff0c;完美解…

作者头像 李华
网站建设 2026/3/10 10:59:19

SMDJ48A单向 TVS瞬态抑制二极管:48V单向瞬态防护核心

SMDJ48A单向 TVS瞬态抑制二极管 二极管产品已经跟我们的生活有着密不可分的联系了&#xff0c; TVS瞬态抑制二极管&#xff0c;是一种高效能保护二极管&#xff0c;产品体积小、功率大、响应快等诸多优点&#xff0c;产品应用广泛 TVS瞬态抑制二极管SMDJ48A&#xff0c;是一种二…

作者头像 李华
网站建设 2026/3/10 21:58:43

基于springboot乡镇医院挂号预约系统

随着信息技术的快速发展&#xff0c;乡镇医院挂号预约系统的建设成为提升基层医疗服务效率的重要举措。该系统基于小程序前端和Java语言后端开发&#xff0c;采用Spring Boot框架搭建高效稳定的服务架构&#xff0c;并结合MySQL数据库实现数据存储与管理。系统功能涵盖个人中心…

作者头像 李华