PERF02-BP02 利用可能なコンピューティング設定オプションについて理解する - AWS Well-Architected Framework

PERF02-BP02 利用可能なコンピューティング設定オプションについて理解する

各コンピューティングソリューションには、ワークロードの特性をサポートするために使用できるオプションと設定があります。さまざまなオプションがワークロードをどのように補完するか、またアプリケーションにどの設定オプションが最適かをご紹介します。これらのオプションの例には、インスタンスのファミリー、サイズ、機能 (GPU、I/O)、バースト、タイムアウト、関数サイズ、コンテナインスタンス、並行性などがあります。

期待される成果: CPU、メモリ、ネットワークスループット、GPU、IOPS、トラフィックパターン、データアクセスパターンなどのワークロードの特性を文書化し、ワークロードの特性に合わせてコンピューティングソリューションを設定するために使用されます。これらの各メトリクスと、お客様のワークロードに特化したカスタムメトリクスを記録、監視し、コンピューティング設定を最適化することで、要件に最適に対応します。

一般的なアンチパターン:

  • オンプレミスで使用していたコンピューティングソリューションをそのまま使用する。

  • ワークロードの特性に合ったコンピューティングオプションやインスタンスファミリーを見直さない。

  • バースト能力を確保するためにコンピューティングを過剰にする。

  • 同じワークロードに対して複数のコンピューティング管理プラットフォームを使用する。

このベストプラクティスを確立するメリット: AWS のコンピューティングサービスをよく理解し、それぞれのワークロードに適したソリューションを決定できるようにしましょう。ワークロードのコンピューティングサービスを選択したら、それらがワークロードのニーズをどの程度満たしているかを迅速に実験することができます。ワークロードの特性に合うように最適化されたコンピューティングソリューションを使用することで、パフォーマンス改善、コスト削減、信頼性向上を実現できます。

このベストプラクティスが確立されていない場合のリスクレベル:

実装のガイダンス

ワークロードで同じコンピューティングオプションを 4 週間以上使用しており、その特性が今後も変わらないと予想される場合は、 AWS Compute Optimizer を使用して、コンピューティング特性に基づいた推奨事項を提供することができます。メトリクスが足りない、インスタンスタイプがサポートされていない、特性が変わることが予想されるなどの理由から、AWS Compute Optimizer を使用できない場合は、負荷テストや 実験を基にメトリクスを予測する必要があります。 

実装手順:

  1. EC2 インスタンスで実行していますか、それとも EC2 起動タイプのコンテナで実行していますか。

    1. ワークロードで GPU を使用してパフォーマンスを高めることができますか。

      1. 高速コンピューティング インスタンスとは GPU ベースのインスタンスで、機械学習のトレーニング、推論、ハイパフォーマンスコンピューティング向けに最も高いパフォーマンスを提供します。

    2. ワークロードで機械学習推論アプリケーションを実行していますか。

      1. AWS Inferentia (Inf1) — Inf1 インスタンスは、機械学習推論アプリケーションをサポートするために構築されています。Inf1 インスタンスを使用すると、画像認識、音声認識、自然言語処理、パーソナライゼーション、不正行為検出といった大規模な機械学習推論アプリケーションを実行できます。モデルは、TensorFlow、PyTorch、MXNet などの一般的な機械学習フレームワークのいずれかで構築し、GPU インスタンスを使用してトレーニングできます。要件に合わせて機械学習モデルをトレーニングしたら、AWS Neuron を使用して Inf1 インスタンスにモデルをデプロイできます。 AWS Neuronは、Inferentia チップの機械学習推論パフォーマンスを最適化するコンパイラー、ランタイム、プロファイリングツールで構成される専用のソフトウェア開発キット (SDK) です。

    3. パフォーマンス向上のために、ワークロードを低レベルのハードウェアと統合していますか。 

      1. フィールドプログラマブルゲートアレイ (FPGA) — FPGA を使用することで、最も要求の厳しいワークロードをカスタムハードウェアで加速して実行することができ、ワークロードを最適化することができます。サポートされる、C や Go などの一般的なプログラミング言語や、Verilog や VHDL などのハードウェア指向の言語を利用してアルゴリズムを定義できます。

    4. 少なくとも 4 週間分のメトリクスがあり、トラフィックパターンとメトリクスが今後もほぼ同じになると予測できますか。

      1. 予想されるコストと使用状況に合わせたカスタムの予算を設定するには、 Compute Optimizer を使用して、コンピューティング特性に最適なコンピューティング構成に関する機械学習の推奨事項を取得します。

    5. ワークロードのパフォーマンスは CPU のメトリクスによって制限されていますか。 

      1. コンピューティング最適化 インスタンスは、高性能プロセッサーを必要とするワークロードに適しています。 

    6. ワークロードのパフォーマンスはメモリのメトリクスによって制限されていますか。 

      1. メモリ最適化 インスタンスは大量のメモリを提供し、メモリを集中的に使用するワークロードをサポートします。

    7. ワークロードのパフォーマンスは IOPS によって制限されていますか。

      1. ストレージ最適化 インスタンスは、ローカルストレージへの高いシーケンシャルな読み書きアクセス (IOPS) を必要とするワークロード向けに設計されています。

    8. ワークロードの特性は、すべてのメトリクスにおいてバランスの取れたニーズを示していますか。

      1. ワークロードの CPU にはトラフィックの急上昇に対応するためのバーストが必要ですか。

        1. バーストパフォーマンス インスタンスは、コンピューティング最適化インスタンスに似ていますが、コンピューティング最適化インスタンスに見られる固定 CPU ベースラインを超えてバーストできるという点が異なります。

      2. 汎用 インスタンスは、あらゆる特性においてバランスが取れており、さまざまなワークロードをサポートします。

    9. コンピューティングインスタンスは Linux で実行されており、ネットワークインターフェイスカードのネットワークスループットによって制限されていますか。

      1. 「 パフォーマンスに関する質問 5、ベストプラクティス 2: 使用可能なネットワーク機能を評価する 」を確認し、パフォーマンスのニーズに合った適切なインスタンスのタイプおよびファミリーを特定します。

    10. ワークロードは、特定のアベイラビリティゾーンで 1 年間コミットできる、一貫性のある予測可能なインスタンスを必要としますか。 

      1. リザーブドインスタンス を使用すると、特定のアベイラビリティーゾーン内でキャパシティ予約が確定されます。リザーブドインスタンスは、特定のアベイラビリティゾーンでコンピューティング性能が必要な場合に最適です。 

    11. ワークロードには、専用ハードウェアを必要とするライセンスがありますか。

      1. 専有ホスト は、既存のソフトウェアライセンスをサポートし、コンプライアンス要件への準拠を支援します。

    12. コンピューティングソリューションはバーストし、同期処理が必要ですか。

      1. オンデマンドインスタンス では、1 時間または 1 秒単位でコンピューティング性能を利用でき、長期的な契約は必要ありません。このインスタンスは、パフォーマンスのベースラインを超えるようなバースト的なニーズに適しています。

    13. コンピューティングソリューションは、ステートレスでフォールト トレラント、かつ非同期ですか。 

      1. スポットインスタンス では、未使用のインスタンスキャパシティをステートレスでフォールトトレラントなワークロードに活用できます。 

  2. コンテナを Fargateで実行していますか。

    1. タスクのパフォーマンスはメモリまたは CPU によって制限されていますか。

      1. メモリまたは CPU を調整するために、 タスクサイズ を使用します。

    2. トラフィックパターンのバーストによって、パフォーマンスが影響を受けていますか。

      1. トラフィックパターンに合わせるために、 Auto Scaling の設定を使用します。

  3. コンピューティングソリューションは Lambda上にありますか。

    1. 少なくとも 4 週間分のメトリクスがあり、トラフィックパターンとメトリクスが今後もほぼ同じになると予測できますか。

      1. 予想されるコストと使用状況に合わせたカスタムの予算を設定するには、 Compute Optimizer を使用して、コンピューティング特性に最適なコンピューティング構成に関する機械学習の推奨事項を取得します。

    2. AWS Compute Optimizer を使用するのに十分なメトリクスがありますか。

      1. Compute Optimizer を使用するのに必要なメトリクスがない場合は、 AWS Lambda Power Tuning を使用して最適な設定を選択できます。

    3. 関数のパフォーマンスはメモリまたは CPU によって制限されていますか。

      1. パフォーマンスニーズのメトリクスを満たすように Lambda メモリ を設定します。

    4. 関数が実行時にタイムアウトしていますか。

      1. タイムアウトの設定 を変更します。

    5. 関数のパフォーマンスはアクティビティと並行処理のバーストによって制限されていますか。 

      1. パフォーマンス要件を満たすように 並行処理の設定 を行います。

    6. 関数が非同期で実行され、再試行で失敗していますか。

      1. イベントの最大経過時間と最大再試行回数を 非同期設定 で指定します。

実装計画に必要な工数レベル: 

このベストプラクティスを確立するには、現在のコンピューティングの特性とメトリクスを把握している必要があります。こうしたメトリクスを収集し、ベースラインを確立した上で、これらのメトリクスを使用して最適なコンピューティングオプションを特定するには、 程度の工数が必要です。これは、負荷テストや実験によって検証するのが最善です。

リソース

関連ドキュメント:

関連動画:

関連サンプル: