Tag: EC2


新インスタンス- NVIDIA Tesla V100 GPUを最大8個搭載したAmazon EC2インスタンス P3

私たちは2006年に最初のm1.smallを発表した後も、お客様のご要望に応じて、そして常に進歩している最先端の技術を利用可能にするために、コンピュート能力、バースト可能な性能、メモリサイズ、ローカルストレージ、アクセラレータなどインスタンスを強化し続けています。

新しいP3インスタンス
本日、次世代のGPUを搭載したEC2インスタンスを4リージョンで公開しました。NVIDIA Tesla V100 GPUを最大8個搭載したP3インスタンスは、コンピュートインテンシブな機械学習、深層学習、流体計算、金融計算、地震解析、分子計算、ゲノム処理を想定して設計しました。

P3インスタンスは、最大2.7GHzで動作するIntel Xeon E5-2686v4プロセッサを搭載し、3種類のサイズを用意しています(VPCのみ、EBSのみ)

Model NVIDIA Tesla V100 GPUs GPU Memory NVIDIA NVLink vCPUs Main Memory Network Bandwidth EBS Bandwidth
p3.2xlarge 1 16 GiB n/a 8 61 GiB Up to 10 Gbps 1.5 Gbps
p3.8xlarge 4 64 GiB 200 GBps 32 244 GiB 10 Gbps 7 Gbps
p3.16xlarge 8 128 GiB 300 GBps 64 488 GiB 25 Gbps 14 Gbps

各GPUは 5,120CUDAコアと640Tensorコアを備え、最大125TLOPSの混合精度浮動小数点演算、15.7TFLOPSの単精度浮動小数点演算、7.8TFLOPSの倍精度浮動小数点演算を可能とします。大きい2つのサイズでは、GPUはNVIDIA NVLink 2.0で相互接続され、最大300Gbpsデータレートで接続されています。これによりGPU間での中間結果やその他のデータのやりとりを、CPUやPCI-Expressを経由せずに高速に行うことが可能です。

Tensorコアとは?
このブログを書き始めるまで、私はTensorコアを聞いたことがありませんでした。大変有益なNVIDIA ブログの記事によると、Tensorコアは大きなDeep Neural Networkの学習や推論を高速化するために設計されています。各コアは、半精度(FP16)の4×4行列同士の積演算と、4×4の別の半精度もしくは単精度(FP32)行列の和演算を行い、半精度もしくは単精度の4×4行列の演算結果を保存することができます。以下にNVIDIAのブログ記事から図を転載します:

この操作は、Deep Neural Networkの学習処理において最も内部のループ処理であり、現在のGPUハードウェアが特定の市場のニーズに対して特化してどのように動作しているかを示しています。そして、Tensorコアの混合精度の性能は、16bitと32bitの浮動小数点の組み合わせを柔軟に扱えることを意味しています。

性能

実際の性能数値を提示することは、より簡易に実際のアプリケーションと関連づけられ、有意義だと考えています。8個のV100 GPUを搭載したp3.16xlargeでは、驚くことに単精度浮動小数点の乗算を1秒に125兆回可能です。

マイクロプロセッサの歴史を振り返って、1977年の夏に私が買ったIntel 8080Aチップを搭載したMITS Altairを考えてみます。2MHzクロックで秒間832回の乗算が可能でした。(このデータを使い、より速いクロックスピードに訂正しました)。p3.16xlargeは約1500億倍も高速です。しかし、その夏から12億秒が経過しました。言い換えると、過去40年に私のAltairが行なった計算に比べ、100倍以上の計算を1秒に実行することが可能となっています!

IBM PC用の追加オプションとして1981年の夏に発表された、革新的な8087数値演算コプロセッサーはどうでしょうか? 5MHzクロックで目的に特化したハードウェアで、秒間52,632回の乗算が可能でした。発表から11.4億秒が経ちましたが、p3.16xlargeは23.7億倍も高速で、当時の小さく貧弱なPCではまだ計算途中の演算が、今日では1秒で可能です。

では、Cray-1はどうでしょう?1976年に発表された最初のスーパーコンピューターは、160MFLOPSのベクトル演算が可能でしたが、p3.16xlargeは781,000倍高速です。当時に比べ、1500回も興味深い問題を繰り返し計算することが可能です。

P3と現在のスケールアウト型スーパーコンピュータの比較は難しくなっています。 スーパーコンピュータのコンポーネントとしてP3を捉え、必要に応じて使うことが可能です。

今すぐ起動できます
V100 GPUとTensorコアの利点を全て享受するには、CUDA 9cuDNN 7が必要です。これらのドライバやライブラリは最新のWindows AMIに追加されており、Amazon Linux AMIにも11月7日に追加予定です。新しいパッケージはAWSのリポジトリで利用可能ですので、必要に応じてすでに利用中のAmazon Linux AMIにインストールできます。

最新のAWS Deep Learning AMIには、Apache MxNet、Caffe2、Tensorflow(それぞれがNVIDIA Tesla V100 GPUをサポート)の最新リリースがプリインストールされており、Microsoft Cognitive ToolkitやPyTorchなどの他の機械学習フレームワークがNVIDIA Tesla V100 GPUのサポートをリリースするとすぐに、P3インスタンスをサポートするように更新されます。また、NVIDIA Volta Deep Learning AMI for NGCを使用することもできます。

P3インスタンスは、米国東部(バージニア北部)、米国西部(オレゴン)、欧州(アイルランド)、アジアパシフィック(東京)のリージョンにて、オンデマンド、スポット、リザーブドインスタンス、Dedicated Hostとして利用可能です。

Jeff;

原文はこちらです。

Amazon EC2 スポットインスタンスを利用した Amazon ECSクラスターの起動

この記事は気前よく次の方から寄贈されました。

Chad Schmutzer, Solutions Architect Shawn O'Conner, Enterprise Solutions Architect
Chad Schmutzer
Solutions Architect
Shawn O’Connor
Solutions Architect

 

本日、Amazon EC2 Container Service(Amazon ECS)が、ECSコンソール上から直接 Amazon EC2 Spot Instances上に ECSクラスターを起動させる機能をサポートする事を発表しました。

スポットインスタンスを利用すると、Amazon EC2の余剰コンピュートキャパシティに入札することが出来ます。スポットインスタンスは通常、オンデマンドインスタンスよりも50-90%安い価格です。スポットインスタンス上でECSクラスターを起動することで、既存のコンテナ化されたワークロードの実行コストを削減したり、同じ予算を維持しながら、コンピュートキャパシティを2倍から10倍に増やすことが可能です。もしくは、その両方を実現することもできます!

スポットインスタンスを利用する場合、インスタンス時間あたりに支払う価格を指定します。現在のスポットプライスを上回る価格で入札している間、スポットインスタンスは起動します。スポットプライスの上昇によりインスタンスが回収された場合、インスタンスが実行された分の時間は請求されません。

ECSコンソールはスポットインスタンスをデプロイするために、 Spot Fleetを利用します。Spot Fleetは、利用者にとって最も良い価格となる様にスポットインスタンスを起動し、コンテナ化したアプリケーションの為にリクエストしたターゲットキャパシティ(インスタンスやvCPUの数で表現される)をデプロイしようします。スポットプライスや、空き容量の変化によってスポットインスタンスが回収された場合、Spot Fleetはターゲットキャパシティを維持しようとします。

コンテナはSpot Fleetが大きくなる多様なリソースプールに適してします。Spot Fleetを利用すると複数のスポットインスタンスプール(インスタンスタイプとアベイラビリティゾーンの組み合わせ)に渡ってキャパシティをプロビジョニング出来き、アプリケーションの可用性を向上させ、時間経過と共に運用コストを削減できます。ECSが提供する拡張性と柔軟性を備えたコンテナ配置システムとSpot Fleetとの組み合わせはコンテナ化されたワークロードを効率的にデプロイし、わずかなコストであらゆる規模のクラスタを容易に管理できます。

従来は、スポットインスタン上へのECSクラスタのデプロイは手動で行われてました。この記事では、ECSコンソール上からのSpot Fleetとの新しいインテグレーションによって、高い可用性とスケーラビリティをどの様に実現し、コンテナ化したワークロードをどの様にコストを削減するのかを紹介します。また、AWS CloudFormationを利用し、スポットインスタンス上にECSクラスターを構築する方法も紹介します。

 

スポットインスタンスで実行するECSクラスタの作成

AWS マネージメントコンソールを利用してECSクラスタを作成することが可能です。

  1. Amazon ECSコンソールを開きます。 https://console.aws.amazon.com/ecs/
  2. ナビゲーションパネル上でClustersを選択します。
  3. Clustersページでは、Create Clusterを選択します。
  4. Cluster nameに名前を入力します。
  5. インスタンス設定では、プロビジョニングモデルとしてSpotを選択します。

ECS Create Cluster - Spot Fleet

配置戦略の選択

2つの利用可能なSpet Fleet配置戦略はDiversified戦略かLower price戦略です。

ECS Spot Allocation Strategies

Spot Fleetで選択した配置戦略は、利用可能なスポットインスタンスプールからSpot Fleetをどの様に満たすかを決定します。diversified戦略を使用すると、スポットインスタンスは全てのプールにわたって分散されます。lowest price戦略を選択した場合、リクエストで指定された最低価格のプールから取得されます。

各インスタンスタイプ(各インスタンスファミリ内のインスタンスサイズ、例えばc4.4xlarge)、各アベイラビリティゾーン、各リージョンで、キャパシティで別れたプールであり、別々のスポットマーケットであることに注意してください。可能な限り異なったインスタンスタイプとアベイラビリティゾーンにまたがって多様にすることで、fleetの可用性を向上することができます。また、時間の経過とともにスポットプライスが上昇することに対しての反応を低くすることができます。

Spot Fleet Market

Spot Fleetに利用するインスタンスタイプを6種類まで選択可能です。この例では、m3,m4,c3,c4,r3,そしてr4のxlargeを選択しています。

Spot Instance Selection

インスタンスの為に入札価格を入力する必要があります。一般的には、オンデマンドインスタンス価格かそれに近い価格で入札するが良い出発点です。そのスポットプールのインスタンスタイプに支払うつもりがある最大価格が入札価格になります。スポット価格が入札価格と同じ、または下回っている間、スポット価格を支払います。低い価格での入札はコストを低減させ、高い価格での入札はインスタンスの中断の確率を下げます。

クラスターに所属するインスタンスの数を設定します。Spot Fleetはリクエストで特定されたターゲットキャパシティを満たす様にスポットインスタンスを起動しようとします。

最新のECS最適化AMIがSpot Fleetがインスタンス時に使用されます。

ストレージとネットワークの設定を行います。多様性と高可用性を実現する為に、複数のアベイラビリティゾーンとなる様にsubnetを選択する様にします。singleのSpot Fleetでは、同じアベイラビリティゾーンにある複数のサブネットを選択する事はできません。

ECSコンテナエージェントがECSのAPIをコールします。エージェントが実行されるコンテナインスタンスはに、エージェントの所有者を知るためにecsInstanceRole IAMポリシーとロールが必要です。

Spot Fleetを利用するマネージドコンピュート環境を作成した場合、入札、起動、インスタンスの終了するためのSpot Fleet権限を付与したロールを作成しなくてはなりません。このロールはECSコンソールから作成できます。

ECSコンソールでの作用はこれだけです!Spot Instance上で稼働するるECSクラスターを起動する為に作成を選択してください。

スポットインスタンス上で稼働するECSクラスターのデプロイにAWS CloudFormationを利用する

リファレンスアーキテクチャとなるAWS CloudFormationテンプレートを公開しています。このテンプレートはCloudFormationスタックの起動や、スポットインスタンス上でのECSクラスタのデプロイがどれくらい簡単をデモンストレーションします。

CloudFormationテンプレートには 以前投稿したSpotインスタンスの終了通知スクリプトだけではなく、いくつかの追加のロギングやその他のサンプル機能が含まれています。Amazon EC2 Spot Instance GitHub上のレポジトリからCloudFormationテンプレートを見つけることができます。

環境に応じてカスタマイズを実施して試してみてください!

Spot Fleet Architecture

終了のハンドリング

スポットインスタンスでは、指定した価格以上を支払う必要はありません。もしスポット価格があるインスタンスで入札を上回った場合、そのインスタンスは自動的に終了されます。

スポットインスタンスの終了を防ぐための最も良い方法は、コンテナ化されたアプリケーションをフォールトトレラントなアーキテクチャにすることです。加えて、スポットインスタンスの終了通知機能を利用することもできます。それはEC2がスポットインスタンスを終了する前に2分間の警告を提供します。

この警告は、インスタンスメタデータ内の項目を使用して、スポットインスタンス上のアプリケーションで使用可能になります。コンソールを利用してスポットインスタンス上にECSクラスターをデプロイした場合、AWSはインスタンス終了通知を5秒毎に確認するスクリプトをインストールします。通知を検知した場合、スクリプトはコンテナインスタンスの状態をDRAININGにただちにに更新します。

簡略したバージョンのスポットインスタンス終了通知は次の様になります。

#!/bin/bash

while sleep 5; do
  if [ -z $(curl -Isf http://169.254.169.254/latest/meta-data/spot/termination-time) ]; then
    /bin/false
  else
    ECS_CLUSTER=$(curl -s http://localhost:51678/v1/metadata | jq .Cluster | tr -d \")
    CONTAINER_INSTANCE=$(curl -s http://localhost:51678/v1/metadata \
      | jq .ContainerInstanceArn | tr -d \")
    aws ecs update-container-instances-state --cluster $ECS_CLUSTER \
      --container-instances $CONTAINER_INSTANCE --status DRAINING
  fi
done

コンテナインスタンスをDRAININGにセットすると、ECSによって、新しいタスクのコンテナインスタンスへの配置がスケジュールされなくなります。リソースが利用可能な場合、代替サービスタスクはクラスター内の別のコンテナインスタンスで開始されます。コンテナインスタンスのドレイニングにより、クラスタ内のタスクに影響を与えない様にクラスターからコンテナインスタンスを削除することができます。PENDING状態にあるコンテナインスタンス上のサービスタスクは直ちに停止します。

コンテナインスタンス上でRUNNING状態にあるサービスタスクは停止し、サービスデプロイ設定パラメータであるminimumHealthyPercentとmaximumPercentに従い、再配置されます。

実際のスポットインスタンス上のECS

どの様にお客様がスポットインスタンス上でECSクラスターをすでに起動しているか知りたいですか?Mapboxにいる友人はこの様にしています。

Mapboxはカスタムマップをデザインし、公開するためのプラットフォームです。同社はマップを作成する為に1日に1億マイルを超えるセンサーデータの収集と実行するバッチプロセッシングアーキテクチャー全体の実行にECSを利用しています。彼らはスポットインスタンスを使用したECSを利用することでバッチプロセッシングアーキテクチャを最適化しています。

Mapboxプラットフォームは5000を超えるアプリケーションを起動し、各月で2億ユーザ以上に達しようとしています。それらのバックエンドはECS上で動いていて、1日あたり13億リクエスト以上を処理しています。Mapbox社の最近のECSへのマイグレーションについてより学びたい場合は、同社のブログである、We Switched to Amazon ECS, and You Won’t Believe What Happened Next. を読んでください。そして、フォローアップ記事である、 Caches to Cashでは、EC2のコストを50-90%節約しながら、同社がスポットインスタンス上でどの様にプラットフォーム全体を動かしているのかを学んでください。

結論

スポットインスタンスを利用してスケールし、コスト効率よくコンテナ化したアプリケーションを動かす事について、私たちと同じ様に読者の方も興奮している事を願います。さらなる情報については、次のページを確認してください。

コメントや提案があるかたは下記よりコメントをください。

原文:Powering your Amazon ECS Cluster with Amazon EC2 Spot Instances(翻訳:SA浅野)