このトピックでは、準リアルタイム推論シナリオ、準リアルタイム推論シナリオでオンデマンドGPUアクセラレーションインスタンスを使用する方法、および準リアルタイム推論シナリオで費用対効果の高いサービスを構築する方法について説明します。
概要
準リアルタイム推論シナリオのワークロードには、次の1つ以上の特性があります。
スパース呼び出し
毎日の呼び出しの数は数から数万の範囲であり、GPUリソースの実際の毎日の使用時間は、通常の使用時間である8〜12時間よりもはるかに短いです。 その結果、多くのGPUリソースがアイドル状態になることがよくあります。
長い処理時間
ほとんどの場合、準リアルタイム推論の処理時間は数秒から数分の範囲です。 例えば、典型的なコンピュータビジョン (CV) タスクの処理は数秒以内に完了し、ビデオタスクおよびAI生成コンテンツ (AIGC) タスクの処理は数分以内に完了する。
耐え難い寒さの始まり
GPUのコールドスタートは許容できるか、ビジネストラフィックが変動する場合はコールドスタートの可能性が低くなります。
Function ComputeのGPU高速化インスタンスは、準リアルタイム推論のワークロードに次の利点をもたらします。
ネイティブサーバーレス
Function Computeが提供するオンデマンドGPU高速化インスタンスは、GPUリソースを自動的に管理します。 リソースは、トラフィックの変化に基づいて自動的にスケーリングできます。 オフピーク時には、リソースをゼロにスケールダウンできます。 ピーク時には、リソースを数秒でスケールアップできます。 Function Computeでビジネスをデプロイすると、インフラストラクチャはFunction Computeによって完全に管理されます。 この方法では、ビジネスの反復のみを管理する必要があります。
最適な仕様
Function Computeは、ビジネス要件を満たすためにGPU高速化インスタンスのさまざまな仕様を提供します。 さまざまな種類のグラフィックカードを選択し、カスタムvCPU、vGPU、メモリ、およびディスクの仕様を設定できます。 vGPUメモリの最小サイズは1 GBです。
最適なコスト効率
Function Computeは、従量課金と1秒あたりの課金方法をサポートしています。 これは、リソースコストの削減に役立ちます。 GPUの使用率が低いワークロードの場合、コストを70% 以上削減できます。
トラフィックスパイクのサポート
Function Computeは豊富なGPUリソースを提供します。 ビジネスでトラフィックバーストが発生すると、Function Computeは数秒で多数のGPUコンピューティングリソースを提供します。 これにより、GPUコンピューティングパワーの供給不足や遅延によるビジネスへの悪影響を防ぐことができます。
ワークフロー
デフォルトでは、Function ComputeはオンデマンドのGPU高速化インスタンスを割り当て、GPU関数のデプロイ後に準リアルタイム推論シナリオのインフラストラクチャを提供します。 オンデマンドインスタンスとプロビジョニングされたインスタンスの違いについては、「インスタンスタイプと使用モード」をご参照ください。
推論リクエストをGPU関数のトリガーに送信できます。 たとえば、HTTPリクエストをHTTPトリガーに送信して、関数の実行をトリガーできます。 関数がトリガーされると、GPUコンテナでモデル推論を実行し、推論結果をレスポンスで返します。 Function Computeは、ビジネス要件を満たすようにGPUリソースを自動的に調整およびスケーリングできます。 リクエスト処理中に使用されたGPUリソースに対してのみ料金を支払う必要があります。
コンテナーのサポート
Function ComputeのGPU高速化インスタンスは、カスタムコンテナランタイムでのみ使用できます。 カスタムコンテナランタイムの詳細については、「カスタムコンテナの概要」をご参照ください。
カスタムコンテナ関数では、イメージ内で実行されるwebサーバーが、イベントまたはHTTPリクエストを介してさまざまなコードパスとトリガー関数を実行する必要があります。 webサーバーモードは、AI学習や推論などのマルチパス要求実行シナリオに適しています。
GPU高速化インスタンスの仕様
推論シナリオでは、ビジネスで必要とされる計算能力に基づいて、さまざまなGPUタイプを選択し、GPUアクセラレーションインスタンスの仕様を構成できます。 GPU高速化インスタンスの仕様には、CPU、GPUメモリ、メモリ、およびディスク容量が含まれます。 GPUアクセラレーションインスタンスの仕様の詳細については、「インスタンスの仕様」をご参照ください。
デプロイ方法
次のいずれかの方法を使用して、Function Computeにモデルをデプロイできます。
Function Computeコンソールを使用します。 詳細については、「function Computeコンソールでの関数の作成」をご参照ください。
SDKを呼び出します。 詳細については、「機能別操作一覧」をご参照ください。
Serverless Devsを使用します。 詳細については、「Serverless Devsの一般的なコマンド」をご参照ください。
その他のデプロイ例については、「start-fc-gpu」をご参照ください。
同時要求
GPU関数がリージョンで処理できる同時リクエストの最大数は、GPUアクセラレーションインスタンスの同時実行性と使用できるグラフィックカードの最大数に基づいています。
GPU高速化インスタンスの同時実行性
デフォルトでは、GPUアクセラレーションインスタンスの同時実行性は1に設定されています。つまり、インスタンスは一度に1つのリクエストしか処理できません。 Function Computeコンソールまたはサーバーレスデバイスを使用して、必要に応じてGPUアクセラレーションインスタンスの同時実行性を変更できます。 詳細については、「web関数の作成」をご参照ください。 次の項目では、さまざまなシナリオで推奨される同時実行設定について説明します。
計算集約型推論アプリケーション: デフォルト値1を使用することを推奨します。
リクエストのバッチ集約をサポートする推論アプリケーション: バッチで集約できる推論リクエストの数に基づいて同時実行設定を構成することを推奨します。
使用できるグラフィックカードの最大数
デフォルトでは、Alibaba Cloudアカウント内のリージョンに割り当てることができるGPUの最大数は30です。 クォータセンターコンソールで実際のクォータを確認できます。 現在のクォータがビジネス要件を満たせない場合は、クォータセンターコンソールでクォータ調整を申請できます。
コールドスタート
一定期間リクエストが処理されていない場合、Function ComputeはすべてのオンデマンドGPUアクセラレーションインスタンスを自動的にリリースします。 この場合、最初の新しいリクエストが到着したときにコールドスタートが発生します。これは、Function Computeがリクエストを処理する新しいインスタンスをセットアップするために追加の時間を必要とするためです。 このプロセスには、GPUリソースの準備、コンテナイメージの取得、GPUコンテナの起動、アルゴリズムモデルのロードと初期化、推論アプリケーションの起動が含まれます。 これらのステップの各々は、全体的なコールドスタート期間に寄与する。 詳細については、「コールドスタートの待ち時間を短縮するためのベストプラクティス」をご参照ください。
AIアプリケーションのコールドスタートの期間は、画像サイズ、モデルサイズ、および初期化にかかる時間によって異なります。 モニタリング指標を使用して、コールドスタートにかかる時間を観察し、コールドスタートの確率を推定できます。
コールドスタートの期間
次の図は、Function ComputeのGPUアクセラレーションインスタンスの一般的なモデルのエンドツーエンドのコールドスタートの期間を示しています。

エンドツーエンドのコールドスタートに必要な時間は、10〜30秒の範囲です。 時間は、コールドスタートと最初のリクエストの処理によって消費される合計時間です。
コールドスタートの確率
Function ComputeのサーバーレスGPUのコールドスタートは、数秒以内に完了できます。 KubernetesベースのプラットフォームでGPUをコールドスタートするには、数分かかります。 Function Computeインスタンスのコールドスタートの確率は、インスタンスの同時実行性が高くなるにつれて低下します。 コールドスタートが少ないと、ビジネスへの影響が少なくなります。
コスト評価
以下の例で提供される単価は、参考のためだけのものである。 ビジネスマネージャーが提供する実際の価格が優先されます。
Function Computeを使用する前の毎日のGPU使用率が低いほど、Function Computeを使用した後のコストを節約できます。
次の例では、ECS (Elastic Compute Service) のGPU高速化インスタンスをFunction ComputeのGPU高速化インスタンスと比較します。 どちらのインスタンスもTesla T4 GPUを使用しています。 GPU高速化Function Computeインスタンスと同じGPU仕様を持つGPU高速化ECSインスタンスの単価は約です。
USD 2 /時間。 課金の詳細については、「Elastic GPUサービスの課金」をご参照ください。
例 1
GPU関数に対して1日あたり1秒間持続する3,600の呼び出しが開始されるとします。 この関数は、メモリが4 GB、モデルサイズが3 GBのGPUアクセラレーションインスタンスを使用します。
毎日のGPU使用率は4.1% です。 GPU使用率は、以下の式を使用することによって計算される: 3,600/86,400 = 0.041。 この場合、GPUのメモリ使用量は除外されます。
ECSでGPUリソースを使用するために請求される1日あたりの料金はUSD 48です。 料金は次の式を使用して計算されます: 2 × 24 = 48。
Function ComputeでGPUリソースを使用するために請求される1日あたりの料金はUSD 0.259です。 料金は次の式を使用して計算されます: 3,600 × 4 × 0.000018 = 0.259。
Function ComputeのGPU高速化インスタンスは、コストを99% 以上削減します。
例 2
それぞれ1秒間続く50,000の呼び出しが、GPU関数に対して1日あたりに開始されると仮定します。 この関数は、メモリが4 GB、モデルサイズが3 GBのGPUアクセラレーションインスタンスを使用します。
毎日のGPU使用率は57% です。 GPU使用率は、以下の式を使用することによって計算される: 50,000/86,400 = 0.57。 この場合、GPUのメモリ使用量は除外されます。
ECSでGPUリソースを使用するために請求される1日あたりの料金はUSD 48です。 料金は次の式を使用して計算されます: 2 × 24 = 48。
Function ComputeでGPUリソースを使用するために請求される1日あたりの料金はUSD 3.6です。 料金は、次の式を使用して計算されます。50,000x4x0.000018 = 3.6。
Function ComputeのGPU高速化インスタンスは、コストを90% 以上削減します。