Elastic Algorithm Service (EAS) のカスタムデプロイは、あらゆる AI モデルやアルゴリズムをスケーラブルな推論サービスとしてホストするための、柔軟性の高い環境です。このサービスは、大規模言語モデル (LLM) からカスタムコードまで、幅広いワークロードをサポートします。本ガイドは、ランタイムと設定を完全に制御する必要がある上級ユーザー向けです。LLM や ComfyUI などの一般的なアプリケーションを効率的にセットアップするには、まず「シナリオベースのデプロイメント」をご検討ください。
仕組み
EAS サービスは、1 つ以上の分離されたコンテナーインスタンスで実行されます。EAS は、以下の主要コンポーネントに基づいてサービスをデプロイします。
環境イメージ: オペレーティングシステム、CUDA などの基本ライブラリ、Python などの言語ランタイム、およびその他の必要な依存関係を含む読み取り専用のパッケージです。PAI が提供する公式イメージを使用するか、特定のアプリケーション要件に合わせてカスタムイメージをビルドすることができます。
コードとモデルファイル: ビジネスロジックコードとモデルの重みが含まれます。ベストプラクティスとして、これらを Object Storage Service (OSS) または File Storage NAS (NAS) に保存し、マウントしてアクセスします。これにより、コードとモデルがランタイム環境から疎結合され、イメージを再ビルドすることなく、ストレージ内のファイルを更新するだけで独立して更新できます。
ストレージマウント: サービスの開始時に、EAS は指定された OSS または NAS パスをコンテナー内のローカルディレクトリにマウントします。これにより、コンテナー内のコードは、外部ストレージ上のコードとモデルにローカルファイルであるかのようにアクセスできます。
実行コマンド: コンテナーの起動後に実行される最初のコマンド。通常、
python app.pyのような HTTP サーバーを起動するコマンドがこれにあたります。
ワークフローは次のとおりです。
EAS は指定されたイメージをプルしてコンテナーを作成します。
EAS は外部ストレージをコンテナー内の指定されたパスにマウントします。
EAS はコンテナー内で実行コマンドを実行します。
コマンドが正常に実行されると、サービスは指定されたポートでリッスンを開始し、推論リクエストの処理を開始します。
EAS は、イメージベースと プロセッサベース の 2 つのデプロイ方法をサポートしています。柔軟性と保守性が最も高いため、イメージベースのデプロイが推奨されます。プロセッサベースの方法は、大きな制約があるレガシーオプションです。
注意事項
非アクティブなサービス (180 日間連続で実行状態にない) は、自動削除の対象となります。
ゲートウェイ経由でサービスを呼び出す場合、リクエストボディは 1 MB を超えることはできません。
ポート 8080 と 9090 は EAS エンジンによって予約されているため、使用を避けてください。
操作手順
このセクションでは、イメージベースのデプロイ方法を使用して、簡単な Web サービスを迅速にデプロイする方法を説明します。
ステップ 1: コードファイルの準備
次の Flask アプリケーションコードを app.py ファイルとして保存します。サービスはポート 8000 でリッスンすることに注意してください。
ステップ 2: コードをOSSにアップロード
app.py ファイルを OSS バケットにアップロードします。OSS バケットと EAS ワークスペースが同じリージョンにあることを確認してください。たとえば、ファイルを oss://examplebucket/code/ ディレクトリにアップロードします。
ステップ 3: サービスの設定とデプロイ
PAI コンソールにログインします。ページの上部でリージョンを選択します。次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS)] をクリックします。
[Inference Service] タブで、[Deploy Service] をクリックします。[Custom Model Deployment] セクションで、[Custom Deployment] をクリックします。
設定ページで、[Environment Information] と [Resource Information] セクションの主要なパラメーターを次のように設定します。
Deployment Method: [Image-based Deployment] を選択します。[Image Configuration] フィールドで、[Alibaba Cloud Image]
python-inference:3.9-ubuntu2004を選択します。Mount Storage: [OSS] をクリックし、
app.pyを含む OSS ディレクトリをコンテナーの/mnt/data/パスにマウントします。Uri: コードを含む OSS ディレクトリのパス。例:
oss://examplebucket/code/。Mount Path: マウントされたディレクトリへのコンテナー内のパス。例:
/mnt/data/。
Command:
app.pyはコンテナーの/mnt/data/ディレクトリにマウントされているため、起動コマンドはpython /mnt/data/app.pyです。Third-party Library Settings: サンプルコードは
flaskライブラリに依存していますが、これは公式イメージには含まれていません。flaskを [Third-party Libraries] に追加すると、起動時に自動的にインストールされます。Resource configuration: サービスの計算リソースを設定します。本ガイドの例では、小規模な CPU インスタンスで十分です。
Resource Type: [Public Resources]。
Resource Specification:
ecs.c7.large。
設定が完了したら、[Deploy] をクリックします。サービスステータスが [Running] に変わったら、デプロイは完了です。その後、「サービスの呼び出し」をご参照ください。
関連ドキュメント
環境と依存関係の管理
[Environment Information] セクションで、サービスの環境と依存関係を設定します。
パラメーター | 説明 |
Image Configuratio | イメージは、サービスの基本的なランタイム環境です。PAI が提供する公式イメージを使用するか、[Custom Image] を選択するか、[Image Address] を入力してカスタムビルドのイメージを使用します。詳細については、「カスタムイメージ」をご参照ください。 説明 イメージに WebUI が含まれている場合は、[Enable Web App] を選択すると、EAS は自動的に Web サーバーを起動して、フロントエンドページへの直接アクセスを提供します。 |
Mount Storage | OSS や NAS などのクラウドストレージサービスからモデル、コード、またはデータをコンテナー内のローカルパスにマウントすることで、コードやデータが環境から疎結合され、独立して更新できます。詳細については、「ストレージマウント」をご参照ください。 |
Mount Dataset | モデルやデータのバージョン管理を行いたい場合は、[Dataset] を使用してマウントします。詳細については、「データセットの作成と管理」をご参照ください。 |
Command、Port Number |
重要 EAS エンジンは固定ポート 8080 と 9090 でリッスンします。これらの 2 つのポートの使用は避けてください。 |
Third-Party Library Settings | 追加の Python ライブラリをいくつかインストールするだけでよい場合は、ライブラリ名を直接追加するか、[Path of Requirements.txt] を指定して、イメージの再ビルドを回避します。 |
Environment Variables | サービスインスタンスの環境変数をキーと値のペアとして設定します。 |
GPU アクセラレーションインスタンスの場合、 で GPU ドライバーのバージョンを指定して、特定のモデルやフレームワークのランタイム要件を満たします。
計算リソースの設定
[Resource Information] セクションで、サービスの計算リソースを設定します。
パラメーター | 説明 |
Resource Type | パブリックリソース、EAS リソースグループ、またはリソースクォータを選択します。 説明 [GPU Sharing] を有効にすると、単一の GPU カードに複数のモデルサービスをデプロイし、コンピューティング能力を共有することで GPU リソースの利用率を向上させることができます。この機能は、小規模なモデルや推論負荷が低いユースケースに適しています。EAS リソースグループまたはリソースクォータを使用している場合にのみ有効にできます。詳細については、「GPU 共有」をご参照ください。 |
Instances | 単一障害点 (SPOF) のリスクを回避するために、複数のインスタンスを設定します。 |
Deployment Resources | パブリックリソース を使用する場合、サポートされているインスタンスタイプに対して、[Bidding] を有効にし、最大入札価格を設定することで、通常のインスタンスよりもはるかに低い価格でアイドルリソースを獲得できます。この機能は、中断に敏感でない推論タスクに適しています。 説明 |
Configure a System Disk |
|
Elastic Resource Pool | この機能はクラウドバースティングを有効にします。トラフィックが専用リソース (EAS リソースグループまたはクォータ) の容量を超えた場合、サービスは自動的にオンデマンドのパブリックリソースにバースト (自動拡張) してトラフィックの急増に対応します。スケールイン時には、コストを最小限に抑えるために、これらのパブリックインスタンスが最初にリリースされます。詳細については、「弾性リソースプール」をご参照ください。 |
High-priority Resource Rescheduling | この機能を有効にすると、システムは定期的に、パブリックリソースや通常インスタンスなどの低優先度リソースから、専用リソースグループやスポットインスタンスなどの高優先度リソースへサービスインスタンスの移行を試みます。これにより、コストとリソース割り当てが最適化されます。この機能は、次の問題を解決できます。
|
サービス登録とネットワーク
EAS は、さまざまなビジネス統合のニーズに対応するために、柔軟なサービス登録とネットワーク設定オプションを提供します。詳細については、「サービスの呼び出し」をご参照ください。
パラメーター | 説明 |
Select Gateway | デフォルトでは、サービスは無料の [Shared Gateway] を介して公開されます。カスタムドメイン名や詳細なアクセスの制御などの高度な機能については、有料オプションとして [Dedicated Gateway] へのアップグレードが利用可能です。詳細については、「専用ゲートウェイ経由での呼び出し」をご参照ください。 重要 ゲートウェイ経由でサービスを呼び出す場合、リクエストボディは 1 MB を超えることはできません。 |
VPC Configuration | VPC、vSwitch、およびセキュリティグループを設定することにより、VPC 内のサービスへの直接アクセスを可能にしたり、サービスがインターネットリソースにアクセスできるようにしたりします。詳細については、「ネットワーク設定」をご参照ください。 |
Associate NLB | サービスを Network Load Balancer (NLB) インスタンスに関連付けることで、より柔軟できめ細かな負荷分散を実現します。詳細については、「関連付けられた NLB インスタンスを使用したサービスの呼び出し」をご参照ください。 |
Service Discovery Nacos | サービスを Microservices Registry に登録して、マイクロサービスモデルでの自動サービスディスカバリーと同期を有効にします。詳細については、「Nacos を使用したサービスの呼び出し」をご参照ください。 |
高性能な RPC 通信を有効にするには、 でサービスゲートウェイの gRPC サポートを有効にします。
サービスのセキュリティ
サービスのセキュリティを強化するには、[Features] セクションで次のパラメーターを設定します。
パラメーター | 説明 |
Custom Authentication | システムが生成したトークンを使用したくない場合は、ここでサービスアクセス用の認証トークンをカスタマイズします。 |
Configure Secure Encryption Environment | 機密コンピューティングサービスと統合して、セキュアなエンクレーブ内で推論を実行し、使用中のデータ、モデル、コードを暗号化します。この機能は主にマウントされたストレージファイル用です。この機能を有効にする前にストレージをマウントする必要があります。詳細については、「セキュアな暗号化推論サービス」をご参照ください。 |
Instance RAM Role | RAM ロールをインスタンスに関連付けることにより、サービス内のコードは STS 一時認証情報を使用して他のクラウドリソースにアクセスできます。これにより、固定の AccessKey を設定する必要がなくなり、キー漏洩のリスクが軽減されます。詳細については、「EAS RAM ロールの設定」をご参照ください。 |
サービスの安定性と高可用性の確保
[Basic Information] セクションのグループ機能を使用すると、複数のサービスバージョンや異種リソースを使用するサービスをグループ化できます。これらのグループは、トラフィック管理ポリシーと組み合わせて段階的リリースを実装するために使用できます。詳細については、「段階的リリース」をご参照ください。
本番環境でのサービスの安定性と信頼性を確保するには、[Features] セクションで次のパラメーターを設定します。
パラメーター | 説明 |
Service Response Timeout Period | 各リクエストに適切なタイムアウトを設定します。デフォルトは 5 秒です。これにより、遅いリクエストが長時間サービスリソースを占有するのを防ぎます。 |
Health Check | サービスの [Health Check] を設定すると、システムは定期的にインスタンスのヘルスステータスをチェックします。インスタンスが異常になった場合、システムは自動的に新しいインスタンスを起動して自己修復を行います。詳細については、「ヘルスチェック」をご参照ください。 |
Graceful Shutdown | [Graceful Shutdown Time] を設定して、サービスの更新またはスケールイン中に、インスタンスが終了する前に受信したリクエストの処理を完了するための十分な時間を確保します。これにより、リクエスト処理が中断されるのを防ぎます。アプリケーション層でよりきめ細かな終了処理を行うには、[Send SIGTERM] を有効にします。詳細については、「ローリングアップデートとグレースフルシャットダウン」をご参照ください。 |
Rolling Update | [Number of Instances Exceeding Expectation] と [Maximum Number of Unavailable Instances] を設定することで、サービス更新プロセス中のインスタンス置換ポリシーをきめ細かく制御し、サービスを中断することなくバージョンアップグレードを完了します。詳細については、「ローリングアップデートとグレースフルシャットダウン」をご参照ください。 |
パフォーマンスの最適化
以下の設定は、サービスのパフォーマンスを向上させるために重要です。これらの設定は、特に大規模モデルなどのリソース集約型アプリケーションにおいて、起動を高速化し、スループットを向上させ、レイテンシーを削減することができます。
パラメーター | 説明 | |
ストレージアクセラレーション | Distributed Cache Acceleration | OSS などのマウントされたストレージからモデルやデータファイルをローカルインスタンスにキャッシュし、読み取り速度を向上させ、I/O レイテンシーを削減します。詳細については、「ローカルディレクトリへのデータのキャッシュ」をご参照ください。 |
Model Weights Service (MoWS) | 大規模なインスタンスデプロイシナリオにおいて、モデルの重みのローカルキャッシングとインスタンス間共有を通じて、スケーリング効率とサービス起動速度が大幅に向上します。詳細については、「モデル重みサービス」をご参照ください。 | |
リソース設定 | Shared Memory | インスタンスの共有メモリを設定します。これにより、コンテナー内の複数のプロセスが同じメモリ領域に直接読み書きでき、データコピーと転送のオーバーヘッドを回避できます。これは、効率的なプロセス間通信が必要なシナリオに適しています。 |
Distributed Inference | 単一の推論インスタンスが複数のマシンにデプロイされ、共同で推論タスクを完了します。これにより、超大規模モデルが単一マシンにデプロイできないという問題が解決されます。詳細については、「複数マシン分散推論」をご参照ください。 | |
インテリジェントスケジューリング | LLM Intelligent Router | LLM サービスに複数のバックエンドインスタンスがある場合、[LLM Intelligent Router] はバックエンドの負荷に基づいてリクエストを動的に分散し、すべてのインスタンス間でコンピューティング能力と GPU メモリ使用量のバランスを取り、クラスターリソースの利用率を向上させます。詳細については、「LLM インテリジェントルーター」をご参照ください。 |
サービスの監視と診断
サービスステータスに関する洞察を得て、問題を迅速にトラブルシューティングするために、[Features] セクションで次の機能を有効にします。
パラメーター | 説明 |
Save Call Records | 監査、分析、またはトラブルシューティングのために、サービスのすべてのリクエストとレスポンスの記録を [MaxCompute] または [Simple Log Service] に永続的に保存します。
|
Tracing Analysis | 一部の公式イメージには組み込みのコレクションコンポーネントが含まれており、ワンクリックでトレースを有効にできます。他のイメージについては、簡単な設定で ARMS プローブを統合して、サービス呼び出しのエンドツーエンドのモニタリングを実現します。詳細については、「EAS での LLM ベースのアプリケーションのトレースを有効にする」をご参照ください。設定方法は次のとおりです。
|
非同期および弾性サービス
非同期推論: AAIGC やビデオ処理など、長時間実行される推論シナリオでは、[Asynchronous Queue] を有効にします。これにより、クライアントは呼び出しを開始した直後に即時応答を受け取り、ポーリングまたはコールバックを使用して最終結果を取得できます。詳細については、「非同期推論サービスのデプロイ」をご参照ください。
Elastic Job サービス: [Features] セクションで [Task Mode] を有効にして、推論ワークロードをオンデマンドのサーバーレスジョブとして実行します。タスクのためにリソースが自動的にプロビジョニングされ、完了時にリリースされてコストを節約します。詳細については、「Elastic Job Service」をご参照ください。
JSONファイルでの設定パラメーターの変更
[Service Configuration] セクションで、現在の UI 設定の完全な JSON を表示し、直接編集できます。
自動化されたきめ細かい設定シナリオでは、JSON ファイルを使用してサービスを直接定義およびデプロイすることもできます。詳細については、「JSON デプロイメント」をご参照ください。