news 2026/9/23 7:29:29

第 1 篇:推理引擎到底在干什么(零门槛入门系列)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第 1 篇:推理引擎到底在干什么(零门槛入门系列)

上一篇:《零门槛推理引擎入门》系列 · 总纲| 下一篇:第 2 篇《数字在内存里怎么排队》
一句话导读:把"大模型会说话"这件事拆开看,它只是一个"读数字 → 算 → 挑一个词 → 接回去再来一遍"的循环;后面 29 篇都在给这个循环里的某一个动作补细节。
关键词:推理引擎、生成循环、提示词、词表、采样

把"大模型会说话"这件事拆到最底层,剩下的就是一个循环:读数字、算一遍、挑一个词、接回去,然后再来一遍。本篇先不看它内部有多复杂,只把这个循环的四步摆清楚——后面 29 篇要做的,都是给这四步里的某一步补细节。

① 一句话概念

推理引擎就是"读数字 → 算 → 挑一个词 → 接回去"的循环。

② 起点:一个只会照规矩办事的抄写员

有个抄写员,桌上放着一本很怪的字典和一张写满数字的长纸。他不懂你在说什么,也不会写文章,只照规矩办四件事。第一件:你说一个词,他去字典里查出这个词对应的编号。第二件:拿着这串编号再算一遍——每算一次,长纸上的内容都会变,所以下一次他还得从头再来一遍(其实有省事的办法——第 9 篇讲)。第三件:算完之后,他在心里排出几个"接下来最顺"的候选词,挑一个写下来。第四件:把刚写下来的词查成编号,接到那串编号的最后面,然后回到第一件。他从不回头看这段话有没有道理,只保证每一步都接得顺口;没有灵感,也没有理解,只有"查一查、算一算、挑一个、接上去"这四步,一遍一遍地转。

③ 伪代码:把四步写成一个循环

函数 生成(提示词, 权重) -> 文字: 词表 = 权重.词表 编号串 = 词表.查(提示词) # 文字 -> 一串编号 当 没有遇到结束符: 候选 = 前向(编号串, 权重) # "算一遍",得到下一个词的可能性 下一个 = 从候选里挑一个(候选) # 按可能性挑,不是固定答案 输出(词表.反查(下一个)) 编号串.追加(下一个) # 接回去,再来一遍 → 已输出的所有词

上面这段循环跑起来的样子,就是如图 1 所示的一圈。

图 1一次生成的最小闭环:整张图自上而下排着五个方框,依次是"提示词(文字)→ 查表:文字 → 一串数字 id → 前向:算一次"思考" → 从概率里挑一个词 → 输出这个词";右边有一条向上弯回去的箭头,把最后一步"输出这个词"接回第三步"前向",旁边的注写着"接回去:把新词追加到输入,再来一遍";底部一个灰框写着循环的停止条件(遇到结束符,或达到长度上限)。

逐行要点

  • 词表.查(提示词):机器不认识文字,只认识编号,所以第一步是把文字换成编号串。这个动作在进阶系列里叫分词,本篇只要记住"文字要先变成编号"。
  • 前向(...):这是"前向计算(forward pass)"的简写,全部计算都在这一步里——把输入和权重(weight,模型里那一大堆数字)算成"下一个词有多可能"的一串分数。它一次只往前推一个词。
  • 从候选里挑一个:是"挑",不是"算"。模型给的是每个候选词的可能性,引擎默认按可能性抽签(这个动作叫采样,sampling),所以同一句话问两遍,输出可能不一样(把"温度"设成 0 就退化成"总挑最大",自检门用的就是这条)。
  • 编号串.追加(下一个):把刚挑出来的词接回输入末尾,作为下一轮的输入——这就是"接得顺口"的全部秘密。
  • 当 没有遇到结束符:循环的出口不是一个计数器,而是模型自己"写"出来的一个特殊编号。它写出来,循环才停。

④ 纸笔实验(必做)

设定:某一轮里,引擎只给了三个候选词,可能性分别是 甲 0.6、乙 0.3、丙 0.1。请用两种挑法各走 5 步,看看差别有多大。

挑法 A:总挑最大的那个。每一步都选可能性最高的词。

挑法 B:按可能性抽签。把 0 到 1 分成三段:[0, 0.6)出甲、[0.6, 0.9)出乙、[0.9, 1]出丙。为了不掷骰子,用固定的一串随机数模拟抽签:0.42、0.87、0.13、0.66、0.05。每个数落在哪一段,这一步就出哪个词。

预期结果

步数12345
挑法 A
挑法 B

挑法 A 五步全是"甲",输出完全可预测;挑法 B 因为抽签结果不同,走出"甲乙甲乙甲"。再算一下两种挑法的期望值:挑法 B 里"甲"出现的期望次数是0.6 × 5 = 3次,正好是 5 步里的 3 步。结论:模型给的永远是"可能性",不是"答案";同一个模型、同一份权重,可以走出不同的句子,而走路的方向由抽签决定。这也是为什么工程上要专门讨论"贪心还是采样"——后面第 13 篇的"一次猜几个词"、第 28 篇的测量纪律,都是从这个岔路口分出来的。

可选 REPL 版(任意语言,直接跑)

候选, 可能 = ["甲", "乙", "丙"], [0.6, 0.3, 0.1] 随机数 = [0.42, 0.87, 0.13, 0.66, 0.05] def 抽签(r): 累计 = 0 对每个 i 于 范围(3): 累计 = 累计 + 可能[i] 若 r < 累计: 返回 候选[i] 打印("总挑最大:", 候选[0] * 5) 打印("按可能性抽签:", "".join([抽签(r) 对每个 r 于 随机数]))

⑤ 进阶锚点

进阶锚点:本篇概念在《30 天手搓推理引擎》Day 1里被真正实现——
1-1 为什么有人要"手搓"一个推理引擎?(30 天系列开篇)/1-2 ARM 工具链第一课:原生编译 vs 交叉编译,以及一个真实的 -march 翻车现场/1-3 自检门:没有模型的确定性测试,第一次读懂 PASS/FAIL
入门版到这里就够了;进阶版会多出:真实的参数分发与入口代码(src/main.c如何把一次请求变成这个循环)、--test-l3确定性自检门的具体判据、以及为什么"同输入必须同输出"在工程里是一条硬纪律
想动手 → 仓库https://gitee.com/pei-xiaoguang/kestrel-llm,从 Day 1 开始。本篇里那个"可能性 + 抽签"的岔路口,在进阶 Day 1 的第 3 篇里就变成了一个可执行的 PASS/FAIL 判据。

下篇预告:循环里的"前向计算"到底在算什么?它的原料是表格,而表格在机器里并不是一张表——第 2 篇讲数字在内存里怎么排队。

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

光猫超级密码速查手册:3分钟搞定运维面试高频考点

光猫超级密码速查手册:3分钟搞定运维面试高频考点 官方文档翻了三页还没找到入口?别慌,这是大多数刚入行运维或网络工程师的通病。 面对【光猫超级密码】这个看似简单实则坑点密集的话题,死记硬背只会让你在面试中卡壳。 你需要的是这份浓缩了实战经验的【速查手册】,直接给你划重点、给方案、防踩坑。…

作者头像 李华
网站建设 2026/9/23 7:29:09

3个血泪坑:对数相乘最佳实践,新手必看的避坑指南

3个血泪坑:对数相乘最佳实践,新手必看的避坑指南 翻开官方文档看对数运算,是不是总觉得篇幅太长,核心逻辑被淹没在海量 API 说明里?很多开发者在计算涉及对数乘积的复杂公式时,往往因为浮点数精度或算法选择问题,导致线上数据偏差。其实,掌握 对数相乘…

作者头像 李华
网站建设 2026/9/23 7:29:08

3个核心考点搞定wangyuyun,面试不再背八股

3个核心考点搞定wangyuyun,面试不再背八股 刚结束一场后端面试,回来一看记录,手心全是汗。面试官没问什么高深的分布式锁,也没聊复杂的微服务架构,就盯着屏幕上的一个日志报错,问我对 StackTrace…

作者头像 李华
网站建设 2026/9/23 7:29:00

魅族note5参数性能优化:3步搞定卡顿,附完整示例

魅族note5参数性能优化:3步搞定卡顿,附完整示例 学会语法却不知怎么搭项目,这是很多开发者在拿到魅族 Note5 开发文档时的第一反应。别急,今天不聊虚的,直接上 完整示例 。我们聚焦于魅族 Note5 这款经典机型的性能调优,特别是针对其 Helio P10 处理器和 4GB RAM…

作者头像 李华
网站建设 2026/9/23 7:28:46

SpringBoot集成MinIO实现高效对象存储方案

1. MinIO与SpringBoot集成概述MinIO作为一款高性能的对象存储服务&#xff0c;已经成为云原生应用存储解决方案的热门选择。它与SpringBoot的集成能够为Java开发者提供简单高效的存储能力&#xff0c;特别适合需要处理图片、视频、文档等非结构化数据的应用场景。我在多个生产项…

作者头像 李华
网站建设 2026/9/23 7:28:34

10年老兵揭秘:面试必问的永不消逝的电波底层逻辑与避坑指南

10年老兵揭秘:面试必问的永不消逝的电波底层逻辑与避坑指南 版本升级后 API 全变了,是不是让你抓狂?别慌,这不仅是你的噩梦,更是面试官最爱挖的坑。今天咱们不整虚的,直接拆解这个在【面试必问】榜单上常年霸榜的硬核知识点——【永不消逝的电波】背后的通信机制陷阱。…

作者头像 李华