项目快照:karpathy/autoresearch,约 93,948 个 Star,13,314 个 Fork;最新推送时间 2026-03-26T00:07:37Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/karpathy/autoresearch

项目速览(TL;DR)
autoresearch 是一个使用智能体(agent)自动执行小型语言模型预训练实验的 Python 仓库。它把单个 NVIDIA GPU 上的 nanochat 简化训练流程限制在固定 5 分钟墙钟时间内,由智能体修改 train.py、启动训练、检查验证指标,并根据结果保留或丢弃实验。
项目的研究控制面不是传统的人工逐行修改训练代码,而是由人维护 program.md 中的智能体指令。仓库资料显示,项目默认分支为 master,Star 数为 93948,Fork 数为 13314,主要语言为 Python;许可证信息在当前提供的资料中未给出。
“The idea: give an AI agent a small but real LLM training setup and let it experiment autonomously overnight.”
来源:README
定位与目标用户
该项目定位为“让智能体在单 GPU 小型语言模型训练环境中进行自动研究”的实验性框架。它不是面向在线推理服务的部署系统,也不是包含完整集群调度、实验平台和模型发布流程的企业级训练平台。
目标用户需要同时理解 Python、PyTorch、语言模型训练和智能体工作流。使用者还需要能够判断训练改动是否合理,因为智能体拥有修改训练文件的权限边界,而实验结果只通过预先定义的验证指标进行筛选。
- 希望研究模型结构、优化器、超参数或批大小的个人研究者。
- 需要在单块 NVIDIA GPU 上重复运行短时实验的工程师。
- 希望探索“人维护研究规则、智能体执行实验”的团队。
- 能够审阅代码变更、训练日志和指标变化,并接受实验失败的使用者。
核心功能
核心能力由固定训练时限、可修改训练文件和单一评价指标共同组成。每轮实验的输入是当前版本的 train.py 及 program.md 提供的研究指令,输出是训练过程记录和 val_bpb 指标。
自动迭代训练实验
README 描述的工作循环是:智能体修改代码,训练 5 分钟,检查结果是否改善,再决定保留或丢弃修改。训练时间按墙钟时间计算,并排除启动和编译时间,因此实验之间使用的是统一的时间预算,而不是固定步数。
该机制的触发入口是用户向 Claude、Codex 或其他智能体提供仓库上下文并要求其查看 program.md。训练过程依赖 train.py 中的模型、优化器和训练循环,评价则依赖 prepare.py 提供的运行时工具。
以验证 bits-per-byte 作为指标
val_bpb 表示验证集 bits per byte,即每字节的验证比特数,数值越低越好。README 说明该指标与词表大小无关,用于比较不同架构改动。
指标的输入是训练后的模型和验证数据,输出是一个用于实验筛选的数值。资料没有给出指标计算函数的具体签名、日志格式或结果文件名,因此这些细节应以仓库当前代码为准。
以 Markdown 指令组织研究流程
program.md 是单个智能体的基线指令文件,README 将其描述为一种轻量级“skill”。人负责修改该文件中的上下文、实验目标和研究组织方式,智能体负责根据指令修改 train.py 并执行实验。
默认 program.md 被有意保持为基础版本。资料提到,使用者能够随着实验推进调整研究组织方式,也能够增加更多智能体,但多智能体的具体协议、并发模型和协调接口未在提供的资料中说明。
系统架构与关键模块
仓库采用小型三文件核心结构:数据准备和运行时工具保持稳定,训练实现交给智能体迭代,研究策略由人通过 Markdown 维护。这个边界让训练代码变化与研究指令变化相互分离,但不会自动消除代码审查和实验复现责任。
| 模块 | 职责 | 修改边界 | 输入与输出 |
|---|---|---|---|
prepare.py |
固定常量、一次性数据准备、BPE 分词器训练、数据加载器和评估工具 | README 标注为不修改 | 输入为数据准备所需环境;输出为训练和评估所需资源 |
train.py |
GPT 模型、Muon 与 AdamW 优化器、训练循环 | 由智能体编辑和迭代 | 读取准备好的数据与配置;输出训练过程和验证指标 |
program.md |
单个智能体的研究指令和上下文 | 由人编辑和迭代 | 输入研究目标;输出智能体执行实验时使用的指导 |
数据准备链路
首次执行 uv run prepare.py 时,prepare.py 负责下载训练数据并训练 BPE 分词器。README 将该步骤定义为一次性准备步骤,并标注其预计耗时为约 2 分钟。
训练阶段继续使用该模块提供的数据加载和评估能力。由于 README 没有列出数据集名称、下载地址、缓存目录和数据格式,部署时不能仅依据本文推断这些内容。
训练与评价链路
train.py 集成了完整 GPT 模型、Muon 与 AdamW 优化器以及训练循环。README 明确表示,架构、超参数、优化器和批大小等内容都属于智能体能够探索的范围。
每一轮训练以 5 分钟固定墙钟预算为约束,随后使用 val_bpb 判断改动是否带来改善。仓库资料没有定义自动保留、回滚和实验日志持久化的具体实现,因此这些行为应通过当前智能体工作流和仓库文件核实。
依赖与运行环境
官方资料要求单个 NVIDIA GPU,测试环境为 H100;Python 要求为 3.10 或更高版本,并使用 uv 进行项目和依赖管理。项目依赖中将 PyTorch 固定为 2.9.1,并通过显式的 PyTorch CUDA 12.8 软件源获取。
- 硬件:单个 NVIDIA GPU,README 标注测试 GPU 为 H100。
- Python:
>=3.10。 - 项目管理工具:uv。
- 核心深度学习依赖:
torch==2.9.1。 - CUDA 软件包索引:名称为
pytorch-cu128,地址为https://download.pytorch.org/whl/cu128。
资料没有提供 CPU 运行支持、AMD GPU 支持、显存下限、操作系统矩阵或多 GPU 配置说明。若硬件或软件环境不符合上述条件,官方仓库未提供该信息,建议以最新 README 为准。
快速开始(含最小可运行示例)
快速开始由安装 uv、同步依赖、准备数据与分词器、执行一次训练组成。先完成手动训练实验,再进入智能体模式,能够把环境问题与自动研究逻辑分开排查。
安装、运行、验证三步闭环
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装项目依赖
uv sync
# 一次性下载训练数据并训练 BPE 分词器
uv run prepare.py
# 运行一轮约 5 分钟的手动训练实验
uv run train.py上面的命令均来自 README。安装步骤完成后,以 uv sync 能够解析项目依赖作为依赖安装验证;以 uv run prepare.py 完成数据和分词器准备作为初始化验证;以 uv run train.py 能够启动训练作为最小运行验证。
README 没有规定训练成功时的固定终端输出、退出码或日志文件路径,因此验证时应检查命令是否正常完成,并结合当前仓库输出确认 val_bpb 是否被计算。
启动智能体实验
# 在仓库根目录启动你选择的 Claude、Codex 或其他智能体
# 按 README 提供的提示词开始:
Hi have a look at program.md and let's kick off a new experiment! let's do the setup first.README 要求在仓库中启动所选智能体,并禁用其权限,然后让智能体查看 program.md。本文不提供任何 API 密钥、远程执行凭据或第三方账号参数;相关智能体产品的认证与权限配置不属于当前仓库资料范围。
配置说明
项目的可核查配置主要位于 pyproject.toml,包括项目元数据、Python 版本约束、依赖集合和 PyTorch 软件源。训练超参数和模型结构属于 train.py 的代码内容,README 没有提供独立配置文件或环境变量清单。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
project.name |
字符串 | autoresearch |
Python 项目名称 |
project.version |
字符串 | 0.1.0 |
项目版本 |
project.requires-python |
版本约束字符串 | >=3.10 |
声明支持的 Python 版本下限 |
project.dependencies |
字符串数组 | kernels>=0.11.7、matplotlib>=3.10.8、numpy>=2.2.6、pandas>=2.3.3、pyarrow>=21.0.0、requests>=2.32.0、rustbpe>=0.1.0、tiktoken>=0.11.0、torch==2.9.1 |
声明项目运行依赖 |
tool.uv.sources.torch.index |
字符串 | pytorch-cu128 |
指定 PyTorch 使用的 uv 软件包索引名称 |
tool.uv.index.name |
字符串 | pytorch-cu128 |
定义显式软件包索引的名称 |
tool.uv.index.url |
URL 字符串 | https://download.pytorch.org/whl/cu128 |
定义 PyTorch CUDA 12.8 软件包索引地址 |
tool.uv.index.explicit |
布尔值 | true |
将该索引标记为显式索引 |
表中依赖版本与软件源信息均来自提供的 pyproject.toml。README 没有提供可通过环境变量覆盖训练时长、GPU、数据路径或日志位置的配置项;这些字段的默认值应记为“未提供”,不能根据项目名称或代码习惯补写。
进阶用法
进阶使用的重点不是增加命令数量,而是调整研究指令与实验边界。人应维护 program.md,智能体应在明确授权范围内编辑 train.py,并用固定指标筛选结果。
编排单智能体研究循环
- 先运行
uv run prepare.py,确认数据和 BPE 分词器准备完成。 - 运行
uv run train.py,确认单次手动训练能够启动。 - 审阅
program.md,明确智能体能够探索的方向和不可修改的文件。 - 启动智能体,让其读取指令、修改
train.py并运行实验。 - 根据
val_bpb的变化审阅实验结果,而不是只依据训练是否完成来接受改动。
探索模型与优化器
README 明确列出架构、超参数、优化器和批大小等探索范围,因此 train.py 是研究变化的主要承载文件。修改的依赖组件包括 GPT 模型定义、Muon 与 AdamW 优化器以及训练循环,评价仍由验证阶段的 val_bpb 提供。
资料没有给出具体可调字段、实验命名规则、随机种子策略或结果数据库设计。根据本文作者的经验判断,若需要可复现实验,应额外保留每次代码差异、运行时间、指标和环境信息,但这些记录机制不是当前资料中已确认的项目接口。
扩展研究组织
README 提到可以随着迭代调整“research org code”,并增加更多智能体。当前资料只确认了这一方向,没有给出多智能体之间的任务分配、消息传递、冲突解决、共享工作区或并发资源控制方案。
因此,进阶扩展应先在单智能体、单 GPU、短周期的授权环境中验证,并将多智能体设计视为需要自行实现和审计的上层流程,而不是仓库已经提供的标准功能。
可观测性与运维
项目内建的可观测性核心是训练过程与 val_bpb 评价结果,而不是独立的监控服务。固定 5 分钟训练预算为实验对比提供了时间边界,但资料没有给出日志协议、指标导出格式或长期运行管理方式。
- 运行前:确认
prepare.py的一次性数据准备已完成。 - 运行中:观察
uv run train.py是否持续执行,以及 GPU 训练是否因环境问题中断。 - 运行后:记录当前
train.py版本和val_bpb,再决定是否接受智能体修改。 - 迭代时:保存被保留和被丢弃实验的代码差异,避免只保留最终文件。
上述记录建议中的文件差异和实验台账并非 README 声明的内建功能。官方仓库未提供日志文件名、监控端口、告警方式、SLA、检查点管理或自动回滚说明,建议以最新 README 和实际源码为准。
安全与合规边界
该项目的主要安全边界来自“智能体能够修改训练代码并执行本地命令”这一工作方式。README 明确建议启动智能体时禁用所有权限;实际使用还应限定在本人拥有或明确获授权的计算资源、数据和代码仓库中。
- 只在授权的本地或测试环境执行智能体,不让其接触无关生产系统。
- 对仓库、数据目录、GPU 主机和网络访问设置最小权限。
- 训练数据下载前确认数据来源、使用许可和组织内部处理要求。
- 审阅智能体产生的
train.py变更,尤其关注文件写入、子进程、网络访问和资源消耗。 - 不要把个人信息、访问令牌、云凭据或其他秘密放入
program.md、训练日志或代码修改中。
资料没有声明项目具备沙箱、审计日志、密钥管理、权限隔离、隐私保护或合规认证能力。本文不提供面向未授权目标的自动化、攻击、绕过检测或权限提升方法;任何扩展都应先完成组织内部安全评估。
许可证与商用条款
当前提供的仓库资料没有包含 LICENSE 文件内容,也没有在 README 或 pyproject.toml 中声明许可证类型。因此,不能据此确认项目是否允许商用、修改、再分发或闭源集成。
在许可证未核实前,不应把 Star 数、Fork 数或公开可访问性当作授权依据。若计划用于商业项目,应直接检查仓库中的 LICENSE 文件、依赖项各自的许可证和数据来源条款;版权声明、修改说明、分发条件及专利条款均应以仓库 LICENSE 为准。
局限性与已知限制
当前项目把研究规模明确限制在单 GPU 和固定 5 分钟训练窗口,优点是实验边界清晰,代价是不能据此推导大规模训练性能或生产系统能力。README 没有给出模型质量基线、吞吐量、显存占用、训练数据规模或不同 GPU 的结果。
- 硬件范围:资料只要求单个 NVIDIA GPU,并注明在 H100 上测试。
- 运行范围:固定 5 分钟墙钟预算,且不包含启动和编译时间。
- 可复现性:未提供随机种子、检查点、实验数据库和完整结果归档规范。
- 扩展性:未提供多 GPU、集群调度或多智能体并发的具体实现说明。
- 兼容性:未提供操作系统、驱动版本、CUDA 驱动要求和非 NVIDIA 硬件支持矩阵。
- 质量评价:只确认
val_bpb为主要指标,未提供下游任务指标或人工评估协议。
以上限制中,训练时限、指标和文件边界来自 README;其余未给出的项目能力均不能视为已支持。若需要正式研究平台的审计、权限、实验追踪或服务等级能力,官方仓库未提供该信息,建议以最新 README 和源码为准。
适合谁
适合性取决于硬件、技术栈和研究流程是否与仓库边界一致。以下信号同时出现时,采用该项目的理由更充分:
- 拥有一块可供实验使用的 NVIDIA GPU,并接受 README 标注的单 GPU 运行模型。
- 已有 Python 3.10 及以上环境,并愿意使用 uv 管理依赖。
- 研究任务能够用短时预训练实验和
val_bpb的变化进行初筛。 - 团队能够审阅智能体提交的训练代码,而不是把智能体输出直接视为可信实现。
- 目标是探索自动化研究流程或训练代码搜索,而不是立即提供在线模型服务。
不适合谁
如果需求超出单 GPU、短时实验和本地智能体权限边界,使用前应先寻找具备相应能力的替代方案或自行补齐平台组件。以下信号说明该项目与目标不匹配:
- 需要多 GPU、集群调度、跨主机并发或稳定的长周期训练。
- 要求官方提供 SLA、企业级审计、权限管理、密钥托管或合规认证。
- 没有能力审查智能体对
train.py的修改,也不能隔离训练主机和数据。 - 需要固定的生产推理接口、服务端口、模型发布流程或在线扩缩容能力。
- 研究结果必须依据完整基准套件、下游任务或严格统计协议,而不是当前资料确认的
val_bpb。
常见问题与排查(FAQ / Troubleshooting)
排查顺序应从依赖、数据准备、手动训练到智能体权限逐层推进。这样能够先确认基础运行链路,再定位自动研究流程的问题。
执行 uv sync 失败怎么办
先核对 Python 是否满足 >=3.10,再确认 uv 已安装。项目对 PyTorch 使用 torch==2.9.1,并配置了名为 pytorch-cu128 的显式软件源;依赖解析或下载失败时,应检查当前网络和该软件源可达性。
为什么必须先运行 prepare.py
prepare.py 负责下载训练数据并训练 BPE 分词器,同时包含数据加载和评估所需工具。README 将其定义为一次性准备步骤,未完成该步骤前,训练所需资源可能尚未建立;具体错误信息和缓存位置以源码输出为准。
如何判断手动训练是否可用
在仓库根目录执行 uv run train.py。README 将该命令作为单次训练实验入口,并说明训练预算为约 5 分钟;由于官方未提供固定输出样例,应以命令是否正常运行以及是否产生验证指标为检查依据。
智能体为什么不应直接获得全部权限
智能体需要读取 program.md 并编辑 train.py,但这不等同于需要访问整个主机、其他仓库或生产数据。README 明确要求禁用所有权限;若权限模型由外部智能体产品控制,具体配置应查阅对应产品文档,仓库资料没有提供接口签名或环境变量。
如何处理训练指标没有改善
val_bpb 越低越好,因此应先确认比较的是同一评价口径,再审阅代码差异、训练时长和运行环境。资料没有定义最低改善阈值、统计显著性规则或自动回滚实现,不能把一次指标变化直接解释为稳定的研究结论。
是否支持多智能体
README 提到未来能够增加更多智能体并调整研究组织方式,但没有提供多智能体运行命令、通信协议或资源隔离实现。当前只能确认单个 program.md 对应的基线指令流程;多智能体方案需要自行设计并在授权环境中验证。
项目结构与维护边界
项目结构刻意保持简短,维护时最重要的是不要混淆固定运行时模块、智能体修改模块和人工研究指令。文件角色清晰,有助于在实验失败后定位是数据准备、训练代码还是研究提示发生了变化。
prepare.py — 常量、数据准备与运行时工具(不修改)
train.py — 模型、优化器与训练循环(智能体修改)
program.md — 智能体指令(人修改)上述目录结构来自 README。仓库资料没有列出测试目录、日志目录、检查点目录或部署目录,因此不应在项目已有结构中虚构这些路径;实际仓库若已发生变化,应以默认分支 master 的最新内容为准。
项目地址与资源
以下链接均来自项目资料或仓库配置中出现的官方页面,适合用于核对最新命令、依赖和上下文。许可证、运行兼容性以及文件内容发生变化时,应优先查看仓库当前版本。



