尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

DouZero部署实战:一条从零跑通斗地主AI的完整路线图

DouZero部署实战:一条从零跑通斗地主AI的完整路线图 DouZero部署实战一条从零跑通斗地主AI的完整路线图【免费下载链接】DouZero[ICML 2021] DouZero: Mastering DouDizhu with Self-Play Deep Reinforcement Learning | 斗地主AI项目地址: https://gitcode.com/gh_mirrors/do/DouZero想不想让一台电脑学会斗地主DouZero 是快手开源的斗地主 AI 框架它靠自我博弈的深度强化学习从零开始训练出能战胜大多数人类玩家的智能体论文发表于 ICML 2021。这篇文章会带你走一遍 DouZero 部署实战的完整流程装环境、加载模型、评估对局、自己训练最后把 AI 用起来。斗地主凭什么难倒 AI先讲个背景故事方便你理解这套工具的价值。斗地主看起来只是出牌但它同时具备四大难题三方博弈中两个农民要暗中配合、你只能看到自己的手牌信息不完整、状态空间巨大、而合法动作组合约有 10⁴ 种且每手都在变。传统强化学习算法面对这种超大的动态动作空间几乎都会迷路。DouZero 的思路非常朴素把经典蒙特卡洛方法用神经网络增强配合动作编码和多进程并行演员用一套极简的 Deep Monte Carlo 算法硬生生把难题啃了下来。它在一台四卡服务器上训练几天就超越了当时所有斗地主 AI在 Botzone 排行榜 344 个智能体中排名第一。这份以简驭繁的思路值得每个 RL 爱好者亲自跑一遍。先看清手中的工具箱克隆仓库后整个项目的骨架其实很清爽主要就三块douzero/dmc/核心算法区dmc.py是深度蒙特卡洛训练主逻辑models.py定义神经网络结构arguments.py是全部训练参数douzero/evaluation/评估区simulation.py负责对局模拟random_agent.py、rlcard_agent.py、deep_agent.py分别代表随机、规则和深度三种智能体根目录的train.py、evaluate.py、generate_eval_data.py则是你日常要敲的三个入口脚本记住这个结构后面每一步都是往这三个位置添砖加瓦。三步搞定环境配置DouZero 部署实战的第一步是环境准备三步就够克隆仓库git clone https://gitcode.com/gh_mirrors/do/DouZero安装依赖pip3 install -r requirements.txt需要 Python 3.6 以上安装包本体推荐安装稳定版pip3 install douzero国内网络下载慢的话可以换清华镜像源一条命令的事。这里有个关键提示训练需要 CUDA 显卡但评估可以纯 CPU 跑。所以哪怕你没有 GPU也能把下面的评估流程完整走一遍只是稍慢而已。不训练也能玩先加载预训练模型很多新手一上来就急着训练其实更聪明的顺序是先用别人训好的模型把流程跑通。项目作者提供了几款现成模型baselines/douzero_ADP/以平均分差ADP为目标训练的版本baselines/douzero_WP/以胜率WP为目标训练的版本baselines/sl/在人类对局数据上预训练的深度智能体下载后把权重放进baselines/目录即可。注意这三份模型文件在源码仓库里是占位符你需要从官方渠道获取权重再放入。第一次评估让 AI 跟自己打拿到模型后最解气的操作就是看它大杀四方。评估分两步第一步先生成对局数据python3 generate_eval_data.py --num_games 10000这条命令会随机生成 1 万副牌局并存成eval_data.pkl相当于给 AI 出一套固定的考题。第二步用evaluate.py让它上场python3 evaluate.py --landlord baselines/douzero_ADP/landlord.ckpt --landlord_up random --landlord_down random命令的意思是地主位放 DouZero-ADP 模型两个农民位放随机策略。跑完你会在终端看到一屏结果核心就两个数字WP胜率和 ADP平均分差。WP地主赢了几局、农民赢了几局最直观的强弱指标ADP地主得分的平均值反映赢牌时的碾压程度通常地主位能打出 60% 以上的胜率就说明模型已经相当能打了。想调整对手的话--landlord_up、--landlord_down可以换成rlcard规则 AI或任意.ckpt模型路径玩出各种花式 PK。评估结果怎么看才不踩坑我见过不少新手对着评估输出一头雾水这里帮你提炼三个判断要点看总量评估默认基于 1 万局局数太少比如几百局胜率波动会很大别急着下结论换对手再测单打随机对手只能说明AI 不傻换上rlcard规则 AI 再测一次才能看出真实水平多进程提速纯 CPU 评估较慢可加--num_workers 4并行加速GPU 机器再加--gpu_device 0自己训练一个 AI参数这样调最省心跑通评估后就可以试着自己训一个 AI 了。单卡机器直接跑python3 train.py默认每 30 分钟保存一次检查点。多卡机器可以按模拟多、训练少的原则分配资源比如四卡机器让前三张卡各跑 15 个演员进程用于自我对弈第四张卡专门训练python3 train.py --gpu_devices 0,1,2,3 --num_actor_devices 3 --num_actors 15 --training_device 3几个关键参数的含义帮你理清--gpu_devices指定可见的显卡--num_actor_devices决定几张卡用于模拟对局--num_actors是每张模拟卡上的演员进程数--training_device指定训练卡。此外--objective可以切换奖励目标默认 adp可换 wp--learning_rate、--batch_size等超参都在douzero/dmc/arguments.py里可查。新手建议先用默认参数把流程跑通再逐步加大--num_actors观察胜率曲线变化比一上来就猛调超参更有效率。训练中途如何找回最新模型训练是个长跑途中崩溃或想中途评估都很常见。好在检查点默认存在douzero_checkpoints/douzero/下项目还贴心地提供了找回最新模型的小脚本sh get_most_recent.sh douzero_checkpoints/douzero/它会自动挑选三个位置地主、上家农民、下家农民最新的权重统一复制到most_recent_model/目录方便你直接喂给evaluate.py做中途评估。这个小动作能让训练过程形成训练-评估-再训练的正向循环。只有 CPU 怎么办没有 GPU 也不用劝退。DouZero 支持纯 CPU 训练代价是速度慢一些python3 train.py --actor_device_cpu --training_device cpu--actor_device_cpu让模拟演员跑在 CPU 上--training_device cpu让训练也走 CPU。Windows 用户需要注意一个历史限制由于 CUDA 张量多进程在 Windows 上不受支持只能用 CPU 做演员用 GPU 训练会报operation not supported。先用 CPU 把流程跑通有条件再上显卡这是最务实的路径。常见报错排雷operation not supportedWindows 下 GPU 演员报错改用--actor_device_cpu评估找不到模型确认.ckpt路径写对并已放入baselines/目录eval_data.pkl不存在先跑generate_eval_data.py生成数据再执行评估下载依赖太慢换清华镜像源或使用仓库提供的requirements.txt逐项安装把 AI 接进你的应用模型在手应用场景就很丰富了可以做游戏里的智能陪玩、把DeepAgent的act接口封装成在线出牌服务甚至作为强化学习课程的教学案例。douzero/evaluation/deep_agent.py里的模型加载与动作选择逻辑就是最好的集成样板——它把读状态、算价值、选最优动作三步封装得清清楚楚你只需要把输入换成自己的牌局数据即可。现在就动手部署吧从环境配置、加载预训练模型、跑通评估到亲手训练并调参DouZero 部署实战的每一步其实都不复杂难的是迈出第一步。建议你今天晚上就用一张 CPU 把generate_eval_data.pyevaluate.py跑通亲眼看一次 AI 胜率刷屏那份成就感会推着你继续玩下去。祝你在斗地主 AI 的世界里玩得开心期待你训练出超越人类的模型【免费下载链接】DouZero[ICML 2021] DouZero: Mastering DouDizhu with Self-Play Deep Reinforcement Learning | 斗地主AI项目地址: https://gitcode.com/gh_mirrors/do/DouZero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表