AWS, 無料枠を使いきってしまってからは長らく放置していたが、最近スポットインスタンスの存在を知って感動した。
スポットインスタンス
スポットインスタンス とは、 Amazon の使われていない計算資源をオークション形式で利用できるシステムだ。
オンデマンドインスタンス と比べると、かなりの安さで同じマシンを利用できる。
無料枠で利用できた、t1.micro インスタンスは、オンデマンドインスタンスなら $0.020 / 1時間 であるが、スポットインスタンスなら、だいたい$0.003 / 1時間 程度で借りることができる。 一月で300円もかからない計算になる。
もちろん安いのには理由がある。 スポットインスタンスは、起動リクエスト時に、「1時間あたりこの値段までなら出せる」という価格を提示して、その値よりも"実際の値段" が安ければ利用できる という風になっている。
この"実際の値段" というのは、需要によって決定されるので、みんなが使うと値段が上るし、使っていなければ下る。
そして、もしインスタンスの起動中に、実際の値段が上って、自分が提示した価格を上まわった時、自分のインスタンスは停止させられる。
このようにいきなり停止されてしまう可能性があるかわりにとても安くなっている。
安定性を求められるものには使えないが、大きな計算資源の必要なことがしたい時などにはこのインスタンスは便利だ。
c3.8xlarge という仮想32コアのすごいマシンがあるが、このマシンはオンデマンドだと$1.680 / 1時間もする。10時間ぐらいで計算が終わるとすると17ドルぐらい。ちょっと高いけどまあ出せなくはない額だ。20時間になると学生が遊びに使うにはちょっとキツい……
しかしスポットインスタンスなら、だいたい$0.25 / 1時間 程度で借りることができる! 20時間まわしても5ドルしかかからない! 余裕!
わたし
最近2048AI を強くするために、大量のプレイアウトやモンテカルロなどで大きな計算資源が必要であった。 うちの自慢のCloudStack(KMC で立てました。主に私が管理してるのでなんでもしほうだい) でも、3GHz * 4コアのインスタンスが作れる上限だが、そのインスタンス一つで全計算ノードの20% を食い尽してしまう。
2048AI のためにオンデマンドインスタンスで数千円溶かせるほどではないのでどうしようかなーと思っていたら、スポットインスタンスの存在を教えてもらって感動した。
うちのCloudStack の全ノードが束になってようやくちょっと敵わない程度のインスタンスが、全ノードの平常時電気代ちょっとで借りることができる。
スポットインスタンスを使えばかなり安く強大な計算資源が手に入るので、これからは計算資源が少し足りない時は力技でなんとかできそうだと思った。夢が広がる。
memo
インスタンスの起動時に自分が指定するのは、あくまで「出せる上限」なので、実際にかかる金額は"実際の値段" しかかからない。
値段のグラフを見ていると、時々どこかの企業が何かをしてるのか、大きく変動していたりしていておもしろい。
このスライド はAmazon の人のスライドらしいが、これの55ページからがスポットインスタンスの説明になっている。 また、72ページからが、スポットインスタンスの入札の戦略になっていて興味深かった。