BLOG

mini-AGI:一张 8GB 显卡从头训练的持续学习字节级语言模型

Kael Zhang
持续学习字节级模型混合专家开源项目
广告 · Advertisement

技术拆解:解析 AI 技术框架——说明、分析、技术评估、价值判断、落地使用。作者:永亮


今天的主流语言模型,训练是一锤子买卖:一口气读完海量语料,固化成基座,之后的新知识只能靠一轮轮微调补丁往上贴,贴多了就遗忘,想真正继续学就得重新训练。2026 年 9 月 21 日,GitHub 作者 Alexey Borsky 把这个顺序整个倒过来的项目 mini-AGI 上了 Show HN,拿到 255 个支持票、56 条讨论。它的主张很直白:读书和被训练是同一件事——模型从字符流里一块块读,每读一块走一步梯度,永不冻结,永不毕业。这篇按六件事拆:是什么、为什么值得看、机制怎么做、数字与边界、谁能跑起来、适合谁。

一、它是什么

mini-AGI 是一个字节级语言模型:字母表就是 256 个字节值,没有 tokenizer,任何数据类型——文本、代码、棋谱、对话——进来都不用新词表。它的核心身份是「持续学习模型」:从字符流中连续读取,每处理一块数据就更新一次权重,读取、推理、学习走的是同一条代码路径。README 里那句定位值得原样记住:「没有单独的微调阶段,没有冻结的基座,读书和被训练是同一件事」。

它最反直觉的是参数量的存放方式。权重不住在显卡上,住在磁盘里,按需分页进显存——所以模型的参数量上限由磁盘容量决定,不由显存决定。这就像操作系统的虚拟内存:程序看到的地址空间远大于物理内存,换到这里,模型看到的参数空间远大于显存,用不到的权重躺在磁盘上,轮到谁干活谁上卡。这个换位是它一切设计的起点——显卡不再决定模型能长多大,只决定它跑得多快。整个项目 42 个文件、30 个 Python 文件、17M 体积,MIT 协议。

但分寸必须先钉死,作者自己在 README 里钉的:「as of now this is a small toy-level model. Do not expect a frontier level capabilities.」这是证明「持续学习可以不灾难性遗忘」的小实验,不是能力突破。权重也尚未发布——首轮语料还没读完,预计还要数周,作者的意思是等这轮读完、数字定型之后再见人。带着这两句话往下读,才是正确的打开方式:把它当一个认真做完的对照实验,而不是一个半成品的产品。

二、为什么现在值得看

值得看的原因不在模型多强,在它站到了当下范式的一个对立面上。

今天拿到一个模型的标准姿势是:冻结基座,再叠一层薄薄的微调——LoRA、adapter、领域继续预训练,全是这个思路的变体。基座是神圣不可动的资产,新知识是外挂的行李。这条路线工程上成熟,但它有一个结构性代价:模型永远不真正「长进」,只是行李越挂越重,挂到某个时刻开始互相打架——灾难性遗忘。

mini-AGI 的回答是取消「训练」和「使用」的边界。模型活着的每一秒都在学,读 Wikipedia 是在学,读棋谱是在学,和你对话也是在学。这在概念上接近人:没有人是把二十年读书压缩进某个「预训练阶段」然后封盘的。实现它的代价是全程背着优化器状态做在线梯度更新,工程难度远高于训完就冻结,所以它长期停留在论文概念里——直到有人把它压进一张 8GB 的消费级显卡。这个压缩方案本身,就是本篇的主要看点。

Hacker News 上的反应也能说明这个项目的气质。有支持者说,看到「Mini-AGI」和「8GB 显存」出现在同一个句子里如沐春风——本地跑持续学习模型,似乎没那么遥不可及;也有做持续学习研究的开发者表示,正愁手头的方案都是事后补救型,很高兴看到一个从头就为防灾难性遗忘而建的系统,值得 clone 下来逐行读。还有人把话题拉到了历史维度:个人电脑出现之前,老一代专家都以为大型机会先搞定人工智能,结果主流路线反而是死胡同——算力民主化之后,边缘探索反而长出了新东西。255 票给的不是一个产品,是一个被认真工程化的反主流样本。

三、核心技术机制

整个设计由三条硬约束定出来:必须塞进 8GB 显存、不能量化、不能遗忘、什么数据都得能读。不量化是死规定——训练要梯度,梯度加优化器状态约为权重体积的三倍,所以权重必须住磁盘,显卡上只驻留当前的工作集。什么都能读,决定了字节级输入——没有词表,就没有「遇到生僻数据要扩词表重训嵌入」这种问题。

架构是三层结构:2 个稠密前奏块,加 1 个循环块,这个循环块对同一批字符最多应用 24 次。深度是 PonderNet 式自适应 halting:一个 halting head 给每个字符在每一行打分,判断再算一行会不会改变答案——简单字符走 1 行就停,难字符自动多算。这就把「算力跟着难度走」从口号变成了逐字符的执行策略。

路由是混合专家思路的变体:26 次块应用,每一次都独立选出自己的 top-8 专家;同一个字符在不同深度可以重复选同一个专家。专家没有人手工标注的主题,soft top-k 路由自发地把不同能力分配到不同专家头上。配合增长与剪枝机制——容量不够就长新容量,长期没人用的专家就剪掉。作者 Hacker News 上补了一句很形象的解释:这很「有机」,传统反向传播之外,背景里还有一层自然选择,每个新专家有 16 个「亲本」。

位置编码选的是 rotary,且没有学习参数——这一条直接服务持续学习:上下文窗口不需要重新初始化,靠继续训练就能扩。对永远在读新数据的模型来说,这是刚需而不是优化:窗口一旦靠 learned position embedding 固定,扩窗就等于让模型忘一半坐标系,从头再来。读写对称是另一个值得记住的设计:读和写共用同一个前向传播,但写作比阅读更耗深度,平均每字符约 9.9 行,阅读约 8.0 行——生成一个字符需要反复斟酌,理解一个字符则一步到位,这个不对称和人的经验刚好对得上。工作集每 64 字符重新选一次;贪心解码完全确定性,跑两次得到同一个句子。在一个人人谈随机性的时代,一个肯把「可复现」写进设计目标的小模型,也算一股清流。

四、数字与边界

截至 README 记录:模型已读 318.1M 字符,长出 169 个专家;held-out 全部八科的损失是 0.8336 ± 0.0331 nats/char,折合 1.2026 bits/byte。分科看差异很大:chess 0.796、stories 0.919、arithmetic 0.948、code 1.066、reasoning 1.145、chat 1.199、chat_hermes 1.699、wikipedia 1.847——结构化、规则明确的数据好啃,开放文本难啃,这个排序和直觉一致。尤其 chat 两档相差近 0.5,说明「像人一样闲聊」恰恰是这个小模型最贵的科目,规则反而便宜。

测量本身有噪声:CUDA 上专家调度是非确定的,同一配置跑两次差约 0.014,作者建议把 0.03 当作「真实差异」的门槛。这种把误差棒写进 README 的诚实,值得点名表扬。

数据 scaling 是项目里最有研究味道的一张表:损失随数据量呈幂律下降,指数 -0.239,拟合优度 R²=0.96——落在 Kaplan 的 0.095 与 Chinchilla 的 0.28 之间。对照组更能说明效率:同参数量级、FLOPs 相近的 MambaByte-353M,达到可比水平多读 94 倍数据;Transformer-320M 多读 251 倍。作者据此外推:降到 1.00 BPB 需要约 0.75B 字符、6 天;降到 0.80 BPB 需要约 1.92B 字符、24 天——都在 7.87B 字符语料的单遍之内。天到周级的时间尺度,来自一台笔记本显卡。

但边界必须说透:「能持续学」不等于「能泛化」。Hacker News 上有质疑者直接问:这个架构能泛化,还是主要靠记忆?做加法这类基础任务试过吗?作者的回答毫不含糊。模型太小、训练不足,不做泛化声明,等读完整个语料再上基准。1.2 的 bits/byte 离生产可用也还很远。这张外推表是作者对自己实验的延伸,不是承诺。

五、怎么跑、谁能玩

门槛比想象低,但有一个硬前提:CUDA 显卡,显存 8GB 起。参照机是 RTX 3070 Laptop——就是一张游戏本显卡,不是什么实验室设备。软件只要 Python 3.10 以上,代码 MIT 协议,clone 下来就能训。没有集群、没有排队、没有配额,也没有云端账单——训到什么程度、烧多少电,全在自己眼皮底下。

三类人现在就能玩起来:持续学习方向的研究生,这是一份能跑能改、机制全在明处的参考实现,比从零复现一篇论文的代价低得多;想研究混合专家路由和自适应计算深度的工程师,26 次应用、top-8 路由、PonderNet halting 的组合在这套代码里是解耦可读的,改一处看一处;以及单纯想验证「8GB 到底能训出什么东西」的硬件爱好者——顺便还能观察 169 个专家是怎么从数据里自己长出来的。

两类人要缓一缓:想要现成权重做评测的——权重未发布,得等首轮语料读完,预计数周;期待开箱即用的产品体验的——这是研究代码,不是服务,没有界面,没有 API,一切从命令行开始。

六、价值判断与适合谁

把研究样本价值和生产力价值分开说,这个项目的面目就清晰了。

研究样本价值:高。它是一个把「持续学习、不灾难性遗忘」从论文概念压进 8GB 消费级显存的完整工程样本,磁盘权重加工作集分页、无学习参数的 rotary 编码、增长与剪枝,每个设计都直接服务于「不停机地学」这一个目标,且全部开源、全部可读。scaling 指数落在 Kaplan 和 Chinchilla 之间的那张表,本身就是值得引用的一手数据。做持续学习、做高效架构的人,都应该读一遍它的 README。

生产力价值:目前为零,作者自己也是这个口径。权重没发布、能力自评 toy-level、1.2 bits/byte 的损失水平、泛化能力未声明——今天拿它做任何事情,都既不可靠也不该。任何把它吹成「AGI 实现」的说法,都是对项目本身的误读;项目的名字只是一个名字,作者证明的是「持续学习可以不遗忘」,不是「智能已经到来」。

适合谁:持续学习和高效架构方向的研究者、想读懂在线学习整套工程实现的开发者,还有关注「小显存能干什么」这条线索的观察者。

不适合谁:找现成模型生产力的团队;期待训练完成即泛化突破的人——作者明确说泛化要等读完整个语料再测,在那之前,一切「能干什么」的答案都是未完成的。

参考来源

  • GitHub 仓库:volotat/mini-AGI(README、LICENSE),截至 2026-09-22
  • Hacker News:Show HN「Mini-AGI – Dynamic continual learning model trained on 8GB VRAM」,story 49783133,255▲ / 56💬,2026-09-21
  • README benchmark 与 scaling 表(318.1M 字符 / 169 专家、held-out 1.2026 BPB、分科 bits/byte、幂律 -0.239、外推表);HN 讨论中作者对泛化质疑的回复
广告 · Advertisement

常见问题

mini-AGI 和普通大语言模型的根本区别是什么?

普通模型训练完就冻结,新知识只能靠微调补丁,补丁贴多了会灾难性遗忘。mini-AGI 取消了「训练」和「使用」的边界:模型从字符流里一块块读,每读一块走一步梯度,读取、推理、学习走同一条代码路径,永不冻结、永不毕业。代价是全程背着优化器状态做在线更新,工程难度高,所以作者把它压进一张 8GB 显卡这件事本身是主要看点。

它的架构有什么特别之处?

三个设计直接服务于持续学习:一是 PonderNet 式自适应深度,2 个稠密前奏块加 1 个循环块最多应用 24 次,简单字符走 1 行就停、难字符自动多算;二是 26 次块应用各自独立选 top-8 专家,专家没有人工标注主题,配合增长与剪枝——容量不够长新专家,没人用的剪掉;三是 rotary 位置编码无学习参数,上下文窗口靠继续训练就能扩,不用重新初始化。

现在的数字说明它到什么程度了?

截至 README 记录:已读 318.1M 字符、169 个专家,held-out 八科平均 1.2026 bits/byte,chess 最好(0.796)、wikipedia 最差(1.847)。损失随数据量呈幂律下降,指数 -0.239,落在 Kaplan 的 0.095 与 Chinchilla 的 0.28 之间;同量级对照模型 MambaByte-353M 多读 94 倍数据。但「能持续学」不等于「能泛化」:作者明确模型太小、不做泛化声明,且这是 toy-level 实验,权重还没发布。