AWSで爆速な棋譜解析環境ができた

毎秒1700万解析は伊達じゃない

一分で十億ノード解析できるモンスター

驚愕の17305kN/sec!!!!!

自分の家のパソコンで4000kN/secくらいでていてまあまあだなあと思っていたら上には上がいました。

世の中、計算資源がいちばん大事なんです。

どんなに上手い探索部や評価関数をつくっても、同じものを使えば結局はマシンパワーがある方が勝つんです、これは世の中の摂理です。

というわけで、今回はAWSを使って家庭向けの高性能PCの4倍の速度で解析できる環境を整えるためのチュートリアルを解説したいと思います。

執筆にあたり以下の記事を参考にさせていただきました。

実際の設定方法はこの記事の方が多分楽だと思うんですが、AWSアカウント開設はだいぶ端折ってしまったのでみくにまる氏の記事のほうがわかりやすいです。

設定ファイル

セットアップに使うためのファイルです。

これがないと話が始まらないのでまずはダウンロードしてください。

https://tkgstrator.work/?wpdmpro=shogiawsillqha

GPL3ライセンスだったのでillqhaのLinux向けビルドを公開しておきます。

GPL3ライセンスの解釈が間違っていたらご連絡ください、すぐに当該ファイルを削除します。

改変はしていないのでソースコードはコンピュータ将棋データベースで公開されているものを参照ください。

以下でめきっと氏が公開されているillqha4は何故か自分の環境ではビルドエラーがでてしまいました…

AWSアカウント開設

まずはAWSアカウント作成から始めます。

既にアマゾンのアカウントを持っている方も多いと思いますが、AWSアカウントはまたそれとは別なので新規に作成が必要です。

仮想マシンを起動する

無事にアカウント開設ができたら、ログインして「仮想マシンを起動する」を選択します。

「お金がかかるんじゃないの」と思うかもしれませんが、最小構成マシンであれば一ヶ月に750時間まで無料で使えます。

一ヶ月が31日ある月でも744時間しかないので、要するにこれは使いたい放題ということです、多分。

最初にAMI(Amazon Machine Image)を選択する画面が表示されますが、特にこだわりがなければUbuntu Server 18.04 LTSを選択しましょう。

その次のインスタンスはレンタルサーバのスペックを指定できます。

無料で使えるのはt2.microなのでこれを選択します。

選択したら確認と作成をクリックしましょう。

AWSはパスワード認証を許可していないので公開鍵認証しか使えません。

そのためにキーペアを登録する必要があるのですが、持っていない場合は生成すれば問題ありません。

キーペア名は適当に「rsa」とでもしておけばよいでしょう。

名前をつけたら「キーペアのダウンロード」をクリックしてrsa.pemをダウンロードします。

ダウンロードしたrsa.pemはdolphinフォルダ内に保存しておきましょう。

rsa.pemを保存した

rsa.pemは秘密鍵なのでインターネット上にアップロードしたり、どこかにコピーすることは絶対に避けましょう。

紛失した場合はすぐにAWSから鍵を削除しましょう。

さて、ここでブラウザに戻ってインスタンスの作成を進めます。

あと数クリックでインスタンスが作成できるはずなのでぼちぼちやります。

インスタンスが作成できた

ステータスチェックが合格になり、インスタンスの状態がrunning(起動中)になれば成功です。

セキュリティグループの変更

よくある「インスタンスにSSH接続できない」という問題は、ほとんどがこのセキュリティグループの設定ミスなので確認しておきましょう。

インスタンスを選択した状態でアクションから「セキュリティグループの変更」をクリックします。

「launch-wizard-1」になっていればSSH接続できる環境が整っています。

DNSの確認

インスタンスを選択すると、インスタンスの下部にパブリック DNSというものが表示されていると思うので、その値をコピーします。

コピーしたらawsフォルダ内にあるpublicDNS.txtにコピーした内容を書き込みます。

改行コードや余計なものを書き込まないように注意してください。

エンジンのセットアップ

ここから先はインスタンスをいじったりしないのでブラウザは閉じてしまって構いません。

今のままでは仮想サーバは空っぽの状態なので探索プログラムと評価関数をコピーしましょう。

探索部はGPL3ライセンスで再頒布が認められている(はず)ので、評価関数の方をどこからか入手します。

幸い、R4300超えのものすごく強い評価関数が無償で公開されているのでそれを利用することにします。

おすすめはorqha2018なのでそれをダウンロードしてきます。

解凍すると中にnn.binというファイルがあるはずなので、それをsetup内のevalフォルダにコピーしてしまいましょう。

nn.binのコピー

あとはこれらのファイルを仮想サーバにコピーするだけなのですが、コピーするためだけのバッチファイルを同梱してあるのでそれを実行するだけで環境が整います。

setupフォルダ内のsetup.batをダブルクリックします。

初回起動時

一回目に起動するとこのような画面が表示されると思うので「yes」と入力してエンターを押します。

その後、もう一度setup.batを起動すると以下のような画面が表示されるはずです。

こうなれば探索部と評価関数が正しくサーバにコピーされました。

コピーできたら、dolphinフォルダをドキュメントに移動しましょう。

dolphinのコピー

このとき、dolphinフォルダ内には、

  1. aws.bat
  2. publicDNS.txt
  3. ReadMe.txt
  4. rsa.pem

の四つのファイルがあることを確認してください。

ShogiGUIの設定

まだ導入していない方は下記リンクから導入しよう。

ZIP版でもインストーラ版でも好みに合わせてどうぞ。

エンジンの追加はドキュメントに移動させたdolphinフォルダ内のaws.batを指定します。

デフォルトの状態だと右下が実行ファイル(*.exe)になっていてバッチファイルが指定できないのですべてのファイルに変更するのを忘れないようにしましょう。

t2.microインスタンスは1CPUでメモリが1024MBしかないのでHashやUSI_Hashに1024以上を指定するとメモリを確保できずいつまで経ってもエンジンが起動しません。

512だと動作することを確認したので、そのくらいの値にするようにしましょう。

実行速度

実際に検討させてみればわかるのですが、リソースが貧弱ということもあって全然速くないです。

432kN/secの貧弱マシン

まあ無料で400kN/secの計算資源が手元のPCを重くすることなく実行できるのであれば、ノートパソコン程度だと十分なのかもしれません。

コンピュータと簡易検討しながら対局したいときなどはソフトを実行することでパソコンが重くなってしまうと対局もイライラしてしまいますし。

もっと速いインスタンスを使う

リソースを増やせばいくらでも速くできるはずなので試してみることにしました。

手軽に使えるのはc5d.9xlargeで、それ以上になるとインスタンスの空きがないのでインスタンスが起動しません。

これより上のものを使おうとすると個人アカウントでは無理なようです、残念。

一応、使えるものを全部使ってNPSを計測しておいたので参考記録として載せておきます。

インスタンスはc3.4xlargeなどのように二番目の文字が5じゃないものを選択すると旧型のCPUを使っているためにAVX2版のillqhaが動作しませんのでご注意を。

4だとギリギリ動くかもしれないけれど未検証なのでよくわかりません。

インスタンスNPSコスト
t2.micro400kFree
c5d.2xlarge3800k$0.1363
c5d.4xlarge7700k$0.2661
c5d.9xlarge17000k$0.5988
c5d.18xlarge$1.1976

t2.micro以外はインスタンスを動かしっぱなしにするといくらでも料金がかかってくるので解析が終わったら必ずインスタンスを削除してください。

コストは一時間あたりの値段なので、例えば持ち時間が九時間の名人戦でも2000円弱払えば毎秒1700万ノードという超高スペックなPCで検討し続けることができることになります。

これ以上のノードを叩き出すためにはCorei9 7960Xという定価が18万円もするCPUを使わなければいけません。

18万円分のインスタンスを使おうとすると2725時間(約113日)も動かしっぱなしにしなければいけないので、電気代やその他のパーツ購入にかかる手間を考えるとおとなしくAWSを使う方がお手軽に済みそうですね。

まとめ

一ヶ月つけっぱなしにすると毎月五万円もかかってしまって流石にパソコンを一台買ったほうがいいですが、ちょっとの棋譜解析をするくらいであればAWSも十分選択肢になるくらい手軽にリーズナブルな値段で環境をつくることができました。

書いてから気づいたんですが、こういう便利そうなのもあるよ!