【免费下载链接】DanKSRL‑Empowered Small‑Scale Competitive Guandan Agent项目地址https://gitcode.com/gh_mirrors/da/DanKS点击查看免费下载想用自己的算力训练出会打掼蛋的 AI 吗本文带你走完 DanKS V3 的 PPO 训练全流程用自博弈self-play轨迹作为训练数据通过GAE 优势估计做长程信用分配再配合clipped PPO 更新与检查点checkpoint 优化器状态管理最终产出一个可复用的 Top-10 策略选择器。整条训练管线位于 versions/v3/DanKS/training本文面向新手几乎不需要你阅读源码。一、整体架构PPO 在 DanKS 中的位置DanKS 的核心思路是不直接让网络面对上千种合法出法而是先由结构化检索retrieval给出最多 10 个高质量候选Top-K再由 PPO 训练的策略网络在这 10 个候选里做选择。这就是为什么它的训练规模远小于完整动作空间的强化学习任务单机也能跑通。一次 PPO 更新在架构中的职责划分组件文件职责策略/价值网络Top10Selectormodel.py对候选动作打分actor 估计状态价值criticPPO 目标与 GAEppo.pyclipped 代理目标、熵正则、优势估计训练入口与战术重采样train_ppo.py加载 rollout、多轮 epoch、评估与检查点保存检查点/优化器状态training_state.py原子化保存模型权重与 AdamW 动量 训练数据不是现成的而是由当前策略自博弈 检索基线出招产生的轨迹rollout整理成的 NPZ 文件。下一节讲清楚这份数据长什么样。二、准备自博弈 rollout 数据PPO 的更新入口期望一份 rollouttrain_ppo.py 中的 PPO_KEYS 定义了字段清单包含以下 8 个数组state信息状态特征手牌、公开历史、座位上下文candidates检索出的 Top-K 候选及其结构特征mask每个候选的合法性掩码history近期出牌事件序列action行为策略实际选择的候选下标logp行为策略的动作对数概率advantage/returns由 GAE 计算出的优势与回报字段维度由 schema.py 统一定义如TOPK 10、HISTORY_LENGTH 15保证特征版本对齐。你可以把自博弈流程简化理解为三步采集让策略或检索基线自己和自己打完若干局记录每个决策点的状态、候选与最终动作评估对整条轨迹跑一次 GAE得到advantage和returns训练把这些行喂给train_ppo做 PPO 更新训练后的策略再回到第 1 步形成自博弈闭环。三、GAE 优势估计把未来的输赢算到现在的出牌头上掼蛋是典型的延迟回报任务——现在打出一张小对子可能看起来无害却可能拆散了手里唯一的顺子。GAEGeneralized Advantage Estimation正是解决这个信用分配问题的工具。DanKS 的实现非常简洁ppo.py 中的 compute_gaegamma 0.99折扣因子控制未来回报的权重衰减lam 0.95GAE 系数平衡偏差与方差反向递推从轨迹末尾往前用即时奖励 γ × 下一状态价值 − 当前价值的 TD 误差滚动累积得到每步的advantagereturns advantage value。直觉上GAE 让 PPO 学会偏好那些价值要在几步之后才显现的动作而不是只追逐眼前的小利。四、Clipped PPO 更新与 KL 早停ppo.py 中的Top10PPOAgent.update()是更新核心一次调用包含三个安全机制优势标准化advantage先减去均值、除以标准差避免量纲漂移双裁剪dual clip在标准 PPO 的min(ratio·A, clip(ratio)·A)之上对负优势额外设下界dual_clip3.0防止学坏的动作被无限压低KL 早停每个 mini-batch 迭代后检查近似 KL超过1.5 × target_kl默认 0.045就提前结束本轮 epoch防止策略步子迈太大。超参默认值集中在PPOConfigppo.py#L19-L34也都能通过命令行覆盖参数默认值作用--clip-ratio0.08代理目标裁剪幅度--target-kl0.03触发早停的 KL 阈值--train-iters4每个 epoch 的 mini-batch 迭代数--entropy-coef0.02熵正则保持探索--value-coef0.5价值回归损失权重--lr/--batch-size1e-5 / 2048学习率与批大小⚠️ 一个小坑rollout 里的advantage若几乎是常数例如奖励归因没做对训练会直接报错并提示你检查奖励逻辑或显式传--allow-zero-advantage。五、战术重采样让罕见但关键的局面被重点复习真实对局里同伴收官对手即将收尾特殊让牌炸弹打断这类关键局面占比很小均匀采样会让模型学不充分。DanKS 在 train_ppo.py 里内置了战术重采样tactical resampling先给 rollout 的每一行打上战术类别普通 / 同伴收官 / 对手收官 / 特殊让牌 / 炸弹打断按目标配比0.60 / 0.10 / 0.05 / 0.10 / 0.15构造分层采样 epoch单行最多重复--tactical-max-repeat默认 8次超出容量自动重新分配。效果是模型在每个 epoch 里都会重点刷那些决定胜负的稀有局面。用--disable-tactical-resampling可以关闭该机制做对照实验。此外team_belief架构还支持辅助监督目标通过--team-belief-coef与--team-belief-pos-weights引入队伍信念的多标签分类损失帮助策略读懂同伴和对手的意图标签由自博弈特权信息离线构造不向策略暴露手牌见 team_belief.py。六、检查点管理模型权重 优化器旁车文件DanKS 的检查点策略有两层设计对断点续训非常友好1. 主检查点--output保存的不只是权重还包含model_state_dict、特征版本feature_version、候选容量、模型类型、完整训练参数args、rollout 元数据以及训练前后的评估指标。这让任何一份.pt文件都能自描述地重建网络结构model.py 中的 build_selector_from_checkpoint。2. 优化器旁车文件sidecarAdamW 的一阶/二阶动量被存为与主检查点同名 _trainer后缀的文件training_state.py。续训时加载器会严格校验model_type、model_config、optimizer_config三者一致防止张冠李戴。3. 原子化写入保存时先写.tmp临时文件再replace()原子替换train_ppo.py#L1470-L1525。即使训练中途被CtrlC也不会留下半截的损坏检查点。两个实用环境变量DANKS_CONTINUOUS_OPTIMIZER默认开启控制是否保存优化器旁车文件DANKS_DISABLE_PERSISTENT_PPO设为1关闭常驻 learner 进程回到一次性训练模式。七、跑一次训练最小命令与设备选择先安装 V3 包并装好 PyTorchCPU 即可验证流程git clone https://gitcode.com/gh_mirrors/da/DanKS cd DanKS python -m pip install -e versions/v3 python -m pip install torch2.8.0 --index-url https://download.pytorch.org/whl/cpu然后用一条命令启动 PPO 训练README.md Train V3 with PPO 一节python -m DanKS.training.train_ppo \ --rollout /path/to/rollout.npz \ --output /path/to/checkpoint.pt \ --device auto--device auto会按 NPU → CUDA → CPU 的优先级自动选卡accelerator.py 中的 resolve_device。训练前建议先跑一遍冒烟示例确认环境与代码路径没问题python examples/v3_model_smoke.py # 完整网络前向 python examples/v3_ppo_smoke.py # 一次合成 PPO 更新几个新手常用的调优参数数据不够干净时先用--behavior-pretrain-epochs 1让策略模仿 rollout 中的行为动作热身从旧权重继续训--init-checkpoint /path/to/old.pt注意特征 schema 必须兼容每 N 个 epoch 评估一次策略的 Top-1/3/5 命中率--eval-every 1。八、常见问题速查清单症状可能原因处理报错 rollout advantage is nearly constant奖励没做长程归因检查 GAE 数据管线或临时--allow-zero-advantagekl指标长期贴近上限、策略乱跳学习率偏大 / 裁剪过松降低--lr或收紧--clip-ratio续训时报 optimizer state mismatch旁车文件与模型配置不匹配删除旁车重新训练或换--init-checkpoint显存吃紧batch 过大调小--batch-size或加--amp用 bf16 混合精度 小结DanKS 把大动作空间 延迟回报这两个掼蛋 AI 最难的问题分别交给检索 Top-K和GAE PPO来解决再叠加上战术重采样与原子化检查点管理整个训练流程既稳定又易复现。跑通本文的最小命令后你只需要准备自己的自博弈 rollout就能开始迭代一个真正会打掼蛋的策略了。赞分享【免费下载链接】DanKSRL‑Empowered Small‑Scale Competitive Guandan Agent项目地址https://gitcode.com/gh_mirrors/da/DanKS点击查看免费下载相关推荐DanKS是什么金山AI出品的SOTA级掼蛋AI全面解析DanKS是什么金山AI出品的SOTA级掼蛋AI全面解析 DanKS 是由金山 AI 产品中心Kingsoft AI Product Center发起并开DALI 管道检查点Checkpointing完整指南保存与恢复训练数据管道状态DALI 管道检查点Checkpointing完整指南保存与恢复训练数据管道状态 导读 本文以 NVIDIA DALI 的官方文档 advanced_to深度学习数据工程如何快速上手DanKS从克隆到运行的6步掼蛋AI入门教程如何快速上手DanKS从克隆到运行的6步掼蛋AI入门教程 DanKS 是一个开源的 SOTA 级掼蛋 AI 项目由金山 AI Product Center创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考