スポットインスタンスでデータ分析を安価かつ高速に
目次
はじめに
はじめまして、DATUM STUDIOの岡です。
AWSのEC2サービスに スポットインスタンスというものがあるのをご存知でしょうか。 今回は、このサービスのデータ分析における利用事例と、使い方を紹介いたします。
困っていたこと
統計ソフトRでデータ分析を行うにあたり、ローカル環境だと24時間弱かかる並列処理を行う場面がありました。ローカル環境は以下の通りです。
- macOS
- プロセッサ:1.6 GHz Intel Core i5
- メモリ:8GB
時間を短縮したいがアドホック分析なので、「コード書き換えて高速化しよう!」というより、マシンパワーをあげてなんとかした方が良いと考えました。
解決方法
AWSのEC2で、コア数が多いインスタンスを借りて並列処理しようと考えました。スポットインスタンスというサービスが、普通のインスタンスを借りるより安いらしいので、調べてみました。
スポットインスタンスとは
特徴
- 未使用の余っているEC2インスタンスがあれば利用可
- スポット料金が設定されており、いわゆる需要価格なので変動する
- この料金より高い金額を入札することで、利用可能
メリット
- 通常のオンデマンドインスタンスより安価
デメリット
- スポット料金が変動して入札金額を上回る or 未使用のEC2インスタンスがなくなると、起動中でも強制的に落ちる
実際にスポットインスタンスを使ってみた
まず、スポットインスタンス作成ウィザードを開き、「EC2」→「スポットリクエスト」→「スポットインスタンスのリクエスト」を選択します。
つぎに、インスタンスの設定します。
- リクエストタイプ: 今回は一度きりの分析処理を行いたいので、「リクエスト」を選択
- ターゲット容量: 1
- AMI: 今回はあらかじめRが入ったカスタムAMIを利用しました(画像はデフォルトのまま)。
- インスタンスタイプ: デフォルトの「c3.large」を削除し、「選択」をクリックしてインスタンスタイプ一覧を開きます。具体的にはこの次で説明します。
インスタンスタイプは、vCPUやメモリから適当なものを選びます。今回は並列処理をしたいため、「32コア & メモリ100GiB以上 & なるべく安く」という条件を設定し、 r4.8xlargeを選択しました。
候補のインスタンスにチェックを入れ、価格設定履歴をクリックします。
価格が安定しているアベイラビリティーゾーンを探します。選択したインスタンスの価格設定履歴が表示されるので「期間」を1週間ぐらいに設定し、直近の価格変動の小さいAZを探します。今回は、「us-west-2b」が安定していました。
AZの確認が終わったら、右上の「×」を押してスポットインスタンス設定ウィザードに戻ります。
誤りなく希望のスポットインスタンスを入札するように、下記を確認しましょう。
- インスタンスタイプ: 2-2で選択したタイプになっていることを確認
- 配分戦略: 今回は安定したAZを指定するので「Diversified」に設定
- ネットワーク: 任意のVPCを選択
- アベイラビリティゾーン: 価格が安定していたゾーンを設定
- 最高価格: 今回はスポット料金が$0.3452で、最悪落ちても良いのため最高価格を$1に設定しました。
これ以降は、通常のインスタンス作成と同じなので割愛させていただきます。
スポットインスタンスを使ってみた結果
ローカル環境で24時間かかるはずだった処理が30分に短縮しました。
処理時間 30分と環境構築30分で計1時間作業しましたが、1時間あたりの金額が$0.3452なので、なんと40円程度の費用で23時間も短縮できました。
32コアの並列処理、、、なかなか痛快でした。
まとめ
ハイスペックなマシンを安価にちょっとだけ使いたいときは、スポットインスタンスを利用しましょう。
DATUM STUDIOでは様々なAI/できればと思います分析の支援を行っております。
詳細につきましてはこちら
詳細/サービスについてのお問い合わせはこちら
DATUM STUDIOは、クライアントの事業成長と経営課題解決を最適な形でサポートする、データ・ビジネスパートナーです。
データ分析の分野でお客様に最適なソリューションをご提供します。まずはご相談ください。