Application Load Balancer (ALB) を使用した Elastic Container Instance スケーリンググループを使用することで、ゾーンをまたがる、弾力性と高可用性を備えた推論モデルを迅速に作成できます。
ソリューション概要
このソリューションは、復元力を確保するために、ゾーンをまたがる高可用性アーキテクチャを採用しています。推論モデルを搭載した Elastic Container Instance は、単一リージョン内の複数のゾーンにデプロイされ、ゾーンレベルのディザスタリカバリを実現します。トラフィックは ALB インスタンスを介してインテリジェントにルーティングされ、最適な負荷分散を実現します。一方、Object Storage Service (OSS) は一元化されたモデルウェアハウスとして機能し、業務継続性とデータ信頼性の両方を保証します。ソリューションのアーキテクチャを以下の図に示します。
ソリューションのメリット
SPOF の回避: 単一障害点 (SPOF) を防ぐために、複数の Elastic Container Instance がビジネスワークロードを同時に処理し、システムの安定性を高め、中断のリスクを最小限に抑えます。
自動スケーリング: システムはスケーリンググループを使用して推論サービス クラスタを管理し、コンテナ インスタンスの数を動的に調整して迅速な水平スケーリングを可能にします。さらに、リアルタイムのビジネス負荷に基づいてオンデマンドで拡張するための自動スケーリング ポリシーをサポートしています。
手順
クラスタ ネットワークを計画します。 仮想プライベート クラウド (VPC) をセットアップし、複数のゾーンに vSwitch を作成して、クラスタの基本ネットワーク環境を確立します。
OSS バケットを作成します。 モデルの重みファイルはこのバケットに保存されます。
インスタンス RAM ロールを構成します。 Resource Access Management (RAM) ロールは、手順 2 で作成した OSS バケットにアクセスするための権限を Elastic Container Instance に付与するために使用されます。
イメージ キャッシュを準備します。 Elastic Container Instance コンソールでイメージ キャッシュを作成してインスタンスの起動を高速化し、モデルの重みファイルを OSS バケットにアップロードします。
ALB インスタンスを作成します。 ALB インスタンスはサービス アクセス ポータルとして機能します。
スケーリンググループを作成します。 スケーリンググループを作成し、ALB インスタンスに関連付けます。新しく追加された Elastic Container Instance はすべて、ALB のバックエンド サーバー グループに自動的に登録されるようにします。
推論サービスをアクティブにします。 スケーリンググループの予想インスタンス数を更新し、推論サービスを開始してから、サービスが完全に実行されるまで待ちます。
1. クラスタ ネットワークを計画およびセットアップする
信頼性の高いクラスタ ネットワークを確保するには、まずネットワーク インフラストラクチャを計画し、次に設計に従って VPC と vSwitch を作成します。高可用性を実現するために、Elastic Container Instance などのリソースを複数のゾーンに分散します。これにより、単一ゾーンで障害が発生した場合のサービス中断を防ぎます。このソリューションでは、1 つの VPC と 2 つの vSwitch を使用して冗長性を実現します。クラスタ ネットワークをセットアップするには、次の手順を実行します。
既存の VPC を再利用して、この手順をスキップできます。
console に移動します。以下の図の手順に従って、1 つの VPC と 2 つの vSwitch を作成します。
①②: 左側のナビゲーションウィンドウで [VPC] をクリックし、次に [VPC の作成] をクリックします。

③: [リージョン] パラメーターを China (Hangzhou) に設定します。
④: [名前] パラメータを
vpc-ess-hangzhouに設定します。⑤: [IPv4 CIDR ブロック] パラメータを 192.168.0.0/16 に設定します。

vSwitch 1:
⑥: [名前] パラメータを
vSwitch-jに設定します。⑦: [ゾーン] パラメーターを Hangzhou Zone J に設定します。
⑧: [IPv4 CIDR ブロック] パラメータを 192.168.0.0/24 に設定します。
⑨: [追加] をクリックして、別の vSwitch を作成します。

vSwitch 2:
⑩: [名前] パラメータを
vSwitch-kに設定します。⑪: [ゾーン]杭州ゾーンK パラメータを に設定します。
⑫: [IPv4 CIDR ブロック] パラメータを 192.168.1.0/24 に設定します。

[OK] をクリックし、VPC が作成されるまで待ちます。
2. OSS バケットを作成する
ネットワーク環境がセットアップされたら、モデルの重みファイルを保存するための OSS バケットを作成します。このファイルには、後でエラスティックコンテナインスタンスからアクセスされます。 OSS バケットを作成するには、次の手順を実行します。
既存の OSS バケットを再利用して、この手順をスキップできます。
[作成] をクリックします。
3. インスタンス RAM ロールを作成する
この手順では、インスタンス RAM ロールが作成され、OSS バケットへのアクセス許可が割り当てられます。 Elastic Container Instance は後でこのロールをアシュームして、OSS バケットからモデルの重みファイルを読み取ることができます。インスタンス RAM ロールを作成するには、次の手順を実行します。
RAM console に移動して、RAM ロールを作成します。次の図は、この例の主要なパラメータ設定を示しています。
①: [ロールの作成] をクリックします。

②: [プリンシパル タイプ] パラメータを [クラウド サービス] に設定します。
③: [プリンシパル名] パラメータを [Elastic Compute Service/ECS] に設定します。
④: [OK] をクリックし、プロンプトに従って RAM ロールの名前を構成します。

RAM ロール に移動して、次の図に示すようにカスタム ポリシーを作成します。
①: [ポリシーの作成] をクリックします。
②: [JSON] タブをクリックします。


③ このポリシーは、OSS バケットにアクセスするために必要なすべての権限を付与します。ポリシー スクリプトは次のとおりです。
重要カスタム ポリシーを構成するときは、
<bucket_name>を実際に作成したバケットの名前に置き換えます。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:<bucket_name>", "acs:oss:*:*:<bucket_name>/*" ] } ] }[OK] をクリックし、プロンプトに従ってポリシー名を構成します。
console に移動して、カスタム ポリシーを RAM ロールに割り当てます。
①②:WordPress [権限付与] > を選択します。
③: [プリンシパル] パラメータを作成した RAM ロールに設定します。
④: [ポリシー] パラメータを作成したカスタム ポリシーに設定します。

[権限を付与] をクリックします。
4. イメージ キャッシュとモデルの重みファイルを準備する
イメージキャッシュこのソリューションでは、Elastic Container Instance で使用されるイメージ ファイルが大きくなっています。インスタンスの起動を高速化するには、Elastic Container Instance コンソールでイメージ キャッシュを作成します。モデルの読み込みを高速化するには、モデルの重みファイルを OSS バケットにダウンロードする必要もあります。
console に移動して、イメージ キャッシュを作成します。
①②: [イメージキャッシュ > イメージキャッシュの作成] を選択します。

③④: [リージョンとゾーン] セクションを設定します。選択したリージョンが手順 1 で指定した VPC のリージョンと一致し、ゾーンが手順 1 で指定した vSwitch のゾーンの 1 つと一致することを確認します。
⑤⑥: [ネットワーク タイプ] セクションを設定します。 VPC が手順 1 で指定したものと一致し、vSwitch が手順 1 にリストされている vSwitch のいずれかと一致することを確認します。
⑦: [EIP] パラメータを既存の Elastic IP アドレス (EIP) に設定します。 EIP が存在しない場合は、[EIP] コンソールで EIP を作成します。作成が完了したら、更新アイコン
をクリックしてドロップダウン リストを更新し、EIP を選択します。⑧: [セキュリティ グループ] パラメータを既存のセキュリティ グループに設定します。セキュリティ グループが存在しない場合は、[セキュリティ グループを作成] をクリックします。作成が完了したら、このページに戻ってセキュリティ グループを選択します。
⑨: [イメージ キャッシュ名] パラメータを vllm に設定します。
⑩: [キャッシュ サイズ] パラメータを 100 GB に設定します。
⑪: [イメージ] パラメータを
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllmに設定します。⑫: [バージョン番号] パラメータを
0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04に設定します。

ヒント:イメージが作成されるまで待ちます。イメージ キャッシュの作成には約 15 分かかります。しばらくお待ちください。 console の [イメージ キャッシュ] ページで作成の進捗状況を確認できます。

console で一時的な Elastic Container Instance を起動して、モデルの重みファイルを OSS バケットにダウンロードします。
①②: [コンテナグループ > コンテナグループの作成] を選択します。

③: [課金方法] パラメーターを 従量課金制 に設定します。
④: [リージョン] パラメーターを、手順 1 の VPC のリージョンと一致するように設定します。この例では、リージョンは China (Hangzhou) です。
⑤: [VPC] パラメータを手順 1 で作成した VPC に設定します。
⑥: [vSwitch] パラメータを手順 1 で作成した vSwitch のいずれかに設定します。
⑦: プロンプトに従って [セキュリティ グループ] パラメータを設定します。

コンテナ グループの構成:
⑧: [vCPU] パラメータを 2 vCPU に設定します。
⑨: [メモリ] パラメータを 4 GiB に設定します。
⑩: [コンテナーの実行および終了後] パラメーターを [失敗時] に設定します。

詳細設定:
⑪: [詳細設定] セクションを表示します。
⑫: [イメージ キャッシュを自動的に一致させる] チェックボックスをオンにします。
⑬: [OSS の永続性] タブをクリックします。
⑭: [名前] パラメータを
oss-dataに設定します。⑮: [バケット] パラメーターを、手順 2 で作成したバケットに設定します。
⑯: [RAM ロール] パラメーターを、手順 3 で作成したインスタンス RAM ロールに設定します。
⑰: [一時ストレージ] パラメータを 100 GiB に設定します。

コンテナの構成:
⑱: [イメージ] パラメータを
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllmに設定します。⑲:注意: をクリックして、
0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04を選択します。⑳:起動コマンド 次の起動コマンドを次の図に示すように テキスト ボックスにコピーします。
/bin/bash -c git-lfs clone https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.git /oss-data/DeepSeek-R1-Distill-Qwen-7Bコマンドの意味: git-lfs を使用して ModelScope リポジトリからモデルをクローンし、
/oss-data/DeepSeek-R1-Distill-Qwen-7Bディレクトリに保存します。
container-1 詳細設定:
㉑: [container-1 詳細設定] セクションを表示します。
㉒: [vCPU] パラメータを 2 vCPU に設定します。
㉓: [メモリ] パラメータを 4 GiB に設定します。
㉔: [ストレージ] を有効にして、[追加] をクリックして OSS バケットをマウントします。
㉕:ボリュームを選択 パラメータを
oss-dataに設定します。㉖: [マウント パス] パラメータを
/oss-dataに設定します。㉗: [次へ:その他の設定] をクリックします。

㉘: [EIP] パラメータを [自動作成] に設定します。
㉙: [最大帯域幅] パラメータを 200 Mbps に設定します。
㉚: [構成の確認] をクリックし、プロンプトに従ってインスタンスの作成を完了します。

Elastic Container Instance が作成されると、モデルの重みファイルが自動的にダウンロードされます。ダウンロードが完了するのを待っている間に、手順 5 と 6 に進むことができます。
5. ALB インスタンスを作成する
Elastic Container Instance クラスタを作成する前に、まずアクセス ポータルとして ALB インスタンスをセットアップする必要があります。 ALB インスタンスを作成するには、次の手順を実行します。
console に移動して、ALB インスタンスを作成します。
①②: [インスタンス] > [ALB の作成] を選択します。

③: [リージョン] パラメータを手順 1 の VPC のリージョンと一致するように設定します。この例では、リージョンは [中国 (杭州)] です。
④: [ネットワーク タイプ] パラメータを [インターネット向け] に設定して、インターネット アクセスを有効にします。
⑤: [VPC] パラメータを手順 1 で作成した VPC に設定します。
⑥: [ゾーン] パラメータを設定し、手順 1 で作成した vSwitch を選択します。
⑦: [インスタンス名] パラメータを
alb-eci-deepseek-7Bに設定します。⑧: [今すぐ購入] をクリックし、プロンプトに従ってインスタンスの作成を完了します。


console に移動して、リスナーとバックエンド サーバー グループを構成します。
①②: 以前に作成した ALB インスタンスを見つけ、[アクション] 列の [リスナーの作成] をクリックします。
ALB がリストされていない場合は、ページの左上隅にあるドロップダウン リストから別のリージョンを選択してみてください。

③:おめでとうございます!HTTP パラメータを に設定します。
④: リスナーポート パラメーターを 80 に設定します。
⑤: [次へ] をクリックします。
⑥: [サーバー グループの作成] をクリックします。


⑦: [サーバー グループ タイプ] パラメータを [サーバー] に設定します。
⑧: [サーバー グループ名] パラメータを
eci-deepseek-7Bに設定します。⑨: [VPC] パラメータを手順 1 で作成した VPC に設定します。この値は自動的に入力されます。
⑩: [バックエンド サーバー プロトコル]HTTP パラメータを に設定します。
⑪⑫: [ヘルスチェック] を有効にして、[変更] をクリックして、必要に応じてヘルスチェック設定を変更します。
⑬: [ヘルスチェック方法] パラメータを [GET] に設定します。
⑭:ヘルスチェックパス パラメータを
/healthに設定します。推論サービスが開始されたら、/healthパスをチェックしてステータスを確認します。⑮⑯⑰: [作成]、[作成]、[次へ]、送信 をクリックします。





6. スケーリンググループを作成する
スケーリンググループを作成して ALB インスタンスに関連付けると、Elastic Container Instance が自動的にプロビジョニング、管理され、負荷分散のために ALB のバックエンド サーバー グループに追加されます。
Auto Scaling console に移動して、スケーリンググループを作成し、ALB インスタンスに関連付けます。
①②③: [スケーリンググループ > 作成] を選択します。

④: [スケーリンググループ名] パラメータを
deepseek-7B-serversに設定します。⑤: [タイプ] パラメータを [ECI] に設定します。
⑥: [インスタンス構成ソース] パラメータを [最初から作成] に設定します。
⑦: [最小インスタンス数] パラメータを 0 に設定します。このパラメータは、スケーリンググループ内のインスタンス数の下限を指定します。
⑧: [最大インスタンス数] パラメータを 10 に設定します。このパラメータは、スケーリンググループ内のインスタンス数の上限を指定します。
⑨: [VPC] パラメータを手順 1 で作成した VPC に設定します。
⑩: [vSwitch] パラメータを手順 1 で作成した vSwitch に設定します。
⑪: [詳細設定を表示] をクリックします。

詳細設定:
⑫⑬: [予想インスタンス数] パラメータを 0 に設定します。
⑭: [サーバー グループの追加] をクリックし、[タイプ] パラメータを [ALB] に設定します。
⑮: [サーバー グループ] パラメータを手順 5 で作成したサーバー グループに設定します。
⑯: [ポート番号] パラメータを
30000に設定します。 Elastic Container Instance にデプロイされた推論サービスは、外部アクセス用にこのポートを公開します。⑰: [作成] をクリックします。スケーリンググループが作成されるまで待ち、次にプロンプトに従ってスケーリング設定をセットアップします。


Auto Scaling console に移動して、スケーリング設定を作成します。
スケーリング設定は、スケーリンググループ内のインスタンスのテンプレートを定義します。スケールアウトすると、この設定をブループリントとして使用して新しいインスタンスが起動されます。スケーリング設定を作成するには、次の手順を実行します。
①②③: 以前に作成したスケーリンググループを見つけ、その ID をクリックして、スケーリンググループの詳細ページに移動します。

④⑤⑥: を選択します。

⑦: [課金方法] パラメータを [従量課金] に設定します。
⑧: [セキュリティ グループ] パラメータを既存のセキュリティ グループに設定します。

コンテナ グループの構成:
⑨: [インスタンス タイプを指定] をクリックします。
⑩: [インスタンス タイプ] パラメータを
ecs.gn7i-c8g1.2xlargeに設定します。⑪: [イメージ キャッシュを自動的に一致させる] チェックボックスをオンにします。
⑫: [詳細設定] を表示します。
⑬⑭⑮⑯: [OSS の永続性] タブをクリックします。 [バケット] パラメータと [RAM ロール] パラメータを設定します。
⑰: [一時ストレージ] パラメータを 100 GiB に設定します。
⑱: [GPU ドライバ バージョン] パラメータを
tesla=550に設定します。
コンテナの構成:
⑲: [イメージ] パラメータを
egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllmに設定します。ヒント:イメージタグを選択
0.6.4.post1-pytorch 2.5.1-cuda 12.4-ubuntu 22.04㉑:ヒント: 次の起動コマンドを次の図に示すように テキスト ボックスにコピーします。
/bin/bash -c vllm serve /oss-data/DeepSeek-R1-Distill-Qwen-7B --port 30000 --served-model-name DeepSeek-R1-Distill-Qwen-7B --tensor-parallel-size 1 --max-model-len=16384 --enforce-eager --dtype=half --api-key api-key-example-abc123このコマンドは、OSS バケットからモデルの重みファイルを読み込み、
api-key-example-abc123API キーを使用して、ポート30000で推論サービスを起動します。
㉒: [container-1 詳細設定] セクションを表示します。
㉓: [vCPU] パラメータを 8 vCPU に設定します。
㉔: [メモリ] パラメータを 30 GiB に設定します。
㉕: [GPU] パラメータを 1 に設定します。
㉖㉗: ストレージ を有効にして、[追加] をクリックして OSS バケットをマウントします。
㉘: パラメーターを /oss-data/oss-data に設定します。
㉙: [次へ:その他の設定] をクリックします。

㉚: [EIP] パラメータを [自動作成] に設定します。
㉛: [最大帯域幅] パラメータを 200 Mbit/s に設定します。
㉜: [構成の確認] をクリックし、プロンプトに従ってスケーリング設定の作成を完了します。

㉝㉞㉟: プロンプトに従って、スケーリンググループとスケーリング設定を有効にします。



7. 推論サービスを有効にする
続行する前に、手順 4 でモデルの重みファイルがダウンロードされていることを確認してください。
すべての手順を完了したら、スケーリンググループの予想インスタンス数を変更して、スケールアウト イベントを開始します。次の図は、5 つの Elastic Container Instance をスケールアウトする方法を示しています。
予想インスタンス数を調整すると、インスタンスの作成に遅延が発生する場合があることに注意してください。スケーリング アクティビティの進捗状況は、スケーリンググループの [スケーリング アクティビティ] タブで追跡できます。
|
|
次のステップ
Dify を使用して大規模モデルと通信する
リソースを解放する
ソリューションを実稼働環境に適用する
本番環境での使用には、次のアーキテクチャの改善を検討してください。
自動スケーリングメカニズムを実装して、ビジネス負荷に基づいてスケーリンググループ内のインスタンス数を自動的に調整し、コストを最適化します。
たとえば、監視タスクを設定して、GPU 使用率に基づいてカスタムスケーリングを有効にするか、ALB バックエンドサーバー QPS を使用できます。
NAT ゲートウェイを使用して、インスタンスごとに EIP を構成することを回避します。
この例では、Elastic Container Instance は構成済みの EIP を使用してパブリックイメージをプルします。本番環境では、NAT ゲートウェイを使用して、Elastic Container Instance にインターネットアクセスを提供できます。
ALB インスタンスのドメイン名を設定し、HTTPS を有効にします。
セキュリティ強化のため、クラスタアクセス ポータルにカスタムドメイン名を使用し、HTTPS を有効にすることをお勧めします。詳細については、「ALB インスタンスに CNAME レコードを追加する」および「HTTPS リスナーを追加する」をご参照ください。










