-
Notifications
You must be signed in to change notification settings - Fork 0
Home
-
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 コンソールなどで確認できます。-
usi_engine
ユーザで ssh 接続する。
$ ssh -i private.pem usi_engine@xxx.xxx.xxx.xxx
-
ubuntu
ユーザで ssh にてコマンドを叩く。
$ ssh -t -i private.pem ubuntu@xxx.xxx.xxx.xxx /opt/usi_engine/bin/ukamuse
-
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/
)に配置します。 -
その他
-
同時に複数エンジンを作成したい場合は、
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/shogiutil の USIClient.exe
を使って実現できます。info.txt
に、 UsiClient.exe.config
の修正箇所を書いているので、参考にしてください。
AWS のセキュリティグループには port 53556 のインバウンドに許可を出していて、 Linux 側では ucspi-tcp
つかってサーバーを上げています。
( ssh よりマシになりますが、これでも、モバイル回線などで速度が安定しない場合は、ネットワーク対局は救えない可能性が高いです。その場合は時間切れを負けにしない、などの設定を試してください。)
USIClient のライセンスとか、よくわからなかったので紹介のみにします。
- ブラウザから AWS のコンソールにログインして、 以下の IAM のユーザの追加ページにアクセスします。
https://console.aws.amazon.com/iam/home#/users$new?step=details
- ユーザー名に適当な名前を入力し、プログラムによるアクセスにチェックをいれ、次のステップ:アクセス権限をクリックします。
- 既存のポリシーを直接アタッチします、をクリックし、フィルターに
ec2full
と入れて絞りこみ、AmazonEC2FullAccess
にチェックを入れて、画面下部の、次のステップ:確認をクリックします。
- 内容を確認してユーザーの作成をクリック。 .csv のダウンロードで、ファイルを取得、メモ帳等で開いて、アクセスキー ID と シークレットアクセスキーを確認します。