Elastic Algorithm Service (EAS) は、AI 推論のための柔軟かつ包括的なマネージドサービスです。そのカスタムデプロイ機能を使用すると、あらゆるアルゴリズムやモデルをオンラインサービスとしてパッケージ化できます。
まず、大規模言語モデル (LLM) や ComfyUI などのシナリオには、シナリオベースのデプロイをお試しください。要件が満たされない場合は、カスタムデプロイを使用してください。
クイックスタート:シンプルな Web サービスのデプロイ
このセクションでは、イメージベースのデプロイ方法を使用して、シンプルな 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 をクリックします。
設定ページで、[環境情報] と [リソース情報] セクションの主要なパラメーターを次のように設定します。
[デプロイ方法]: Image-based Deployment を選択します。
Image Configuration: Alibaba Cloud Image
python-inference:3.9-ubuntu2004を選択します。[ストレージマウント]:
app.pyを含む OSS ディレクトリをコンテナの/mnt/data/パスにマウントします。[Uri]: コードが配置されている OSS ディレクトリを選択します。この例では
oss://examplebucket/code/です。Mount Path: コンテナ内のこのディレクトリのローカルパスを指定します。この例では
/mnt/data/です。
Command:
app.pyはコンテナの/mnt/data/ディレクトリにマウントされているため、起動コマンドはpython /mnt/data/app.pyとなります。[サードパーティライブラリ設定]: この例で依存する
flaskライブラリは公式イメージに含まれていません。flaskを Third-party Libraries に追加します。EAS はサービスの起動時に自動的にインストールします。Resource Configuration: サービスに適切なコンピューティングリソースを割り当てます。この簡単な例では、small CPU インスタンスで十分です。
Resource Type: パブリックリソース。
Resource Type:
ecs.c7.large。
設定が完了したら、Deploy をクリックします。サービスステータスが Running に変わると、デプロイは成功です。その後、サービスを呼び出すことができます。
設定の詳細
環境と依存関係の管理
Environment Information セクションで、サービスのランタイム環境と依存関係を設定します。
パラメーター | 説明 |
Image Configuration | サービスのランタイム環境のベースです。PAI が提供する公式イメージを使用するか、Custom Image を選択するか、Image Address を入力して独自のイメージを使用できます。詳細については、「カスタムイメージ」をご参照ください。 説明 イメージに WebUI が含まれている場合は、Enable Web App します。EAS は自動的に Web サーバーを起動し、フロントエンドページに直接アクセスできるようになります。 |
Mount storage | OSS や NAS などのクラウドストレージからモデル、コード、またはデータをコンテナ内のローカルパスにマウントします。これにより、コードとデータが環境から分離され、独立した更新が容易になります。詳細については、「ストレージのマウント」をご参照ください。 |
Mount dataset | モデルやデータのバージョンを管理するには、Dataset 機能を使用してマウントします。詳細については、「データセットの作成と管理」をご参照ください。 |
Command | イメージの起動コマンドを設定します。例: |
Port Number | サービスがリッスンするポートを設定します。一部のシナリオでは、ポート番号はオプションです。 たとえば、サービスが EAS ゲートウェイからのトラフィックに依存せず、代わりにメッセージキューをサブスクライブしてメッセージを取得する場合、ポート番号はオプションです。 重要 EAS エンジンはポート 8080 と 9090 を予約しています。新しいサービスをデプロイする際は、これらのポートの使用を避けて、サービスの起動を妨げる可能性のある競合を防いでください。 |
Third-party Library Settings | 追加の Python ライブラリを少数インストールするだけでよい場合は、ここにライブラリ名を追加するか、Path of requirements.txt を指定します。これにより、イメージの再構築を回避できます。 |
Environment Variables | サービスインスタンスの環境変数をキーと値のペアとして設定します。 |
GPU アクセラレーションインスタンスを使用してサービスをデプロイする場合、Features の下の Resource Configuration セクションで GPU driver version を指定して、特定のモデルやフレームワークの要件を満たすこともできます。
コンピューティングリソースの設定
Resource Information セクションで、サービスのコンピューティングリソースを設定します。
パラメーター | 説明 |
Resource Type | パブリックリソース、EAS リソースグループ、またはリソースクォータを選択できます。 説明 [GPU 共有] を有効にすると、単一の GPU カードに複数のモデルサービスをデプロイできます。これにより、計算能力を共有して GPU リソースの利用率を向上させます。この機能は、小規模なモデルや推論ワークロードが低いシナリオに適しています。EAS リソースグループまたはリソースクォータを使用する場合にのみサポートされます。詳細については、「GPU 共有」をご参照ください。 |
レプリカ数 | 複数のインスタンスを設定することで、単一障害点を回避します。 |
Deployment | パブリックリソースを使用する場合、サポートされている仕様に対してスポットモードを有効にし、最高入札額を設定できます。これにより、通常インスタンスよりもはるかに低い価格でアイドルリソースを取得できます。これは、中断の影響を受けにくい推論タスクに適しています。 説明 |
システムディスクの設定 |
|
Elastic Resource Pool | EAS リソースグループまたはリソースクォータを使用する場合、この機能を有効にできます。独自のリソースが不足している場合、パブリックリソースが自動的にスケールアウトに使用され、トラフィックバーストに対応します。スケールイン時には、コストを節約するためにパブリックリソースのインスタンスが最初にリリースされます。詳細については、「弾性リソースプール」をご参照ください。 |
Specify Node Scheduling | これは、EAS リソースグループまたはリソースクォータを使用する場合にのみ適用されます。
|
High-priority Resource Rescheduling | 有効にすると、システムは定期的に、低優先度のリソース (パブリックリソースや通常インスタンスなど) から高優先度のリソース (専用リソースグループやスポットインスタンスなど) へサービスインスタンスを移行しようと試み、コストとリソース割り当てを最適化します。この機能は、以下の問題を解決できます:
|
サービスアクセスとネットワーク
EAS は、さまざまなビジネス統合のニーズを満たすために、柔軟なサービスアクセスとネットワークオプションを提供します。詳細については、「サービスの呼び出し」をご参照ください。
パラメーター | 説明 |
[ゲートウェイ選択] | デフォルトでは、無料の Shared Gateway が使用されます。カスタムドメイン名やアクセスの制御などの高度な機能を利用するには、有料の Dedicated Gateway をアクティベートできます。詳細については、「専用ゲートウェイの使用」をご参照ください。 重要 ゲートウェイを介してサービスを呼び出す場合、リクエストボディは 1 MB を超えることはできません。 |
VPC | VPC、vSwitch、およびセキュリティグループを設定することで、VPC 内でのサービスへの直接アクセスを有効にしたり、サービスがパブリックネットワークリソースにアクセスできるようにしたりできます。詳細については、「EAS からパブリックまたは内部リソースへのアクセス」をご参照ください。 |
Associate NLB | サービスを Network Load Balancer (NLB) インスタンスに関連付けて、より自律的で制御可能な負荷分散を実現します。詳細については、「NLB インスタンスとの関連付けによるサービスの呼び出し」をご参照ください。 |
Service Discovery Nacos | サービスを マイクロサービスレジストリおよび設定センターに登録して、マイクロサービスモデルでの自動サービスディスカバリーと同期を有効にします。詳細については、「Nacos との関連付けによるサービスの呼び出し」をご参照ください。 |
Features セクションの Advanced Networking で Enable gRPC することもできます。この機能を有効にすると、サービスゲートウェイは gRPC 接続をサポートし、パフォーマンス専有型の RPC 通信を必要とするシナリオに適しています。
サービスセキュリティ
サービスのセキュリティを確保するには、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 を設定します。システムは定期的にインスタンスのヘルスステータスをプローブし、インスタンスに障害が発生した場合は自動的に新しいインスタンスを作成します。これにより、自動障害回復が提供されます。詳細については、「ヘルスチェック」をご参照ください。 |
Compute monitoring & fault tolerance | プラットフォームは、分散推論サービスの計算能力の健全性をリアルタイムで監視します。これにより、自動障害検出とインテリジェントな自己修復が可能になり、高可用性と安定性が確保されます。詳細については、「計算能力のチェックとフォールトトレランス」をご参照ください。 |
Graceful Shutdown | Graceful Shutdown Time を設定して、サービスの更新またはスケールイン中にインスタンスがシャットダウンする前に受信したリクエストを処理するのに十分な時間を確保します。これにより、リクエスト処理が中断されるのを防ぎます。Send SIGTERM を選択して、アプリケーション層でより詳細なシャットダウン処理を可能にすることもできます。詳細については、「ローリングアップデートとグレースフルシャットダウン」をご参照ください。 |
Rolling Update | Exceeds the expected number of replicas と Maximum Unavailable Replicas を設定することで、サービス更新中のインスタンス置換ポリシーを微調整できます。これにより、サービスを中断することなくバージョンアップグレードが完了します。詳細については、「ローリングアップデートとグレースフルシャットダウン」をご参照ください。 |
パフォーマンスの最適化
以下の設定は、サービスパフォーマンスを向上させるために重要です。特に LLM などのリソース集約型アプリケーションにおいて、起動の高速化、スループットの向上、レイテンシーの削減に効果的です。
パラメーター | パラメーターと説明 | |
ストレージアクセラレーション | Distributed cache acceleration | OSS などのマウントされたストレージからモデルまたはデータファイルをインスタンスのローカル記憶域にキャッシュします。これにより、読み取り速度が向上し、I/O レイテンシーが削減されます。詳細については、「メモリ内のローカルディレクトリをキャッシュする」をご参照ください。 |
Model Weight Service (MoWS) | 大規模なインスタンスデプロイシナリオにおいて、インスタンス間でモデルの重みをキャッシュおよび共有することにより、スケーリング効率とサービス起動速度を大幅に向上させます。詳細については、「モデルウェイトサービス」をご参照ください。 | |
リソース割り当て | Shared Memory | インスタンスの共有メモリを設定します。これにより、コンテナ内の複数のプロセスが同じメモリ領域に直接読み書きできるようになります。これにより、データレプリケーションと転送のオーバーヘッドが回避され、効率的なプロセス間通信が必要なシナリオに適しています。 |
Distributed Inference | 単一の推論インスタンスを複数のマシンにまたがってデプロイし、1 つの推論タスクを完了させます。これにより、単一のマシンに特大モデルをデプロイできない問題が解決されます。詳細については、「マルチノード分散推論」をご参照ください。 | |
インテリジェントスケジューリング | LLM Intelligent Router | LLM サービスに複数のバックエンドインスタンスがある場合、LLM Intelligent Routerは、バックエンドのペイロードに基づいてリクエストを動的に分散できます。これにより、各インスタンスの計算能力と VRAM 使用量が可能な限り均等になるようにし、クラスターリソースの利用率を向上させます。詳細については、「LLM インテリジェントルーターをデプロイする」をご参照ください。 |
サービスの可観測性と診断
サービスの状態を把握し、問題を迅速に解決するには、Features セクションで以下の機能を有効にします。
パラメーター | 説明 |
Save Call Records | サービスのすべてのリクエストと応答レコードを MaxCompute または Simple Log Service に永続的に保存し、監査、分析、またはトラブルシューティングに利用します。
|
Tracing Analysis | 一部の公式イメージには、ワンクリックでトレース分析を有効にできる組み込みのコレクションコンポーネントがあります。他のイメージでは、簡単な設定で ARMS エージェントを統合して、サービス呼び出しチェーンのエンドツーエンドのモニタリングを実現できます。詳細については、「EAS の LLM アプリケーションでトレース分析を有効にする」をご参照ください。設定方法は次のとおりです。
|
非同期および弾性サービス
非同期推論: AIGC やビデオ処理など、時間のかかる推論シナリオでは、Asynchronous Queue を有効にします。クライアントは呼び出し後に即時応答を受け取り、ポーリングまたはコールバックを介して最終結果を取得できます。詳細については、「非同期推論サービスのデプロイ」をご参照ください。
弾性ジョブサービス: Features セクションで Task Mode を有効にして、推論サービスをオンデマンドのジョブサービスとしてデプロイします。これは、バッチデータ処理や定期タスクなどのシナリオに適しています。タスク完了後にリソースが自動的に解放され、コストを節約できます。詳細については、「弾性ジョブサービス」をご参照ください。
JSON 設定パラメーターの変更
Service Configuration セクションで、現在のインターフェイス設定に対応する完全な JSON を表示できます。直接編集することも可能です。
自動化された詳細な設定シナリオでは、JSON ファイルを使用してサービスを定義およびデプロイすることもできます。詳細については、「JSON ベースのデプロイ」をご参照ください。