TensorFlow 早些天发布了一个名为 minigo 的项目,因为 Google 官方还一直没有开源 AlphaZero,那么就先来看看 minigo 怎么玩(搞事情)吧www
假设乃使用的是 macOS / Ubuntu / debian,当然其他系统也可以,操作大同小异。
首先是安装 Python 3,macOS 下默认是 python2.7,新的 Python 3 需要去 Python 官网下载,https://www.python.org/downloads/。对于 Ubuntu / debian 来说的话,则是直接
apt-get install python3
当然,比较新的 Ubuntu / debian 都会默认安装 python3.6~
接下来需要的是 pip,也就是那个最常被用来安装、管理 Python 包的工具~对于以上三个系统,都可以在terminal中执行如下语句安装w
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py
随后就可以用 pip 安装virtualenv了,virtualenv用于隔离不同项目的环境,以避免个项目之间的依赖冲突。
pip3 install virtualenv pip3 install virtualenvwrapper
之后就可以生成一个用于 minigo 的环境了~
export WORKON_HOME=~/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=$(which python3)
稍有不同的是,macOS 中,virtualenvwrapper.sh 的安装位置可能不在 /usr/local/bin/virtualenvwrapper.sh。而是在 python3 本体的目录下。于是这里对于 macOS 来说,需要执行的是
export VIRTUALENVWRAPPER_SCRIPT="`dirname $VIRTUALENVWRAPPER_PYTHON`/virtualenvwrapper.sh"
而对于 Ubuntu / debian 则是
export VIRTUALENVWRAPPER_SCRIPT="/usr/local/bin/virtualenvwrapper.sh"
接下来的步骤则都是相同的了~
初始化 virtualenvwrapper
~指定 python3 创建名为 minigo
的环境
source $VIRTUALENVWRAPPER_SCRIPT mkvirtualenv -p `which python3` minigo
第一次创建时会自动切换到该环境上,之后需要切换进来则是
source $VIRTUALENVWRAPPER_SCRIPT workon minigo
现在到正式开始 minigo 的部分了~macOS / Ubuntu / debian 都有自带 git,于是就直接开始w
git clone https://github.com/tensorflow/minigo.git cd minigo pip3 install -r requirements.txt
接下来,如果乃的机器上有支持 CUDA 的 GPU 的话,则推荐安装 CUDA9.0,并且用 GPU 版本的 TensorFlow
pip3 install "tensorflow-gpu>=1.5,<1.6"
若不满足条件的话,则是
pip3 install "tensorflow>=1.5,<1.6"
安装好之后,就可以开始设置 minigo 的环境了w
# 用于 cluster/common.sh 的环境变量 PROJECT=minigo-project source cluster/common.sh # 我们将训练的模型放在 ~/minigo-models 下 MINIGO_MODELS=\$HOME/minigo-models # 创建一会儿需要的目录 mkdir -p \$MINIGO_MODELS mkdir -p \$MINIGO_MODELS/models mkdir -p \$MINIGO_MODELS/data/selfplay mkdir -p \$MINIGO_MODELS/sgf/ # 设置第一个模型的名字 export MODEL_NAME=000000-bootstrap
现在就可以开始第 1 个模型了~
# main.py bootstrap 部分的话,需要两个参数 # 第一个是工作目录,这里我们使用 "." 也就是当前目录 # 第二个是模型保存的路径,这里将前面设置好的变量拼接起来 python3 main.py bootstrap . "\$MINIGO_MODELS/models/$MODEL_NAME"
如果之前的步骤都正确的话,那么输出看上去就是类似这样的w
(minigo) root@minigo:~/minigo# python3 main.py bootstrap . \$MINIGO_MODELS/$MODEL_NAME See tf.nn.softmax_cross_entropy_with_logits_v2. Copying ./model.ckpt-1.meta to /root/minigo-models/000000-bootstrap.meta Copying ./model.ckpt-1.index to /root/minigo-models/000000-bootstrap.index Copying ./model.ckpt-1.data-00000-of-00001 to /root/minigo-models/000000-bootstrap.data-00000-of-00001 (minigo) root@ minigo:~/minigo# ls /root/minigo-models/ 000000-bootstrap.data-00000-of-00001 000000-bootstrap.index 000000-bootstrap.meta
蓝后就可以让 minigo 来进行 selfplay 了~
python3 main.py selfplay "\$MINIGO_MODELS/models/\$MODEL_NAME" \ --readouts 10 \ -v 3 \ --output-dir="\$MINIGO_MODELS/data/selfplay/\$MODEL_NAME/local_worker" \ --output-sgf="\$MINIGO_MODELS/sgf/\$MODEL_NAME/local_worker"
接下来,让 minigo 在本地进行增强学习的话,我们需要修改一下 rl_loop.py,因为虽然目前官方提供了 local_rl_loop.py,但是里面模型的名字是写死的。
修改的部分在 rl_loop.py 的第 31 行,
# 原本是这样的 # BASE_DIR = "gs://{}".format(BUCKET_NAME) # 需要修改成下面这样 BASE_DIR = os.environ['MINIGO_MODELS']
修改好之后,则可以不需要Google Cloud Storage就能在本地进行增强学习(其实照着 rl_loop.py 去改 local_rl_loop.py 也行)
python3 rl_loop.py selfplay --readouts=10 -v 2
执行好之后,就可以把数据收集起来了
python3 main.py gather --input-directory="\$MINIGO_MODELS/data/selfplay" --output-directory="\$MINIGO_MODELS/data/training_chunks"
然后生成新的模型~
export NEXT_MODEL=000001-naive python3 main.py train . "\$MINIGO_MODELS/data/training_chunks" "\$MINIGO_MODELS/models/\$NEXT_MODEL" --generation-num=1
最后就可以继续在新的模型上训练
# 使用新的模型 export MODEL_NAME=\$NEXT_MODEL # selfplay python3 main.py selfplay "\$MINIGO_MODELS/models/\$MODEL_NAME" \ --readouts 10 \ -v 3 \ --output-dir="\$MINIGO_MODELS/data/selfplay/\$MODEL_NAME/local_worker" \ --output-sgf="\$MINIGO_MODELS/sgf/\$MODEL_NAME/local_worker" # 增强学习 python3 rl_loop.py selfplay --readouts=10 -v 2
在这之后,又可以 gather、生成新模型等等~
如果想和训练好的模型对战的话,则是
LATEST_MODEL=$(ls -d \$MINIGO_MODELS/models/* | tail -1 | cut -f 1 -d '.') python3 main.py gtp -l \$LATEST_MODEL -r 10 -v 3
当提示出“GTP engine ready”的时候,就可以开始玩了~
genmove white # 让 minigo 给 white 下一步 play black A1 # 自己给 black 下一步,下在 A1 这个位置 showboard # 查看现在的局面www
![minigo](/wp-content/uploads/2018/03/minigo.png)
之后就可以生成一个用于 minigo 的环境了~
1
2
export WORKON_HOME=HOME/.virtualenvsexportVIRTUALENVWRAPPERPYTHON=HOME/.virtualenvs
輸入上面後, 出現ERROR
-bash: syntax error near unexpected token `<'
找不到方法解決???
上面顯示錯誤
export WORKON_HOME=HOME/.virtualenvsexportVIRTUALENVWRAPPERPYTHON=HOME/.virtualenvs
-bash: syntax error near unexpected token `<'
更正為 \$MINIGO_MODELS/models/$MODEL_NAME 仍報錯
報錯的訊息是輸入python3 main.py bootstrap . "MINIGOMODELS/models/MODEL_NAME"
而輸入python3 main.py bootstrap . "MINIGO_MODELS/models/MODEL_NAME"也是一樣的錯誤訊息
有用gcloud auth application-default login去登入google帳號了 但一樣無用 (系統為ubuntu 16.04)前置步驟都已順利完成
python3 main.py bootstrap . "MINIGO_MODELS/models/MODEL_NAME"
您好~ 在這段部份有問題過不去呢!有如下的錯誤訊息, 有任何建議嘛?
WARNING:google.auth._default:No project ID could be determined. Consider running `gcloud config set project` or setting the GOOGLE_CLOUD_PROJECT environment variable
usage: main.py [-h]
{gtp,bootstrap,train,selfplay,gather,evaluate,validate} ...
main.py: error: unrecognized arguments: . MINIGOMODELS/models/MODEL_NAME
Waiting up to 5 seconds.
Sent all pending logs.