AWSで囲碁プログラムを起動する方法の手引書的なWikiです。
例としてWindowsからLizzie + Leela Zero + ELF Open Goのパラメータを使う方法を解説しています。
解説しているp2.xlarge(1時間約51円)でもCPUの数十倍の性能が出ます。
p3.2xlarge(1時間約174円)ならその6倍以上の探索速度と思います(未検証)。
(注)コメント欄で質問されても回答できません。
例としてWindowsからLizzie + Leela Zero + ELF Open Goのパラメータを使う方法を解説しています。
解説しているp2.xlarge(1時間約51円)でもCPUの数十倍の性能が出ます。
p3.2xlarge(1時間約174円)ならその6倍以上の探索速度と思います(未検証)。
(注)コメント欄で質問されても回答できません。
インスタンスとは個別の仮想サーバーのことです。AWSでは時間あたりいくらで借りることができます。
AWS Consoleからログインし、「すべてのサービス」>>「コンピューティング」>>「EC2」を開きます。
英語表記になっている場合は左下の言語を変更して下さい。
共有されたマシンイメージを使うため、右上のリージョンを「東京」に変更して下さい。

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

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

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

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

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

「作成ボタン」を押してインスタンスを立ち上げます。
左のカラムから「インスタンス」>>「インスタンス」を開きます。

立ち上がっているインスタンスの「IPv4 パブリックIP」の数値をメモします。(起動しているインスタンスの右の方の列にあります)
後でWindwosからインスタンスに接続するときに使います。
(13.114.12.41など。インスタンスごとに異なる。)
「ステータスチェック」の項目が「2/2のチェックに合格しました」という表示に変わったらインスタンスが無事立ち上がっています。
(!!!重要!!!)
インスタンスは自分で終了しないと、無限に課金され続けます。
使用が完了したら忘れずに終了するようにしましょう。(一番下で手順を解説しています。)

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

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

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

「作成ボタン」を押してインスタンスを立ち上げます。
左のカラムから「インスタンス」>>「インスタンス」を開きます。

立ち上がっているインスタンスの「IPv4 パブリックIP」の数値をメモします。(起動しているインスタンスの右の方の列にあります)
後でWindwosからインスタンスに接続するときに使います。
(13.114.12.41など。インスタンスごとに異なる。)
「ステータスチェック」の項目が「2/2のチェックに合格しました」という表示に変わったらインスタンスが無事立ち上がっています。
(!!!重要!!!)
インスタンスは自分で終了しないと、無限に課金され続けます。
使用が完了したら忘れずに終了するようにしましょう。(一番下で手順を解説しています。)
ここではLeela Zeroの解析用GUIソフトウェアであるLizzieを使う場合の解説をします。
Lizzieのインストールは囲碁AI・LeelaZeroの検討機能 を参考にして下さい。
Java SDK8とVisual Studio 2015のVisual C++ 再頒布可能パッケージが必要となることがあります。
(Windows/CPU版を"C:\Users\user\Desktop\lizzie\"にインストールしたとして説明します)
Java SDK8とVisual Studio 2015のVisual C++ 再頒布可能パッケージが必要となることがあります。
(Windows/CPU版を"C:\Users\user\Desktop\lizzie\"にインストールしたとして説明します)
(既にインストールしていれば省略)
AWSインスタンスと接続するため、SSHクライアントソフトの「PuTTY」をインストールします。
PuTTYのインストールを参考にして下さい。
以下では、「C:\Program Files\PuTTY」にインストールされたとして解説しますが、適宜自分のインストール先に読み替えてください。
AWSインスタンスと接続するため、SSHクライアントソフトの「PuTTY」をインストールします。
PuTTYのインストールを参考にして下さい。
以下では、「C:\Program Files\PuTTY」にインストールされたとして解説しますが、適宜自分のインストール先に読み替えてください。
(既に作成していれば省略)
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"に保存したとして説明します)

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"に保存したとして説明します)
(既に作成していれば、インスタンスの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」などの値。毎回変わりますので必ず変更してください)

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」などの値。毎回変わりますので必ず変更してください)

「lizzie」フォルダ内の「config.txt」を修正します。(一度修正していれば省略)
ファイルが見つからない場合は一度「Lizzie.jar」を起動し、終了します。すると「config.txt」が生成されます。
元のファイルをコピーして「config_org.txt」などに保存します。(AWSなしで使う場合は元に戻すため)
「config.txt」を開いて、「engine-command」の値(./leelaz --gtp ...などになっている)を「./ssh.bat」に変更します。
LizzieのGPU版をお使いの場合、もうひとつ"./leelaz"となっているところがあるかもしれませんが、こちらも"./ssh.bat"にしてください。

ファイルが見つからない場合は一度「Lizzie.jar」を起動し、終了します。すると「config.txt」が生成されます。
元のファイルをコピーして「config_org.txt」などに保存します。(AWSなしで使う場合は元に戻すため)
「config.txt」を開いて、「engine-command」の値(./leelaz --gtp ...などになっている)を「./ssh.bat」に変更します。
LizzieのGPU版をお使いの場合、もうひとつ"./leelaz"となっているところがあるかもしれませんが、こちらも"./ssh.bat"にしてください。

準備完了です。
「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ファイルを修正して下さい。
二回目以降は

「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ファイルを修正して下さい。
二回目以降は
- AWSスポットインスタンスのリクエスト
- AWSインスタンスのパブリックIP(IPv4)を確認
- bat.sshのserver_ipの変更
- Lizzie.exeの起動

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

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

囲碁プログラム関連リンク
このページへのコメント
まったく同じように手続きしたのにできなかった
ご丁寧に説明いただきありがとうございます。
このInstanceにRemoteDesktopで直接入り、Leela Zeroの設定変更などを行いたいのですが、可能であればRemoteDesktopで入れるID/Passを共有していただけますでしょうか。