Skip to content
ohga edited this page Dec 3, 2016 · 2 revisions

簡単じゃない使い方、もしくは注意事項をだらだらと

  • PC の時計がずれてると動きません。

  • 画面の右下にあるボタンにて、進捗等が眺められると思います。なにかあった場合は参考にしてください。

  • 将棋エンジンとして出力されたフォルダ内のファイルは、ファイル個別に移動/削除しないでください。(フォルダごと移動するぶんには問題ありません)

  • ネットワークの設定/セキュリティソフト等の対応が必要な場合があります。

    インターネットに接続できる環境であれば大丈夫だと思いますが、 ssh 等で AWS のインスタンスに接続するので、その接続が可能な環境である必要があります。(場合によってはルータの設定等が必要です。)

    ツールは AWS への https 接続と、 whatismyip.akamai.com への http 接続をおこないます。後者は、インスタンス作成時に、実行時の IPAddress が from になる ssh と 平文通信の為のポートへの接続許可を設定したいがためです。最低限、それ以外からのアクセスは閉じています。

    なので、不安定なモバイル接続などで、接続元の IPAddress が頻繁に変更される環境での使用や、公衆無線 LAN などで、不特定多数の人が NAT でネットワークを共有しているとかでの使用は微妙かもしれません。

    接続許可は追加する方向だけなので、追加されまくってるような気がしてきたら、メニューの VPC 削除で綺麗な状態にするか、 AWS コンソールでメンテをしたほうが良いかもしれません。

  • 「すべてのインスタンスの削除」「VPCの作成」「VPCの削除」について。

    選択されているリージョンに対しての操作になります。インスタンスの削除については、止っているか不安になったら実行してもらって構わないです。 VPC 関係は自動で作成されるので、通常は操作の必要ないはずです。(セキュリティグループをまるごと消し飛ばす、とかの効果はあります。)

  • ssh の鍵について。

    インスタンス毎に作成しています。 素手で接続する場合は、 出力フォルダ内の private.pem を使用してください。ubuntu ユーザで接続できます。 サーバは標準の Ubuntu Server 16.04 LTS AMI です。

    Linux 側では usi_engine というユーザを作成して、その shell に将棋エンジンを指定するという面倒なことをしています。 authorized_keys に command= として書いてもよかったのですが、いろいろ挫折して、こんなありさまです。エンジンの作りによってはセッションが不意に切れるとプロセスが残っちゃいますし、 通信部だけ renice もしづらいので、このアプローチはよくない気がしてます。。(主に、ターミナルがうまく制御できない Windows 側の ssh クライアントライブラリの都合です。。)

    • 素手でエンジンに接続する例

      xxx.xxx.xxx.xxx はインスタンスの IPAddress です。 info.txt や AWS コンソールなどで確認できます。

      1. usi_engine ユーザで ssh 接続する。
      $ ssh -i private.pem usi_engine@xxx.xxx.xxx.xxx
      
      1. ubuntu ユーザで ssh にてコマンドを叩く。
      $ ssh -t -i private.pem ubuntu@xxx.xxx.xxx.xxx /opt/usi_engine/bin/ukamuse
      
      1. netcat で通信する。( ucspi-tcpサーバプロセスとして起動しています。)
      $ nc xxx.xxx.xxx.xxx 53556
      
  • 将棋エンジン/評価関数のビルド/インストールについて。

    将棋エンジン/評価関数については、バイナリを同梱するのは避けたかったので、インスタンス作成時にソースコードを公式から取得してビルドするようになっています。評価関数は毎回、公式からダウンロードします。
    機能を追加したい場合は、シェルスクリプトをコピペして修正して、 bootstrap.sh の make オプションを決定している箇所を追加して setup.tar.gz にほうりこんで、 GUI の為のリスト を追加すれば、なんとかなります、たぶん。

    resource/setup.tar.gz の中の bootstrap.sh を実行して導入しています。将棋エンジンの make のオプションは /proc/cpuinfo を見て決定しています。一点、ソースに patch をあてていて、評価関数/定跡ファイルの初期ディレクトリを /opt/usi_engine/share/eval_dir/ にしています。(技巧については、quit コマンドの挙動に patch をあててます。(ここらへんのおはなしです))

    ビルド後に再利用できる形にして、ローカル側の resource/ 以下にダウンロードして使い回しています。(g++ を入れたり make したりするのに時間がかかるので。。) なんか問題があれば、resource/*.deb を削除すれば make がはしるはずです。

    もろもろ、詳細は setup.tar.gz 内のスクリプトと install_script.txt と配布物を作成する為の捨てスクリプトを参照してください。とりあえず用意してあるのは、Linux の Makefile があって、私が試せたヤツを入れています。

  • 定跡ファイルについて

    エンジンプログラムとして作成された USIEngineViaSSH.exe のアイコンにファイルをドロップすると、そのファイルがアップロードされるので、例えば、book.bin というファイルを用意して、アイコンにドロップして使用してみてください。 USIEngineViaSSH.exe は引数としてファイル名を与えると評価関数/定跡ディレクトリ(/opt/usi_engine/share/eval_dir/)に配置します。

    alt tag

  • その他

    • 同時に複数エンジンを作成したい場合は、 USIEngineOnAWS.exe を多重起動させて使用してみてください。

    • リージョンの物理的な距離とインスタンスタイプによって、ネットワークレイテンシがかなり違うので、秒読みマージンなどを調整して使用してみてください。

    • インスタンスタイプは t1.micro が最安ですが、例えば、浮かむ瀬だとメモリ不足で動作しません。 最低でも m1.small ( CPU コア数 1, メモリ 1.7 GiB) あたりを使用してください。やねうらおう系は m1.medium は欲しいかもしれません。インスタンスタイプの性能などの詳細は https://aws.amazon.com/jp/ec2/instance-types/ なども参考にしてください。

認証なしの平文でやり取りする方法。

https://sites.google.com/site/shogixyz/home/shogiutilUSIClient.exe を使って実現できます。info.txt に、 UsiClient.exe.config の修正箇所を書いているので、参考にしてください。

AWS のセキュリティグループには port 53556 のインバウンドに許可を出していて、 Linux 側では ucspi-tcp つかってサーバーを上げています。

( ssh よりマシになりますが、これでも、モバイル回線などで速度が安定しない場合は、ネットワーク対局は救えない可能性が高いです。その場合は時間切れを負けにしない、などの設定を試してください。)

USIClient のライセンスとか、よくわからなかったので紹介のみにします。

IAM ユーザのアクセスキー ID と シークレットアクセスキーの作成例

  1. ブラウザから AWS のコンソールにログインして、 以下の IAM のユーザの追加ページにアクセスします。

https://console.aws.amazon.com/iam/home#/users$new?step=details

  1. ユーザー名に適当な名前を入力し、プログラムによるアクセスにチェックをいれ、次のステップ:アクセス権限をクリックします。

alt tag

  1. 既存のポリシーを直接アタッチします、をクリックし、フィルターに ec2full と入れて絞りこみ、 AmazonEC2FullAccess にチェックを入れて、画面下部の、次のステップ:確認をクリックします。

alt tag

  1. 内容を確認してユーザーの作成をクリック。 .csv のダウンロードで、ファイルを取得、メモ帳等で開いて、アクセスキー ID と シークレットアクセスキーを確認します。

alt tag