使い方/分散探索(usi.pl)
をテンプレートにして作成
[
トップ
] [
一覧
|
単語検索
|
最終更新
]
開始行:
[[使い方]]
(準備中)
#contents
* これは何? [#q48143b4]
USIプロトコルに対応したプログラムを少し改変したクライアン...
参考:
- http://www.graco.c.u-tokyo.ac.jp/~kaneko/papers/IPSJ-GP...
- http://www.graco.c.u-tokyo.ac.jp/~kaneko/papers/gpw2010...
* 準備 [#f5d21cae]
** 推奨環境: (vmware等でも可) [#ie34aa28]
- Ubuntu 10.04 以降
- Debian squeeze 以降
- それ以外の場合
-- perl v5.10.1 以降 (usi.plを動かす機器1台のみ)
--- ソースコードからビルドする場合はthreadを有効にする必...
-- gpsusi をコンパイルできる環境(g++4.3以降推奨、boost 1....
** GPS将棋(gpsusi)の準備 [#t929860d]
+ ツールのインストール
sudo apt-get install g++ libboost-xxx.dev (xxxは可能なパ...
+ ダウンロード
-- http://gps.tanaka.ecc.u-tokyo.ac.jp/cgi-bin/viewvc.cgi...
-- http://gps.tanaka.ecc.u-tokyo.ac.jp/cgi-bin/viewvc.cgi...
-- gzip -d < osl.tar.gz | tar xvf -
-- gzip -d < gpsshogi.tar.gz | tar xvf -
(同じディレクトリ内に兄弟で展開すると便利)
+おまじない
(cd osl; ln -s ../gpsshogi/data)
+コンパイル (逐次版)
n=コアの数
(cd osl/lib/third_party/tcmalloc-0.93; make -j $n)
(cd osl/release; make -j $n)
(cd gpsshogi/bin; make -j $n gpsusi RELEASE=t)
+実行
./gpsshogi/bin/gpsusi --benchmark
* ステップ1: gpsusiを用いた分散探索 [#za5cccbc]
+ cd gpsshogi/sample/perl-cluster
+ config を編集 (config.sample あり)
-- #がコメント
-- 1行目が、定跡や合法手生成等の思考以外の機能のためのコ...
-- 2行目以降に思考を行うslaveの指定 (速さが異なる場合は速...
たとえば、 /path/to/gpsusi を3行ほど書いておくと、2並列で...
+ 起動 ./usi.pl -c config:
usi.pl が(一部の機能のみに対応した)USIエンジンとしてふる...
usi
isready
position startpos
go infinite
stop
quit
等
+ debug
-- log 以下に、各slaveとのやりとりの記録がファイルに残さ...
-- サーバのログはstderr に出ますが、一部は log/job_queue....
-- io-0.txt が雑要用のスレーブの入出力。io-1.txt 移行が探...
* ステップ2: 探索部分を自作プログラムに置き換える [#g97b4...
configの1行目をgpsusiにしたまま2行目以降を自作プログラム...
対応が必要な入力:
- position USI通り
- stop がいつ来ても複数来ても対応する (bestmoveとgoの回数...
- echo 文字列:
に対して、渡された文字列を標準出力に出力する (keep alive...
探索中でも応える必要がある。応答が2.5秒遅れると通信が切れ...
他のinfo pv等の出力と途中で混ざらない用な仕組み(例えばロ...
- ignore_moves 文字列:
文字列で渡された指手を無視して探索する。ignore_moves 7g7f...
position の指定の後に最大一回与えられる。
新たなpositionを与えられたり一度goが行わればその後は無効。
- go byoyomi msec:
msecミリ秒だけ探索して、bestmoveを返す。bestmoveを返す前...
- go infinite:
stopが来るまで探索する。
- go mate msec:
msecミリ秒だけ詰みを探索し、checkmate を返す (現在のusi.p...
対応しない場合は常に checkmate nomateを返せばよい。
期待される出力:
- info
-- bestmoveが更新されたらpvを評価値等とともに出力する
info depth 6 score cp 903 nodes 59044 pv 4b4c
-- 1秒に1回程度ノード数等を出力する
info time 827324090 nodes 411790 nps 406907
- bestmove move
-- moveは最善手。何を指しても詰みの時と、合法手がない時は...
* ステップ3: すべてを自作プログラムに置き換える [#d1acc824]
configの1行目を置き換えると、gpsusiを完全に排除した分散探...
- go book (オプションで現在の手数)
定跡があれば、その手をbestmove コマンドで返す。なければbe...
- go declarewin
%KACHIを指すべき状況であれば、bestmove winを返す。そうで...
- genmove_probability
指し手を実現確率とともに生成する。現在は確率としては使わ...
> genmove_probability
< genmove_probability 3b4b 100 4c4d 186 3b2b 186
等、指し手と数値(小さいほど良い手)を空白で区切って一行で...
合法手がない場合や1手のみの局面は特別な処理がなされるので...
具体的な使われ方は、splitすべき有力な指し手を1秒の探索で...
-- 親の探索での最善応手手順で対応するものに一つのslave
-- 確率順に上位n-2個のslave
-- 「その他」に1つのslave
と割り当てる。
* 使い方 [#ud59ec48]
** 問題を解く [#h434069a]
./usi.pl -f problems/001.usi
** shogi-server でyowai_gpsと対戦 [#e3f0906e]
./csa2usi.pl --csa_host wdoor.c.u-tokyo.ac.jp --usi_engin...
- 歩の値を1000にした場合は--pawn_value=1000等
- 読み筋をサーバに送らない --nosend_pv
* その他 [#e9dbc37c]
- ssh接続でkeepalive例
cat .ssh/config
Host *
ServerAliveInterval 15
(後日記述追加予定)
終了行:
[[使い方]]
(準備中)
#contents
* これは何? [#q48143b4]
USIプロトコルに対応したプログラムを少し改変したクライアン...
参考:
- http://www.graco.c.u-tokyo.ac.jp/~kaneko/papers/IPSJ-GP...
- http://www.graco.c.u-tokyo.ac.jp/~kaneko/papers/gpw2010...
* 準備 [#f5d21cae]
** 推奨環境: (vmware等でも可) [#ie34aa28]
- Ubuntu 10.04 以降
- Debian squeeze 以降
- それ以外の場合
-- perl v5.10.1 以降 (usi.plを動かす機器1台のみ)
--- ソースコードからビルドする場合はthreadを有効にする必...
-- gpsusi をコンパイルできる環境(g++4.3以降推奨、boost 1....
** GPS将棋(gpsusi)の準備 [#t929860d]
+ ツールのインストール
sudo apt-get install g++ libboost-xxx.dev (xxxは可能なパ...
+ ダウンロード
-- http://gps.tanaka.ecc.u-tokyo.ac.jp/cgi-bin/viewvc.cgi...
-- http://gps.tanaka.ecc.u-tokyo.ac.jp/cgi-bin/viewvc.cgi...
-- gzip -d < osl.tar.gz | tar xvf -
-- gzip -d < gpsshogi.tar.gz | tar xvf -
(同じディレクトリ内に兄弟で展開すると便利)
+おまじない
(cd osl; ln -s ../gpsshogi/data)
+コンパイル (逐次版)
n=コアの数
(cd osl/lib/third_party/tcmalloc-0.93; make -j $n)
(cd osl/release; make -j $n)
(cd gpsshogi/bin; make -j $n gpsusi RELEASE=t)
+実行
./gpsshogi/bin/gpsusi --benchmark
* ステップ1: gpsusiを用いた分散探索 [#za5cccbc]
+ cd gpsshogi/sample/perl-cluster
+ config を編集 (config.sample あり)
-- #がコメント
-- 1行目が、定跡や合法手生成等の思考以外の機能のためのコ...
-- 2行目以降に思考を行うslaveの指定 (速さが異なる場合は速...
たとえば、 /path/to/gpsusi を3行ほど書いておくと、2並列で...
+ 起動 ./usi.pl -c config:
usi.pl が(一部の機能のみに対応した)USIエンジンとしてふる...
usi
isready
position startpos
go infinite
stop
quit
等
+ debug
-- log 以下に、各slaveとのやりとりの記録がファイルに残さ...
-- サーバのログはstderr に出ますが、一部は log/job_queue....
-- io-0.txt が雑要用のスレーブの入出力。io-1.txt 移行が探...
* ステップ2: 探索部分を自作プログラムに置き換える [#g97b4...
configの1行目をgpsusiにしたまま2行目以降を自作プログラム...
対応が必要な入力:
- position USI通り
- stop がいつ来ても複数来ても対応する (bestmoveとgoの回数...
- echo 文字列:
に対して、渡された文字列を標準出力に出力する (keep alive...
探索中でも応える必要がある。応答が2.5秒遅れると通信が切れ...
他のinfo pv等の出力と途中で混ざらない用な仕組み(例えばロ...
- ignore_moves 文字列:
文字列で渡された指手を無視して探索する。ignore_moves 7g7f...
position の指定の後に最大一回与えられる。
新たなpositionを与えられたり一度goが行わればその後は無効。
- go byoyomi msec:
msecミリ秒だけ探索して、bestmoveを返す。bestmoveを返す前...
- go infinite:
stopが来るまで探索する。
- go mate msec:
msecミリ秒だけ詰みを探索し、checkmate を返す (現在のusi.p...
対応しない場合は常に checkmate nomateを返せばよい。
期待される出力:
- info
-- bestmoveが更新されたらpvを評価値等とともに出力する
info depth 6 score cp 903 nodes 59044 pv 4b4c
-- 1秒に1回程度ノード数等を出力する
info time 827324090 nodes 411790 nps 406907
- bestmove move
-- moveは最善手。何を指しても詰みの時と、合法手がない時は...
* ステップ3: すべてを自作プログラムに置き換える [#d1acc824]
configの1行目を置き換えると、gpsusiを完全に排除した分散探...
- go book (オプションで現在の手数)
定跡があれば、その手をbestmove コマンドで返す。なければbe...
- go declarewin
%KACHIを指すべき状況であれば、bestmove winを返す。そうで...
- genmove_probability
指し手を実現確率とともに生成する。現在は確率としては使わ...
> genmove_probability
< genmove_probability 3b4b 100 4c4d 186 3b2b 186
等、指し手と数値(小さいほど良い手)を空白で区切って一行で...
合法手がない場合や1手のみの局面は特別な処理がなされるので...
具体的な使われ方は、splitすべき有力な指し手を1秒の探索で...
-- 親の探索での最善応手手順で対応するものに一つのslave
-- 確率順に上位n-2個のslave
-- 「その他」に1つのslave
と割り当てる。
* 使い方 [#ud59ec48]
** 問題を解く [#h434069a]
./usi.pl -f problems/001.usi
** shogi-server でyowai_gpsと対戦 [#e3f0906e]
./csa2usi.pl --csa_host wdoor.c.u-tokyo.ac.jp --usi_engin...
- 歩の値を1000にした場合は--pawn_value=1000等
- 読み筋をサーバに送らない --nosend_pv
* その他 [#e9dbc37c]
- ssh接続でkeepalive例
cat .ssh/config
Host *
ServerAliveInterval 15
(後日記述追加予定)
ページ名: