TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

USIエンジンをAWSのWindowsインスタンスで実行する

以前にAWSWindowsサーバで、GPUを増やしても探索速度を上げられなかったということを書きましたが、後からバグがあって1個のGPUしか使っていなかったがわかりました。
バグを修正したバージョンで、p3.8xlargeで4GPUを使うと自宅のGPU2枚のPCより少し探索速度を上げることができました。
p3.16xlargeだと、なぜか探索速度が落ちてしまいました。
ということで世界コンピュータ選手権はp3.8xlargeを使うことにします。

探索速度の比較
ハードスペック スレッド数 シミュレーション/秒
Corei9 10コア+GPU2枚(TitanV+1080Ti) 255+255 10779
Xeon 32コア+GPU4枚(Tesla V100) 168+168+144+96 12224

スペックは2倍以上ですが、探索速度の向上は13%です。
スレッド数は探索速度が最大になるように調整した結果です。

AWSでUSIエンジンを実行する方法

dlshogiはLinuxでも実行できるようにしていますが、探索速度はWindowsの方が高いので、AWSのOSはWindowsにする予定です。

USIエンジンをAWSで実行するには、SSHでリモートで実行して標準入出力でやり取りすれば可能です。
将棋所は、実行ファイルに引数を渡すことができませんが、バッチファイルにSSHコマンド記述して、バッチファイルを登録すれば問題ありません。

WindowsのAMIは、デフォルトではSSHで接続できないため、自分でSSHサーバを構築する必要があります。
WidnowsでのSSHサーバの構築方法は、別の記事にしました。
AWSのWindows AMIにsshで接続する - TadaoYamaokaの開発日記

上記の記事を参考に、AWSWindowsサーバにSSHサーバを構築して、公開鍵で認証する設定を行います。
将棋所を実行するクライアントからsshコマンドで接続できることが確認できたら、以下のようなバッチファイルを作成します。

@echo off
C:\OpenSSH-Win64\ssh xxxx@xxxx.us-west-2.compute.amazonaws.com C:\Users\xxxx\Documents\dlshogi\usi

※ユーザ名とホスト名とUSIエンジンのパスは書き換えてください。

これを将棋所に登録します。
将棋所のエンジン選択は、デフォルトで拡張子が「.exe」のファイルしか表示されませんが、ファイル名に「*」を入力してEnterキーを押せば、バッチファイルも表示されるので、登録できます。

これで、ローカルで動くUSIエンジンと同様にエンジン設定と実行が可能です。
当然ですが、エンジン設定に設定するファイルパスはサーバ上でのパスです。

以上です。

アンサンブル対応

使えるGPU枚数が増えたので、GPUごとに異なるモデルをロードできるようにしました。
アンサンブルにより精度が向上することを狙っていますが、まだ十分に検証できていません。
試しに自己対局した強化学習のモデルを1GPUに割り当ててみましたが、弱くなりました。
今回は自己対局した強化学習のモデルは使用しないで、教師ありで学習した3種類のモデルを使用する予定です。