NanoJev — Jev 的纳米级复刻
English | 简体中文
一个 0.6B 并行决策模型。输入状态与问题,输出完整概率分布——零输出 token 解码。
三个模型,同一游戏
下载迷宫视频 (MP4) · 27 秒 · 1440 × 1120 · 30 fps
玩贪吃蛇 · 探索 50×50 迷宫 · 录制来源与回放校验
独立的 ChatGPT Sites 演示在三个面板中呈现 Jev、NanoJev 与未调优 Qwen。播放时各面板按相同的环境步推进;已完成的运行会停在其真实最终状态。概率条显示产生当前画面状态的最后一次决策。共享代码规划仍是每个系统的一部分。
新的迷宫基线是原始 Qwen3-0.6B:4,726 次尝试、2,044 次碰撞、到达终点。下方的旧迷宫视频保留其原始的 Starting NanoJev 对比及录制结果。
录制的展示运行
观看模型判断与共享代码规划如何协同工作。每个游戏在三个系统中使用相同的控制器代码;录制保留了真实的动作、概率和最终结果。
找到出口:50×50 迷宫
模型对四个局部方向进行判断。代码记忆碰撞、探索未尝试的边,并通过已验证的开放路径重新定位。
| 系统 | 尝试次数 | 碰撞次数 | 结果 |
|---|---|---|---|
| NanoJev | 244 | 36 | 到达终点 |
| Jev | 2,738 | 1,044 | 到达终点 |
| Starting NanoJev | 171 | 43 | 到达终点 |
Starting NanoJev 是较早训练的 NanoJev 检查点。新的 NanoJev 模型使用了匹配的局部安全训练。
持续成长:12×12 贪吃蛇
通用规划器过滤即时碰撞并寻找通往可见食物的静态路径。模型在剩余动作之间进行决胜;仅剩单个动作时为代码强制移动。随机种子:61005。控制器:贪心。
| 系统 | 收集食物 | 步数 | 结果 |
|---|---|---|---|
| NanoJev | 27 | 256 | 在时限内存活 |
| Jev | 30 | 256 | 在时限内存活 |
| 未调优 Qwen3-0.6B | 25 | 211 | 被困 |
未调优 Qwen 使用其原始预训练权重和原生语言模型头,以提供的 A–D 答案 token 为条件。
特性
- 0.6B LLM 骨干。 Qwen3-0.6B 配备用于结构化输出的决策头。
- 一次前向处理多个状态与问题。 将独立决策批量处理。
- 动态选择。 提供 2–255 个候选,获得每个候选的概率。
- 布尔决策。 获得完整命题为真的概率。
- 有序评分。 提供 2–10 个等级,获得等级分布和期望分数。
- 完整分布。 同一输出可用于排序、贪心选择或概率采样。
- 零输出解码。 直接从一次前向传播读取决策。
- 持久化服务。 加载一次检查点,跨请求复用。
在运行中的服务中实测:6 个状态 · 18 个问题 · 44 条候选路径 · 1 次骨干前向。
更大的游戏与校准决策
- 全尺寸环境: 8×8、16×16、32×32 和 50×50 迷宫,四种拓扑,每个地图多个位置,以及可配置的更大尺寸。
- 局部判断 + 代码规划: 匹配的 5×5 观测、四个并行安全判断、移动记忆和模型引导的探索。
- 贪吃蛇动态: 可复现的食物生成、身体增长、碰撞规则、尾部移动、动态动作候选和安全问题。
- 概率学习: 观测事件数据集、CE/Brier 训练、成对适当奖励学习、精确梯度检查,以及已完成的 Qwen3-0.6B 运行。
- 经验证的评估: 地图分离的数据、冻结的游戏队列、真实模型执行和独立的轨迹回放。
局部安全模型在测试问题上达到 77.84% 准确率,在 50×50 OOD 问题上达到 76.56%。概率学习试点的成对适当奖励分支达到 0.11844 测试 / 0.06202 OOD 分布误差,以与模拟器事件概率的平方差之和衡量。
原子规划 · 扩展游戏管线 · RLCD 实现与结果 · 输入契约 · 游戏结果
此前的 40 地图导航基准
控制器:T=1 概率采样。 完整基准包含 20 张测试地图和 20 张 OOD 地图。
| 系统 | 4×4 测试 | 6×6 OOD |
|---|---|---|
| NanoJev | 19/20 — 95% | 18/20 — 90% |
| Jev | 20/20 — 100% | 19/20 — 95% |
| 未调优 Qwen3-0.6B | 7/20 — 35% | 3/20 — 15% |
工作原理
每个决策由一个状态、一个问题及其候选集定义。每条候选路径将相关输入送入骨干网络。共享的决策头返回针对该问题所提供候选的分布。
选择使用共享标量头和集合注意力。布尔使用单路径 sigmoid。评分评估其有序等级描述并返回其概率加权期望。
- 构建查询。 生成状态、问题、候选描述和目标分布。
- 组织数据。 将相关地图、规则及其变体保留在同一划分中。
- 训练。 初始化 Qwen3-0.6B,预热决策头,并以完整问题分布损失进行训练。
- 评估。 衡量概率质量,并通过录制的动作执行游戏控制器。
- 服务与可视化。 复用持久化模型端点,并在浏览器中回放完整轨迹。
快速开始:并排回放
交互式回放使用 Python 内置 HTTP 服务器运行:
git clone https://github.com/TianyuCodings/NanoJev.git
cd NanoJev
python3 -m http.server 8080 --bind 127.0.0.1 --directory web
打开 http://127.0.0.1:8080/side-by-side.html 查看三面板贪吃蛇与迷宫对比。暗色街机模式保留在 http://127.0.0.1:8080/arcade.html,早期基准查看器位于 http://127.0.0.1:8080/comparison.html。
下载展示模型
| 用途 | C-Tianyu/NanoJev 中的检查点 |
|---|---|
| 50×50 迷宫演示 | variants/local_atomic_seed17 |
| 贪吃蛇演示 | variants/games_gold_seed17 |
| 全地图对比 | variants/games_api_seed17 |
| 校准决策实验 | variants/events_ce_seed17、variants/events_brier_seed17、variants/events_paired_seed17 |
from pathlib import Path
from huggingface_hub import snapshot_download
variant = "local_atomic_seed17" # 贪吃蛇请选择 "games_gold_seed17"。
snapshot = snapshot_download(
repo_id="C-Tianyu/NanoJev",
allow_patterns=[f"variants/{variant}/*"],
)
checkpoint_dir = Path(snapshot) / "variants" / variant
游戏数据包 包含对应的训练划分、冻结的评估输入以及全部六段贪吃蛇控制器录制。下载、验证并复现游戏。
下载并运行模型
模型 和数据集 均已公开。准备一个配备录制所用 Python 依赖 的 CUDA 环境:
python -m pip install -r requirements-toy.txt
下载基础发布检查点和数据集。根检查点是初始化模型和早期导航基线:
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="C-Tianyu/NanoJev", local_dir="checkpoints/NanoJev",
allow_patterns=["best.safetensors", "config.json", "tokenizer/*", "backbone_config/*"],
)
snapshot_download(
repo_id="C-Tianyu/NanoJev-Data", repo_type="dataset", local_dir="data/NanoJev",
)
启动持久化服务:
python scripts/serve_decisions.py \
--checkpoint-dir checkpoints/NanoJev \
--web-root web --port 8765
打开 http://127.0.0.1:8765。该服务只加载一次模型,并通过 POST /api/evaluate 接受重复批次。
管线手册 涵盖数据生成、训练、评估、检查点创建,以及从下载的模型和数据继续训练。
路线图
- 扩大数据规模 — 增加更大的迷宫、贪吃蛇、原子问题和观测事件数据集。
- 校准奖励原型 — 实现并测试成对适当奖励学习,辅以 CE/Brier 对照。
- RLCD 扩展 — 增加更广泛的语义任务、随机长时程事件和更多模型种子。
- 结构化输入支持 — 为结构化指令、标准和原生 Noul 界面版本化编码器。


