一块8GB显存的消费级显卡,能训练一个会持续学习的语言模型吗?一个叫 mini-AGI 的项目给出的答案是:能,而且权重不占显存,存在硬盘上。
它的做法是把权重当成普通文件放在磁盘里,需要哪部分就分页加载到显卡上。这样一来,参数规模的上限不再是显存,而是硬盘的剩余空间。模型在训练中发现自己不够用时会长出新容量,也会剪掉没人调用的部分,而它读取数据的代码路径和对外服务时用的是同一条。
![]()
项目作者把定位说得很清楚:目前这只是个玩具级的小模型,不要指望前沿级别的能力。它更像一个小实验,用来证明一件事——从单一数据流做持续学习、且不发生灾难性遗忘,是可能的,而且在普通硬件上就能做到。
![]()
三个约束决定了整个设计
第一,必须塞进 8GB。这里没有用量化取巧——训练需要梯度和优化器状态,大约是权重的三倍。所以权重住在硬盘上,只有工作集常驻显存。
第二,必须不遗忘。一个边学边覆盖自己的模型,比一个根本不学的模型更糟。
第三,必须能读任何东西。字母表就是 256 个字节值,不需要拟合分词器,也不需要为某种数据类型新建词表。
作者对"拥有"这件事的描述很直接:你今天能真正拥有的每一个语言模型,都是别人训练完再冻结的。你只能在边缘微调,没法在自己的硬件上从零训练,也没法让它持续学习你每天做的事——一旦尝试,它就会忘掉之前知道的。结果是,个人模型永远是别人的模型加上薄薄一层你,而且从发布那天起就停止学习了。
字符怎么走完这套架构
![]()
一个字符(字节)不会像传统大模型那样穿过固定的层堆栈。它先经过两个稠密的前奏块,然后进入一个循环块,最多重复应用 24 次,每次应用都从共享专家池里挑自己的专家。两次应用之间的潜状态从不被解码,而是每轮由适配器与嵌入输入合并,所以这个循环不会漂离它正在读的文本。
三个不同的块,每个字符最多 26 次块应用。其中几个机制值得单独看:
- 自适应深度:一个停止头会给每一行的每个字符打分,只要再加一行不会改变答案,字符就停下。简单的字符走一行,难的走很多行。
- 路由按块应用而非按字符:26 次应用各自挑自己的 top-8 专家,所以一个字符实际触达的专家池比"top-8"听起来多得多,同一个专家可以在不同深度被反复选中。
- 没有专家被指派学科:全程没有任何标签。软 top-k 路由自己把能力分布到池子里,一个字符可以组合多个专家的片段。代价是能力共享参数,因此可能互相干扰。
位置编码是旋转式的,不携带可学习参数,所以上下文窗口可以通过继续训练来扩展,而不需要重新初始化任何东西。
作者放出的演示里,模型读的是留出文本,写的时候先用 2500 个字符的留出故事做提示,然后自己续写——灰色是给它的,绿色完全是它自己写的。用的是贪心解码,没有任何采样,跑两次得到同一句话。
权重目前还没有发布。这一轮还在读语料的第一遍,等全部读完才会放出权重,按当前速度还需要几周。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
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.