NanoJev决策输入契约入门:状态、问题与候选三步指南,让0.6B模型直接输出概率

📅 发布时间:2026/10/4 19:53:00
NanoJev决策输入契约入门:状态、问题与候选三步指南,让0.6B模型直接输出概率
NanoJev决策输入契约入门状态、问题与候选三步指南让0.6B模型直接输出概率【免费下载链接】NanoJevA nano replica of Jev: parallel decisions, dynamic candidates, and an end-to-end training pipeline.项目地址: https://gitcode.com/gh_mirrors/na/NanoJevNanoJev 是一个 0.6B 参数的并行决策模型其核心是一套简洁的三步决策语言状态State、问题Question、候选Candidates。理解这套输入契约你只需三行概念——模型不生成任何文字答案而是针对你给定的候选集合直接返回完整的概率分布。下面用最少的文字讲清楚这套契约的设计、三类问题类型以及它在迷宫、贪吃蛇和射击游戏中的实际应用。为什么需要三步决策语言传统大语言模型回答决策问题时需要生成向左走这样的文字 token再靠解析器还原意图既慢又容易出错。NanoJev 换了个思路传统 LLM 决策NanoJev 并行决策输入一段文字生成文字答案输入状态 问题 候选输出概率分布逐 token 解码延迟高一次前向计算零输出 token多问题需多次请求独立问题可批量并行答案需解析、易格式错误概率值可直接排序、选择或采样每个请求都遵循同一个三段式结构这正是 NanoJev 的输入契约状态State共享的评估上下文通常是当前游戏局面描述文本或 JSON。问题Question要判断的具体命题或选择指令必须完整自包含。候选Candidates该问题的选项集合模型在其上输出概率分布。上图展示了三个模型在同一个 50×50 迷宫中按环境步同步探索每一栏的 Last decision 区域就是候选输入契约的直观体现——当前状态下的四个候选方向↑N / →E / ↓S / ←W每个候选给出一个独立的安全概率。三类问题类型Boolean、Choice 与 ScoreNanoJev 的决策头支持三种问题类型分别对应不同的概率输出方式。完整定义见 docs/TYPESAFE_CONTRACT.md。Boolean命题成立概率给定一个命题如向北移动一格是否安全模型输出p_true即命题成立的概率内部经过 sigmoid 得到。适合判断类问题这一步会不会撞墙、这个动作会不会失败。Choice候选集合上的分布这是游戏中最常用的类型。你提供2 到 255 个文本候选例如 4 个移动方向模型通过共享评分头 集合注意力 softmax返回每个候选的完整归一化分布。注意两个细节候选数量是动态的不同状态可提供的候选数不同无需凑齐固定动作空间。名称与描述都是语义输入叶子节点编码为选项名: 描述重新排序候选不会改变各自的叶子输入。Score有序等级的期望值提供2 到 10 个有序描述等级每个等级独立评估返回概率加权的等级指数。例如把距离目标的远近分成若干等级模型直接给出期望值。上图是一个具体案例同一个 4×4 小网格状态NanoJev 用 2 步就到达目标未微调的 Qwen 则耗尽 32 步上限。区别正来自同一份状态 问题 候选输入不同模型给出的候选分布质量不同。一个完整的输入示例以迷宫任务为例模型每个状态看到的输入极其克制。参考 docs/ATOMIC_PLANNING.md输入只包含以玩家为中心的5×5 ASCII 视野窗口当前位置与目标坐标四个独立的 Boolean 问题北/东/南/西各一步是否可行而最短路径动作、路线长度、oracle 标签统统不在输入里。这种原子判断 代码规划的分工是 NanoJev 的关键设计模型只做局部几何判断路径组合交给代码。在 ViZDoom 射击任务中输入契约同样成立状态包含可见物体标签、玩家血量/弹药/朝向和最近 4 帧候选固定为 4 个动作left / right / shoot / noop。每个候选还会被问一个独立的 Boolean 问题——执行这个动作后任务能成功吗。这些独立概率不做归一化用于 Q 值式控制。环境契约细节见 docs/UNIFIED_GAMES.md。契约的三个关键设计原则理解契约后有三条设计原则值得新手记住1. 问题彼此独立。同一状态下的多个问题共享状态但不消费彼此的答案有依赖的判断需要发起后续请求。前向计算中没有跨问题注意力这保证了批量并行的正确性。2. 标识符不进入模型输入。请求的id和qid只用于标识响应不出现在模型输入 token 里——重命名它们不会改变任何候选路径也就不会改变输出。3. 指令必须自包含。完整的判断信息必须在问题指令中写清楚不能依赖外部描述。Score 的每个等级描述必须独立可读移动一个等级描述会改变其索引而非叶子输入。这些契约都有离线测试保障scripts/test_question_contract.py 覆盖传输 ID 不变性、问题隔离、Boolean 边界条件、Choice 名称/描述、Score 索引排除等场景且无需加载模型或联网即可运行python3 -m unittest discover -s scripts -p test_question_contract.py -v三步上手从契约到推理服务第一步准备输入。把局面写成文本状态把要判断的命题写成问题把选项列为候选。参考数据集结构见 configs/unified_games_v1_cases.jsonl。第二步启动推理服务。模型只加载一次状态/问题批次通过POST /api/evaluate发送python scripts/serve_decisions.py \ --checkpoint-dir checkpoints/NanoJev-unified \ --web-root web --port 8765 --disable-native-triton服务脚本位于 scripts/serve_decisions.py。第三步消费概率。拿到完整分布后按你的策略排序、贪心选择或采样——全程不生成任何答案 token。小结一套契约四种游戏NanoJev 用一个 Qwen3-0.6B 底座加决策头用同一套状态、问题、候选契约驱动了 4 款游戏、每版本 18,760 条决策问题。对新手来说掌握这套三步契约只需要记住一句话把决策问题翻译成我处于什么状态、我要判断什么、有哪些选项剩下的概率交给模型。更多延伸资料输入契约审计docs/TYPESAFE_CONTRACT.md统一游戏环境与观察契约docs/UNIFIED_GAMES.md原子迷宫判断与代码规划docs/ATOMIC_PLANNING.md项目主文档README.md【免费下载链接】NanoJevA nano replica of Jev: parallel decisions, dynamic candidates, and an end-to-end training pipeline.项目地址: https://gitcode.com/gh_mirrors/na/NanoJev创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考