計算機科学実験をクラウドで行うための調査1

# Abstract

本稿は、計算機科学実験を大規模なクラウド環境で行うための予備調査の記録である。

# Introduction

近年急速に発達したクラウドコンピューティング環境は、物理的サーバを所有管理すること無く大量の計算資源を動的に得られるという点で画期的な技術である。議論の余地無く、以下の図を見れば一目瞭然であろう。

![cluster.png](https://qiita-image-store.s3.amazonaws.com/0/6090/fb84f16e-6495-d7db-8a45-75ef76fb4f5d.png)

しかし、クラウドコンピューティングを実験評価に用いることには幾つかの課題がある。困ったことにこれらの課題は、計算機科学の実験が科学技術計算と異なるニーズを持っていることに由来している。

# 絶対性能 vs 相対性能

大規模な科学技術計算(工学、薬学、生物学などの自然科学分野)の持っているニーズは、絶対性能である。考えた物理構造や分子構造について、流体計算、構造計算、分子動力学計算を行う。これらの研究の目的は通常、「よりよい設計・薬」を得ることであって、計算は手段に過ぎず、速ければ速いほどよい。複数の設計を計算機にかけて、その結果からそれぞれの設計の性能を計測/改善することが計算の目的である。

一方、計算機科学研究における「実験」は、「計算を高速化する手法」自体に研究の主眼がある。計算の対象は主眼ではなく、実験の目的は同一のデータに対して複数の手法で計算を行い、その性能を計測することである。

この違いによって、Amazon EC2 などのサービスの弱みが顕在化する。それは、それぞれの仮想インスタンスの性能が一定でないことである。クラウドサーバのインスタンスは仮想OS上で実行されており、同じ物理サーバ上で赤の他人のプログラムが走っている可能性がある。CPUコアはハイパースレッドコアであり、またインスタンスによっては勝手にTurbo Boostがかかってしまう。これらの問題は、[Kotthoff, Lars. "Reliability of computational experiments on virtualised hardware." Journal of Experimental & Theoretical Artificial Intelligence 26.1 (2014): 33-49.](https://scholar.google.co.jp/scholar?q=Reliability+of+Computational+Experiments+on+Virtualised+Hardware&ie=UTF-8) などに詳しい。ヘタをすると、これらのノイズは性能の分散を大きくし、結果の再現性を大きく落としてしまう。

正直な所、このような研究では「同じ速度のCPUで同一条件で実験を行う」こと、つまりデータの再現性だけが重要なのであり、絶対性能は問題ではない。従って、CPUは極論すれば Pentium Pro でも ARM でも Atom でもなんでもよいという事になる。(Xeon Phi ってGPUみたいに分岐で遅くなるのか?)

そのような背景から、計算機科学研究にクラウド環境を用いる際には、Dedicated Instance/Hosts, Baremetal Cloud, などとよばれる種別のサーバを運用する必要がある。この観点から、以下で有名な様々なクラウドサービス各社の比較を行う。

以下全て、 1ヶ月間24時間稼働した場合の費用で比較する。物理コアごとの価格は概算である。

# Amazon EC2

[Price Calculator](https://calculator.s3.amazonaws.com/index.html?lng=ja_JP#)

> T2 インスタンスは、ベースラインを超えてバーストする能力がある CPU パフォーマンスのベースラインを提供する、バーストパフォーマンスインスタンスです。

> M3 インスタンスは、2.6GHz で動作する Intel Xeon E5-2670 (Sandy Bridge) プロセッサーとして作成される可能性もあります。

従ってT2, M3 インスタンスは使用できない。ターゲットはM4, C4, C3 インスタンスとなる。要求としてはDedicated instances だが、 [Dedicated hosts のページ](https://aws.amazon.com/jp/ec2/dedicated-hosts/pricing/) から各マシンの物理コアの数がわかる。

Ondemand, dedicated instance, Oregon の計算で行うと:


|                           | USD/month | /core|
|---------------------------|------|-----------|
| M4(40 vCPU, 24 phys core) | 1752 | 75  |
| C4(36 vCPU, 20 phys core) | 1226 | 60  |
| C3(32 vCPU, 20 phys core) | 1229 | 60  |


# GCE

https://cloud.google.com/compute/docs/machine-types

GCE のインスタンスはどれもCPU種別が変更される可能性がある。従って適切ではない。また、GCEは Dedicated option が存在しないから、どのみちだめである。参考までに、


|                           | USD/month | /core|
|---------------------------|-----------|------|
|n1-standard-32 (32 vCPU, 16 phys core)| 817 | 50 |

# Rackspace

Rackspace は [OnMetal](https://www.rackspace.com/cloud/servers/onmetal) Cloud という名前で VM なしのクラウドを行っている。v2からは任意のイメージを走らせられるようになったようだ。

コアあたり2GBあれば自分の分野のCompetition Settingに足りるので、v2 General Purpose Large はオーバースペックだ。また、一台あたり マシンとは別に月50$の固定費用がかかるらしい。

|                           | USD/month | /core|
|---------------------------|-----------|------|
|OnMetal v2 Gen Purpose Small  (1x6 phys cores, 64GB)| 725+50=775 | 120 |
|OnMetal v2 Gen Purpose Medium (2x6 phys cores, 64GB)| 925+50=975 | 80 |
|OnMetal v1 Compute            (10 phys cores, 32GB):| 500+50=550 | 55 |
|(参考)Compute1-60 (32vCPU, 16 cores? 60GB) | 934.00+219.00=1150 | 70 |

おそらくv1の旧世代より絶対性能が高いのだろう。

# IBM SoftLayer

OnMetalと同じく、Bare Metal Server をやっている。起動に20-30分、課金は一時間あたり。

[ひたすら物理コアあたりの値段で比べていく。](http://www.softlayer.com/bare-metal-search?hourlyBilling=2)


|                           | USD/month | core | /core|
|---------------------------|-----------|------|----|
|Intel Xeon E3-1270    | 244 | 4  | $61 |
|**Intel Xeon E5-2620**    | 522 | 12 | **$43** |
|Intel Xeon E3-2650    | 762 | 16 | $47 |
|Intel Xeon E3-2650 v3 | 929 | 20 | $46 |
|Intel Xeon E5-2690 v3 | 1261 | 24 | $52 |

どれもコアあたりでみると同じぐらいの値段のようだ。

# 結論

どうやら、ベアメタルの条件で調べるとIBMが一番やすそうだ。しかし、起動終了が遅そうだぞ?
さらなる調査が必要だ。