
🚩 2026 年「术哥无界」系列实战文档 X 篇原创计划 第 48 篇,AI星探「2026」系列第 5 篇 大家好,欢迎来到 术哥无界 | ShugeX | 运维有术。 我是术哥,一名专注于 AI 编程、AI 智能体、Agent Skills、MCP、云原生、Milvus 向量数据库的技术实践者与开源布道者!
Talk is cheap, let's explore。无界探索,有术而行。

Karpathy 在 Twitter 上发了这么一段话:
"从前,前沿 AI 研究是由肉身计算机在吃饭、睡觉、娱乐之间完成的,偶尔通过声波互连在'组会'仪式上同步。那个时代早已过去。现在,研究完全是运行在云端计算集群巨型结构上的自主 AI Agent 群体的领域。"
这段话的配图就是他刚开源的项目: AutoResearch。72 小时内,这个项目在 GitHub 上揽星 12.7k,Fork 数 1.7k。Shopify CEO 公开表示"膜拜"。
我翻了一圈代码和文档,发现这事的本质是:一个 630 行的 Python 项目,能让 AI Agent 在单个 GPU 上自主进行机器学习研究,每 5 分钟完成一轮实验,自动修改代码、训练模型、评估结果,然后决定是保留还是回退。
说白了,就是雇了一个 24 小时不休息的虚拟研究员。
AutoResearch 的核心是一个自进化的实验循环。
传统的研究流程是这样的:你有个想法 → 改代码 → 训练模型 → 看结果 → 再改代码。每一步都需要人工干预,而且不同实验的训练时长可能不一样,导致结果不可比。
AutoResearch 的做法是:固定时间预算 + 单一评估指标 + 自动决策。
具体来说:
整个项目就三个核心文件:
人类只需要在 program.md 里写清楚研究方向和规则,剩下的全都交给 AI。
这是 AutoResearch 设计思路的精髓。
传统超参数调优有个问题:不同配置的训练时长可能差很多。有的跑 10 分钟,有的跑 1 小时,结果怎么比?没法比。
AutoResearch 的解决方案很简单:把训练时间固定为 5 分钟。
# prepare.py
TIME_BUDGET = 300 # 5分钟(秒)
这样做的好处:
代价是:不同计算平台(H100 vs RTX 3090)的结果不可直接比较。但 Karpathy 的观点是,这反而是优势 - 找到特定平台在时间预算内的最优模型。

配图2:AutoResearch 自进化循环流程图
AI 只被允许修改一个文件:train.py。
这个约束看起来限制性很强,但实际上很聪明:
AI 可以在 train.py 里改的东西:
但不能碰的东西:
虽然只有 630 行代码,但包含了一个完整的 LLM 训练框架:
模型架构:
创新特性:
优化器:
性能优化:
完整的训练流程,一个 GPU 就能跑起来。
整个循环是这样的:
1. AI 读取 program.md 和当前代码
2. 修改 train.py(通常 1-2 处改动)
3. git commit
4. 运行 5 分钟训练
5. 评估 val_bpb
6. 记录到 results.tsv
7. 决策:
- val_bpb 降低 → 保留提交
- val_bpb 变差/相同 → git reset
8. 回到步骤 1,继续下一轮
关键是决策机制:
# 伪代码
if val_bpb_improved:
keep_commit() # 保留修改,继续前进
else:
git_reset() # 丢弃修改,回到上一个最佳版本
这确保了每次保留下来的改动都是真正有效的。失败的实验立即回退,避免错误累积。
简化性标准也是重要的一环:
这避免 AI 为了微小改进而堆砌复杂代码。
这是 AutoResearch 技术上的一大创新。它对不同类型的参数使用不同的优化策略:
AdamW 组:
用于 token embeddings、LM head、value embeddings 等参数:
embedding_lr = 0.6 # embedding 学习率
unembedding_lr = 0.004 # lm_head 学习率
scalar_lr = 0.5 # scalar 学习率
adam_betas = (0.8, 0.95)
标准 AdamW 算法,学习率按模型维度缩放。
Muon 组:
用于所有 2D 矩阵参数(Q、K、V、O、MLP 权重等):
matrix_lr = 0.04 # matrix 学习率
momentum = 0.95 # Nesterov momentum
ns_steps = 5 # Newton-Schulz 迭代步数
beta2 = 0.95 # 方差减少的 beta2
weight_decay = 0.2 # cautious weight decay
Muon 算法的核心是三步:
关键代码片段:
# Polar Express 正交化
X = g / (g.norm() * 1.02 + 1e-6)
for a, b, c in polar_express_coeffs[:ns_steps]:
A = X @ X.T # 或 X.T @ X
B = b * A + c * (A @ A)
X = a * X + X @ B # 或 B @ X
g = X
这个优化器的设计思路是:矩阵参数需要正交化和方差控制,而标量参数用标准 AdamW 就够了。

配图3:MuonAdamW 优化器架构
这是模型架构上的创新:
# 混合 value embedding,使用 input-dependent gate
if ve is not None:
ve = ve.view(B, T, self.n_kv_head, self.head_dim)
gate = 2 * torch.sigmoid(self.ve_gate(x[..., :self.ve_gate_channels]))
v = v + gate.unsqueeze(-1) * ve
作用:在 Value 中混合额外的 embedding。
机制:使用输入相关的门控(gate)调节混合程度。
优势:增强模型表达能力,类似 ResNet 的残差思想。
简单说,就是让模型在计算注意力时,能够根据输入动态调整 value 的表示。

配图4:ResFormer Value Residual 机制示意图
为什么用 bits per byte(BPB)而不是 perplexity?
BPB = total_nats / (log(2) * total_bytes)
BPB 的优势:
计算方式:
@torch.no_grad()
def evaluate_bpb(model, tokenizer, batch_size):
token_bytes = get_token_bytes(device="cuda") # 每个 token 的字节长度
val_loader = make_dataloader(tokenizer, batch_size, MAX_SEQ_LEN, "val")
steps = EVAL_TOKENS // (batch_size * MAX_SEQ_LEN)
total_nats = 0.0
total_bytes = 0
for _ in range(steps):
x, y, _ = next(val_loader)
loss_flat = model(x, y, reduction='none').view(-1)
y_flat = y.view(-1)
nbytes = token_bytes[y_flat]
mask = nbytes > 0# 排除特殊 tokens
total_nats += (loss_flat * mask).sum().item()
total_bytes += nbytes.sum().item()
return total_nats / (math.log(2) * total_bytes)
特殊 tokens(字节长度为 0)被排除,只计算真实内容的压缩率。
# 1. 安装 uv 项目管理器
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 克隆项目
git clone https://github.com/karpathy/autoresearch.git
cd autoresearch
# 3. 安装依赖
uv sync
# 4. 下载数据和训练分词器(一次性,约 2 分钟)
uv run prepare.py
# 5. 手动运行单次训练(约 5 分钟)
uv run train.py
硬件要求:
如果显存不足,可以调整这些参数:
# train.py
DEPTH = 4 # 降低层数(默认 8)
DEVICE_BATCH_SIZE = 64 # 降低批量大小(默认 128)
# prepare.py
MAX_SEQ_LEN = 1024 # 降低序列长度(默认 2048)
准备工作完成后,启动一个 Claude Code 会话,输入:
Hi have a look at program.md and let's kick off a new experiment!
let's do the setup first.
Agent 会自动:
查看实验记录:
# 查看最近 10 轮实验
tail -n 10 results.tsv
# 查看所有保留的改进
grep "keep" results.tsv
# 统计成功率
awk -F'\t' '{count[$4]++} END {for(s in count) print s, count[s]}' results.tsv
results.tsv 的格式:
commit val_bpb memory_gb status description
a1b2c3d 0.9979 45.06 keep 尝试了 ReLU² 激活函数
e4f5g6h 0.9985 45.12 discard 调整学习率,效果变差
status 字段说明:
keep:保留的改进discard:变差或相同,已回退crash:实验失败好的示例:
Focus on reducing training loss by exploring:
1. Different attention mechanisms (try Linear Attention, Flash Attention)
2. Alternative activation functions (test SwiGLU, GeGLU)
3. Novel normalization techniques
Constraints:
- Do NOT change random seed (it doesn't count as real improvement)
- Do NOT increase model size beyond 100M parameters
- Simplicity is preferred: a 0.001 improvement with 20 lines is not worth it
不好的示例:
Try to improve the model. # 太宽泛
鼓励创新:
You are a creative ML researcher. Don't just tweak hyperparameters -
try fundamentally different approaches. Read recent papers for inspiration.
你在项目中用过类似的自动化实验方案吗?欢迎在评论区聊聊你的经验。
维度 | AutoResearch | 传统调优 |
|---|---|---|
搜索空间 | 代码级修改(架构、算法) | 预定义参数空间 |
搜索策略 | LLM 引导的智能搜索 | 贝叶斯优化、网格搜索 |
人力投入 | 只需编写初始指令 | 需定义搜索空间、目标函数 |
创新能力 | 可探索架构变化 | 仅限参数调优 |
计算效率 | 序列化,避免浪费 | 并行 sweep,计算密集 |
核心差异:AutoResearch 不只是调参,可以修改代码本身。LLM 的"理解"使搜索更智能,而非盲目搜索。
维度 | AutoResearch | AutoML |
|---|---|---|
目标 | AI 研究自动化 | ML pipeline 自动化 |
适用场景 | 模型架构和训练研究 | 特征工程、模型选择 |
可解释性 | 高(所有改动都在 git 中) | 低(黑箱自动化) |
灵活性 | 修改代码,探索新方法 | 在预定义选项中选择 |
人类角色 | 研究指导者 | 监督者 |
核心差异:AutoResearch 是研究工具,AutoML 是应用工具。
维度 | AutoResearch | 通用 Agent 框架 |
|---|---|---|
专注领域 | 机器学习研究 | 通用任务自动化 |
工作流 | 固定的实验循环 | 可定制的工具链 |
评估机制 | 明确的 val_bpb 指标 | 依赖 LLM 自我判断 |
可靠性 | 高(每次实验可验证) | 低(结果不确定性高) |
核心差异:AutoResearch 有明确的成功标准(val_bpb),通用 Agent 框架的评估更主观。

配图5:AutoResearch vs 传统超参数调优对比
在 program.md 中提供具体的指导:
# 好的示例
Explore three directions:
1. Attention: Try Flash Attention 3, Linear Attention
2. Activation: Test SwiGLU, GeGLU, compare with ReLU²
3. Normalization: Experiment with different LayerNorm variants
# 不好的示例
Try different things. # 太模糊
避免 AI 做无意义的"改进":
Constraints:
- Do NOT change random seed
- Do NOT increase model size beyond 100M parameters
- Do NOT modify evaluation harness
- Simplicity matters more than micro-optimizations
# 每小时检查一次
watch -n 3600 'tail -n 20 results.tsv'
# 分析失败模式
grep "crash" results.tsv | tail -n 10
如果发现:
# 查看某个成功实验的具体改动
git show <commit-hash>
# 对比两次实验
git diff <commit1> <commit2> train.py
短期测试:1-2 小时(12-24 轮实验)
中期实验:过夜(8 小时,约 100 轮)
长期研究:数天(需定期检查和调整 program.md)
AutoResearch 的核心价值在于:把机器学习研究从手工作坊变成了自动化流水线。
技术亮点:
适用场景:
局限性:
从 Hacker News 的讨论看,社区对这个项目的期待很高。有人预测"AI 研究自动化将导致递归自我改进,最终实现超级智能"。也有人认为"'AI Ops'将成为标准职位,Harness Engineer 和 Agent Reliability Engineer 会像 DevOps 一样重要"。
说实话,AutoResearch 还没到"颠覆研究范式"的程度。但它确实展示了一种可能性:AI Agent 可以在特定领域(机器学习研究)实现高度自动化,而且代码和结果完全可审查、可追溯。
Karpathy 在 program.md 里写了这么一句话:NEVER STOP。无限循环,直到人类中断。
这大概就是对自进化 Agent 最好的描述。
相关资源
GitHub 仓库:https://github.com/karpathy/autoresearch
Karpathy 的推文:https://x.com/karpathy/status/2029701092347630069
Hacker News 讨论:https://news.ycombinator.com/item?id=47291123
数据集 climbmix-400b-shuffle:https://huggingface.co/datasets/karpathy/climbmix-400b-shuffle
好啦,谢谢你观看我的文章,如果喜欢可以点赞转发给需要的朋友,我们下一期再见!敬请期待!