aws guide - トップページ
AWSで囲碁プログラムを起動する方法の手引書的なWikiです。
例としてWindowsからLizzie + Leela Zero + ELF Open Goのパラメータを使う方法を解説しています。
解説しているp2.xlarge(1時間約51円)でもCPUの数十倍の性能が出ます。
p3.2xlarge(1時間約174円)ならその6倍以上の探索速度と思います(未検証)。

(注)コメント欄で質問されても回答できません。


このWikiで解説していること

  1. Amazon Web Service (AWS) のユーザー登録
  2. AWSでインスタンスを立ち上げる
  3. AWSインスタンスと自分のPCを接続し、解析する

1. Amazon Web Service (AWS) のユーザー登録

基本的にはAWS アカウント作成の流れのとおり。
メールアドレスとクレジットカード情報が必要になります。

2. AWSでインスタンスを立ち上げる

インスタンスとは個別の仮想サーバーのことです。AWSでは時間あたりいくらで借りることができます。
AWS Consoleからログインし、「すべてのサービス」>>「コンピューティング」>>「EC2」を開きます。
英語表記になっている場合は左下の言語を変更して下さい。
共有されたマシンイメージを使うため、右上のリージョンを「東京」に変更して下さい。




2-1. セキュリティグループの設定

既に作成していれば省略

左のカラムから「ネットワーク&セキュリティ」>>「セキュリティグループ」を開きます。





「セキュリティグループの作成」から新規のセキュリティグループを作成します。
下の図のようにして「作成」ボタンを押して下さい。




2-2. キーペアの作成

既に作成していれば省略

左のカラムから「ネットワーク&セキュリティ」>>「キーペア」を開きます。





「キーペアの作成」を開きます。
ダイアログが出たら「aws-key01」と入力し、作成します。
ダウンロードダイアログが出るので、PC内に保存して下さい。(後で使います!)




2-3. スポットインスタンスの立ち上げ

左のカラムから「インスタンス」>>「スポットリクエスト」を開きます。





「スポットインスタンスのリクエスト」を開きます。





「AMI」を「カスタムAMIを使う」からAMI id「ami-e8a43f05」を検索して選択。
インスタンスタイプは「p2.xlarge」を選択します。(1時間あたり60円くらい)
(注)スポットインスタンスの価格は需要と供給で変動します。「価格設定履歴」から現在の価格を確認しましょう。





「セキュリティグループ」は先程作成した「aws-sg01」をチェックします。
「キーペア名」は先程作成した「aws-key01」を選択します。





「作成ボタン」を押してインスタンスを立ち上げます。

左のカラムから「インスタンス」>>「インスタンス」を開きます。





立ち上がっているインスタンスの「IPv4 パブリックIP」の数値をメモします。(起動しているインスタンスの右の方の列にあります)
後でWindwosからインスタンスに接続するときに使います。
(13.114.12.41など。インスタンスごとに異なる。)

「ステータスチェック」の項目が「2/2のチェックに合格しました」という表示に変わったらインスタンスが無事立ち上がっています。

(!!!重要!!!)
インスタンスは自分で終了しないと、無限に課金され続けます
使用が完了したら忘れずに終了するようにしましょう。(一番下で手順を解説しています。)

3. AWSインスタンスと自分のPCを接続し、解析する

ここではLeela Zeroの解析用GUIソフトウェアであるLizzieを使う場合の解説をします。

3-1. Lizzieのインストール

Lizzieのインストールは囲碁AI・LeelaZeroの検討機能 を参考にして下さい。
Java SDK8Visual Studio 2015のVisual C++ 再頒布可能パッケージが必要となることがあります。
(Windows/CPU版を"C:\Users\user\Desktop\lizzie\"にインストールしたとして説明します)

3-2. PuTTYのインストール

既にインストールしていれば省略

AWSインスタンスと接続するため、SSHクライアントソフトの「PuTTY」をインストールします。
PuTTYのインストールを参考にして下さい。
以下では、「C:\Program Files\PuTTY」にインストールされたとして解説しますが、適宜自分のインストール先に読み替えてください。

3-3. ppkの作成

既に作成していれば省略

AWSに接続するための秘密鍵ファイルを作成します。
AWSの「キーペアの作成」で作成した「aws-key01.pem」を使います。

PuTTYといっしょにインストールされた「PuTTYgen」を使います。(Windowsの検索バー(左下のやつ)で検索すると見つかります)
「Load」を押して先程ダウンロードした「aws-key01.pem」を選択し、「Save Private Key」を押して名前をつけて保存します。

ここでは、「aws-key01.ppk」として保存します。("C:\Users\user\Desktop\lizzie\aws-key01.ppk"に保存したとして説明します)


3-4. batファイルの作成

既に作成していれば、インスタンスのIP(server_ip)のみ変更して下さい

AWSインスタンスと接続するためのバッチファイルを作成します。
Lizzieのフォルダの中で右クリック→「新規作成」→「テキストドキュメント」を選択し、「ssh.bat」という名前にして保存します。
ファイルの種類が「Windos バッチファイル」になっていることを確認して下さい。(「ssh.bat.txt」などになっていると動きません!)

もし「テキストファイル」になっている場合、ファイルエクスプローラーの「表示」>>「オプション」>>「フォルダーオプション」>>「表示」>>「詳細設定」から「登録されている拡張子は表示しない」のチェックボックスを外して「OK」を押してください。
先程作成したファイルが「ssh.bat.txt」などになっていたら、「ssh.bat」に名前を変更してください。



そのままでは編集できないので、「メモ帳」などから開き、次のように入力します。
(メモ帳のウィンドウに「ssh.bat」のファイルをドラッグアンドドロップすると編集できます。)

#### ここから
@echo off
set plink_path="C:\Program Files\PuTTY\plink.exe"
set key_path="C:\Users\user\Desktop\lizzie\aws-key01.ppk"
set server_ip=12.345.678.900

echo yes | %plink_path% -ssh -i %key_path% ubuntu@%server_ip% exit
%plink_path% -ssh -i %key_path% ubuntu@%server_ip% cd leela-zero; ./leelaz --gtp --lagbuffer 0 --weights elf.gz --threads 2
#### ここまで

下記を自分の環境に合わせて変更して下さい。
 plink_path: PuTTYがインストールされたフォルダ内のplink.exeのファイルパス
 key_path: ppkファイルのファイルパス
 server_ip: 立ち上げているAWSインスタンスの「IPv4 パブリックIP」の値(さっきメモした「13.114.12.41」などの値。毎回変わりますので必ず変更してください)



3-5. Lizzieの設定変更

「lizzie」フォルダ内の「config.txt」を修正します。(一度修正していれば省略
ファイルが見つからない場合は一度「Lizzie.jar」を起動し、終了します。すると「config.txt」が生成されます。
元のファイルをコピーして「config_org.txt」などに保存します。(AWSなしで使う場合は元に戻すため)

「config.txt」を開いて、「engine-command」の値(./leelaz --gtp ...などになっている)を「./ssh.bat」に変更します。
LizzieのGPU版をお使いの場合、もうひとつ"./leelaz"となっているところがあるかもしれませんが、こちらも"./ssh.bat"にしてください。





3-6. Lizzieの起動

準備完了です。
「Lizzie.jar」を再度立ち上げ、しばらくすると解析が始まります。(初回は1分くらいかかります)
「Leela Zero is loading...」がいつまでも消えないなど、うまく起動しない場合はconfig.txtやssh.batのファイル内の項目が説明通りになっているかを確認してください。
(GPU版よりCPU版の方が起動がうまくいきやすいかもしれません。)

Lizzieの使い方は、「x」キーを押しっぱなしにするとコマンド一覧が出ます。
使用が終了したら、AWSインスタンスを終了することを忘れないでください

また、AWSなしでLizzieを使いたい場合は、lizzieフォルダ内の「config.txt」を「config_aws.txt」などにして保存し、予め保存しておいた元の「config_org.txt」を「config.txt」に戻してください。
再びAWSインスタンスと接続したい場合はそのたびにconfigファイルを修正して下さい。

二回目以降は
  1. AWSスポットインスタンスのリクエスト
  2. AWSインスタンスのパブリックIP(IPv4)を確認
  3. bat.sshのserver_ipの変更
  4. Lizzie.exeの起動
で立ち上げることができます。




3-7. スポットインスタンスを終了する(!!重要!!)

インスタンスは自分で終了しないと、無限に課金され続けます
使用し終わったら確実に終了して下さい。

AWS Consoleを開き、「EC2」の左のカラムから「インスタンス」>>「スポットリクエスト」を開きます。
立ち上がっているインスタンスをチェックし、「アクション」>>「スポットリクエストのキャンセル」を選択します。
しばらくするとインスタンスの表示が緑から赤色になり、終了したことが確認できます。





囲碁プログラム関連リンク