[レポート]無駄のないアーキテクチャの実行:AWSで費用対効果を追求する #ARC209 #reinvent
はじめに
ARC209: Runnning lean architectures : How to be cost-effective on AWSのセッションに関するエントリーです。
[REPEAT 1] Running lean architectures: How to be cost-effective on AWS
このセッションでは、AWSにて無駄のないアーキテクチャを実行するために費用対効果の追求を中心に触れていきます。
- SavingsPlansのすすめ
- 使っていないインスタンスは落とす
- Amazon EC2 Auto Scalingを使う
- HERE.comによるカスタマートーク
- 非同期処理と待ちの繰り返し
- あらゆるものをあらゆる場所でキャッシュ
- AI/MLでの節約
- おさらい
SavingsPlansのすすめ
新しいフレキシブルな価格体系で、Amazon EC2及び Amazon Fargateの利用費を最大72%まで節約します。1年あるいは3年通しての利用を確約します。
Savings Plans – Amazon Web Services
使っていないインスタンスは落とす
開発・テスト・およびトレーニング用のインスタンスが該当します。
インスタンスの開始・停止を活用する
AmazonRDSにて有効です。
アーキテクチャのセットアップを用いたオンオフ
AWS CloudFormation及びHashiCorp、TerraFormあるいはバッチ処理などが使えます。
AWS CloudFormation(テンプレートを使ったリソースのモデル化と管理)| AWS
HashiCorp: Infrastructure enables innovation
Amazon EC2 Auto Scalingを使う
CloudWatchのモニタリングにより、自動的にEC2インスタンスの数を調整します。
- キャパシティを増やすために新しいインスタンスを開始する
- キャパシティを減らすためにインスタンスを終了させる
- インスタンス数の最小・最大値を操作する
これにはAmazon EC2 スポットインスタンスを用いると効果的です。補完的なキャパシティで、価格は需要と供給ベースにて決まり、最大で90%の割引が可能です。わずか2分程度で開始できます。
HERE.comによるカスタマートーク
カスタマートークセッションとして、HERE.comのHERE Cloud Management Teamによる紹介がありました。
構成図についても紹介がありましたが、confidentialのため、このエントリーでの掲載は行いません。
RI利用率の推移
RIの利用率が一年で80%越えに推移。85を越えた利用率を維持。チームでのコストを意識。
構成の拡張
以下のモデルをEC2からRIへ推移させて、基盤プログラムを移行。
- Amazon RDS
- Amazon RedShift
- Amazon ElasticCache
- Amazon ElasticSearch Service
- Amazon DynamoDB
また、構成の変更に対し柔軟性を持たせるためにコンパーチブルRIを追加。
結果
3.5年をかけて、1億5千万ドル以上の節約にて5000万ドル以上の収益を得られました。
非同期処理と待ちの繰り返し
処理時間を短縮することで、利用の節約につなげます。下図は上が同期モデル、下が非同期なやり取りの例となります。
60%のLambda関数実行時間の節約となりました。
AWS Step Functionsを使うことで節約に繋げた例もあります。
Things Go Better With Step Functions | AWS News Blog
あらゆるものをあらゆる場所でキャッシュ
DataBase、App、Web、等ありとあらゆるものがキャッシュできます。
例えば、Amazon CloudFrontは210拠点(37ヶ国、78の街)で静的及び動的なコンテンツをキャッシュしています。リージョンからの直接リクエストよりもコストが抑えられます。
実際にDynamoDBで節約できたグラフの例です。合計秒間2万回の読み込みを秒間3000回まで抑えています。
AI/MLでの節約
具体的な方法と関連するドキュメントへのリンクです。
- 使わないインスタンスを落とす
- Amazon SageMaker notebooks
- ノートブックインスタンスの使用 - Amazon SageMaker
- すべてを自動化
- Amazon SageMaker
- Amazon SageMaker(機械学習モデルを大規模に構築、トレーニング、デプロイ)| AWS
- オートスケーリングを使う
- Amazon SageMaker auto scaling
- Amazon SageMaker のモデルを自動的にスケーリングする - Amazon SageMaker
- スポットインスタンスを使う
- Amazon SageMaker Managed Spot Training
- Amazon SageMaker のマネージドスポットトレーニング - Amazon SageMaker
費用効果のよいMLパイプラインの作成
- データプレパレーションにAWSマネージド・サービスを用いる。
- Amazon Athena, AWS Glue, AWS Lake Formation等
- ラベリングにAmazon SageMaker Ground Truthを用いる
- アクティブ・ラーニングは70%以上のラベリングコスト削減が可能です
- Amazon SageMaker notebooksの開始停止を自動化
- Amazon SageMaker notebooksのサイズを軽量化
MLモデルトレーニングの節約
- notebookインスタンス上での大きなデータセットによるトレーニングを避ける
- 小さく開始し、最初にスケールアウトしてからスケールアップすることで軽量化
- Amazon SaegMaker Managed Spot Trainingの活用
- チェックポイントを活用することでジョブを調整します。
- TensorFlow、MXNetあるいはそれら以外での、AWS提供版を活用する
- IO最適化されたTFRecord(TensorFlow)かRecordIO(MXNet, Amazon algorithms)を活用する
プロダクションでのinference(推測)/MLの節約
- MLの最大コスト要因はinference
- 最適化された実行環境作成のためAmazon SageMaker Neoを活用する
- 可能であればリアルタイム予測の代わりにbatch transformを用いる
- 不要なエンドポイントは削除する
- エンドポイントの分割の代わりにinferenceパイプラインとマルチモデルエンドポイントを活用する
- inferenceのインスタンスタイプを軽量化する
- 最大75%のコスト節約のためにAmazon Elastic inferenceを活用する
おさらい
- EC2スポットインスタンス、RI、そしてSavingsPlansを使う
- 使っていないインスタンスは落とす
- Amazon EC2 AutoScalingを使った自動化
- 非同期処理と待ちの繰り返し
- あらゆるものをあらゆる場所でキャッシュ
- マネージドサービスを活用する
- AI/ML Amazon SageMakerの高度な機能を活用する
関連コンテンツ
- aws-well-architected-labs/arc219
- aws-well-architected-labs/arc219.md at master · awslabs/aws-well-architected-labs
- aws-well-architected-labs/ent206
- aws-well-architected-labs/ent206.md at master · awslabs/aws-well-architected-labs
過去のコスト最適化セッション
- AWS re:Invent 2018: Running Lean Architectures: How to Optimize for Cost Efficiency (ARC202-R2)
- AWS AWS re:Invent 2017: Running Lean Architectures: How to Optimize for Cost Efficiency (ARC303)
- AWS re:Invent 2016: Running Lean Architectures: How to Optimize for Cost Efficiency (ARC313)
あとがき
AWSにおけるコスト節約に関するセッションでした。AWS Well-Architected programにもコスト最適化の資料があります。必要に応じて参照してください。