给孩子请个ai职业围棋老师吧

常忧虑如今的孩子沉疴在肩,校门口,一眼掠去,个个体不过半百斤,却负笈十余,步履蹒跚,且这还只是体格上的磨砺,精神上尚有数座“大山”压肘着孩童的天性,犹如芒刺在背。

家有一子,如有一劫。小夏今年才上一年级,每天晚上光做课内作业就要“奋战”到九十点光景,还不算课余的兴趣爱好。这学期,小夏除了一以贯之的古典吉他,又新添了足球、围棋等学业课,本以为可以偷闲,岂料授课老师布置的作业比起正课有过之而无不及。单说围棋吧,一周虽仅有一课,但作业足足有 35 页,且都是打、吃、连、断、罩、地、收气、劫等变幻无穷的基本功训练,不免令人生疑,门下弟子是否有消咽之力。

好在小夏争强好胜,也就是所谓的上进。学棋伊始,天天拉我对弈,起初我也乐于奉陪,但渐渐棋力不支,疲于应战。小夏心生骄意,我意识到是时候请个AI名师出马了。

alphaGO完胜李世乭、柯洁,令围棋风头一时无两,人工智能、大数据受到空前瞩目,但事实上,对于初学者而言,打谱用弈典,AI用zen7、leela,人肉对弈用弈城、野狐足矣。

唯一不足之处,不像 window 平台有弈典、天顶、银星、弈城、野狐等对战软件,macOS 围棋打谱、对弈软件非常少,口碑、用户双赢的大概仅有沈易川开发的Sabaki

下面以 sabaki 和 lizzie 为例,写写如何在 macOS 安装、配置围棋 AI 软件。

sabaki + leela-zero

简介

Sabaki 是日语中腾挪(围棋术语)的意思。一个完全使用网页技术(HTML5 + Javascript)开发,由 electron 封装,界面达到了像素级的精致围棋对弈软件。但是 sabaki 自带的引擎相对较弱,因而不推荐。

经过对照,最终我选择了开源的leela-zero作为sabaki的默认引擎。

leela-zero ,前身源自比利时开发者 Gian-Carlo Pascutto于2017年2月18日发布的 leela,这是一款与AlphaGo Zero 采用相同算法的围棋AI程序。经实测,在棋感和局面的运营已达到了职业水准。

Leela在KGS计算机围棋大赛多次获得冠军(第 32、38、42 届),2008 年在计算机奥林匹克赛上获得过九路围棋银牌和十九路围棋铜牌。2018年2月11日,Leela衍生为 Leela-Zero 这一版本,目前迭代到2019年4月4日的Leela Zero 0.17 + AutoGTP v18

安装步骤

下载leela-zero源码

git clone --recursive https://github.com/gcp/leela-zero.git
//注意这里一定要有—recursive

切换到源码目录

cd leela-zero/src

安装boost

brew install boost
//要求之前己安装homebrew

注释部分源码

vi config.h

如果不是GPU版,注释掉#define USE_OPENCL#define USE_HALF两项。

编译

make

确认leela-zero/src/leelaz 文件编译通过后,打开engines - manage engines 新增一项Leela-Zero即可。

然后每次对弈前,在engines - attach勾选Leela-Zero,设置好之后,点击右下角 Close 按钮,就可以进行人机对擂了。

打开toggle GTP consoletoggle analysis两项,“上帝视角”就此打开了!

备注:为了复盘分析,我专门配置了另一个名字为「Leela Zero Analysis」的 Leela Zero 引擎,与「Leela Zero」引擎不同的是,这项没有为「Leela Zero Analysis」设置第四行「Initial commands (; -separated)」,即对「Leela Zero Analysis」引擎不进行时间限制,以便长时间停留思考。

GUI图形引擎Lizzie

配置java

一开始没成功配置好sabaki,于是尝试了另一个图形引擎lizzie,由于lizzie是基于Java编写的,需要安装Java 8 或以上版本,可以去Oracle Java官方网站下载JR 进行安装。

1、先输入java -version 查看安装的jdk版本信息。

2、查看系统使用何种 shell 命令

输入 echo $SHELL,输出为 bash,则为Bourne shell命令,可以通过编辑profile配置环境变量。

3.配置 Java 环境变量。敲重点!

(1)输入sudo vim /etc/profile,回车,输入密码(不显示密码只管输入后回车就好)。

(2)如果出现 E325 警告。输入 E,edit anyway,回车。

(3)按下 i,显示insert,进入输入模式。

(4)文件尾部添加Jav 途径(一定注意核对版本号)。

JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
export JAVA_HOME
CLASS_PATH="$JAVA_HOME/lib"
PATH=“.$PATH:$JAVA_HOME/bin”

(5)添加完后,按下 esc 退出插入模式。输入:wq!保存退出。

(6)要想马上生效,输入source /etc/profile

(7)检查环境。输入echo $JAVA_HOME。配置完毕。

安装lizzie

一开始,是打算自己编译

git clone --recursive https://github.com/featurecat/lizzie.git
cd lizzie

官方也建议用 maven 编译安装,但当输入如下命令时:

java -version
brew install maven

然而,可能是由于墙的缘故,进度龟速不说,且一直报错:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  48:24 min
[INFO] Finished at: 2019-10-12T22:43:44+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.coveo:fmt-maven-plugin:2.5.1:format (default) on project lizzie: Execution default of goal com.coveo:fmt-maven-plugin:2.5.1:format failed: Plugin com.coveo:fmt-maven-plugin:2.5.1 or one of its dependencies could not be resolved: The following artifacts could not be resolved: com.google.guava:guava:jar:22.0, com.google.errorprone:javac-shaded:jar:9+181-r4173-1: Could not transfer artifact com.google.guava:guava:jar:22.0 from/to central (https://repo.maven.apache.org/maven2): GET request of: com/google/guava/guava/22.0/guava-22.0.jar from central failed: Read timed out -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

一发恨,心想算了,于是偷懒去下了官方编译好的Lizzie v0.7版本 ,话说真是省了很多麻烦的步骤,直接进入配置环节:

修改engine-command的路径为之前编译好的leelaz文件位置,也可以像我直接复制到lizzie根目录下。

    "max-analyze-time-minutes": 99999,
    "analyze-update-interval-centisec": 10,
    "network-file": "lznetwork.gz",
    "_comment": "note, network-file is obselete in Lizzie 0.7+, ignore network-file, kept for compatibility",
    "max-game-thinking-time-seconds": 2,
    "engine-start-location": ".",
    "avoid-keep-variations": 30,
    "engine-command": "./leelaz --gtp --lagbuffer 0 --weights lznetwork.gz",
    "print-comms": false,
    "show-lcb-winrate": false

下载最新网络权重文件并覆盖同名文件lznetwork.gz 后,就可以双击lizzie目录下的lizzie.jar,就能打开新棋局对弈了。第一次缓存会相对慢些。