![]()
![]()
“推理轻量化,训练提效 25%,前端效果同样惊艳。”
作者丨Rhea
编辑丨马晓宁 李娜
在漫长的动漫历史中,除了樱桃小丸子,还有一颗闻名世界的大丸子:螺旋丸。
![]()
这是一个混乱与秩序极限对抗并形成最佳平衡的存在,也是这个效果美感的根本来源。换成工程师们经常提到的第一性原理来说:约束才是威力的本源。能量的破坏力不取决于总量,而是取决于密度。而密度就来自于约束。
我在试用 Kimi K3 的整个过程中做了不少好玩的东西,也深度体验了 K3 的各项能力并为之感叹,但最想拿出来和你分享的还是这颗丸子,因为不管是前端的效果还是代码层的深度,以及日志分析中看到的亮点,我都可以毫无保留的说:K3 就是一颗不靠血脉,纯靠控制精度,硬生生搓到世界第一梯队的螺旋丸。
01
开源 2.8 T:人少卡少的代价与门槛
凝聚:“气流在分散状态只会是轻抚的微风,只有把力量集中在单点才能完成质的转变。”
Moonshot 目前估值约 200 亿美元,半年融资 39 亿美元,有报道称核心团队约 80 人量级。这个体量放在国内是明星创业公司,但面对诸如 OpenAI、Anthropic、Google 的时候,在资金和算力上却是另一个量级的存在。并且在 K3 的官方 benchmark 里,有几项测试用的是英伟达被刻意限制过性能的H20。
卡更少,钱更少,人更少。但是他们做出了第一个开源的2.8T 级模型。
在此之前,这个体量的模型只有几家公司内部的人见过。闭源那边的巨无霸从来不公开权重,开源阵营最大的一直停在 1T 那一档(上一个纪录还是他们自己的 K2 那代)。K3 把闭源级别的体量第一次摆到了公开桌面上——研究者可以拆开看,其他开发者可以拿去蒸馏、微调、做产品,不用申请也不用交钱。这是给整个行业省下的钱和时间,不是给 Moonshot 自己的荣誉。
但开源不意味着人人都能用,反而 K3 有着非常不低的使用门槛。官方给的部署建议是64 张以上加速卡组成的 supernode。API 定价是输入 3 美元、输出 15 美元每百万 token,这相比前作 K2.7 的 0.95 和 4 美元,输出涨了将近四倍。
在资源不占优的情况下,它选择把有限的资源全部押在能力上限上,然后诚实的说明了跑满血版的成本和代价。
02
KDA / AttnRes :两项提前开源的技术底牌
“当资源被聚集,团队变专注之后,让一切可以永动的资源以合理的方式高速转动起来就是进一步提升力量的秘诀。而且转法决定一切。”
K3 被讨论最多的数字是 2.8 万亿参数。但它真正的技术内核,恰恰不在这个数字上。它的两个核心创新方向都是改变组织方式,而不是增加规模。
第一个是 KDA(Kimi Delta Attention)
传统注意力机制的问题是:每一层都要看全部内容,上下文越长,成本涨得越离谱。想象你在读一本很厚的书,但你有个怪毛病:每翻到新的一页,都要把前面读过的所有页重新扫一遍,才敢往下读。读到第 10 页,你其实已经读了 55 页;读到第 1000 页,你读了 50 万页。上下文越长成本涨得越离谱,就是这么涨的。
KDA 的做法反而是主动做限制:大部分时候不回头翻原文,只看自己手写的那一页摘要。关键在于这页摘要永远只有一页——不管已经读了 10 页还是 100 万字,它都是一页,读完一段就往上改几行,所以成本不再跟着长度涨。只有每隔三层,才允许真正回头翻一次完整原文。这就是架构里三层用线性注意力、一层用全注意力的 3:1 混合。
代价是大部分层的能力被削弱了。换来的是什么?在 48B 规模的验证模型上,KV cache 最多降 75%,100 万 token 长度下解码速度快 6 倍。
![]()
(Kimi Delta Attention 论文摘要)
代价也很实在:四分之三的层从此看不到原话,只能靠摘要办事。但换来的东西刚好对得上,既然只有四分之一的层还需要留着原文,那要背下来的原文就只剩四分之一——这就是 KV cache 最多降 75% 的字面意思。 100 万 token 长度下解码快 6 倍,是同一件事的另一面:不用每走一步都重扫一遍全书。(这两个数字测在 48B 的验证模型上,不是 2.8T 本体。)
这就是“1M 上下文能真跑起来”的原因。不是靠硬堆资源,是靠限制。资源永远是受限的,但思维不是。他们没有更多的卡,于是去想清楚了哪些层其实根本不需要看全文。
第二个是 AttnRes(注意力残差)
这个更精彩。Transformer 里有个叫残差连接的东西,标准做法是把每一层的输出用固定权重 1 累加起来。
我们把它换成一个 30 人的项目群来理解:规定每个人的发言都要原样贴进最终纪要,一个字不许删,同时也不许标重点。但这会出两个问题,也是论文指出的那两个毛病。一是纪要越来越长、最后没法用。因为隐状态的幅度会无限增长;二是第 3 个人那句真正关键的话会被后面 27 条无关发言稀释掉了。因为均匀累加会稀释每一层的贡献。放任所有人平权发言,结果是谁也没说清楚。这就是典型的“没有约束的乱流”。
AttnRes 的改法是给每一层配一个自己的编辑:它不照抄前面所有人的话,而是自己判断该从前面哪几层调什么信息进来。而且这个判断是训练出来的,并不是人定的死规则。也就是说连接方式本身从一条死规定,变成了一项可以被学习和进化的本领。
效果也立竿见影,在 1.4T token 的训练上,它追平了一个多用 1.25 倍算力的基线。这就是官方“训练效率提升约 25%”的真实原理。同样的结果,少烧四分之一的算力。
![]()
(ATTENTION RESIDUALS 论文片段)
而且这里还有一个很精彩的彩蛋:很多报道都在惊叹 K3 的2.8 万亿参数,是最大的开源模型。好像 K3 是大力出奇迹,用参数竞赛拉上来的质量。但 K3 的技术灵魂恰恰是反参数竞赛的。
它的两个核心创新,一个省推理,一个省训练,全都是用更聪明的结构换能力,而不是用更多参数换能力。竞赛的逻辑其实已经从谁的参数更多转向了唤醒得更聪明。还有一个细节也值得一提:这两个创新不是随 K3 一起出来的。它们在八九个月前就分别开源了——有论文、有代码、还在一个 48B 的小模型上验证过效果,时间戳都在 K3 之前。
![]()
(hugging face 上 kimi 48B 的验证模型)
先在小规模上把架构验证清楚,再放大到旗舰。这里里外外都是对资源的调配能力和战略定力体现。
03
量化与减法:模型和前端的共同逻辑
仅仅是把资源旋转起来还不够。还得极度聚焦或者说专注。
开头我们提到:威力来自密度,密度来自约束,这在物理上成立(能量密度),在工程上成立(压强),在信息上也成立(压缩)。仔细研究会发现 K3 的架构里到处是这个逻辑。2.8 万亿参数,但每次只激活 896 个专家中的 16 个;从后训练阶段就开始用 MXFP4 权重、MXFP8 激活做量化感知训练。它是一开始就在被压的状态下训练。
更具体一点来说,在开发这个前端项目的过程中,一共有 6 个版本是我主动往回删效果。
![]()
球体在长按后会进化成一个更大的形态,这个形态也做了一串微调:体积极限从 2.4 倍提到 2.9 倍,同时改成核心、中层、薄壳的三层结构,然后又把最外那层壳减薄。外部装饰一直在删,内部分层一直在加深。
![]()
(只改动螺旋丸最外层的发光壳时,agent 整个思考过程)
![]()
( 去除火舌时 agent 的思考过程)
K3 在这些修改里体现了两个很厉害的能力:
第一,它执行减法时没把内核改坏。删白闪、删光圈、减薄壳层,这些都是在动一个已经很复杂的渲染管线,改错一处就会连带崩掉别的。六次都干净。举个例子。在一间已经装修好的房子里拆掉一面墙,重点看当初布线的人有没有想过这面墙将来可能要拆。线路各走各的管,你整面拆掉,别的房间照常有电有水。线路乱窜、还从这面墙里借了过道,你一锤子下去,整层楼跳闸。
删代码是同一回事,而且更隐蔽。这个项目所有画面都画在同一块画布上,而画布只有一支共享的画笔——你把它调淡、调成叠加模式,用完不推回去,后面所有元素都跟着错。像剧场的调光台:上一个节目把灯压暗了没复位,后面每个节目都在暗场里演,而且没人知道问题出在哪。
所以“删掉一处装饰,结果连带崩掉别处”是这类工作里最常见的事故。它连着删了六次,一次没出事。
第二,在放大形态那串微调里,它给出的方案是“加内部层次、减外部厚度”。那个三层结构是它的实现选择,不是我在提示词里写的。如果要把一个屏幕上的球做成看起来很有威胁,大多数情况会加东西,比如加光、加环、加闪、加粒子。这是最省事的路,也是“AI 生成的东西都很花”这个印象的来源。但 K3 的选择是让球在往外涨,核在往里收,壳在变薄。这已经符合人类的审美和感知了。
04
前端实测:螺旋吸入与同一力场
前端能力的困境
要理解螺旋丸的这个效果难在哪,可能要看看前端做视觉效果这二十年怎么走的。
Flash 时代:一个封闭插件,有时间轴、有帧,做动画很顺手。代价是它从来不属于网页本身,是嵌在网页里的一块外星领土。2020 年被彻底埋葬。
CSS 动画时代:transition、@keyframes、transform,浏览器原生支持、GPU 加速。但 CSS 动画有个根本限制——它只会做插值。你告诉它从 A 到 B,它把中间补出来。你没法告诉它“这片叶子要根据它离球心的距离,实时决定自己转多快”。CSS 不知道什么叫距离,也不知道什么叫球心。
Canvas 和 WebGL:到这一层你终于什么都能做了,代价是什么都得自己做。没有时间轴,没有关键帧,只有一个每秒调用 60 次的函数和一块空白画布。屏幕上出现的每个像素,都得你自己算。
于是这类效果卡在一个尴尬位置:CSS 其实是做不出物理感,Canvas 得手写整套运动逻辑,现成的粒子库效果长得都一样、而且只管粒子不管你的文字和按钮。而且一致性才是最难的地方。
你可以写三套代码,让粒子转圈、让叶子飘、让文字飞,其实三套各自都能跑,但是放在一起看肉眼就立刻会觉得不对,因为它们不在同一个物理世界里。一个在自转,一个在漂移,一个在走贝塞尔曲线,彼此是毫无关系的。要它们像真的一样就必须让所有东西受同一个力场支配。这就不再是写动画了,而是需要建一个小型物理系统,然后让画面上的一切活在里面。
交付物
![]()
零外部 JavaScript 依赖,所有特效都像是手写 Canvas 2D。
![]()
网页完整长图
![]()
最难的前端效果
这是提给研发同学会被百分百拒绝的需求:搓球的时候,页面上所有文字、按钮、导航栏,都要被吸进那颗球里。要实现让文字被吸进去的效果最省事的做法是整块淡出,然后在球边放点粒子,大概率能骗过眼睛,但 K3 它没这么做。
第一步,把页面上所有目标文本自动拆成单字。
![]()
用 TreeWalker 遍历文本节点,每个字包进独立的 span。这里有个细节:它特意跳过了标签——那是日文的注音,注音必须跟着基字走,不能被单独撕碎。
第二步,把每个字切成随机碎片。
不是切成方块,用的是递归半平面切割:
![]()
(index.html 第 1199–1230 行)
clipHalf用有向距离判断多边形顶点在切割线哪一侧,在跨越处插入交点;shardPolys每次挑当前面积最大的那块继续切。结果是一组无缝铺满、互不重叠的随机多边形,再用 CSS 的clip-path落到 DOM 上。这是正统的计算几何写法。
第三步,足以全体起立敬礼
看到这里可以全体起立致敬的程度。页面上有些拟音词是斜着排的。把这种字切碎、克隆出来单独飞,字形会歪。它写了这个:
![]()
( index.html 第 1140–1152 行)
沿着这个字的所有祖先元素一路往上,把每一层 CSS matrix 里的旋转角累乘出来,克隆碎片时反向补偿回去。这个问题需求里根本没提。它是实现过程中才会暴露的隐性难点,而且是那种“不处理,观众也说不出哪里怪,只会觉得别扭”的隐性难点。
![]()
(文字撕碎瞬间特写)
所有东西活在同一个力场里
回到前面说的真正难点:一致性。
这个项目里同时飞着四类东西——文字碎片、树叶、球面甩出的气流、环境尘埃。它们共用同一套流场公式。
![]()
【index.html 第 1355 行(碎片)】
![]()
【index.html 第 1704 行(树叶)】
一个环量项决定绕球转多快,一个径向汇流项决定往里吸多快,都随距离衰减。离球越近转得越急、吸得越猛。这和真实涡旋一个道理。更讲究的是每个个体都有自己的系数。所以有的叶子会盘旋很久才被吞掉,有的一下就没了。不是所有东西按同一节奏走,这才像真的。
![]()
(index.html 第 1375–1380 行)
碎片飞行时还会沿运动方向拉伸:先转到速度方向,沿这个方向拉长、垂直方向压扁,再转回来。这是专业的运动模糊做法——飞得越快,拉得越长。
![]()
(满蓄力全景,可以看到碎片+树叶+气流同屏旋转,
并且在一个立场下面)
架构设计的精彩之处
K3 的代码能力真的非常优秀。
我一开始压根没规划螺旋吸入的效果。在日志里面可以看到 7 月 21 日 20:24,版本a049a36,我的改动内容是希望球体运动能更真实和有能量感。K3 的选择是“涡旋气流物理化重构”,就是把涡旋从视觉模拟改成了真正的速度场驱动。
但是文字吸入功能是第二天上午用着用着突然想到的。并且这个改动一次就成。正是因为前一晚先把涡旋改成了真物理场,第二天的碎片、树叶、气流才可能共用同一套流场。架构决策在前,视觉效果在后。这是工程思维的顺序,不是特效师的顺序。
![]()
内容区一次成型
前面说的都是首屏那颗丸子。但这个页面 1938 行里,有 234 行是纯内容区,一行 Canvas 都没有。
这部分的效果依然非常非常棒,几乎还原了一个 jump 官网的水平。
![]()
六个章节都是 K3 自己规划的,顺序是:
![]()
以下是逐页展示:
![]()
![]()
![]()
![]()
![]()
▲五图上下滑动查看更多
05
多轮对话:思考过程能不能丢掉?
最难的不是搓出来,是不散。那颗球不是造出来就完事,而是一个需要持续供能才能维持的状态。松手就散。这件事在 K3 身上出现了几次,每次还不一样。
产品层
官方文档里有一条明确警告:多轮对话和工具调用时,必须把 API 返回的完整 assistant message 原样传回去,包括reasoning_content。如果不这么做会怎样?官方原话的意思是:质量可能剧烈波动。中途从别的模型切换到 K3,也可能出现同样的问题。
K3 不是一个问一句答一句的静态工具,它是一个需要你持续供能维持的状态。你一断供丢掉它的思考历史它就散了。顺着这条,有个现象也许能得到解释。
Terminal-Bench 2.1 这个测试上,Moonshot 官方报的成绩是 88.3,用的是自家的 Kimi Code。而 Artificial Analysis 用统一环境重测,K3 是 85.0。差了三分多。
这里是我的推断,不是官方说法:这个差距未必是模型能力问题,更可能是 Harness 环境不同,不同的脚手架对思考历史的处理方式不一样。换句话说,第三方框架如果没处理好这件事的话,可能会系统性低估它。
反过来说也成立:Kimi Code 的高分,也不能完全算在底座头上。所以评估 K3 的时候,“模型能力”和“脚手架适配”应该分开算。它的产品单位不是一个模型,而是模型加上完整思考历史加上一整套 Agent 循环。
工程层
爆炸容易,收回来难。大部分特效做到“炸开”就结束了。这个项目做了完整的三状态机——静止、吸入中、归位中:
![]()
(index.html 第 1419 行,配合第 1432 行 stepReturn)
松手之后三件事同时发生:碎掉的碎片沿缓动曲线飞回原位淡出;被拉扯变形但还没碎的元素弹性回弹;已经被球吞掉的元素在原地重新淡入聚合。
全部结束后状态归零,页面回到最初的样子——你可以再搓一次,效果完全一样。这就是“看起来完成”和“真的完成”的区别。前者只要炸得好看;后者要求这个系统能被无限次进入和退出,不留残渣。
还有一个只有真调试过才会写的补丁。页面上那个长按按钮,自己也会被吸进去。问题是:按钮碎掉之后如果被隐藏,浏览器就收不到你松手的事件了——你松了手,程序还以为你在按着。它的处理是:
![]()
【index.html 第 1312 行(定义在第 1183 行)】
用透明度归零,而不是隐藏。看不见但还在那里,而且还能实现鼠标跟随。其他元素照常隐藏,只有这个按钮特殊对待。
06
26 次迭代里的真实问题
一篇只有优点的测评不值得信。这个项目暴露的东西同样具体。它并不是一句话就直接生成的效果。一共迭代了 26 个版本。中间也出过几个有大问题的版本,比如球体一直在循环尺寸变化,不响应交互指令;比如声音反馈一直在卡循环等等。
![]()
(最开始的提示词其实很简单)
1M 上下文被撑满了两次。一次导致会话直接中断,一次导致早期的对话记录被压缩、原话不可考。1M 看起来已经很大了,但在这种多轮加多图的长程工程里依然不够用。
它也会犯低级错误。裁一张人物头像时裁错了位置,要靠生成一张带网格坐标的参考图重新定位才修对。日志里它自己写下的教训是目测容易错,最好让用户确认。
内容区里有一处小 bug 。导航栏一个 tooltip 的文案把一个日文词写成了半日半中的混排。全站唯一一处,因为藏在鼠标悬停提示里,从头到尾没被看见,后来迭代的时候他自己发现了
贵。K3 的确是贵,项目测到这里没继续优化是因为额度用完了,两天就用完了基础订阅的所有额度,也就是说这项目成本一共 19 刀(一瞬间不知道是贵还是便宜)
也就是说这份产物是经过人类协作的结果,并不是一次生成的证据。它证明的是 K3 在有人引导、反复迭代下能达到什么程度。至于同一句提示词重复提交三次能不能稳定出好东西,那是人类该解决的自我幻觉问题。
07
混乱与秩序的极限美学
回到开头那句:约束才是威力的本源。密度不来自总量,来自被秩序化的程度。
整个 K3 用下来确实非常惊艳,特别是在前端能力上,如果半年之前我想要做出这样的效果是非常费劲的。中途我用同样的提示词给 Fable 5 试了一下,这是仅仅一轮效果的输出,说实话已经非常棒了:
![]()
不管是 K3,还是 Fable 5 ,模型的能力确实越来越强,作品的天花板其实越来越靠近使用它的用户。
最关键的是用户到底想要什么,如果说作为人类的我们也有属于自己的注意力模型,那今天的重点肯定不在提示词写的多漂亮,而是我能不能想清楚我追求的是什么。
这次仅仅二十多轮的迭代,如果我把所有提示词整理出来,你可能会非常失望,因为真的没有在提示词上花太多功夫,每一轮都是很简单甚至粗糙的表达,但 K3 确实能理解并且很好的执行,甚至有很多很多惊喜的地方受制于篇幅限制不方便分享了。
![]()
(该项目所有我发出去的提示词合集)
做完这个网页之后我越发喜欢这颗丸子,也越发喜欢 AI 了。它的威力从来不取决于你手里有多少能量,取决于你到底怎么控制它。这句话对模型的工程思路成立,对用它的人大概也成立。
* https://chaos-naruto.kimi.page/index.html 项目链接,欢迎体验。(彩蛋:按数字 123 可以切换螺旋丸状态)
![]()
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.