ボン多の使い方

  1. あらまし
  2. インストール・起動方法
  3. 単一処理の使用方法
  4. 分散処理ローカルの使用方法
  5. 分散処理リモートの使用方法
  6. サーバー「ボン脳」の使用方法
  7. ボン多の対局画面
  8. 対局サーバーに接続
  9. ログファイル
  10. 分散処理について
  11. ボン脳について

1. あらまし

「ボン多」は将棋思考プログラム Bonanza を複数台のPCで分散処理するプログラムです。
BonanzaのMPV(マルチPV)機能を利用して、短時間の「仮読み」で複数の候補手を生成し、 それぞれの候補手で進めた局面を、別途起動しているBonanza計算サーバー「ボン脳」に送信し、 残りの全時間を使ってその局面のより正確な評価値を計算させます(「本読み」)。
その評価値を受信し、最もよい評価値であった候補手を最終的な指し手とします。
候補手は計算サーバーの数だけ生成します。 計算サーバーの数が足りないときは、1台で複数のプロセスを起動することも可能です。
各プロセスはサーバーに実装されているコアの数に従ってマルチスレッドで実行することができます。
ボン多とボン脳の通信にはTCP/IPを用います。


図1 ボン多の構成図

2. インストール・起動方法

  1. ダウンロードしたファイルを解凍してできる2個のファイル(bonta.exe, bonno.exe) をBonanza(bonanza.exe)(注1)がインストールされているフォルダにコピーして下さい。
  2. bonta.exeをダブルクリックしてボン多を起動して下さい。(注2)
  3. 対局を開始するには、[対局]→[開始]メニューをクリックして下さい。
(注1)コンパイルオプション"/DMPV"をつけてコンパイルしたbonanza.exeが必要です。
(注2)bonta.exeおよびbonno.exeはプログラム内部で複数のプロセスを起動するために、 アンチウィルスソフトにウィルスと判定されることがあります (例えばMicrosoft Security Essentialsなど)。 その場合は、ダウンロードしたファイルをウィルスチェックした後、例外に設定して下さい。

3. 単一処理の使用方法

対局開始ウィンドウは設定項目が多いので、 以下のように簡単なケースから順に動作確認することをお勧めします。
なお、先手と後手の設定は独立です。
また、[対局サーバーに接続する]は指定があるまでOFFのままにして下さい。

分散処理を用いずに、一つのプロセスのみを起動する方法をここでは「単一処理」と呼びます。 これは通常の将棋ソフトと同じ使いかたです。
単一処理を行うには、[分散処理]をOFFにします。 そして、以下の項目を設定して下さい。

先手と後手の設定を単一処理にして[開始]をクリックして対局が始まれば、 Bonanzaは正しくインストールされています。


図2 単一処理の設定方法

4. 分散処理ローカルの使用方法

分散処理ローカルとは、1台のPCで複数のBonanzaを起動して、 複数の候補手の評価値を求める方法を意味します。
[分散処理]をONにして下さい。
分散処理のときは、予測読みは無効になります。
かわりに[仮読み]の時間を設定して下さい。 仮読みの時間は予想される全思考時間の数分の1から10分の1が適当と思われます。
(仮読みの時間が長すぎると精度よい候補手が生成されますが本読みの時間がなくなります。 仮読みの時間が短すぎると本読みに十分な時間が与えられますが候補手の精度が落ちます。)
[種別]を[ローカル]に選択して下さい。最大6個まで選択できます。 ここで選択した数が、仮読みの生成する候補手の数になります。
右のスレッド数は本読みで用いるスレッド数です。 1台ではコアの数が少ないので通常1スレッドになります。
[MPV幅]とは、仮読みで最善手からこれ以上評価値が低い指し手を生成しない閾値です。 最適値は不明ですが400を既定値としています。 有力手が少ないときは候補手の数が指定した数より少ない場合があります。 特に候補手が1個のときは「この一手」を意味しますので、 このときはボン多では本読みを行わないように設定しています。
なお、分散処理のときは、最低でも、仮読みで1秒(=2秒弱)、本読みで1秒(=2秒弱)、 合計3秒(=4秒弱)使用します。

図3はPCが4コアのときで、[ローカル]を4つONにして、 それぞれを1スレッドとします。このとき4個の候補手が生成されます。
なお、分散処理ローカルは分散処理の強さを評価することに用いることができます。


図3 分散処理ローカルの設定方法

5. 分散処理リモートの使用方法

分散処理リモートとは、複数台のPCでそれぞれ一つまたは複数のBonanzaを起動して、 複数の候補手の評価値を求める方法を意味します。 これが本来のボン多の使い方です。
このときは計算サーバー「ボン脳」が必要です。ボン脳については後で説明します。
[種別]を[リモート]に選択して下さい。
その右にそれぞれのサーバーのホスト名またはIPアドレスを入力して下さい。
ホスト名はWindowsの[ネットワーク]で表示される名前です。 または、コマンドプロンプトで"hostname"と入力すると表示されます(大文字・小文字を区別しません)。
IPアドレスはボン脳に表示されています。ただし、IPアドレスは変わることがありますので、 ホスト名の方が便利です。
[ポート番号]にはボン脳と同じ値(既定値は40810)を代入して下さい。
なお、先手と後手が同じサーバーを利用することはできません (ポート番号が重複するため)。

仮読みはボン多を起動しているPCで行われます。仮読みの結果も重要ですので、 仮読みの下の[スレッド数]にそのPCのコア数を入力し、すべてのリソースを利用して下さい。
また、ボン多はサーバーマシンの一つを共用してそのマシンで起動しても構いません。 仮読みと本読みは時間的に重複しませんので、それぞれに全リソースを投入して構いません。

先手か後手のどちらかを分散処理リモートにし、他方を単一処理にして対局が行われれば、 分散処理の設定は正しく行われています。

ホスト名に自分自身を入力すると、 自分自身と通信しながら"リモート"利用することができます。 ただし、ボン脳の起動は必要です。 また先手か後手のどちらか一方だけリモートが使用可能です(ポート番号が重複するため)。
これは1台のPCで分散処理リモートの動作テストを行うことに使用できます。

図4aは4コアのサーバーを6台用い(候補手6個)、合計24コア(24スレッド)を利用する場合です。

図4a 分散処理リモートの設定方法(1)

図4bは4コアのサーバーを2台用い、それぞれ2個のBonanzaプロセスを起動する場合です(候補手4個)。 それぞれのサーバーで起動するボン脳は1個です。

図4b 分散処理リモートの設定方法(2)

6. サーバー「ボン脳」の使用方法

前節の分散処理リモートを使用するには、各サーバーマシンで予めサーバー「ボン脳」を起動しておくことが必要です。
そのためには、サーバーマシンの適当なフォルダに bonno.exe, bonanza.exe, book.bin, fv.bin の4個のファイルをコピーして下さい(bonta.exeは不要です)。
ボン脳を起動するには、bonno.exeをダブルクリックして下さい。 図5のウィンドウが現われます。
[このPCのIPアドレス]が自動的に表示されます。
[第1ポート番号]は既定値が40810です。 ボン多で指定されるサーバー(6個以下)ごとに異なるポート番号(40810...40815)が使用されます。
(図5のように一つのサーバーで複数のBonanzaを起動することがあるため)
ボン多のサーバー番号1...6とBonanza1...6およびステータスバーの1...6は対応しています。
Bonanza1...Bonanza6のタブにそれぞれのサーバーがBonanzaと送受信したデータが表示されます。 最初の数字は現在の手数、次の>,<はそれぞれBonanzaに送信したデータ、 Bonanzaから受信したデータを表します。それ以降の文字列がデータです。
これらを確認する必要がないときは、[ログ出力]をOFFにして下さい。
ステータスバーの意味は以下の通りです。



図5 サーバー「ボン脳」(実行中)

7. ボン多の対局画面

以上の設定を行った後、対局を開始すると図6のように対局が行われます。


図6 ボン多の対局画面

このうち、右上の枠内がボン多特有のものです(図7)。
仮読みの評価値がよい順に上から並び、 左から順に、候補手、仮読みの評価値、本読みの評価値が表示されます。 本読みの最もよい評価値に"*"印がつき、この候補手が最終的な指し手となります。
従って、2行目以下に"*"がついているときは、仮読みと本読みの結果が異なったことを意味します。


図7 候補手の評価値

図7で表示された結果は、[ツール]→[候補手リスト]をクリックすると、 候補手リストウィンドウに表示されます。
ここで、最初の数字は手数、()内の左は仮読み、右は本読みの評価値です。
"*"は本読みの評価値が最もよい候補手です。通常、第1候補手が最も多く、 右に行くほど少なくなります。


図8 候補手リストウィンドウ

8. 対局サーバーに接続

外部の対局サーバー(floodgateなど)に接続して対局(通常の意味のネットワーク対局)するには、 対局開始ウィンドウで、[対局サーバーに接続する]をONにし、先手の設定を行い、 [後手の設定を先手と同じにする]をクリックし(先後は対局サーバーが決めるため)、 [対局サーバー]の[アドレス]、[ユーザー名]、[パスワード]を正しく入力してから[開始]をクリックして下さい。
対局が開始するまでそのまま待って下さい(待機中は左下の色が紫になります)。
なお、ネットワーク対局を行うには、こちらの設定は単一処理と分散処理のどちらでも可能です。
また、ネットワーク対局中に異常終了したときはプロセスが残っていることがあります。 タスクマネージャに bonta.exe, bonno.exe, bonanza.exe があれば終了して下さい。


図9 対局サーバーに接続するときの設定

9. ログファイル

[ツール]メニューの各ログファイルの意味は以下の通りです。

10. 分散処理について

分散処理については、以下の点が検討課題です。

  1. 候補手の数はいくら必要か(4〜6?)、PC台数が少ないときは、 候補手を減らすのとスレッド数を減らすのとどちらが有効か。
  2. 仮読みと本読みの時間の配分比はいくらが最適か。
  3. 分散処理と単一処理の並列探索との効率の比較。

11. ボン脳について

ボン脳の仕様は以下の通りです。

  1. クライアントから"start\n"が送られてくるとBonanzaを起動する(ボン脳の独自仕様)
  2. クライアントから送られて来た文字列はBonanzaにそのまま送る (正確には最後が思考命令"move\n"で終わる長いバイト列(改行は\n)を行に分割して送る)
  3. Bonanzaから送られて来た文字列はクライアントにそのまま送る (正確には複数行を改行\nで結合した長いバイト列を送る)
  4. クライアントから"quit\n"が送られてくるとBonanzaに"quit\n"を送ってBonanzaを終了させる(Bonanzaの仕様)
特殊な使い方として、1台のPCに二つの「ボン多・ポン脳」ペアを起動させてネットワーク対局するときは、 ポート番号が重複しますので、一方のボン脳を起動する前に設定ファイルbonno.iniの "Port="行を適当に編集して下さい(例えば40820)。

トップページへ