페이스북 인공지능 바둑 엔진(DarkForest) 공개


#1

페이스북에서 개발한 인공지능 바둑 다크포레스트(DardForest) 공개

페이스북이 ICLR 2016 학회에서 발표한 인공지능 바둑 엔진 다크포레스트(DarkForest)를 공개 했습니다.

다크포레스트의 특징

  • 다크포레스트는 토치로 개발
  • 알파고와 유사하게 딥 콘볼루션 뉴럴 네트워크와 몬테 카를로 트리 검색 방식을 함께 사용
  • 다크포레스트는 구글의 알파고보다는 성능은 크게 떨어짐
  • 얀 리쿤(Yann LeCun) 교수에 따르면, 다크포레스트는 대략 아마 5단의 실력
  • 네이처지 발표기준으로 알파고는 프로 5단 정도의 실력으로 평가되었고,
  • 이후 이세돌과의 대국 결과로 추청하는 알파고의 수준은 프로 5단 이상으로 생각됨

소스코드

link

소스코드 Build


Dependencies:

  1. Install torch7.
  2. Install CUDA / CuDNN
  3. Install a few packages
luarocks install class
luarocks install image
luarocks install tds
luarocks install cudnn

This program supports 1 to 4 GPUs.

Then just compile with the following command:

sh ./compile.sh

GCC 4.8+ is required. Depending on the location of your C++ compiler, please change the script accordingly. Tested in CentOS 6.5 and Ubuntu 14.04, 15.04.

Install gcc-4.9 as a second compiler and create symlink as:

sudo ln -s /usr/bin/gcc-4.9 /usr/local/cuda/bin/gcc 
sudo ln -s /usr/bin/g++-4.9 /usr/local/cuda/bin/g++

During the installation of torch and cudnn, either change the build script or replace symlink at /usr/bin/cc with:

sudo ln -s /usr/bin/gcc-4.9 /usr/bin/cc

More info at (http://stackoverflow.com/questions/6622454/cuda-incompatible-with-my-gcc-version)

After the compilation cc symlink can be reverted back to latest version.

If you get errors like:

These bindings are for version 5005 or above ...

Download latest cuDNN from nvidia at (https://developer.nvidia.com/rdp/cudnn-download), registration required.

Usage

Step 1: Download the models.

Create ./models directory and download trained models.

Step 2: First run the GPU server

cd ./local_evaluator     
sh cnn_evaluator.sh [num_gpu] [pipe file path]
  • num_gpu the number of GPUs (1-8) you have for the current machine.
  • pipe file path The path that the pipe file is settled. Default is /data/local/go. If you have specific other path, then you need to specify the same when running cnnPlayerMCTSV2.lua

Example: sh cnn_evaluator.sh 4 /data/local/go

Step 3: Run the main program

cd ./cnnPlayerV2     
th cnnPlayerMCTSV2.lua [options]

See cnnPlayerV2/cnnPlayerMCTSV2.lua for a lot of options. For a simple first run (assuming you have 4 GPUs), you could use:

th cnnPlayerMCTSV2.lua --num_gpu [num_gpu] --time_limit 10

or (if you want to use a set of plausibly good parameters):

th cnnPlayerMCTSV2.lua --use_formal_params --num_gpu [num_gpu] --time_limit 10

To load an existing game up to move 23:

th cnnPlayerMCTSV2.lua [other_options] --setup_board "/path/to/sgf 23"

When you are in the interactive environment, type

  • clear_board to clear the board
  • genmove b to genmove the black move.
  • play w Q4 to play a move at Q4 for specific color.
  • quit to quit.

A complete game may look like:

clear_board
[MCTS initialization ...]
place_free_handicap 3
genmove b 
[MCTS generates moves..e.g., it returns Q16]
play w D4
genmove b
[MCTS generates moves...]
quit

For more commands, please use command list_commands, check the details of GTP protocol or take a look at the source code.

Code Overview

The system consists of the following parts.

  • ./CNNPlayerV2
    Lua (terminal) interface for Go.
  1. CNNPlayerV3.lua Run Pure-DCNN player
  2. CNNPlayerMCTSV2.lua Run player with DCNN + MCTS
  • ./board
    Things about board and its evaluations. Board data structure and different playout policy.

  • ./mctsv2
    Implementation of Monte Carlo Tree Search

  • ./local_evaluator
    Simple GPU-based server. Communication with search threads via pipe.

  • ./utils
    Simple utilities, e.g., read/write sgf files.

  • ./test
    Test utilities.

  • ./train
    Training code (will be released soon).

  • ./models
    All pre-trained models. Please download them here and save to the ./models directory.

  • ./sgfs Some exemplar sgf files.

License

Please check the LICENSE file for the license of Facebook DarkForest Go engine.