复现mini-AGI遗忘测量:replication工具链从权重下载到位图重绘的完整指南
【免费下载链接】mini-AGIContinual learning model trained from scratch on 8GB VRAM laptop with batch-1 stream of data.项目地址https://gitcode.com/gh_mirrors/mini/mini-AGI点击查看免费下载本文带你完整复现mini-AGI的遗忘测量forgetting probe实验。mini-AGI 是一个在 8GB 显存显卡上从零开始持续学习的字节级语言模型它能一边读取新数据一边保持旧知识。开源仓库的 replication/ 工具链把这套遗忘实验做成了可一键复现的流程下载权重、准备语料、跑探测脚本、生成汇总表格、重绘三张结果位图全部命令都已给出。一、遗忘测量工具链能做什么 遗忘实验回答一个问题连续读一个陌生主题模型会不会忘掉已经学会的其他主题实验设计是最坏情况把模型冷切换到 19 世纪小说语料 PG19 上以 batch 1 连续读1,048,576 个字符期间每隔一段重新给全部 9 个主题打分看没在读的那 8 个主题是否退化。工具链由四个部分组成组件作用replication/forgetting_probe.py遗忘探测主脚本支持 massed / 冻结 / 交错等 4 种实验臂replication/cl_summary.py把 4 个实验臂的 JSON 结果汇总成对照表并先给出控制组判定replication/plot_figures.py从结果 JSON 重绘全部三张结果位图replication/results/官方已跑好的 4 份结果 JSONcontrol/static/none/trunk01可跳过训练直接出图实验的四个臂static冻结专家--no-swaptrunk 学习率 专家学习率none正常换入换出trunk 学习率 专家学习率--trunk-lr-mult 1.0trunk01trunk 学习率降到 0.1 倍--trunk-lr-mult 0.1——正式训练采用的配置controlPG19 与其余 8 个主题交错轮读作为控制组两个可信性设计值得了解评分用的FolderEvaluatorminagi/stream.py每次都从同一批文件、同一位置开始打分差值只反映模型变化而非采样噪声探测期间通过model._grower None禁止专家池增删避免没忘与偷偷扩容混淆。二、环境与权重下载git clone https://gitcode.com/gh_mirrors/mini/mini-AGI cd mini-AGI pip install torch numpy pyyaml matplotlib权重方面遗忘实验所有数字都测在同一个检查点上——step 223,506、已读 428.2M 字符、174 个专家、held-out 0.7702 nats。请到 Hugging Face 上的官方权重仓库Volotat/mini-AGI-cl-replication-weights下载weights/文件夹放到仓库根目录mini-AGI/ weights/ # 每个专家一个 .npz 文件目录本身就是模型⚠️ 关键提示探测脚本会改写它拿到的权重目录专家页入时会被标记 dirty。运行前务必先复制一份cp -a weights /tmp/w然后所有实验臂都指向这份拷贝。三、准备语料 语料由 corpora/ 模块统一构建data/train、data/val覆盖 8 个既有主题python3 -m corpora all # 8 个主题的全部训练/验证数据新领域 PG19 单独准备注意它要放在训练语料之外防止正式训练循环顺带读到它python3 -m corpora pg19 --split validation \ --out data/cl/pg19 # 新领域validation 分片这里有两个细节为什么用--split validation而不是 testtest 分片是公开 BPB 基准见 corpora/pg19.py 的说明留着不动才能与 MambaByte 等已发表数字同轴比较。data/cl_val的作用held-out 目录里既有 8 个原有主题的验证集也有从未被读过的 PG19 书籍——这样PG19 变好了就不可能是背下来了。四、运行遗忘探测核心命令trunk 0.1x 缓解配置即正式训练在用的那组参数python3 replication/forgetting_probe.py --weights /tmp/w \ --domain pg19 --read-root data/cl --steps 512 \ --at 0,64,128,256,384,512 --eval-chunks 16 --chunk 2048 \ --lr 2.08e-4 --held-out data/cl_val \ --trunk-lr-mult 0.1 --out replication/results/mine.json关键参数速查参数含义--weights权重副本目录探测会读写它--domain要 massed 连读的主题这里是 pg19--read-root新主题文件所在目录data/cl刻意与data/train分离--steps/--at总步数在每个标记步重新给所有主题打分--chunk 2048每步 2048 字符512 步即 1,048,576 字符--lr 2.08e-4专家学习率与官方结果一致--trunk-lr-multtrunk 学习率倍率0.1 缓解 / 1.0 未缓解--no-swap冻结专家臂第一个窗口准入的专家集一直用到底--rotate a,b,c,...交错控制臂按轮转方式读多个主题--held-out打分用的验证集目录data/cl_val其他三个实验臂只需微调# 未缓解臂--trunk-lr-mult 1.0 # 冻结专家臂在此基础上加 --no-swap # 交错控制臂 # --rotate pg19,chess,code,stories,arithmetic,wikipedia,chat,reasoning另一个容易踩的坑优化器状态。optim.npz中的 Adam 动量属于模型状态的一部分脚本默认通过_load_optimminagi/store.py恢复它如果冷启动优化器Adam 会在单批梯度上迈出一步巨大的初始更新把正在读的主题都打坏那读起来像遗忘、实际上不是。五、一行命令出汇总表python3 replication/cl_summary.py它会先打印控制组判定再输出各臂对照表控制组把每个主题都读了按构造不可能发生遗忘若它出现退化说明退化来自实验装置本身而非模型此时其余各臂只能当作上界看。四列结果的含义read新领域获得、unread8 个旧领域平均变化、retained相对随机猜测保留了多少进度、experts有多少专家收到过梯度。官方四臂数字配置PG19新领域8 个旧领域每忘 1 nat 换到保留率专家冻结trunk 全速-0.29091.26630.2374.12%正常换出trunk 全速-0.31061.26280.2574.25%trunk 0.1x正式配置-0.42160.12973.2597.30%交错控制组-0.3124-0.0065无遗忘100.13%结论一目了然把 trunk 学习率降到 0.1 倍新领域学得更快、遗忘量少了一个数量级——慢 trunk 不是牺牲了可塑性。六、重绘三张位图python3 replication/plot_figures.py脚本读取 replication/results/ 下的 JSON如 replication/results/trunk01.json输出三张图到assets/mitigations.png三配置消融对比、probe_massed.pngmassed 连读过程、probe_interleaved.png交错控制组。仓库里已附官方结果 JSON即使一步实验没跑这一条命令也能直接出图。上图为plot_figures.py生成的三面板消融对比左Amassed 暴露下 8 个未读主题的平均损失变化trunk 0.1x 配置蓝线远低于两条未缓解曲线中B新领域 PG19 的学习进度蓝色配置学得最快右C进度保留率蓝色 97.30% 对红色 74.25%。七、如何读懂结果图 massed 臂trunk 0.1x的过程图左面板蓝线是正在读的 PG19稳步降到 -0.4216 nats灰色带是 8 个未读主题整体只上浮 0.1297且漂移最大的恰是 chat、stories、reasoning 这些散文型主题——损伤落在表征重叠的地方。右面板是关键机制整个连读过程中只有44/17425%的专家收到过梯度路由让更新天然被限制在文本实际触及的局部这就是遗忘被圈住的原因。交错控制组PG19 作为 9 个主题之一轮读后降 0.31 nats其余 8 个主题平均-0.0065负值是变好了——对这种架构而言新增一个领域几乎零成本。八、常见注意事项 ✅永远先拷贝权重cp -a weights /tmp/w否则页式加载会污染真实运行目录minagi/paged.py 的 dirty 标记机制。先读控制组判定cl_summary.py输出CLEAN才相信 massed 各臂的数字。方差意识同一配置跑两次约有 0.014 的差距CUDA 上专家分派不确定把 0.03 当作真实差异的阈值。硬件门槛与正式训练一致8GB 显存的 NVIDIA/AMD 显卡或 CPU 均可参考速度见 README 的 GPU support 一节RTX 3070 Laptop 约 2,000 字符/秒。九、文件索引探测脚本replication/forgetting_probe.py汇总脚本replication/cl_summary.py绘图脚本replication/plot_figures.py官方四臂结果replication/results/control.json、replication/results/static.json、replication/results/none.json、replication/results/trunk01.jsonPG19 语料构建corpora/pg19.py权重目录规范minagi/store.py主配置文件config.yaml照着上面五步走完你就能在自己机器上把 mini-AGI连续学习不遗忘的每个数字亲手复现出来——从一份权重拷贝到三张位图全程无需改动任何仓库文件。赞分享【免费下载链接】mini-AGIContinual learning model trained from scratch on 8GB VRAM laptop with batch-1 stream of data.项目地址https://gitcode.com/gh_mirrors/mini/mini-AGI点击查看免费下载相关推荐Mindustry 安装与配置指南从源码构建到启动验证的完整流程Mindustry 安装与配置指南从源码构建到启动验证的完整流程 Mindustry 是一款用 Java 编写的自动化塔防 RTS 游戏你可以在本地把它当作游戏开发AntiDupl重复图片清理工具从入门到精通的完整指南AntiDupl重复图片清理工具从入门到精通的完整指南 在数字时代我们每天都在产生大量图片数据重复图片不仅占用宝贵存储空间还让图片管理变得混乱。Anti图像处理桌面应用Potrace 矢量转换工具从位图到完美矢量的完整指南Potrace 矢量转换工具从位图到完美矢量的完整指南 在当今数字化时代矢量图形转换已成为设计师和开发者必备的技能之一。无论你是需要将公司logo从扫描件转图像处理后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考