欢迎光临散文网 会员登陆 & 注册

日麻AI"Akochan"和配套牌谱分析器Akochan-reviewer

2020-12-16 18:55 作者:认真充充电池  | 我要投稿

时效性

目前该项目后续已经发展成了各位耳熟能详的麻将AI工具Mortal:麻将 AI 工具 - 检讨牌谱,派遣个室 (ekyu.moe)。作为Akochan的后续,Mortal的实力、运行效率和使用便捷度都大幅提升。因此,我认为该文章已不具备实质的作用,请对麻将AI有兴趣的朋友转而参与Mortal和mjai-reviewer的建设。

GitHub - Equim-chan/Mortal: 🚀🀄️ A fast and strong AI for riichi mahjong, powered by deep reinforcement learning.

GitHub - Equim-chan/mjai-reviewer: 🔍🀄️ Review mahjong game log with mjai-compatible mahjong AI.

简介

起因是昨天在琴南的群里有转这个AI的牌谱分析demo网站,于是稍微看了一下。

这个麻将AI发布于19年,作者是critter(http://critter.sakura.ne.jp/),其本人是天凤双九段(打雀和编程都这么猛吗 某四段上级选手留下了羡慕嫉妒恨的泪水)。暂时来说我还没看多少这个AI的内容,没法说太多关于AI水平的问题,只能抛下这个项目的GitHub地址:

https://github.com/critter-mj/akochan

基于Akochan的牌谱分析器的作者是equim_chan。GitHub指路:https://github.com/Equim-chan/akochan-reviewer

这个Reviewer主要应该做一个牌谱的parse工作,然后利用Akochan的接口把数据喂给她,之后返回Akochan认为的结果,然后最后用网页作为前端展示。

(B站似乎取消了使文章可以复制的选项……我会把一些链接放在评论区内,或者移步知乎专栏。)

如何使用

在线Demo

这个项目有一个在线的demo:akochan.ekyu.moe

在线的Demo


如图所示,复制粘贴天凤牌谱的链接,然后可以选择基于顺位的分析(placement EV)或者基于pt的分析(pt EV)。大概需要等待10-30分钟。根据笔者的测试,这个AI是吃cpu的(这个下面会提及),孱弱的服务器cpu性能可能是影响这个demo的原因所在。

Release版本本地运行

GitHub上有提供作者编译后提供的release版本:

https://github.com/Equim-chan/akochan-reviewer/releases

暂时只提供了win10的发行版。注意,该Reviewer没有提供GUI,因此如果您没有接触过命令行之类的东西,只是纯粹想试着玩玩的话,我写了一个小脚本,只需要复制粘贴牌谱链接就可以了。就像这样:


只需要注意,复制到命令行中的链接有英文半角的双引号包裹就可以了。请务必注意要用英文的双引号(主要是我懒得写校验了 菜 我.jpg)

度盘:

链接:https://pan.baidu.com/s/1TTMzSyVmokr7eAqBk2Upwg

提取码:okrh

之后牌谱的分析结果会在目录下的html文件中。只需要双击它就可以在浏览器中打开查看结果:

在跑这个程序的过程中,笔者的2600X被吃了30-50%的占用率。这是一个吃CPU的AI。

而如果您想了解更多,我相信您应该有能力自己前往GitHub上查看相关的参数。不过在这里,我还是稍微提及一些。

  • 下例中我要检查的牌谱链接为https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2

  • 我可以直接引入这个牌谱链接作为参数
    akochan-reviewer "https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2"

  • 注意log后面的参数,我可以单独提取出来,分别导入牌谱id和需要分析的主视角
    akochan-reviewer -t 2019050417gm-0029-0000-4f2a8622 -a 2

  • 手动设置pt的分布
    akochan-reviewer --pt 75,30,0,-165 "https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2"

  • 设定95%的置信区间
    akochan-reviewer --pt 75,30,0,-165 -n 0.05 "https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2"

  • 使用基于位次的分析而非pt
    akochan-reviewer --use-placement-ev "https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2"

  • 使用基于位次的分析并设定99.8%的置信区间
    akochan-reviewer --use-placement-ev -n 0.002 "https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2"

  • 只检查东2局1本场合东三局
    akochan-reviewer -k E2.1,E3 "https://tenhou.net/0/?log=2019050417gm-0029-0000-4f2a8622&tw=2"

需要注意的是,作者已经发现了一个bug:在win10下运行的时候,导入牌谱会报Assertion failed的错。作者给出的解决方案是OMP_NUM_THREADS的环境变量设置为8。笔者个人不太确定在少于8线程的电脑上该命令是否会有问题,但在笔者所使用的电脑上,尽管可以正常运行,但无法利用2600x的全部12线程,速度上并没有明显的优势。

  • 如果您使用的是cmd.exe,请键入:set OMP_NUM_THREADS=8

  • 如果您使用的是Windows PowerShell,请键入:$env:OMP_NUM_THREADS = 8

  • 如果您使用的是MSYS2 bash,请键入:export OMP_NUM_THREADS=8

如果您需要更好的性能表现,并有至少与笔者一样的复制粘贴工程师的能力,请接着往下看(不过如果可以的话您应该早就去GitHub看了吧(笑))

基于Docker

笔者基于WSL2进行了Docker的加载。由于Docker的运行环境并非Win10了,分析牌谱不会碰到上述的bug。对于笔者个人的一个完整半庄的牌谱的分析时长,从13分钟降低到了5-7分钟左右。但相应的,Docker的内存消耗要远高于上述的方案:

如果您打算使用Docker部署,笔者建议您至少要有16G的内存。

如果您有使用Docker的经验,对您来说这应该不难。

# build
$ git clone https://github.com/Equim-chan/akochan-reviewer.git
$ cd akochan-reviewer
$ git clone https://github.com/critter-mj/akochan.git
$ docker build -t akochan-reviewer:latest .

# run
$ docker run --rm akochan-reviewer:latest -t 2019050417gm-0029-0000-4f2a8622 -a 3 -o - > report.html

如果您没有相应的经验,我不建议您在Win10上做这样的尝试。原因是在Win10上使用Docker需要使用WSL或者WSL2,但这都需要开启Win10的Hyper-V功能。开启该功能会与市面上大部分的安卓模拟器冲突——除了BlueStack的测试版,以及非最新版本的VirtualBox和VMWare。因此,笔者成功地卸载了mumu(

总之,如果没有相应的经验又想尝鲜,请使用前两种方案。

手动编译

需要首先编译Akochan本体,然后编译Akochan-reviewer。本体是基于C++编写,而reviewer则使用rust。由于笔者并不喜欢WSYS2,因此只在win10的WSL2上进行了一定的测试(并且成功地没折腾出来)。此处不展示测试的数据了(我估摸着应该在Linux里跑着还可以)。具体的话,既然您都打算手动编译了,应该不需要笔者在此处从GitHub上搬运更多的内容了。

关于分析结果

分析结果来看的话……这是一个很科学麻将的AI。对笔者的牌谱来说,Akochan似乎更有进攻性一点,这可能是因为它的分析方式是基于pt的期待值。这和统计学麻将那本书里的思想比较相似吧。不过Akochan也有在两个字牌之间很奇怪地纠结的判断。总的来说,还是挺科学麻将的,可以作为一定的参考。

总结

可以一试。以及Reviewer和AI本体分离的好处就是,因为流程是相似的(解析牌谱——喂给AI判断——展示结果),倘若未来像苏菲这样的AI能开放接口的话,只需要稍加改动就可以套用。

愿各位雀力日进。

电池 2020.12.16



日麻AI"Akochan"和配套牌谱分析器Akochan-reviewer的评论 (共 条)

分享到微博请遵守国家法律