nanoAhaMoment 是一个面向大语言模型强化学习训练的开源库,由 McGill-NLP 团队开发。其核心定位是“单文件、单 GPU、从零实现、高效、全参数调优”,旨在让 LLM 的 RL 训练过程变得透明且易于上手。
用途方面,该项目实现了 DeepSeek R1-zero 风格的训练流程,可用于对 3B 和 7B 基础模型进行全参数强化学习微调。它适合研究人员和开发者探索 RL for LLM 的训练机制,尤其是希望以最小依赖和简化的代码理解整个训练过程的人群。
主要能力包括:支持单张 80G GPU 进行训练,同时提供多 GPU 支持以加速训练并覆盖 7B 模型;采用全参数调优;效率上与 verl 具有竞争力,但实现更为简单。在 3B 模型上,多 GPU 时可支持最高 32K 上下文长度;7B 模型多 GPU 时支持最高 16K 上下文长度。2025 年 6 月新增了多 GPU 支持以及 VinePPO episode 生成(实验性)。
使用方式上,仓库提供了 nano_r1.ipynb 作为交互式单文件 Jupyter 笔记本,包含教程;nano_r1_script.py 是与笔记本等价的 Python 脚本,便于直接运行并支持多 GPU。此外还有 notebooks/checkpoint_playground.ipynb 用于比较不同模型检查点(包括已训练的模型)并进行实验。官方还提供了 Hugging Face 上训练好的 3B 模型(McGill-NLP/nano-aha-moment-3b),在 CountDown 任务上准确率约 60%。
安装步骤:克隆仓库后,确保安装 CUDA 12.4,然后安装 PyTorch 2.5.1(pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cu124),再安装其余依赖(pip install -r requirements.txt)。也可选用 uv 安装:uv sync 或 uv sync --extra compile 安装 flash-attention。运行训练时打开 nano_r1.ipynb 或 nano_r1_script.py 即可;若使用 uv,可执行 uv run nano_r1_script.py,或激活环境后运行 python nano_r1_script.py。多 GPU 训练提供了 4 GPU 的运行命令示例,并针对 4xA100 80GB 提供了不同上下文长度下的批量大小建议,其他 GPU 类型可能需要调整。
适用场景主要是学术研究、RL 算法教学以及中小规模模型的实验性训练。该库的设计理念是每一行代码都可见且可理解,灵感来自 TinyZero 和 Mini-R1,但更简洁、清晰和快速。项目还附带了 YouTube 上 Karpathy 风格的详细讲解视频(分为两部分)。
限制方面,资料中未提供关于收费、商业授权、模型效果基准(除 CountDown 任务约 60% 外)、支持的其他模型规模、详细性能对比数据等信息,这些内容暂未提供。