☰
autoresearch-mlx基准结果全解读:从2.667到1.294的val_bpb优化路径与硬件差异分析
2026/10/11 23:08:47 网站建设 项目流程

【免费下载链接】autoresearch-mlx

Apple Silicon (MLX) port of Karpathy's autoresearch — autonomous AI research loops on Mac, no PyTorch required.

项目地址:https://gitcode.com/gh_mirrors/au/autoresearch-mlx
点击查看免费下载

autoresearch-mlx是 Karpathy 提出的 autoresearch(LLM 自主科研循环)的 Apple Silicon / MLX 移植版:无需 PyTorch 与 CUDA,直接在 Mac 上用固定 5 分钟训练预算自动迭代train.py,唯一目标是把val_bpb(每字节比特数,越低越好)降到最低。本文完整解读其公开基准:从 2.667 的基线一路压到 1.294,并对比不同 Mac 硬件上的结果差异。

一、项目是什么:LLM 自己当研究员 🤖

autoresearch-mlx 的规则极简(协议全文见 program.md):

元素说明
唯一可改文件train.py —— 模型、优化器、训练循环随便改
唯一指标val_bpb,由 prepare.py 中只读的evaluate_bpb计算
固定预算每次实验训练 5 分钟(TIME_BUDGET = 300,见 prepare.py),全程约 6–7 分钟
决策规则跑完看val_bpb:变低就keep,变高就git reset回退,然后无限循环

一句话概括:时间锁死,硬件说了算——比的是谁能在 5 分钟里塞进更多有效优化步。

二、公开优化路径:2.667 → 1.808 的四次关键改动 📉

results.tsv 记录了同一台 Mac 上从默认基线出发、逐条保留的"本地行走"路径:

Commitval_bpb内存(GB)状态改动
383abb42.66700026.9keep基线(AdamW,默认配置)
c67ad2a2.69536926.9discard降低 weight decay 到 0.1(失败回退)
909dd592.58890426.9keep总 batch 减半至2^16
4161af32.53372826.9keep矩阵学习率提到 0.04
5efc7aa1.80790220.7keep深度从 8 层砍到 4 层

几个值得新手注意的细节:

  • 中间有失败:c67ad2a降 weight decay 反而变差,被标记discard回退——这正是"keep-or-revert"机制的价值,坏改动不会污染分支。
  • 降 batch = 更多步数:batch 减半后,同样的 5 分钟里优化器多走了一倍多的步,val_bpb 掉 0.078。
  • 最狠的一刀是砍深度:8 层 → 4 层直接让 val_bpb 从 2.534 崩到 1.808(-0.726),内存还从 26.9GB 降到 20.7GB。这些最终值就固化在 train.py 的超参数区:DEPTH = 4、TOTAL_BATCH_SIZE = 2**16、MATRIX_LR = 0.04。

💡 核心规律:在固定墙钟时间下,更小、训得快的模型能赢过更大的模型,因为它能塞进更多优化步。这就是 Apple Silicon 移植反复验证出的模式。

三、长程竞赛:三台 Mac 的最优解与硬件差异 🖥️

短跑只是热身。把循环挂整夜后(README.md 中 "Longer Apple Silicon runs" 一节),不同硬件跑出了明显不同的"冠军配方":

机器当前最佳 val_bpb起点反复获胜的改动组合
M4 Max #11.2945261.596971纯 AdamW、低矩阵 LR、3× MLP、去掉 logit cap、适中 weight decay
M4 Max #21.3305091.807902更精简 batch、长退火(anneal)、SiLU、低正则、无 logit cap
Mac Mini(长跑)1.3533291.922472Muon 优化器、更锐利的注意力、更小 MLP、更低标量 LR

三个结论:

  1. 没有全局最优配方。两台同代 M4 Max 的最优组合都不相同——一台靠"纯 AdamW + 低矩阵 LR + 3× MLP",另一台靠"长退火 + SiLU + 低正则"。
  2. Mac Mini 找出了不同的路。小硬件上的最强改动偏向"更激进的步数效率"(Muon、小 MLP、低标量 LR),而不是简单复现 Max 机的配方。
  3. 迁移性差正是价值所在。Mac Mini 的发现移植到 Max 基线上并不完全成立——这类硬件特化行为,恰恰是自动循环擅长挖出来的东西。换硬件跑,请先在自己机器上重建基线,别直接套用别人的数字(program.md 明确要求:Do NOT use baseline numbers from other platforms)。

四、为什么一次运行的数字要"打折"看 🎲

单跑一次的 val_bpb 是有噪声的:同一份train.py重跑,结果会漂移约±0.03(GPU 归约非确定性)。而循环只保留"比当前最优低"的运行,记录曲线其实是乐观的运行最小值——诚实复评时会回涨。

所以项目提供了 rigor.py:一个统计门槛,替代"看一眼差值就拍板":

  • 多种子评分:每个改动跑 3 个(可配 5 个)seed 取均值,而非单次快照
  • Bootstrap 置信检验:只有当"新配置确实更好"的概率 P(better) ≥ 0.95 才keep
  • 快速淘汰:第一个 seed 就明显劣于当前最优?立刻丢弃,不浪费后续 seed
  • 永不重复:按train.py的哈希记账(rigor_ledger.jsonl),相同配置不重评
uv run rigor.py run "halve the batch size" # 3 seed 评分 uv run rigor.py best # 查看当前最优 uv run rigor.py log # 全部已评分配置

它只"决策":不改train.py、不碰 git、不动评测函数。对新手很友好——把循环交给严谨模式,曲线才经得起复评。

五、自己动手:最快上手方法 ⚡

前置:Apple Silicon Mac + Python 3.10+ + uv:mlx、numpy、pyarrow、rustbpe、tiktoken)。

# 1. 安装依赖 uv sync # 2. 一次性准备数据 + 分词器(存到 ~/.cache/autoresearch/) uv run prepare.py # 3. 跑一个 5 分钟实验,得到你自己的基线 uv run train.py

跑完会看到类似输出(格式定义见 train.py):

val_bpb: 2.534000 training_seconds: 312.4 peak_vram_mb: 27528.9 num_steps: 46 num_params_M: 50.3

给新手的三条提醒:

  1. 只和你同一台机器的基线比,别和本文数字或 NVIDIA 结果对比;
  2. 每次实验约 7 分钟,睡觉前挂上,醒来约 70 个实验(按 8–9 个/小时估);
  3. 记结果用制表符分隔的 TSV,描述里不要带逗号(见 program.md 的 Logging results 一节)。

六、关键文件导航 📁

文件角色
README.md项目总览与全部公开基准数字
program.md自主实验协议(AI Agent 的"操作手册")
train.py模型/优化器/训练循环,唯一允许改的文件
prepare.py数据、分词器、只读的evaluate_bpb评测(勿改)
results.tsv实验历史账本
rigor.py多种子 + Bootstrap 的 keep/discard 统计门槛
pyproject.toml依赖声明

结语 🏁

autoresearch-mlx 用一组漂亮的数字说明了三件事:5 分钟预算下"小而快"能打败"大而慢"(2.667 → 1.808)、不同 Mac 硬件会收敛到不同的最优配方(1.294 / 1.331 / 1.353)、单次运行的数字必须用统计门槛过滤噪声(rigor.py)。如果你想在自己机器上验证这套流程,从uv run prepare.py开始,半小时后就能拥有属于你的基线数字。

【免费下载链接】autoresearch-mlx

Apple Silicon (MLX) port of Karpathy's autoresearch — autonomous AI research loops on Mac, no PyTorch required.

项目地址:https://gitcode.com/gh_mirrors/au/autoresearch-mlx
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询