機械学習周りのプログラミング中心。 イベント情報
ポケモンバトルAI本電子書籍通販中

世界コンピュータ将棋選手権でのAWSクラウド利用法(WCSC28)

世界コンピュータ将棋選手権では、コンピュータのハードウェアに関する制限がなく、開発者が用意したコンピュータを利用して対局を行います。 最近ではAmazon Web Services (AWS)をはじめとしたクラウドを利用することが多くなっています。買えば数百万円する高性能マシンを1時間当たり100円程度で借りることができるため、大会のように短期間だけ強力な計算リソースが必要な時に役立ちます。

クラウドの使い方はネット上に多数記事があるので適宜検索してもらうとして、選手権でクラウドを使うための追加情報を書きたいと思います。 ここから先はクラウドのうちAWSのEC2に絞って解説します。

AWSへのユーザ登録、EC2でインスタンス起動ができるところまではすでに済んでいるものと想定します。

  • リモート参加申請
  • SSHでの指し手送受信設定
  • 会場端末の準備

全体の接続図は次のようになります。 f:id:select766:20180509202848p:plain

リモート参加申請

選手権でクラウドを用いるためには、原則として参加登録時に「リモート参加」を申請しておく必要があります。

選手権では、本来会場内に設置したコンピュータで将棋の思考を行うのが標準です。 リモート参加の申請とは、簡単に言えば、対局中に会場内のコンピュータからインターネットに接続する権利を得るということです。 会場に行かずにネットで完結するということはできない ので注意してください。リモート参加の場合でも、会場に設置するコンピュータ(以下、端末と呼ぶ)が必要になります。

この申請をしておくことで、有線インターネット接続が可能となります。

SSHでの指し手送受信設定

この項目はやねうら王など、USIプロトコル対応のエンジンをクラウド上で動かし、対局サーバとの通信(CSAプロトコル)には会場に設置した端末上で将棋所を利用する場合の設定です。

USIプロトコルSSH経由で通信が可能なので、これを用いるのが便利です。SSH自体は極めて一般的なのでググってください。

クラウドのOSがLinuxなら、デフォルトでsshサーバがつかえると思います。 私はWindowsサーバを使いましたが、Win32 OpenSSHを活用しました。 必要に応じてOSのファイアウォールAWSのSecurity Group(ポート22を解放)を設定してクライアントからsshサーバに接続できるようにします。

端末側はsshクライアントを入れておきます。Linuxなら標準で入っているでしょうし、WindowsならGit for Windowsでインストールされるツールが使えます。 Git for Windowsをインストールすると、C:\Program Files\Git\usr\bin\ssh.exesshクライアントプログラムとして使えます。

また、公開鍵認証などの設定をして、パスワードなしで対象端末にログインできるように設定してください。USIコマンド以外の入力が必要だと、将棋所から使えません。

sshの設定とクラウド上でのUSIエンジンの設定ができたら、将棋所から使えるように設定します。

Windows端末の場合、以下のようなバッチファイルを作成します。

yaneuraou.bat

"C:\Program Files\Git\usr\bin\ssh.exe" Administrator@123.45.67.89 "C:\Users\Administrator\Documents\yaneuraou\YaneuraOu-user.exe"

123.45.67.89は、クラウド上マシンのIPアドレスです。立ち上げなおすと毎回変わると思いますので、その都度書き換えが必要です。 "C:\Users\Administrator\Documents\yaneuraou\YaneuraOu-user.exe"の部分はUSIエンジンの(クラウド上の)パスです。クラウドのOSがLinuxなら、/home/ec2-user/yaneuraouのような指定になると思います。

このバッチファイルをダブルクリックして、usiとタイプしてEnterを入力しましょう。optionなどの行が出力され、最後にusiokが出力されればOKです。

初回接続の際はThe authenticity of host...というメッセージが出て、yesと入力する必要があるかもしれません。この状態だと将棋所から使えないので注意してください。一度済ませれば2回目以降は出ないはずですが、クラウドIPアドレスが変わると再度聞かれます。

将棋所のエンジン管理画面から、このバッチファイルをエンジンとして追加します。拡張子exeのファイルしか一覧に出ませんが、ファイル名のところにyaneuraou.batと手入力すれば通ります。これでエンジン登録に成功すれば、クラウド上で動くUSIエンジンを手元の端末から使えるようになりました。

エンジン固有の設定をしたのちLesserkai等と対局させて、動作確認をしましょう。

会場端末の準備

冒頭の図で示した通り、会場で通信の仲介をするための端末が必要です。計算能力はほとんど必要ないので、軽いノートPCが便利でしょう。この中に、将棋所、SSHクライアントをインストールしておきます。

必要なもの

  • ノートPC(有線LANのポート2つ)
  • LANケーブル2本(長さ3m以上)

無線LANは使えず、有線LAN(イーサネット)のポートが 2つ 必要となります。1つは会場内の対局サーバとの接続、もう1つはインターネットへの接続に使います。1つのポートで兼用することは原則できません。2つLANポートがついているノートPCはほとんどないでしょうから、USB等で増設する必要があります。

私はLANポートなし、USB1つのタブレットPCを使ったので、2つLANポートを増設しました。USBハブ付きLANアダプタ EDC-GUA3H-Wと通常のUSB-LANアダプタETX3-US2を階層的につなぐことで乗り切りました。ただし、ETX3-US2はUSBハブ経由での接続は保証しないとなっているため、自己責任です。

会場側に用意されているのはスイッチングハブまでで、接続用のLANケーブルが各ネットワーク用に必要で、合計2本持参する必要があります。

IPアドレスの設定ですが、対局サーバとの通信ポートには主催者から指定された固定IPアドレスを設定する必要があります。 http://121ware.com/qasearch/1007/app/servlet/qadoc?QID=018061などの情報を参照して設定できるようにしておきましょう。WCSC28では、IPアドレスは"192.168.20.x"(xはユーザにより異なる)、サブネットマスクは"255.255.255.0"、デフォルトゲートウェイはなし(閉じたネットワーク)、DNSサーバもなしでした。インターネット側は無設定でつながりました。

会場に着いて接続ができたら、EC2のインスタンスを起動します。インスタンスIPアドレスが判明したら、先述のyaneuraou.batの該当部分を書き換え、接続を確認します。Lesserkai等との対局を行ってエンジンが正しく動くことを確認しましょう。最後に、他の参加者にお願いして対局サーバを介したテスト対局を行いましょう。

注意事項

クラウド特有のリスクがあるのでご注意ください。

  • インターネット接続は無保証です。接続できずに不戦敗という事態もありえないわけではありません。
  • AWSの場合東京より海外のデータセンターのほうが安いですが、その分遅延時間が増えることに注意しましょう。
  • AWSのリソースも有限なので、所望のインスタンスが他の人に占有されていて立ち上げられないという事態がありえます。

クラウドの利用は設定が面倒だったり、特有のリスクもありますが、強力な計算能力でソフトの能力を最大限発揮させる有効な手段です。検討してみてはいかがでしょうか。