2018年07月06日

コンピュータ囲碁プログラム「Leela Zero」のインストールと使いかた - Windows編

コンピュータ囲碁プログラム「Leela」を開発したベルギーの開発者が、Google DeepMindの「AlphaGo Zero」論文に触発されて、自己対戦による深層学習の手法にもとづくあらたなコンピュータ囲碁プログラム「Leela Zero」を開発し、ユーザがリソースを提供して自己対戦データを収集することで「Leela Zero」を育てていく、というユーザ参加型のプロジェクトが立ち上がっています。
このプロジェクトは2017年11月に開始されましたが、およそ九ケ月たった2018年7月現在までに800万回をこえる自己対戦を積みかさねた結果として、「Leela Zero」はすでに世界最強のコンピュータ囲碁プログラムのひとつといえるまでに成長しているそうです。

「Leela Zero」プロジェクトのサイト
「Leela Zero」GitHubレポジトリ
・Windowsバイナリ配布あり。
・64bitおよび32bit対応。
・GPUバージョンおよびCPUバージョン。

ほかのオープンソース化されたコンピュータ囲碁プラグラムは、あらかじめ自己対戦を積みかさねてできあがった学習ずみネットワークが公開されますが、プロジェクトとしてはその時点で完結しているため、さらに学習をつづけて学習ずみネットワークが更新されることはありません。
しかしながら「Leela Zero」の場合は、ユーザの協力によって自己対戦データを増やしていってみんなで「Leela Zero」を育てていくプロジェクトなので、はっきりと強くなったことが確認された時点で学習ずみネットワークが更新されます。
「AlphaGo Zero」論文の検証を目的として立ちあげられたプロジェクトですが、人間の棋譜から学ぶことなく独力で学習をつづける「Leela Zero」はどのような碁を打つようになるのか、そしてどこまで強くなるのか、見守っていきたいと思っています。

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「Leela Zero」をインストールするにあたっては、NVIDIA製もしくはAMD製の外部GPUを搭載したコンピュータであればGPUバージョンを動かすことができますが、それ以外の場合はCPUバージョンを使うことになります。
なお、「Leela Zero」を使って対局や棋譜分析をおこないたい場合は、GTPを解釈できる囲碁GUIと連携させる必要があります。
「Leela Zero」専用に開発された「Lizzie」という囲碁GUIを使うのが便利ですが、その「Lizzie」が64bit版Windowsのみ対応となっているため、「Leela Zero」についても64bit版Windows前提で記述していきます。
(じっさいには32bit版Windows用「Leela Zero」バイナリも公開されていますので、以下であつかうファイル名フォルダ名の「win64」の部分を「win32」に読みかえれば、そのまま32bit版Windows用「Leela Zero」をインストールできます。)

2. 「Leela Zero」インストールファイルのダウンロード
「Leela Zero」の現行バージョンは「v0.15」で、「Leela Zero」GitHubレポジトリの「Releases」ページから「leela-zero-0.15-win64.zip」をクリックして、GPUバージョンの64bit版Windows用インストールファイル「leela-zero-0.15-win64.zip」を取得します。
CPUバージョンを使う場合は、「leela-zero-0.15-cpuonly-win64.zip」のほうをクリックして、CPUバージョンの64bit版Windows用インストールファイル「leela-zero-0.15-cpuonly-win64.zip」を取得します。

3. 「Leela Zero」のインストール
ダウンロードした「leela-zero-0.15-win64.zip」ファイルもしくは「leela-zero-0.15-cpuonly-win64.zip」ファイルを右クリックして「すべて展開」を選ぶと、「leela-zero-0.15-win64」フォルダもしくは「leela-zero-0.15-cpuonly-win64」フォルダができるので、そのフォルダの名前を「leela-zero」に変更しておきます。
この「leela-zero」フォルダのなかにGTP思考エンジン本体である「leelaz.exe」がふくまれているので、この「leela-zero」フォルダをそのまましかるべき場所(たとえば「C:\Users\username\leela-zero」など)に設置すれば、インストール作業は終了です。

4. 「Leela Zero」の設定
「Leela Zero」はパラメータをあらかじめ指定した設定ファイルをもたず、起動コマンドにパラメータをわたすかたちで動作を制御します。
そのため設定ファイルの準備は必要ありませんが、ユーザが自己対戦データを提供してみんなで「Leela Zero」を育てていくというコンセプトにもとづいて、強くなったらそのぶんの学習ずみネットワークが公開されるので、「Leela Zero」が最新の学習ずみネットワークを使えるように準備しないといけません。
どの学習ずみネットワークを読みこませるかは、やはり起動時にパラメータ指定することになりますが、そのファイルをあらかじめ取得しておく必要があるということです。
http://zero.sjeng.org/best-network」から最新の学習ずみネットワークを取得し、それを「C:\Users\username\leela-zero」フォルダに移動して、「best-network」という名前に変更しておきます。
それにより、起動時に「--weights C:\Users\username\leela-zero\best-network」パラメータを指定することで、「Leela Zero」が最新の学習ずみネットワークを利用できるようになります。

*****そのほかの学習ずみネットワークの利用方法*****
「Leela Zero」が各局面でどう打つかは過去に学習してきたことに依存するので、ことなる学習ずみネットワークを読みこませることで、ことなるふるまいをすることが期待できます。

人間の棋譜から学んで人間にちかい打ちかたをするもの
上のリンクから「best_v1.txt.zip」ファイルを取得し、展開してえられる「weights.txt」ファイルを「C:\Users\username\leela-zero」フォルダに移動して、「human-network」などのわかりやすい名前に変更しておきます。
この学習ずみネットワークを利用したい場合、「Leela Zero」起動時に指定するパラメータは、「--weights C:\Users\username\leela-zero\human-network」になります。

Facebook「ELF OpenGo」の学習ずみネットワークを「Leela Zero」で利用できるように変換したもの
上のリンクからgzファイルを取得し、「C:\Users\username\leela-zero」フォルダに移動して、「ELF-network」などのわかりやすい名前に変更しておきます。
Facebook「ELF OpenGo」のGitHubレポジトリから学習ずみネットワーク「pretrained-go-19x19-v0.bin」をダウンロードして、公開されているpythonスクリプトで変換することもできます。

この学習ずみネットワークを利用したい場合、「Leela Zero」起動時に指定するパラメータは、「--weights C:\Users\username\leela-zero\ELF-network」になります。


5. GTP対応囲碁GUIとの連携方法
「Leela Zero」として公開されているのはGUIをもたない囲碁思考エンジン部分のみなので、グラフィカルに対局や棋譜分析をおこなうためにはGTPを解釈できる囲碁GUIと連携させる必要があります。
「leela-zero」フォルダをたとえば「C:\Users\username\leela-zero」(「username」はお使いのユーザ名)に設置したとして、「C:\Users\username\leela-zero\leelaz.exe」が、囲碁GUIに登録するべきGTP思考エンジンへのパスになります。

5-1. GTP対応囲碁GUI「GoGui」への思考エンジン登録
メニューバーの「プログラム」から「新規プログラム」を選び、あらわれた画面の「コマンド:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「leela-zero」フォルダを「C:\Users\username\leela-zero」に設置した場合、「コマンド:」欄に入力する絶対パスは「C:\Users\username\leela-zero\leelaz.exe」のようになります。
パラメータはたとえば「--gtp --threads 4 --playouts 1600 --noponder --weights C:\Users\username\leela-zero\best-network」のようなかたちで指定しますが、「--gtp」がGTP対応囲碁GUIから制御するための必須オプション、「--threads」は使用するスレッド数指定、「--playouts」はプレイアウト数指定で大きいほど強くなる(「--playouts」オプション無指定でプレイアウト数無制限)、「--noponder」は相手の手番でも思考する「ponder」機能を使わない(プレイアウト数を指定するときは必須)、「--weights」は利用する学習ずみネットワークファイルを絶対パスで指定、といった意味をもちます。
上記パスとパラメータは、一行にまとめて「コマンド:」欄に記述するので、全体として入力するべきコマンドは「C:\Users\username\leela-zero\leelaz.exe --gtp --threads 4 --playouts 1600 --noponder --weights C:\Users\username\leela-zero\best-network」のようになります。
「OK」ボタンを押下して何度か「待機」をクリックしながら待っていると、ステイタスバーに表示されていた「プログラムの開始中」メッセージが消えて新規プログラム登録画面が開くので、「ラベル:」欄にたとえば「Leela Zero」などと入力して「OK」ボタンを押下します。
これで登録完了となるので、次回以降はメニューバーの「プログラム」 -> 「プログラムの起動」とすすんで「Leela Zero」を選ぶと、「Leela Zero」が起動して対局や棋譜分析に利用できるようになります。
登録した囲碁思考エンジン「Leela Zero」と対局するには、「Leela Zero」を起動した状態で、メニューバーの「対局」から「碁盤サイズ」「置石」「コンピュータの手番」を指定したうえで、「新規対局」をクリックします。
検討したい局面を指定して、そこで「Leela Zero」がどう打つかをみることもできます。
「Leela Zero」を起動したあと、メニューバーから「コンピュータの手番」を「なし」にして、どんどん石を置いていって対象となる局面をつくり、黒番の局面なら「Leela Zeroに黒を打たせる」、白番の局面なら「Leela Zeroに白を打たせる」アイコンをクリックします。
そのさい「GTPシェル」を開いておけば、読み筋や評価値も表示されるので、着手の意味を考えるときに参考になります。

5-2. 「Sabaki」への思考エンジン登録
メニューバーの「Engines」から「Manage Engines」を選び、あらわれた画面で「Add」をクリックします。
「(Unnamed Engine)」と表示されている欄にカーソルをもっていって、わかりやすい表示名を、そして「Path」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば「leela-zero」フォルダを「C:\Users\username\leela-zero」に設置した場合、「(Unnamed Engine)」欄にカーソルをもっていって「Leela Zero」と入力、「Path」欄に絶対パス「C:\Users\username\leela-zero\leelaz.exe」を指定します。
その下の「No arguments」と表示されている欄には、思考エンジンに渡してやるパラメータを入力します。
パラメータはたとえば「--gtp --threads 4 --playouts 1600 --noponder --weights C:\Users\username\leela-zero\best-network」のようなかたちで指定しますが、「--gtp」がGTP対応囲碁GUIから制御するための必須オプション、「--threads」は使用するスレッド数指定、「--playouts」はプレイアウト数指定で大きいほど強くなる(「--playouts」オプション無指定でプレイアウト数無制限)、「--noponder」は相手の手番でも思考する「ponder」機能を使わない(プレイアウト数を指定するときは必須)、「--weights」は利用する学習ずみネットワークファイルを絶対パスで指定、といった意味をもちます。
さらにその下の「Initial command (;-separated)」と表示されている欄で、考慮時間の設定などが可能です。
たとえば「持ち時間なし、一手20秒以内で着手」という条件にしたい場合は、ここに「time_settings 0 20 1;」と入力してやればO.K.です。
基本的には、プレイアウト数と考慮時間が強さに影響する要素なので、うまく強さと対局時間のバランスがとれる条件を見つける必要があります。
登録した「Leela Zero」と対局するには、メニューバーの「File」から「New」をクリックします。
開いた画面で「Board Size」「Handicap」「Komi」を指定のうえ、黒番と白番それぞれの担当者を選択します。
自分が担当する手番は「Manual」を選択、「Leela Zero」に担当させる手番は登録されている思考エンジンの表示名から「Leela Zero」を選んで、「OK」ボタンを押下します。
「Sabaki」にほかの囲碁思考エンジンを登録しておいて、「Leela Zero」をほかの思考エンジンと対局させることもできます。
その場合は、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないかたちで対局をおこなう必要があります。


参考ウェブページ一覧表(順不同)

http://zero.sjeng.org/
https://github.com/gcp/leela-zero
https://github.com/gcp/leela-zero/releases
https://github.com/gcp/leela-zero/issues/1329
posted by hatakazu at 21:34| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年07月05日

コンピュータ囲碁プログラム「Leela」のインストールと使いかた - Windows編

ベルギーの開発者が無料で公開しているコンピュータ囲碁プログラム「Leela」は、現在のところバージョン「0.11.0」が最新版で、19路盤での強さは(使用するハードウェアの性能に大きく依存しますが)九段をこえるところまできているとのことです。

「Leela」サイト:SJENG.ORG - chess, go, audio and misc. software
・Windowsバイナリ配布あり。
・64bit対応。
・GPUバージョンおよびCPUバージョン。
・GUIパッケージおよびGTP思考エンジンのみ配布。

Google DeapMind「AlphaGo」、とりわけそれにつづく「AlphaGo Zero」の衝撃をうけて、人間が過去に蓄積した知識による教育なしに、自己対戦のみにもとづいて深層学習を重ねていく手法をとりいれたあたらしいコンピュータ囲碁プログラムが登場してきました。

「Leela Zero」プロジェクトページ「Leela Zero」GitHubレポジトリ:Windowsバイナリ配布あり、64bitおよび32bit対応、GPUバージョンおよびCPUバージョン。
「AQ」GitHubレポジトリ:Windowsバイナリ配布あり、64bit対応、GPUバージョンおよびCPUバージョン。
Facebook「ELF OpenGo」GitHubレポジトリ:Windowsバイナリ配布なし。
Tencent「PhoenixGo」GitHubレポジトリ:Windowsバイナリ配布あり、64bit対応、GPUバージョンおよびCPUバージョン。GPUバージョンは「NVIDIA製GPU」+「CUDA 9.0」+「cuDNN 7.1.4」必要。

これらのあたらしいコンピュータ囲碁プログラムはきわめて短期間でものすごく強くなっているだけではなく、人間の棋譜から学んでないため人間なら打たないような着手がおおく、囲碁の可能性を広げるものとしてプロ棋士もコンピュータ囲碁プログラムから学ぶというかたちで歓迎されているようです。
hatakazuもこうしたコンピュータ囲碁プログラム、とくにFacebook「ELF OpenGo」を動かしてみたくて、NVIDIA製GPU(GeForce MX 150)搭載のラップトップを購入してしまったほどです。
このラップトップ上には、すでにWindows10とUbuntu18.04のデュアルブート環境を構築してあるので、今後すこしずつ導入していろいろ遊んでみるつもりです。
しかし、正直なところhatakazuが囲碁を勉強する場合、一番役に立つのは「Leela」だといまでも思っています。
まずは、「Leela」はプロ棋士などレベルの高い人間の棋譜から学んでおり、各局面でプロ棋士ならどう打つかをシミュレートするメカニズムになっているため、人間の強いひとのような着手がおおくて、人間が対局や棋譜分析をつうじて学ぶのに適していること。
それから、パッケージにふくまれる囲碁GUIがたいへんよくできており、操作性がよいというだけではなく、「Leela」の強さを生かして囲碁を勉強するためのすぐれたツールになっていること。
そしてもうひとつ特記すべき理由は、なんといっても置碁をふつうに打ってくれる唯一のコンピュータ囲碁プラグラムである、ということです。

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「Leela」をインストールするにあたっては、Windows7以上の64bit OSが必要と思われます。
「OpenCL 1.1」以降に対応したGPUを搭載したコンピュータであれば、「GPU Accelerated」バージョンを動かすことができますが、それ以外の場合は通常のCPUバージョンを使うことになります。

2. 「Leela」インストールファイルのダウンロード
「Leela」の最新バージョンは「0.11.0」で、「Leela」ページから「Leela 0.11.0 (graphical interface for Windows, you probably want this one)」をクリックして、囲碁GUIがセットになったパッケージのWindows用インストールファイル「setupLeela0110.exe」を取得します。

3. 「Leela」のインストール
ダウンロードした「setupLeela0110.exe」ファイルをダブルクリックすると、インストール処理がはじまります。
管理者権限不要でインストールするには、「Next」 -> 「I agree」 -> 「Next」とすすめて、ここでインストール先のフォルダを指定します。
デフォルトのインストール先は「C:\Users\username\AppData\Local\Programs\Leela」ですが、必要におうじて「C:\Users\username\Leela」(「username」はお使いのユーザ名)などに変更のうえ、「Next」ボタンを押します。
次の画面で、「OpenCL 1.1」以降に対応したGPUを搭載したコンピュータであれば「Leela (GPU Accelerated)」にチェックをいれて、GPUバージョンをインストールするよう設定します。
それ以外の場合はCPUバージョンのみのインストールになるので、そのまま「Next」ボタンを押します。
最後の画面で「スタートメニュー」に登録するかどうかを選択のうえ、「Install」ボタンを押下するとファイルのコピーがはじまるので、終わったら「Finish」ボタンをクリックしてインストール画面を閉じます。
デスクトップに「Leela」のショートカットができているので、それをダブルクリックすればCPUバージョン「Leela」のGUI画面が起動して、碁盤が表示されるはずです。
「OpenCL 1.1」以降に対応したGPUを搭載したコンピュータで「Leela (GPU Accelerated)」にチェックをいれた場合は、「Leela (GPU Accelerated)」のショートカットもできているので、基本的にこちらのGPUバージョン「Leela」を使えばO.K.です。
「Leela (GPU Accelerated)」をダブルクリックしてGPUバージョン「Leela」を起動したあと、「Help」 -> 「About...」をクリックすると、「Leela」が認識しているGPUを確認することができます。

4. 「Leela」の基本的な使いかた

4-1. 対局方法
「File」 -> 「New Game」をクリックし、開いた画面で「盤サイズ」「手番」「置石」「コミ」などの条件を指定して、「OK」を押下すると対局がはじまります。
「Engine max level」は思考エンジンのシミュレーション数をあらわしていて、値が大きいほど強くなりますが、通常は「Unlimited」を指定すればO.K.です。
ふつうに条件を指定して対局するほかにも、勝敗におうじて段級位が変動し、それにともなって自動的に対局条件が設定されるレーティング対局もできます。
「File」 -> 「Set Rated Board Size」でレーティングに挑戦する碁盤のサイズを指定して、「File」 -> 「New Rated Game」でレーティング対局がはじまります。
勝ったら置石が減り、負けたら置石が増えるかたちで、実力にあうように次局の対局条件が調整されていきます。

4-2. 棋譜分析
対局以外の実用性の高い使いかたとしては、SGF形式などの棋譜を読みこんで、それをLeelaに分析させることができます。
「Analyze」 -> 「Analysis Window」を表示させてから、「Analyze」 -> 「Start/Stop Analysis」をクリックすると、「Analysis Window」に候補手とそれぞれの候補手を選択した場合の勝率が表示されます。
「Move」列に表示されている候補手をクリックすると、そのときに読んでいる変化図が碁盤に表示されます。
「Effort%」が高ければ十手以上先まで読み筋が出ますし、クリックするたびに図が変化して、かなり広く深く読んでいることがわかります。
「Tools」 -> 「Show Best Moves」をオンにすると、色分けによる優先順位表示とともに、候補手を盤上に表示させることもできます。
「Analyze」 -> 「Show Histogram」をオンにすると、手数の進行にともなう勝率の変遷が可視化され、どこでわるい手を打ったかひと目で把握できます。
「Leela」の棋力そのものが高いため、こうした分析内容の信頼性も高く、対局のみならず囲碁を勉強するツールとしても非常に貴重な存在であるといえます。

5. GTP思考エンジンの利用方法
「Leela」は基本的に対局や棋譜分析のためのインタフェースもふくんだGUIパッケージで配布されていますが、「Leela」の思考エンジン部分のみをGTPで利用して、ほかのGTP対応囲碁GUIから対局や棋譜分析に利用することもできます。
「Leela」の思考エンジンをほかのGTP対応囲碁GUIから使いたい場合は、「Leela 0.11.0 engine only (commandline/GTP engine for Windows/Linux/macOS)」をクリックして、Windows用をふくむ思考エンジンのみの圧縮ファイル「Leela0110GTP.zip」をダウンロードします。
ダウンロードした「Leela0110GTP.zip」を右クリックして「すべて展開」を選ぶと、「Leela0110GTP」フォルダができるので、この「Leela0110GTP」フォルダを環境にあわせて適切な場所、たとえば「C:\Users\username\Leela0110GTP」などに配置します。
「Leela0110GTP」フォルダのなかにGTP思考エンジンの各種環境用バイナリがふくまれており、「OpenCL 1.1」以降に対応したGPUを搭載したコンピュータであればGPUバージョン「Leela0110GTP_OpenCL.exe」が、それ以外の場合はCPUバージョン「Leela0110GTP.exe」が、囲碁GUIに登録するべきGTP思考エンジンになります。

5-1. 「GoGui」への思考エンジン登録
メニューバーの「プログラム」から「新規プログラム」を選び、あらわれた画面の「コマンド:」欄に囲碁思考エンジンの絶対パスと、指定すべきパラメータを入力します。
たとえば解凍したフォルダを「C:\Users\username\Leela0110GTP」に置いた場合、「コマンド:」欄に入力する絶対パスは「C:\Users\username\Leela0110GTP\Leela0110GTP_OpenCL.exe」のようになります。
パラメータはたとえば「--gtp --threads 4 --playouts 1600 --noponder」のようなかたちで指定しますが、「--gtp」がGTP対応囲碁GUIから制御するための必須オプション、「--threads」は使用するスレッド数指定、「--playouts 1600」はプレイアウト数指定で大きいほど強くなる(「--playouts」オプション無指定でプレイアウト数無制限)、「--noponder」は相手の手番でも思考する「ponder」機能を使わない(プレイアウト数を指定するときは必須)、といった意味をもちます。
上記パスとパラメータは、一行にまとめて「コマンド:」欄に記述するので、全体として入力するべきコマンドは「C:\Users\username\Leela0110GTP\Leela0110GTP_OpenCL.exe --gtp --threads 4 --playouts 1600 --noponder」のようになります。
「OK」ボタンを押下して何度か「待機」をクリックしながら待っていると、ステイタスバーに表示されていた「プログラムの開始中」メッセージが消えて新規プログラム登録画面が開くので、「ラベル:」欄にたとえば「Leela 0.11.0 GTP」などと入力して「OK」ボタンを押下します。
これで登録完了となるので、次回以降はメニューバーの「プログラム」 -> 「プログラムの起動」とすすんで「Leela 0.11.0 GTP」を選ぶと、「Leela」が起動して対局や棋譜分析に利用できるようになります。
登録した囲碁思考エンジン「Leela」と対局するには、「Leela」を起動した状態で、メニューバーの「対局」から「碁盤サイズ」「置石」「コンピュータの手番」を指定したうえで、「新規対局」をクリックします。
検討したい局面を指定して、そこで「Leela」がどう打つかをみることもできます。
「Leela」を起動したあと、メニューバーから「コンピュータの手番」を「なし」にして、どんどん石を置いていって対象となる局面をつくり、黒番の局面なら「Leelaに黒を打たせる」、白番の局面なら「Leelaに白を打たせる」アイコンをクリックします。
そのさい「GTPシェル」を開いておけば、読み筋や評価値も表示されるので、着手の意味を考えるときに参考になります。
CPUバージョンを使う場合は、上の記述における「Leela0110GTP_OpenCL.exe」を「Leela0110GTP.exe」に読みかえてください。

5-2. 「Sabaki」への思考エンジン登録
メニューバーの「Engines」から「Manage Engines」を選び、あらわれた画面で「Add」をクリックします。
「(Unnamed Engine)」と表示されている欄にカーソルをもっていって、わかりやすい表示名を、そして「Path」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば解凍したフォルダを「C:\Users\username\Leela0110GTP」に置いた場合、「(Unnamed Engine)」欄にカーソルをもっていって「Leela 0.11.0 GTP」と入力、「Path」欄に絶対パス「C:\Users\username\Leela0110GTP\Leela0110GTP_OpenCL.exe」を指定します。
その下の「No arguments」と表示されている欄には、思考エンジンに渡してやるパラメータを入力します。
パラメータはたとえば「--gtp --threads 4 --playouts 1600 --noponder」のようなかたちで指定しますが、「--gtp」がGTP対応囲碁GUIから制御するための必須オプション、「--threads」は使用するスレッド数指定、「--playouts 1600」はプレイアウト数指定で大きいほど強くなる(「--playouts」オプション無指定でプレイアウト数無制限)、「--noponder」は相手の手番でも思考する「ponder」機能を使わない(プレイアウト数を指定するときは必須)、といった意味をもちます。
さらにその下の「Initial command (;-separated)」と表示されている欄で、考慮時間の設定などが可能です。
たとえば「持ち時間なし、一手20秒以内で着手」という条件にしたい場合は、ここに「time_settings 0 20 1;」と入力してやればO.K.です。
基本的には、プレイアウト数と考慮時間が強さに影響する要素なので、うまく強さと対局時間のバランスがとれる条件を見つける必要があります。
登録した「Leela」と対局するには、メニューバーの「File」から「New」をクリックします。
開いた画面で「Board Size」「Handicap」「Komi」を指定のうえ、黒番と白番それぞれの担当者を選択します。
自分が担当する手番は「Manual」を選択、「Leela」に担当させる手番は登録されている思考エンジンの表示名から「Leela 0.11.0 GTP」を選んで、「OK」ボタンを押下します。
「Sabaki」にほかの囲碁思考エンジンを登録しておいて、「Leela」をほかの思考エンジンと対局させることもできます。
その場合は、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないかたちで対局をおこなう必要があります。
CPUバージョンを使う場合は、上の記述における「Leela0110GTP_OpenCL.exe」を「Leela0110GTP.exe」に読みかえてください。


参考ウェブページ一覧表(順不同)

https://www.sjeng.org/leela.html
posted by hatakazu at 21:04| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年07月04日

GTP対応囲碁GUI「Sabaki」のインストールと使いかた - Windows編

コンピュータ囲碁プログラムとよばれるものは一般的に、現在の盤面の状況を分析して次の着手を導き出す囲碁思考エンジンそのものを指すことがおおく、それじたいは対局や棋譜分析に適した操作画面をそなえてないのがふつうです。
そうした操作画面は囲碁GUI(Graphical User Interface)とよばれるべつのソフトウェアで、囲碁思考エンジンを囲碁GUIと連携させることによって、グラフィカルな碁盤画面をつうじて囲碁思考エンジンとやりとりできるようになるわけです。
そして、囲碁思考エンジンと囲碁GUIとは、GTP(Go Text Protocol)という共通の言葉によってむすびつけられています。
囲碁GUIは現在の盤面の状況をGTP経由で囲碁思考エンジンに伝え、次の着手を導き出すよう命令し、囲碁思考エンジンも計算によって導き出された着手をGTP経由で囲碁GUIに返し、それを囲碁GUIがグラフィック画面の碁盤上に表示するという方法で、ユーザと囲碁思考エンジンとの対局や思考エンジンによる棋譜分析が可能になっているのです。
そのため、いろいろな囲碁思考エンジンを対局や棋譜分析に使うためには、GTPに対応した囲碁GUIをインストールして囲碁思考エンジンと連携させ、GTP対応囲碁GUIをとおして囲碁思考エンジンを制御してやる必要があることになります。
GTPに対応した囲碁GUIとしては、「GoGui」と「Sabaki」が一般的によく使われていると思います。
ここでは、「Sabaki」をWindowsにインストールする方法と、基本的な使いかたについて記述していきます。

「GoGui」プロジェクトページ
「Sabaki」プロジェクトページ

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「Sabaki」をインストールするさいの動作要件ですが、ハードウェア的にもソフトウェア的にも特別な要請はなく、Windowsが動いているコンピュータならたいてい問題なく動かせるはずです。

2. 「Sabaki」インストールファイルのダウンロード
「Sabaki」の最新バージョンは「0.34.1」で、ダウンロードページから64bit版Windows用インストーラ「sabaki-v0.34.1-win-x64-setup.exe」を取得できます。

3. 「Sabaki」のインストール
ダウンロードしたファイルをダブルクリックすると、インストール処理がはじまります。
デフォルトのインストール先は「C:\Program Files\Sabaki」ですが、必要におうじて「C:\Users\username\Sabaki」(「username」はお使いのユーザ名)などに変更のうえ、「インストール」ボタンを押します。
デスクトップに「Sabaki」のショートカットがつくられるので、それをダブルクリックすれば、「Sabaki」が起動して碁盤が表示されるはずです。

4. 囲碁思考エンジンの登録
「Sabaki」はあくまでも囲碁GUIなので、対局や棋譜分析をおこなうためには、GTP経由で囲碁思考エンジンとやりとりする必要があります。
囲碁思考エンジンが考え、囲碁GUIがそれを画面に表現する、私たちは囲碁GUIをとおして囲碁思考エンジンと対局しているということです。
そのため、あらかじめ「Sabaki」にGTP対応囲碁思考エンジンを登録し、それとやりとりできるように設定しておかないといけません。
メニューバーの「Engines」から「Manage Engines」を選び、あらわれた画面で「Add」をクリックします。
「(Unnamed Engine)」と表示されている欄にカーソルをもっていって、わかりやすい表示名を、そして「Path」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば囲碁思考エンジン「AQ」を「C:\Users\username\AQ」フォルダにインストールしている場合、「(Unnamed Engine)」欄にカーソルをもっていって「AQ」と入力、「Path」欄に絶対パス「C:\Users\username\AQ\AQ.exe」を指定します。
「AQ」の場合は「AQ.exe」とおなじ場所に設定ファイル「aq_config.txt」が存在し、そこで各種パラメータを指定する方法ですが、使用する思考エンジンによってはその下の「No arguments」と表示されている欄にパラメータを記入してやる必要があります。
各種思考エンジンの「Sabaki」への登録方法については、それぞれのインストール方法を紹介するページに項目をもうけて、記述していきたいと思っています。

5. 「Sabaki」の基本的な使いかた
登録した囲碁思考エンジン(たとえば「AQ」)と対局するには、メニューバーの「File」から「New」をクリックします。
開いた画面で「Board Size」「Handicap」「Komi」を指定のうえ、黒番と白番それぞれの担当者を選択します。
自分が担当する手番は「Manual」を選択、コンピュータに担当させる手番は登録されている思考エンジンの表示名から選んで、「OK」ボタンを押下します。
メニューバーの「Engines」から「Toggle GTP Console」をクリックすると、「GTP Console」が開き、そこに囲碁GUI「Sabaki」と囲碁思考エンジン(たとえば「AQ」)とのやりとりが表示されます。
便利な使いかたとしては、「Sabaki」に複数の囲碁思考エンジンを登録しておいて、思考エンジンどうし対局させることができます。
その場合は、対局させる思考エンジンの両方について「ponder」機能を無効化するように設定し、互いの思考をさまたげないように設定するのがいいでしょう。
「Sabaki」メニューバーの「View」から「Toggle Menu Bar」をクリックすると、メニューバーが消えてしまいますが、「Alt」キーを押すことでメニューバーが表示されるようになります。


参考ウェブページ一覧表(順不同)

http://betago.hateblo.jp/entry/2018/01/18/041210
posted by hatakazu at 20:41| Comment(1) | 囲碁ソフトのこと | 更新情報をチェックする

GTP対応囲碁GUI「GoGui」のインストールと使いかた - Windows編

コンピュータ囲碁プログラムとよばれるものは一般的に、現在の盤面の状況を分析して次の着手を導き出す囲碁思考エンジンそのものを指すことがおおく、それじたいは対局や棋譜分析に適した操作画面をそなえてないのがふつうです。
そうした操作画面は囲碁GUI(Graphical User Interface)とよばれるべつのソフトウェアで、囲碁思考エンジンを囲碁GUIと連携させることによって、グラフィカルな碁盤画面をつうじて囲碁思考エンジンとやりとりできるようになるわけです。
そして、囲碁思考エンジンと囲碁GUIとは、GTP(Go Text Protocol)という共通の言葉によってむすびつけられています。
囲碁GUIは現在の盤面の状況をGTP経由で囲碁思考エンジンに伝え、次の着手を導き出すよう命令し、囲碁思考エンジンも計算によって導き出された着手をGTP経由で囲碁GUIに返し、それを囲碁GUIがグラフィック画面の碁盤上に表示するという方法で、ユーザと囲碁思考エンジンとの対局や思考エンジンによる棋譜分析が可能になっているのです。
そのため、いろいろな囲碁思考エンジンを対局や棋譜分析に使うためには、GTPに対応した囲碁GUIをインストールして囲碁思考エンジンと連携させ、GTP対応囲碁GUIをとおして囲碁思考エンジンを制御してやる必要があることになります。
GTPに対応した囲碁GUIとしては、「GoGui」と「Sabaki」が一般的によく使われていると思います。
ここでは、「GoGui」をWindowsにインストールする方法と、基本的な使いかたについて記述していきます。

「GoGui」プロジェクトページ
「Sabaki」プロジェクトページ

1. 前提となる環境
インストールするコンピュータの仕様は以下のとおり。

--
Dell Inspiron 14 7472 Core i7モデル 18Q42P
OS:Windows10 Home 64bit
CPU:インテル Core i7-8550U (4Mキャッシュ、最大4.0GHz)
GPU:NVIDIA GeForce MX150 GDDR5 2GB
メモリー:8GB DDR4 2400MHz(最大16GB)
保存装置:128GB SSD + 1TB 5400rpm HDD
--

「GoGui」をインストールするさいの動作要件ですが、ハードウェア的には特別な要請はなく、Windowsが動いているコンピュータならたいてい問題なく動かせるはずです。
ソフトウェア的には、「GoGui」は「Javaランタイム」をあてにしているので、「Javaランタイム」をあらかじめインストールしておく必要があります。

*****「Java」ランタイムインストール*****
(必要な環境がすでに構築されている場合は、このセクションは無視して先へすすんでください。)

無料Javaソフトウェアをダウンロード」ページから、「無料Javaのダウンロード」 -> 「同意して無料ダウンロードを開始」とすすんで、Windows版Javaの推奨バージョン(Version 8 Update 171)インストールファイル「JavaSetup8u171.exe」をダウンロードします。

ダウンロードしたインストールファイルをダブルクリックすると、セットアップがはじまって「Javaへようこそ」画面が開くので、(必要におうじて「宛先フォルダを変更する」にチェックをいれて)「インストール」ボタンをクリックします。
ファイルのダウンロードがはじまって、最終確認を求められるので、問題なければそのまま「インストール」ボタンを押してすすめます。
デフォルトのインストール先は「C:\Program Files (x86)\Java\jre1.8.0_171」です。

インストール処理が終わったら、完了画面があらわれるので、「閉じる」ボタンをクリックして終了します。


2. 「GoGui」インストールファイルのダウンロード
「GoGui」の最新バージョンは「1.4.9」で、ダウンロードページからWindows用インストーラ「gogui-1.4.9-install.exe」を取得できます。

3. 「GoGui」のインストール
ダウンロードしたファイルをダブルクリックすると、インストール処理がはじまります。
基本的には「Next」 -> 「I Agree」 -> 「Next」 -> 「Install」でO.K.ですが、SGF棋譜ファイルをほかの棋譜管理ソフトにひもづけたい場合は、「Register GoGui as handler for SGF files」のチェックははずしておきます。
デフォルトのインストール先は「C:\Program Files (x86)\GoGui」ですが、最後の「Install」ボタンを押すまえに、必要におうじて「C:\Users\username\GoGui」(「username」はお使いのユーザ名)などに変更することができます。
デスクトップに「GoGui」のショートカットがつくられるので、それをダブルクリックすれば、「GoGui」が起動して碁盤が表示されるはずです。

4. 囲碁思考エンジンの登録
「GoGui」はあくまでも囲碁GUIなので、対局や棋譜分析をおこなうためには、GTP経由で囲碁思考エンジンとやりとりする必要があります。
囲碁思考エンジンが考え、囲碁GUIがそれを画面に表現する、私たちは囲碁GUIをとおして囲碁思考エンジンと対局しているということです。
そのため、あらかじめ「GoGui」にGTP対応囲碁思考エンジンを登録し、それとやりとりできるように設定しておかないといけません。
メニューバーの「プログラム」から「新規プログラム」を選び、あらわれた画面の「コマンド:」欄に囲碁思考エンジンの絶対パスを入力します。
たとえば囲碁思考エンジン「AQ」を「C:\Users\username\AQ」フォルダにインストールしている場合、「コマンド:」欄に入力する絶対パスは「C:\Users\username\AQ\AQ.exe」のようになります。
「OK」ボタンを押下して何度か「待機」をクリックしながら待っていると、ステイタスバーに表示されていた「プログラムの開始中」メッセージが消えて新規プログラム登録画面が開くので、「ラベル:」欄にたとえば「AQ」などと入力して「OK」ボタンを押下します。
これで登録完了となるので、次回以降はメニューバーの「プログラム」 -> 「プログラムの起動」とすすんで「AQ」を選ぶと、「AQ」が起動して対局や棋譜分析に利用できるようになります。
「AQ」の場合は「AQ.exe」とおなじ場所に設定ファイル「aq_config.txt」が存在し、そこで各種パラメータを指定する方法ですが、使用する思考エンジンによっては「コマンド:」欄で絶対パスといっしょにパラメータを渡してやる必要があります。
各種思考エンジンの「GoGui」への登録方法については、それぞれのインストール方法を紹介するページに項目をもうけて、記述していきたいと思っています。

5. 「GoGui」の基本的な使いかた
登録した囲碁思考エンジン(たとえば「AQ」)と対局するには、メニューバーの「プログラム」 -> 「プログラムの起動」とすすみ、「AQ」を選んで「AQ」を起動します。
この状態で、メニューバーの「対局」から「碁盤サイズ」「置石」「コンピュータの手番」を指定したうえで、「新規対局」をクリックすれば、「AQ」との対局を楽しむことができます。
メニューバーの「ツール」から「GTPシェル」をクリックすると、「GTPシェル」が開き、そこに囲碁GUI「GoGui」と囲碁思考エンジン(たとえば「AQ」)とのやりとりが表示されます。
便利な使いかたとしては、検討したい局面を指定して、そこで囲碁思考エンジン(たとえば「AQ」)がどう打つかをみることができます。
メニューバーから「コンピュータの手番」を「なし」にして、どんどん石を置いていって局面をつくったあとで、たとえば「AQ」を起動している場合、黒番の局面なら「AQに黒を打たせる」、白番の局面なら「AQに白を打たせる」アイコンをクリックします。
そのさい「GTPシェル」を開いておけば、読み筋や評価値も表示されるので、着手の意味を考えるときに参考になります。


参考ウェブページ一覧表(順不同)

https://github.com/ymgaq/AQ/wiki/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95%EF%BC%88Windows%EF%BC%89
posted by hatakazu at 20:13| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年05月30日

NHK杯テレビ囲碁トーナメントの棋譜をSGF形式で管理できるようにする

NHK杯テレビ囲碁トーナメントでおこなわれた対局の棋譜は、すべてウェブサイトで公開されているのですが、ブラウザで碁盤を表示させてその碁盤上に着手を再現していく仕組みになっています。

NHK杯テレビ囲碁トーナメント公式ウェブサイト

2018年5月27日(日)に放送された「第66回NHK杯テレビ囲碁トーナメント一回戦第9局 伊田篤史八段対藤沢里菜女流立葵杯」戦の場合、トップページから該当する対局の「棋譜を見る」ボタンをクリックすると、「http://cgi2.nhk.or.jp/goshogi/kifu/igs.cgi?d=20180527」というURLで棋譜を見ることができます。
最後の八桁番号が放送日をあらわしており、たとえば2018年3月18日(日)に放送された前回第65回の決勝戦だったら、「http://cgi2.nhk.or.jp/goshogi/kifu/igs.cgi?d=20180318」というURLになります。
ただたんに棋譜を追いかけるだけならこれでもいいのですが、じっさいに検討してみたいと思った場合は、やはりSGF形式に変換して棋譜管理ソフトにかけられたほうがはるかに便利です。
棋譜管理ソフトで一手一手入力していくわけにもいきませんから、なんらかのかたちで棋譜データを取得のうえ、SGF形式に変換できるツールがあればなあと思っていたところ・・・。
NHK 杯囲碁トーナメントの棋譜ファイルを SGF 形式で入手する:Part 1. 棋譜データの取得」「NHK 杯囲碁トーナメントの棋譜ファイルを SGF 形式で入手する:Part 2. SGF 形式への変換」に情報があり、棋譜データの取得用とSGF形式への変換用に、それぞれRubyスクリプトも公開されていました。
もしRuby環境がない場合は、たとえばUbuntuなら以下のコマンドを実行して、あらかじめRubyをインストールしておく必要があります。

$ sudo apt install ruby


棋譜データの取得は、「NHK 杯囲碁トーナメントの棋譜ファイルを SGF 形式で入手する:Part 1. 棋譜データの取得」に記載されているとおりの「get-score.rb」スクリプトを作成し、第xx回の棋譜であれば「$ ruby get-score.rb xx」を実行するだけ。
ただし、事前に「./date/date-xx.txt」ファイルを作成し、そこに棋譜データを取得したい対局の放送日を列記しておく必要があります。
このファイルの内容は、たとえば第65回の準決勝戦二局+決勝戦の計三局を対象とするなら、以下のようにその三局の放送日を列記するかたちです。

3月4日
3月11日
3月18日


棋譜データをうまく取得できれば、「./score/score-xx」ディレクトリが作成され、そのなかに取得した棋譜データが「xxxxxxxx.txt」形式で保管されます。
取得した棋譜データをSGF形式へ変換するには、「NHK 杯囲碁トーナメントの棋譜ファイルを SGF 形式で入手する:Part 2. SGF 形式への変換」に記載されているとおりの「score2sgf.rb」スクリプトを作成し、「$ ruby score2sgf.rb ./score/score-xx/xxxxxxxx.txt」を実行します。
もともとのNHK杯独自形式の棋譜データ「xxxxxxxx.txt」がSGFファイル「xxxxxxxx.sgf」に変換され、お好みの棋譜管理ソフトから管理できるようになります。
なお、取得した第xx回の棋譜データを一括してSGF形式に変換するには、Ubuntu上のbashターミナルから以下のコマンドを実行すればO.K.です。

$ for f in ./score/score-xx/*.txt; do
> ruby score2sgf.rb $f
> done
$


これまではテレビを見ながら一手一手入力してSGFファイルをつくったりもしていたのですが、上記の方法を導入することによってhatakazuの人生からひとつの困難が取りのぞかれ、すこし幸せになることができました。
記して感謝もうしあげます。


参考ウェブページ一覧表(順不同)

http://cgi2.nhk.or.jp/goshogi/gotou/
https://ochaochaocha3.hateblo.jp/entry/2013/01/31/getting-score-files-of-go-nhk-cup-in-sgf-format-part-1
https://ochaochaocha3.hateblo.jp/entry/2013/02/09/getting-score-files-of-go-nhk-cup-in-sgf-format-part-2
posted by hatakazu at 21:31| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年05月25日

「GoGui」で「ELF OpenGo」を思考エンジンとして使う

「ELF OpenGo」を「~/ELF」以下にインストールし、「pretrained-go-19x19-v0.bin」を「~/ELF/bin/pretrained-go-19x19-v0.bin」に設置したとして、けっきょくのところ以下の方法で「GoGui」から「ELF OpenGo」を思考エンジンとして使うことができるようになりました。

$ cd /home/username/ELF/
$ source scripts/devmode_set_pythonpath.sh
$ cd /home/username/ELF/scripts/elfgames/go/
$ gogui


そうして起動した「GoGui」メニューバーから「プログラム」 -> 「新規プログラム」とすすんで、「コマンド:」欄に以下のコマンドを入力します。

/home/username/ELF/scripts/elfgames/go/gtp.sh /home/username/ELF/bin/pretrained-go-19x19-v0.bin --verbose --num_block 20 --dim 224 --mcts_puct 1.50 --batchsize 16 --mcts_rollout_per_batch 16 --mcts_threads 2 --mcts_rollout_per_thread 100 --resign_thres 0.05 --mcts_virtual_loss 1


「OK」ボタンを押すと、しばらくして警告メッセージが表示されますが、それは今後表示されないようにして閉じてしまいます。
すると今度は、「プログラムが反応していません、待ちますか、それともプログラムを終了しますか」という画面があらわれます。
ここで「待つ」を選択すると、新規プログラムのラベルを編集する画面になるので、「OK」を押して画面を閉じます。
ここまでで、「GoGui」から呼びだす思考エンジンとして、「ELF OpenGo」が登録されています。
あとは「GoGui」から「ELF OpenGo」を起動、プログラムの手番や置石などの条件を決めて新規対局を開始すれば、「ELF OpenGo」との対局を楽しめるようになります。

「GoGui」をランチャーなどから起動した場合でも「ELF OpenGo」を使えるようにしたい場合は、以下の内容を記述したスクリプトを作成してそれを「~/ELF/ELF-OpenGo.sh」として保存、実行権限を付与したうえで「GoGui」の新規プログラム画面で「/home/username/ELF/ELF-OpenGo.sh」コマンドを指定してやればO.K.です。

#!/bin/bash
cd /home/username/ELF/
source scripts/devmode_set_pythonpath.sh
cd /home/username/ELF/scripts/elfgames/go/
./gtp.sh /home/username/ELF/bin/pretrained-go-19x19-v0.bin --verbose --num_block 20 --dim 224 --mcts_puct 1.50 --batchsize 16 --mcts_rollout_per_batch 16 --mcts_threads 2 --mcts_rollout_per_thread 100 --resign_thres 0.05 --mcts_virtual_loss 1


「ELF OpenGo」と対局してみたいとはいっても、ターミナル上でGTPコマンドを打ち込むのはたいへんなので(というかまったくやる気になれないので)、なんとかGUIで打てるようになってよかったです。


参考ウェブページ一覧表(順不同)

https://github.com/pytorch/ELF/issues/27
https://github.com/pytorch/ELF/issues/33
posted by hatakazu at 22:13| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年05月24日

Facebook「ELF OpenGo」を動かしてみる

1. 前提となる環境の整備
「ELF OpenGo」を走らせるためには以下の環境が前提となっているので、それぞれ確認のうえ、不足がある場合はあらかじめインストールしておきます。
ただし、今回はGPUのない古いラップトップで走らせることを目的としているため、CUDA関連環境については無視してすすめます。

Ubuntu 18.04
Python 3.6
GCC 7.3
CUDA 9.0
CUDNN 7.0
NCCL 2.1.2

今後の作業をすすめていくために必要となるパッケージを、事前にインストールします。

$ sudo apt-get install git cmake g++ gcc libboost-all-dev libzmq3-dev


2. 「Anaconda」インストール
「Pytorch」ライブラリなどをインストールするため、「Anaconda」環境を構築します。
「Anaconda」サイト「Download」ボタンを押してダウンロードページへすすみ、「Python 3.6 version」の「64-Bit (x86) Linux Installer」をダウンロードします。
ダウンロードしたディレクトリに移動のうえ、以下のコマンドを実行して、「Anaconda」のインストールを開始します。
インストール手順ページの記述にしたがいますが、なにか問題が発生した場合はFAQページにヒントがあるかもしれません。

$ chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
$ bash ./Anaconda3-5.1.0-Linux-x86_64.sh


ライセンス条項への同意を求められるので、全文を表示してから「yes」と回答すると、インストールがはじまります。
途中で「~/.bashrcにPATHを追加するかどうか」確認を求められるので、そこは確実に「yes」と回答します。
もし「No」ですすめてしまった場合は、あとから「~/.bashrc」をエディタで開き、ファイルの最後に「export PATH="/home/username/anaconda3/bin:$PATH"」という行を追加してやればO.K.です。
インストールが完了したら、いったんターミナルを閉じてあらためて開き(もしくは「$ source ~/.bashrc」コマンドを実行)、「$ anaconda-navigator」コマンドを実行してみます。
「ANACONDA NAVIGATOR」が起動すれば、ちゃんと「Anaconda」がインストールされている、ということです。
「Anaconda」環境で必要なパッケージを追加します。

$ conda install numpy zeromq pyzmq


3. 「Pytorch」インストール
ソースからインストールするには、「Pytorch」GitHubレポジトリにあるインストラクションにしたがって、以下のコマンドを実行していきます。
GPUをもたない古いラップトップで動かすため、環境変数「NO_CUDA=1」をエクスポートしてから、インストールスクリプトを実行します。

$ export NO_CUDA=1
$ export CMAKE_PREFIX_PATH="/home/username/anaconda3/"

$ conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing
$ conda install -c intel mkl-dnn

$ cd
$ git clone --recursive https://github.com/pytorch/pytorch
$ cd pytorch
$ python setup.py install


もしくは、上記ソースからのインストールに代えて、「pythorch nightly build」をインストールすることもできます。

$ conda install -c pytorch pytorch-nightly


4. 「ELF OpenGo」のビルド
ここまでの環境整備が終わったら、「ELF OpenGo」のソースを取得し、ビルド処理にすすみます。

$ cd
$ git clone https://github.com/pytorch/ELF
$ cd ELF
$ git submodule sync && git submodule update --init --recursive
$ make


ビルド処理が完了したら、「$ make test」コマンドを実行して、問題がないことを確認しておきます。

5. 「ELF OpenGo」の実行
「ELF OpenGo」を走らせるためには、あらかじめ「~/ELF」ディレクトリから「source scripts/devmode_set_pythonpath.sh」を実行したうえで、「~/ELF/scripts/elfgames/go」ディレクトリから「gtp.sh」を走らせることになります。
推奨される設定値は以下のとおりで、「mcts_rollout_per_thread」値を変更することで思考時間を調節できます。

./gtp.sh path/to/modelfile.bin --verbose --gpu 0 --num_block 20 --dim 224 --mcts_puct 1.50 --batchsize 16 --mcts_rollout_per_batch 16 --mcts_threads 2 --mcts_rollout_per_thread 8192 --resign_thres 0.05 --mcts_virtual_loss 1


まずは「ELF OpenGo」リリースページから、学習ずみモデル「pretrained-go-19x19-v0.bin」をダウンロードし、それをたとえば「~/ELF/bin/pretrained-go-19x19-v0.bin」などに設置します。
そのあと、以下のようなコマンドを実行していくと、「ELF OpenGo」がGTPコマンドを受けつける画面が開くはずです。
GPUをもたない非力なラップトップで動かすため、GPU指定「--gpu 0」をはずしたうえで、「mcts_rollout_per_thread」値をとてもちいさくしてあります。

$ cd /home/username/ELF/
$ source scripts/devmode_set_pythonpath.sh
$ cd /home/username/ELF/scripts/elfgames/go/
$ ./gtp.sh /home/username/ELF/bin/pretrained-go-19x19-v0.bin --verbose --num_block 20 --dim 224 --mcts_puct 1.50 --batchsize 16 --mcts_rollout_per_batch 16 --mcts_threads 2 --mcts_rollout_per_thread 100 --resign_thres 0.05 --mcts_virtual_loss 1


「genmove b」で黒の着手、「genmove w」で白の着手を「ELF OpenGo」に思考させて、ゲームをすすめていくことができます。
どちらかを自分で担当したい場合は、黒番なら「play b d4」、白番なら「play w q16」のように着点を指定します。
現状では、ターミナル上でGTPコマンドを打ち込むことでしか「ELF OpenGo」を動かせないので、「Sabaki」や「GoGui」などの囲碁GUIから対局ができるように設定する方法を模索していくつもりです。


参考ウェブページ一覧表(順不同)

https://www.digitalocean.com/community/tutorials/how-to-install-the-anaconda-python-distribution-on-ubuntu-16-04
posted by hatakazu at 20:45| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年05月22日

Windows 10上のVirtualBoxにUbuntuをインストールして「AQ」をコンパイルしてみる

1. Windowsホストへの「VirtualBox」のインストール
Oracle VM VirtualBox - Downloads」から「64-bit Windows Installer」をダウンロードし、ダブルクリックしてインストールを開始します。
基本的にはデフォルトの設定のまま「Next」「Yes」でO.K.ですが、ショートカットの作成やスタートメニューへの登録、ファイルの関連づけなどは好みにおうじてチェックをはずしてすすめます。

2. 仮想マシンの作成
インストールが完了したら「VirtualBox」を起動しますが、その時点で最初から日本語で立ちあがるようです。
「Oracle VM VirtualBox マネージャー」メイン画面で、「新規」ボタンを押すと「仮想マシンの作成」ボックスが開き、最初の「名前とオペレーティングシステム」ページでは仮想マシンに名前をつけてインストールするOSを選択します。
今回は「Ubuntu 18.04 LTS Japanese Remix」をインストールしようとしていますが、タイプ欄で「Linux」を選んでもバージョン欄に「Ubuntu (64-bit)」が表示されていない場合、BIOSの設定で「Intel Virtualization Technology」が無効になっているのが原因です。
BIOS画面を開いて、「Advanced」や「CPU」や「Virtualization」の項目に「Intel Virtualization Technology」があるのでそれを有効化、BIOSの変更を保存のうえコンピュータを再起動します。
「VirtualBox」を起動して「新規」ボタンを押すと、今度は「名前とオペレーションシステム」ページで、「Ubuntu (64-bit)」が選択できるようになっているはずです。
仮想マシンの作成は基本的にはすべてデフォルトの設定のまま「次へ」を押下していけばO.K.ですが、「ファイルの場所とサイズ」ページでハードディスクの上限サイズを決める部分は要注意、一度設定したらあとからサイズを増やすことはできないので、目的におうじてあらかじめじゅうぶんな容量を割りあてておく必要があります。

3. ゲストOS「Ubuntu 18.04 LTS Japanese Remix」のインストール
仮想マシンを作成して「Oracle VM VirtualBox マネージャー」メイン画面にもどったら、いま作成した仮想マシンをクリックして選択、「設定」ボタンを押下します。
つづいて「ストレージ」タブで最初から登録されている仮想光学ドライブを選択、「属性 光学ドライブ」欄の右にあるCDのアイコンをクリックして、「仮想光学ディスクファイルを選択」を選びます。
ここで、あらかじめダウンロードしておいた「Ubuntu 18.04 LTS Japanese Remix」のインストールイメージを選択、「OK」ボタンを押して「設定」画面を閉じます。
そのまま該当仮想マシンが選択された状態で「起動」ボタンを押せば、インストールイメージをUSBメモリに書きこんで、そのUSBメモリからブートしたときとおなじように、「Ubuntu 18.04 LTS Japanese Remix」のインストールがはじまります。

4. 「VirtualBox Guest Additions」のインストール
インストールが終了したらインストールメディアを抜いて再起動という手順になりますが、なにせ仮想マシンなのでインストールメディアが自動的に解除された状態で再起動され、Ubuntuのログイン画面があらわれます。
そのままログインして作業できるようになっていますが、画面解像度が低いなど、たいへん使いづらい状態です。
それを改善するために、「VirtualBox Guest Additions」パッケージをインストールします。
仮想マシンを起動した状態で「VirtualBox」メニューバーから「デバイス」→「Guest Additions CDイメージの挿入」を選択します。
「VBox_GAS_5.2.12」などという名前でマウントされたCDがデスクトップに現れ、ソフトウェアの自動起動をうながしてくるので、そのまま「実行する」ボタンをクリックしてインストールします。
自動起動されない場合は、「/media/username/VBox_GAS_5.2.12/VBoxLinuxAdditions.run」を手動で実行してやればO.K.です。
「VirtualBox Guest Additions」パッケージのインストールによって、ホストOS(Windows 10)とゲストOS(Ubuntu 18.04 LTS Japanese Remix)との連携がよりシームレスになり、利便性が格段に向上します。
仮想マシンの設定としては、「一般」→「高度」タブで「クリップボードの共有」「ドラッグ&ドロップ」を有効化、「ネットワーク」→「アダプター1」タブで「ネットワークアダプターを有効化」をチェック、「共有フォルダー」タブでゲストOSから見えるようにしたいホストがわのフォルダを新規追加、くらいをやっておけばそうとう便利にゲストOSを運用できます。
ネットワークについては、特別な使いかたをしなければデフォルトの「NAT」のままでO.K.ですが、割り当てを「ブリッジアダプター」にしてネットワークに接続しているデバイスを選択すればブリッジ接続も可能です。

5. 仮想ディスクの実体
「VirtualBox」はユーザのホームディレクトリ直下に「VirtualBox VMs」フォルダをつくり、仮想ディスクのVDIファイルを仮想マシンごとのフォルダにまとめて、「\VirtualBox VMs\仮想マシン名\仮想ディスク名.vdi」というかたちで格納しています。

6. 仮想マシン上でできたこと、できなかったこと
Ubuntuをインストールしている古いラップトップで「AQ」をコンパイルしようとしたところ、負荷がかかりすぎるのかビルド処理の途中で制御不能となってしまい、「AQ」の実行バイナリファイルを生成することができませんでした。
今回「VirtualBox」上のゲストOS「Ubuntu 18.04 LTS Japanese Remix」にておなじ手順を実行してみたところ、コンパイル処理は問題なく終了、「AQ」の実行ファイルの生成に成功しました。
あとは、これをそのまま古いラップトップにコピーして、動作するかどうか確認してみることにします。
ただし、この仮想「Ubuntu 18.04 LTS Japanese Remix」では、「Leela」のUbuntuパッケージをインストールしてもGUI版が起動しませんでした。


参考ウェブページ一覧表(順不同)

https://www.virtualbox.org/
http://www.oracle.com/technetwork/server-storage/virtualbox/overview/index.html
posted by hatakazu at 20:14| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年05月21日

棋譜分析専用ツール「GoReviewPartner」のインストールと使いかた

SGF棋譜ファイルを分析するためのツールとして、「GoReviewPartner」というものがあります。
SGFファイルを指定したエンジンに分析させて、その結果をRSGFファイルへ出力し、RSGFファイルにふくまれた分析結果を表示するツールです。
棋譜分析に使えるエンジンとして、いまのところ「AQ」「Leela」「Leela Zero」などを指定することができます。
「Leela Zero」エンジンを指定のうえ、「ELF OpenGo」の学習ずみweightsファイルを読みこませれば、「ELF OpenGo」による分析結果を見ることもできます。

「GoReviewPartner」プロジェクトページ
GitHubレポジトリ

1. 「GoReviewPartner」のインストール
まずは、「GoReviewPartner」を動かすのに必要なライブラリを、あらかじめインストールしておきます。

$ sudo apt install python python-tk python-wxgtk3.0


「GoReviewPartner」のインストール方法としては、ソースを配置のうえソースから起動することが推奨されているので、それにしたがってソースをダウンロードします。

$ cd
$ git clone https://github.com/pnprog/goreviewpartner


以上でインストール作業は終了です。

2. 「GoReviewPartner」の起動
「GoReviewPartner」を起動するには、ターミナルを開いて、以下のコマンドを実行します。

$ cd goreviewpartner
$ python main.py


3系のpythonがデフォルトになっている場合は、2.7系のpythonで起動するため、「$ python2 main.py」コマンドを使う必要があるかもしれません。

3. 起動スクリプトの作成
問題なく「GoReviewPartner」が起動できるようになったら、今後のために、かんたんな起動スクリプトを作成しておきます。

#!/bin/bash
cd ~/goreviewpartner
python main.py


上記の内容を記述したファイルを「goreviewpartner.sh」とでも名づけて保存し、「chmod +x goreviewpartner.sh」で実行権限を付与しておきます。
たとえばこのファイルをデスクトップにおいておけば、デスクトップへ移動して「./goreviewpartner.sh」コマンドを実行すれば、「GoReviewPartner」が起動するようになります。

4. 「GoReviewPartner」の設定
くわしい設定方法は「GoReviewPartner Documentation」ページに記述されていますが、ここではかんたんにエンジンを登録する方法だけ紹介します。

4-1. 「AQ」の設定
「GoReviewPartner」を起動したあと、メイン画面から「Settings」→「AQ」とすすみます。
ここで「Command」欄に「AQ」実行ファイルのパスを、「Parameters」欄に「AQ」起動時に読みこませる設定ファイルを指定するオプションを、それぞれ入力します。
「Slow profile」「Fast profile」それぞれに設定ファイルを用意し、「-byoyomi[sec] =15」「-byoyomi[sec] =5」のように、考慮時間に差をつけておきます。

Slow profile parameters
Command: /home/username/AQ/AQ
Parameters: --config=/home/username/AQ/aq_config_slow.txt

Fast profile parameters
Command: /home/username/AQ/AQ
Parameters: --config=/home/username/AQ/aq_config_fast.txt


「Test」ボタンを押してGTP通信を開始し、「genmove black」「genmove white」などのGTPコマンドをためしてみてうまく動作するようなら、忘れずに「Save settings」ボタンを押して設定を保存します。

4-2. 「Leela」の設定
「GoReviewPartner」を起動したあと、メイン画面から「Settings」→「Leela」とすすみます。
ここで「Command」欄に「Leela」実行ファイルのパスを、「Parameters」欄にGTPモードで起動するのに必要となるオプションを、それぞれ入力します。
「Time per move (s)」欄には、「Slow profile」「Fast profile」それぞれに、一手ごとの考慮時間を指定します。

Slow profile parameters
Command: /home/username/Leela-0.11.0/leela_0110_linux_x64
Parameters: --gtp --noponder
Time per move (s): 15

Fast profile parameters
Command: /home/username/Leela-0.11.0/leela_0110_linux_x64
Parameters: --gtp --noponder
Time per move (s): 5


「Test」ボタンを押してGTP通信を開始し、「genmove black」「genmove white」などのGTPコマンドをためしてみてうまく動作するようなら、忘れずに「Save settings」ボタンを押して設定を保存します。

4-3. 「Leela Zero」の設定
「GoReviewPartner」を起動したあと、メイン画面から「Settings」→「Leela Zero」とすすみます。
ここで「Command」欄に「Leela Zero」実行ファイルのパスを、「Parameters」欄にGTPモードで起動するのに必要となるオプションを、それぞれ入力します。
「Time per move (s)」欄には、「Slow profile」「Fast profile」それぞれに、一手ごとの考慮時間を指定します。

Slow profile parameters
Command: /home/username/Leela-zero/src/leelaz
Parameters: --gtp --noponder --weights best-network
Time per move (s): 15

Fast profile parameters
Command: /home/username/Leela-zero/src/leelaz
Parameters: --gtp --noponder --weights best-network
Time per move (s): 5


「--weights best-network」部分で、「ELF OpenGo」の学習ずみweightsファイルを指定すれば、「ELF OpenGo」による棋譜分析結果を利用できるようになります。
「Test」ボタンを押してGTP通信を開始し、「genmove black」「genmove white」などのGTPコマンドをためしてみてうまく動作するようなら、忘れずに「Save settings」ボタンを押して設定を保存します。

5. 「GoReviewPartner」による棋譜分析
思考エンジンの設定が完了したら、いよいよ「GoReviewPartner」を使ってSGFファイルを分析することができるようになります。
「GoReviewPartner」を起動したあと、メイン画面から「Run a SFG file analysis」ボタンを押下し、分析にかけたいSGFファイルを指定します。
複数の思考エンジンを設定してある場合は、「Bot to use for analysis:」欄でじっさいの分析に使用するエンジンを選択することができます。
「Start」ボタンを押下すると、指定したエンジンを起動して棋譜分析がはじまりますが、けっこう時間がかかるのでゆっくりまちます。
棋譜分析が完了したら、分析したSGFファイルとおなじ場所に、おなじ名前で拡張子が「RSGF」になったファイルが生成されます。
「GoReviewPartner」メイン画面から「Open a RSGF file for review」を押下し、生成されたRSGFファイルを選択すれば、思考エンジンによって考察された内容を追跡していくことができるようになります。
左側の碁盤上でじっさいの手順を再現していくと、右側の碁盤上に思考エンジンが検討した候補手が表示され、候補手のどれかにカーソルを重ねることで変化手順を追いかけていくこともできます。
posted by hatakazu at 19:10| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする

2018年05月19日

「AQ」を動かしたくてやってみたこと

GPUをもたない古いラップトップで「AQ」を動かしたくて、いろいろやってみたことを記録しておきます。
結果として手順どおりすすんではいったのですが、このラップトップにとって負荷が大きすぎるのか、ビルド作業の途中でハングしてしまいました。
そのため、たいへん残念ながら、現時点では「AQ」を動かすことには成功していません。

「AQ」GitHubレポジトリ

1. 「Bazel」のインストール
Bazel」サイトにUbuntuへのインストール方法が記述されているので、推奨されているバイナリからのインストール手順にしたがってインストールしていきます。
GitHub上のBazel releasesページからLinux用インストールスクリプト「bazel-0.13.0-installer-linux-x86_64.sh」をダウンロードし、ダウンロードしたディレクトリで以下の作業をおこないます。

$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python
$ chmod +x bazel-0.13.0-installer-linux-x86_64.sh
$ ./bazel-0.13.0-installer-linux-x86_64.sh --user
$ export PATH="$PATH:$HOME/bin"


3行めで「--user」オプションをつけて「~/bin」にインストールしたため、4行めでパスをとおしておく必要がありますが、同時に「~/.bashrc」ファイルに「export PATH="$PATH:$HOME/bin"」を追加しておけば次回以降は自動的にパスがとおります。


2. 「TensorFlow」のインストールと「AQ」のビルド
「AQ」は機械学習フレームワークとして「TensorFlow」を使っているので、「TensorFlow」をインストールします。
「AQ」作者の「CPU Only」環境でのビルド方法についての記述「Bazel」と「TensorFlow」を使ったビルド方法についてのインストラクションを参考に、以下のようにすすめていきました。

$ cd ~
$ git clone --recursive https://github.com/tensorflow/tensorflow
$ cd ~/tensorflow
$ ./configure
$ cd tensorflow
$ git clone https://github.com/ymgaq/AQ
$ cd AQ/src


ここで「search.h」ファイルをテキストエディタで開き、「#define CPU_ONLY」と記述されている行のコメントをはずしてから、ファイルを保存します。

$ bazel build -c opt --config=monolithic :AQ
$ cp ~/tensorflow/bazel-bin/tensorflow/AQ/src/AQ ~/tensorflow/tensorflow/AQ/AQ
$ cp ~/tensorflow/tensorflow/AQ/prob/* ~/tensorflow/tensorflow/AQ/
$ cp ~/tensorflow/tensorflow/AQ ~/


上記手順を完了すれば、「~/AQ/AQ」に「CPU Only」バージョンの実行ファイルが、「~/AQ/aq_config.txt」に起動時に読みこむ設定ファイルが格納されます。
エディタで設定ファイルを開いて、「-gpu count =0」「-thread count =4」「-byoyomi[sec] =5」「-japanese rule =on」「-komi =6.5」あたりの項目を調整のうえ保存、「~/AQ/AQ」を実行すればO.K.です。
TensorFlowをインストールしてはじめてビルドする場合、あらかじめWORKSPACEを作成しておかないと、上記手順どおりにすすめてもエラーが出てビルドできないことがあります。

$ cd ~/tensorflow/tensorflow
$ touch WORKSPACE
posted by hatakazu at 22:15| Comment(0) | 囲碁ソフトのこと | 更新情報をチェックする