Amazon Web Services ブログ

Windows 向けの新しい Amazon EC2 Elastic GPU

本日、Windows 向け Amazon EC2 Elastic GPU の一般提供を発表しました。Elastic GPU はアプリケーションのグラフィックパフォーマンスを高速化するために Amazon Elastic Compute Cloud (EC2) インスタンスにアタッチできる GPU リソースです。Elastic GPU は Medium (1GB)、Large (2GB)、XLarge (4GB)、2xlarge (8GB) のサイズで提供されています。G3 または G2 (OpenGL 3.3 アプリケーション向け) といった GPU インスタンスタイプを使用する代わりとして、低コストで利用できるサービスです。Elastic GPU は様々なインスタンスタイプと使用することができ、アプリケーションに適切なコンピューティング、メモリ、ストレージバランスを選べるように柔軟性を提供しています。そして今日から Elastic GPU を us-east-1 と us-east-2 でプロビジョンできるようになりました。

Elastic GPU は eg1.medium で 0.05 USD/時間からご提供しています。1 時間 5 セントです。Elastic GPU を t2.medium (0.065 USD/時間) にアタッチすると、GPU を使用したインスタンスに毎時間支払う金額は 12 セント以下となります。これまでは、もっとも低価格なグラフィカルワークステーション (G2/3 クラス) のコストは 0.76 USD/時間でした。つまり、特定のグラフィカルワークロードを実行するための価格を 80% 以上削減できることになります。

Elastic GPU はいつ使うのか?

Elastic GPU はグラフィックの高速化に必要な少量または断続的な GPU のパワーを必要とするアプリケーションや、OpenGL のサポートに最適です。Elastic GPU は OpenGL 3.3 API スタンダードもサポートし、展開済み API サポートも近日中にリリースする予定です。

Elastic GPU はインスタンスのハードウェアの一部ではありません。代わりに、Elastic GPU でインスタンスを起動した時に作成したサブネットにある Elastic GPU ネットワークインターフェイスを介してアタッチされます。次のイメージは Elastic GPU がどのようにアタッチされるか示しています。

Elastic GPU はアタッチしているネットワークなので、アプリケーションをサポートできる適切なネットワークの帯域幅でインスタンスをプロビジョンすることが大切です。また、インスタンスセキュリティグループがポート 2007 でトラフィックを許可していることを確認することも重要です。

OpenGL API を使用できるアプリケーションであれば、Elastic GPU を利用することができます。Blender、Google Earth、SIEMENS SolidEdge などはすべて Elastic GPU で実行できます。Kerbal Space Program も実行できます。

いつ、そしてどのように Elastic GPU を使用できるのか分かったところで、インスタンスを起動して 1 つ使ってみましょう。

Elastic GPU の使用

まず、EC2 コンソールにアクセスし [Launch Instance] をクリックします。次に [Microsoft Windows Server 2016 Base] といった Windows AMI を選択します。次にインスタンスタイプを選択します。次に [Elastic GPU] セクションを選択したことを確認し、eg1.medium (1GB) Elastic GPU を割り当てます。

[Advanced Details] セクションでユーザーデータもいくつか入れます。Elastic GPU ソフトウェアをダウンロードしインストールするために、PowerShell の簡単なスクリプトを書きます。


<powershell>
Start-Transcript -Path "C:\egpu_install.log" -Append
(new-object net.webclient).DownloadFile('http://ec2-elasticgpus.s3-website-us-east-1.amazonaws.com/latest', 'C:\egpu.msi')
Start-Process "msiexec.exe" -Wait -ArgumentList "/i C:\egpu.msi /qn /L*v C:\egpu_msi_install.log"
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Amazon\EC2ElasticGPUs\manager\", [EnvironmentVariableTarget]::Machine)
Restart-Computer -Force
</powershell>

このソフトウェアはすべての OpenGL API コールをアタッチした Elastic GPU に送ります。

次に、セキュリティグループで TCP ポート 2007 が VPC に公開されているか確認し、Elastic GPU がインスタンスに接続できるようにします。最後に [Launch] をクリックしてインスタンスと Elastic GPU がプロビジョンされるのを待ちます。インスタンスにアタッチできる別の SG を作成することが、これを実行する上で最適な方法です。

起動手順のアニメーションは下記をご覧ください。

また、次のような簡単なコールを使用して AWS CLI で起動することもできます。

$aws ec2 run-instances --elastic-gpu-specification Type=eg1.2xlarge \
--image-id ami-1a2b3c4d \
--subnet subnet-11223344 \
--instance-type r4.large \
--security-groups "default" "elasticgpu-sg"

そうすると、こちらの Elastic GPU のソフトウェアインストール手順を実行できます。

タスクバーで Elastic GPU のステータスをチェックすると、Elastic GPU が問題なく動作しアタッチされていることが分かります。

サービスに関するフィードバックがあれば、ぜひお知らせください。Elastic GPU でのエクスペリエンスをお知らせいただくには、GPU Status Box の左下端にある Feedback リンクをクリックしてください。

Elastic GPU の実演

これでインスタンスのプロビジョンと Elastic GPU のアタッチが完了しました。AWS の私のチームメイトが、素晴らしい 3D アプリケーションについて紹介するようにリクエストしていたのですが、Elastic GPU のことを最初に聞いた時に考えたのは Kerbal Space Program (KSP) のことだったので、ここで簡単にテストしてみようと思います。結局のところ、Jebediah Kerman をスペースで起動できないのなら、こうしたソフトウェアの意味は何なのでしょう?KSP をダウンロードし、 -force-opengl を起動パラメーターとして追加して、レンダリングに OpenGL を使用していることを確認します。下記で、私の中途半端なスペースシップの構築案を見ることができます。昔はもっと良いのを作れたのですが。劣化を伴うリモートデスクトッププロトコルを使用したネットワークにしては悪くないでしょう。

ロケット発射の写真をお見せしてもいいのですが、スケジュール外で起きた分解により地上から離陸しなかったのです。そういうことで、またいちからやり直しです。

当面は Amazon CloudWatch メトリクスをチェックし、その間にどれだけの GPU メモリを使用したか見ることができます。

パートナー、料金、ドキュメント

利用者の皆さんに優れたエクスペリエンスを提供していくため、ANSYS や Siemens といった 3D ソフトウェアパートナーは、Elastic GPU で OpenGL API を活用しようと、自社ソフトウェアの Elastic GPU の認定に現在取り組んでいます。パートナーシップの詳細についてはこちらをご覧ください。

Elastic GPU の料金についてはこちらをご覧ください。その他のドキュメントに関してはこちらをご覧ください。

さて、仮想ロケットを構築する用事がありますので今回はこの辺で失礼します。

Randall