用語集 · コンピューティング

vCPU

別名:virtual CPU、core、worker process、parallelism、hyperthreading、hyperthread、SMT、仮想CPU、コア、ワーカープロセス、並列処理、ハイパースレッディング

仮想CPUです。クラウドのマシンにおけるプロセッサの能力の1単位で、64 vCPUのマシンは同時に約64個の処理を動かせます。

vCPUは、クラウド事業者がプロセッサの能力を数えるときの単位です。マシンによって、1 vCPUは物理コア1つまるごとのこともあれば、1つのコアを共有する2つのハードウェアスレッドの片方(ハイパースレッディング)のこともあります。IntelベースのAWSインスタンスの多くでは、ハイパースレッド1つです。c7aやc8aのような、AWSの最近のAMDベースのインスタンスでは、vCPU 1つが物理コア1つまるごとです。

なぜ強化学習はたくさん欲しがるのか

強化学習の物理シミュレーションは、ほとんどCPUで動きます。環境のコピーはそれぞれ独立しているので、経験の収集はコアごとにきれいに分けられます。コア1つにつきワーカープロセスを1つ動かし、それぞれが環境をいくつかシミュレーションします。コアが多いほど、1時間あたりのステップ数はほぼ比例して増えます。ただし、ほかの何か(メモリ帯域や、データを待つ学習器)が限界になるまでです。

グラフィックボード(GPU)はニューラルネットワークの計算には理想的ですが、MuJoCoのようなCPUのシミュレータには向きません。新しいシミュレータの中には、数千の環境を直接GPU上で動かすものもあります。

このプロジェクトでは

学習は64 vCPUのクラウドマシンで動かしています。ワーカープロセスが52個で、それぞれが環境を8個持ち、残りは学習器に使います。これで1時間に約29 M ステップを集めます。このプロジェクトをホストしている2 vCPUのサーバーでは約0.45 Mで、およそ60倍遅いので、学習をそこで動かすことは決してありません。

ブロックの取り組みでは、ハイパースレッディングの違いが数字に表れました。c8iのマシン(Intel、コア1つにハードウェアスレッド2つ)は、同じvCPU数のc8a(AMD、vCPU 1つにコア1つ)より約1.45倍遅くシミュレーションしたので、192 vCPUでは起動スクリプトがc8iを飛ばします。コアを倍にしても、割に合うとは限りません。192 vCPUのc8aは96 vCPUのものより1.35倍しか速くなりませんでした。コアの半分が学習器を待っていたからで、そのため100万ステップあたりの費用は、96 vCPUの$0.037に対して$0.055でした(ブロックを参照)。

2人のファイターと視覚では、96 vCPUの稼働率は約4分の3でした。学習器のスレッド24本は常に動き、72個のワーカープロセスは70%の時間動いて、残りは学習器を待っていました。学習器に3つ目のプロセスを与えると(ワーカーを72個ではなく60個にすると)、1イテレーションが9%速くなりました。c8iの物理は、ここでもAMDより約1.45倍遅くなりました。

関連用語

この用語が出てくる記事

← すべての用語