EAS オンライン推論サービスに関する一般的な質問への回答を紹介します。デプロイメントの問題、スケーリングポリシー、トラブルシューティング手順などが含まれます。
まず PAI エージェントに問い合わせる
PAI AI アシスタント(小 PAI)は、PAI プロダクトスイート全体をカバーしており、使用方法のガイダンスや DSW インスタンス、DLC job、EAS サービスの診断機能を提供します。障害原因を自動的に特定し、次のステップやツールを推奨します。

サービスデプロイおよびステータスに関する問題
サービスをデプロイした後は、概要ページのサービスインスタンスリストでインスタンスステータス、ログ、イベントを確認して問題をトラブルシューティングします。
Q: サービスが長時間 Waiting 状態のままです。どのように対処すればよいですか?
サービスをデプロイすると、リソースのスケジューリングとインスタンスの起動中にWaiting状態になります。すべてのインスタンスが正常に起動すると、サービスはRunning状態に遷移します。以下のようなシナリオでは、Waiting 状態が長引く可能性があります。
Q: サービスが Failed 状態です。どのように対処すればよいですか?
サービスは以下の 2 つの状況でFailed状態になります。
デプロイ中: デプロイ時に指定されたリソース(モデルパスなど)が存在しない場合、サービスステータスにエラーの理由が表示されます。エラーメッセージには通常、デプロイが失敗した理由が記載されています。
起動中: デプロイが成功しスケジューリングが始まった後にサービスが失敗した場合、ステータスに次のように表示されます。
Instance <network-test-5ff76448fd-h9dsn> not healthy: Instance crashed, please inspect instance log.このメッセージは、1 つ以上のインスタンスが起動に失敗したことを意味します。具体的な原因を特定するために、サービス概要ページのサービスインスタンスリストを確認してください。一般的な失敗原因は以下のとおりです。
起動中にインスタンスのメモリが不足し、システムによって終了された(OOMKilled)。より高いメモリ割り当てでサービスを再デプロイしてください。インスタンスリストの最終ステータス列にOOMKilled(247)と表示されている場合、コンテナがメモリ制限を超えたために終了されたことを示します。再起動回数および最終終了理由列を確認してさらに検証できます。
コードエラーにより起動中にクラッシュが発生した。この場合、最終ステータスに Error(エラーコード)と表示されます。インスタンスの操作列にあるログをクリックしてサービスログを確認し、起動失敗の原因を特定してください。
サービスイメージのプルに失敗した。「イメージプルに失敗した場合(ImagePullBackOff)はどうすればよいですか?」をご参照ください。
Q: イメージプルに失敗した場合(ImagePullBackOff)はどうすればよいですか?
サービスインスタンスリストの最終終了理由列に ImagePullBackOff と表示されている場合、イメージプルが失敗しています。ステータス列にアイコンが表示されている場合は、それをクリックして具体的な理由を確認してください。
一般的なイメージプル失敗の原因を以下に示します。
原因 | エラーメッセージ | 解決策 |
システムディスクの空き容量不足 |
| 「システムディスクの拡張」を行います。 |
ACR アクセス制御の未設定 |
| パブリックイメージアドレスを使用する場合、「ACR のパブリックアクセスを有効化」します。 プライベートイメージアドレスを使用する場合:
|
EAS ネットワークの誤設定 |
| パブリックイメージアドレスを使用する場合、「EAS のインターネットアクセスの設定」を行います。 |
認証情報の不足または無効 |
| ACR Enterprise Edition インスタンスが匿名プルを許可しておらず、インターネット経由でクロスリージョンプルを行う場合、EAS サービス構成でイメージレジストリのユーザー名とパスワードを設定します。「アクセス認証情報の設定」をご参照ください。 |
イメージレジストリと EAS サービスが配置されているリージョンに基づき、以下のガイドラインに従ってください。
同一リージョン: プライベートイメージアドレスを使用してイメージをプルします。
クロスリージョン: ACR Personal Edition はパブリックイメージアドレスのみをサポートします。ACR Enterprise Edition の場合は、要件に基づいて選択します。
セキュリティと信頼性を重視する場合は、プライベートイメージアドレスを使用します。これには CEN を介した VPC 間接続が必要です。「クロスリージョンまたは IDC からの ACR Enterprise Edition インスタンスへのアクセス」をご参照ください。
シンプルなシナリオやプライベートネットワーク接続がまだ利用できない場合は、一時的なオプションとしてパブリックイメージアドレスを使用します。パブリックネットワークでのダウンロードは低速です。
ACR Enterprise Edition の追加注意事項:
VPC およびパブリックネットワークアクセスの両方について、必要に応じてアクセス制御を設定します。
リポジトリが匿名プルを許可していない場合、パブリックアドレス経由のクロスリージョンプルには、EAS サービスでイメージレジストリのユーザー名とパスワードを設定する必要があります。
Q: EAS サービスを停止した後、自動的に再起動します。これは何が起きているのですか?
問題の説明: EAS サービスが一定期間停止した後、自動的に再起動します。
根本原因:
サービスに最小インスタンス数が 0 のオートスケーリングが設定されています。トラフィックが一定期間停止すると、インスタンス数は自動的に 0 にスケールダウンします。スケールダウンによりインスタンスが利用できない状態でリクエストが到着すると、EAS はスケールアップを自動的にトリガーします。この場合、設定されたスケールアップしきい値に達する必要はありません。
オートスケールアップが発生したかどうかを確認するために、デプロイイベントのauto scalingメッセージを確認します。情報列にService is now auto scalingというエントリが表示されている場合、サービスが自動的にスケールアップをトリガーされたことを示しており、その後イベントステータスは Waiting → Scaling → Running へと遷移し、利用可能なインスタンス数が 0 から 1 に変化します。
解決策:
サービスが不要になった場合は、削除します。
サービスを維持しつつ自動再起動を防止するには、コンソールから、または
StopServiceAPI を呼び出して停止します。手動で停止されたサービスは、トラフィックが到着してもスケールアップしません。オートスケーリングによるサービス停止を防止するには、最小インスタンス数を 0 に設定しないでください。
予期しないトラフィックによるスケールアップが懸念される場合は、オートスケーリングを完全に無効化します。
Q: PAI-EAS の起動が IoError(Os { code: 28, kind: StorageFull, message: "No space left on device" }) で失敗します
問題の説明:
[2024-10-21 20:59:33] serialize_file(_flatten(tensors), filename, metadata=metadata)
[2024-10-21 20:59:33] safetensors_rust.SafetensorError: Error while serializing: IoError(Os { code: 28, kind: StorageFull, message: "No space left on device" })
[2024-10-21 20:59:35] time="2024-10-21T12:59:35Z" level=info msg="program stopped with status:exit status 1" program=/bin/sh
根本原因: 大規模なモデルファイルにより、EAS インスタンスのシステムディスクがいっぱいになっています。これにより、サービスを起動できません。
解決策:
オプション 1: EAS インスタンスの「システムディスクを拡張」します。
オプション 2: モデルファイルが大きすぎる場合は、外部ストレージ(OSS、NAS など)に保存し、「ストレージマウント」を使用して読み取ります。
Q: fail to start program with error: fork/exec /bin/sh: exec format error でデプロイが失敗します
exec format errorは、オペレーティングシステムが対象のバイナリを実行できないことを意味します。最も一般的な原因は、実行可能ファイルまたはコンテナイメージとホストマシンの間で CPU アーキテクチャが不一致であることです。
別のリソース仕様を試してください。
Q: エラー: Invalid GPU count 6, only supported: [0 1 2 4 8 16]
サービスあたりの GPU 数は、GPU 間通信の効率を最大化するために 2 のべき乗である必要があります。
サービスあたりでサポートされる GPU 数: 0、1、2、4、8、または 16。
Q: EAS インスタンスの削除に失敗する、または [停止] をクリックしても効果がありません。どうすればよいですか?
この問題には以下の 2 つの一般的なシナリオがあります。
インスタンスの削除が失敗する、またはエラーが返される: 削除操作で関連ワークスペースが存在しないなどのエラーが報告された場合、まず関連ワークスペースが正常な状態にあるか確認します。また、PAI コンソールのサービスリストに移動し、直接削除をクリックしてインスタンスを解放することもできます。
[停止] をクリックしても効果がない(インスタンスが Running 状態のまま):
ブラウザ側の確認: ページを再読み込みする、ブラウザキャッシュをクリアする、または別のブラウザまたはシークレット/プライベートモードで再試行します。
リクエストの診断: ブラウザの開発者ツール(F12)を開き、Networkパネルに移動して停止をクリックし、API リクエストが正常に送信されたか、およびレスポンスのステータスコードを確認します。
ログの確認: PAI コンソールの操作ログまたは Cloud Monitor で停止レコードと具体的な失敗理由を確認します。
API による代替手段: コンソール操作が依然として機能しない場合は、OpenAPI Explorer を使用して
StopServiceAPI を呼び出し、サービスを強制停止します。
リソースに関する問題
計算リソースおよびシステムディスク使用量に関する質問については、「リソース構成のよくある質問」をご参照ください。
サービスの更新とスケーリング
Q: EAS はどのようなスケーリングポリシーをサポートしていますか?
ワークロードのニーズに基づいてスケーリングポリシーを選択します。EAS は水平オートスケーリングおよびスケジュールされたスケーリングをサポートしています。
水平オートスケーリングでは、QPS や CPU 使用率などのカスタムメトリックに基づいて構成します。メトリックの計算方法および構成の詳細については、「水平オートスケーリング」をご参照ください。
メトリックの変動によるスラッシングを防ぐため、EAS はしきい値に 10 % の許容範囲を適用します。たとえば、QPS しきい値が 10 の場合、QPS が継続的に 11(10 × 1.1)を超えるとスケールアウトがトリガーされます。つまり、以下のようになります。
QPS が 10 ~ 11 の間で短時間スパイクしても、すぐにスケールアウトはトリガーされません。
QPS が 11 ~ 12 以上で一定期間維持された場合にのみ、スケールアウトがトリガーされます。
この許容範囲により、不要なリソース変更が減少し、安定性とコスト効率が向上します。
Q: スケールアウトしたインスタンスはどこで実行されますか?
エラスティックリソースプールが設定された専用リソースグループを使用する場合、専用リソースグループに利用可能なノードがないと、インスタンスはパブリックリソースグループにスケールアウトします。
Q: ダウンタイムなしでサービスを更新するにはどうすればよいですか?
シナリオ: サービスを中断せずに更新します。専用リソースグループに十分な容量がない場合、新しいインスタンスを一時的にパブリックリソースで実行し、更新後にそれらを専用リソースグループに再スケジューリングします。
解決策: ローリングアップデート、高優先度リソースデスケジューリング、およびエラスティックリソースプールを組み合わせます。
ローリングアップデートの構成: サービス中断を防止します。でローリングアップデートポリシーを構成します。詳細については、「ローリングアップデートとグレースフルシャットダウン」をご参照ください。カスタムデプロイページの安定性保証セクションでローリングアップデートをオンにし、構成ダイアログでMax surgeおよびMax unavailableパラメーターを設定してOKをクリックします。
エラスティックリソースプールの有効化: 専用リソース容量を超えるインスタンスを従量課金のパブリックリソースで実行できるようにします。詳細については、「エラスティックリソースプール」をご参照ください。
高優先度リソースデスケジューリングの有効化: 専用リソースグループに容量が空いた場合(たとえば、古いインスタンスが削除された後)、EAS は自動的にパブリックリソースのインスタンスを専用リソースグループに再スケジューリングしてコストを削減します。
サービス呼び出しに関する問題
呼び出しエラー
返された HTTP ステータスコードに基づいてトラブルシューティングを行います。詳細については、「サービスステータスコードとエラー」をご参照ください。
Q: SDWebUI サービスで画像生成リクエストの 504 タイムアウトが発生した場合、どのように対処すればよいですか?
画像生成推論は通常、長い時間を要します。リクエストの処理時間がゲートウェイまたはクライアントのタイムアウトしきい値を超えると、504 Gateway Timeout エラーが返されます。
以下の方法を試してください。
クライアント側のリクエストタイムアウトを増加させ、単一画像の生成に必要な時間をカバーできるようにします。
長時間実行される画像生成タスクの場合は、EAS の非同期推論機能を使用します。タスクを送信し、結果を非同期で取得することで、同期リクエストのタイムアウト制限を回避します。
サービスの推論パフォーマンスを向上させます。たとえば、計算容量の高いリソース仕様に切り替えて、各画像の生成時間を短縮します。
サーバーレス SDWebUI サービスは、リソース不足によるキュー待ち時間が長くなることでタイムアウトする可能性があります。リソースが豊富なリージョン(例:中国 (上海))に切り替えてみてください。
HTTPS およびカスタムドメイン
Q: EAS は HTTPS 呼び出しをサポートしていますか?
はい。サービスエンドポイント URL のhttp://をhttps://に置き換えることで、暗号化トランスポートを有効化できます。クライアント(Python のrequestsライブラリなど)が SSL 証明書検証エラーを報告する場合、これは EAS の問題ではなく、クライアント側の設定問題です。
Q: HTTPS 専用アクセスを強制するにはどうすればよいですか?
共有ゲートウェイ: HTTPS リダイレクトはサポートされていません。
専用ゲートウェイ: サポートされています。専用ゲートウェイ構成でHTTPS リダイレクトを有効化します。有効化すると、すべての HTTP リクエストが自動的に HTTPS にリダイレクトされます。
Q: カスタムドメインを使用してサービスを呼び出すことはできますか?
はい。フルマネージド専用ゲートウェイを作成・使用し、ゲートウェイ設定でカスタムドメインを構成します。詳細については、「専用ゲートウェイの使用」をご参照ください。
トークン管理
Q: サービストークンは有効期限切れになったり変更されたりしますか?
いいえ。サービスデプロイ時に生成されたトークンは長期有効です。サービスの再起動、更新(認証方式を手動で変更しない限り)、またはスケーリングを行ってもトークンは変更されません。トークンは、手動でリセットするかサービスを削除した場合にのみ無効になります。
Q: 1 つのサービスに対して複数のトークンを作成できますか?
いいえ。各 EAS サービスインスタンスは、1 つの認証トークンのみをサポートします。複数ユーザーの権限管理または個別の使用量トラッキングが必要な場合は、Alibaba Cloud RAM ベースの認証または類似のアクセス制御ソリューションを使用してください。
その他の呼び出しに関する問題
Q: LLM サービスでストリーミングレスポンスを有効化するにはどうすればよいですか?
EAS にはグローバルなストリーミング切り替え機能はありません。各 API リクエストボディ内で個別にストリーミングを指定します。たとえば、OpenAI 互換の LLM サービスを呼び出す場合、JSON リクエストボディに"stream": trueを含めます。
Q: VPC アドレス呼び出しと VPC ダイレクト接続の違いは何ですか?
VPC アドレス呼び出し: リクエストは内部 SLB およびゲートウェイを経由します(パブリックアドレス呼び出しはパブリック SLB およびゲートウェイを経由します)。これは標準的なリクエストパスです。各リクエストは、SLB でレイヤー 4 転送、ゲートウェイでレイヤー 7 転送を経てサービスインスタンスに到達します。高い同時実行性と大規模なトラフィック下では、この転送により遅延オーバーヘッドが発生します。ゲートウェイには帯域幅上限(デフォルトで 1 Gbps)もあります。
VPC ダイレクト接続: EAS は、追加コストなしでパフォーマンスとスケーラビリティの両方に対応する高速ダイレクト接続モードを提供します。VPC ダイレクト接続を有効化すると、ご利用の VPC と EAS サービス VPC 間にネットワークパスが確立されます。リクエストは EAS サービス検出を使用してサービスを特定し、クライアント側ソフトウェア負荷分散を実行します。これには EAS SDK とendpoint_typeをDIRECTに設定する必要があります。
たとえば、「Python SDK」シナリオでは、以下の行をコードに追加してゲートウェイ呼び出しからダイレクト接続に切り替えます。
client = PredictClient('http://pai-eas-vpc.cn-hangzhou.aliyuncs.com', 'mnist_saved_model_example') client.set_token('M2FhNjJlZDBmMzBmMzE4NjFiNzZhMmUxY2IxZjkyMDczNzAzYjFi****') client.set_endpoint_type(ENDPOINT_TYPE_DIRECT) # Direct link client.init()
Q: API 呼び出しと WebUI で画像結果が異なるのはなぜですか?
WebUI は、サンプラー、反復回数、ガイダンス重み、乱数シードなどの一連のデフォルト生成パラメーターを自動的に適用します。一方、API 呼び出しでは、リクエストボディで明示的に渡したパラメーターのみを使用します。パラメーターが異なる場合、出力も異なります。
パラメーターを整合させるには:
WebUI が実際に生成に使用したすべてのパラメーターを記録し、API リクエストボディ内のパラメーターと 1 つずつ比較して、値が一致していることを確認します。
両方で同じ固定乱数シードを設定し、それぞれで 1 枚ずつ画像を生成して出力を比較します。
それでも結果が異なる場合は、両方の方法で同じモデルバージョンと実行環境を使用しているか確認します。
権限とネットワーク
Q: RAM ユーザーが EAS サービスリンクロールを自動的に作成または削除できないのはなぜですか?
特定の権限を持つユーザーのみが、AliyunServiceRoleForPaiEasを自動的に作成または削除できます。RAM ユーザーがこの操作を実行できない場合は、以下の手順で必要なポリシーを付与します。
スクリプトベースの構成方法を使用して、以下のポリシーをカスタムポリシーとして作成します。詳細については、「カスタムポリシーの作成」をご参照ください。
前のステップで作成したカスタムポリシーを対象の RAM ユーザーにアタッチします。詳細については、「RAM ユーザー権限の管理」をご参照ください。
Q: EAS サービスはどのようにインターネットにアクセスしますか?
EAS サービスはデフォルトでインターネットアクセスを持ちません。インターネットアクセスを有効化するには、インターネット接続が可能な VPC を EAS サービス用に構成します。「EAS のパブリックおよびプライベートリソースへのアクセス」をご参照ください。
サービス管理
Q: EAS はインスタンスへの SSH アクセスをサポートしていますか?
いいえ。EAS はマネージドサービスであり、コンテナへの SSH アクセスを提供しません。コンテナ起動時に特定のコマンドを実行する必要がある場合は、サービス構成の実行コマンドフィールドで指定します。
Q: EAS にはどのようなサービスステータスがありますか?
EAS サービスには以下のステータスがあります。Model Serving (EAS)ページのステータス列でもステータスを確認できます。
Creating
Waiting — インスタンスの起動待ち
Stopped
Failed
Updating — インスタンスを更新中
Stopping
HotUpdate — インスタンスを置き換えずに更新中
Starting
DeleteFailed
Running
Scaling — インスタンスをスケーリング中
Pending — 処理待ち
Deleting
Completed
Preparing
Q: どの RAM ユーザーがサービスを作成したかを確認するにはどうすればよいですか?
ActionTrail コンソールでイベントを照会します。イベント名フィルターをCreateServiceに設定します。詳細については、「ActionTrail コンソールでのイベント照会」をご参照ください。
Q: PAI 公式イメージをインターネットからダウンロードできますか?
いいえ。PAI 公式イメージはプラットフォーム内部イメージであり、PAI プラットフォーム内でのみ使用できます。プラットフォームコンテナ外でのダウンロードはできません。
Q: PAI-EAS サービス名およびサービス ID の一意性ルールは何ですか?
サービス名の一意性: EAS サービス名は単一リージョン内でグローバルに一意です。「サービス名がすでに存在します」というエラーがサービス作成時に表示されても、Model Serving (EAS)リストにその名前が表示されない場合は、同じリージョン内の別のユーザーがその名前を使用しています。別の名前を選択して再試行してください。
サービス ID の一意性: PAI-EAS サービス ID はグローバルに一意であり、システムによって自動的に割り当てられます。手動で指定することはできません。
Q: サービスデプロイ後にサービス名を変更できますか?
いいえ。サービス名は作成後に変更できません。API 呼び出しおよび管理操作のユニーク識別子として、サービス名フィールドはコンソールの更新フォームで無効化されています。サービス名を変更する必要がある場合は、新しいサービスを作成して元のサービスを削除します。これにより、サービス中断および IP アドレスの変更が発生することにご注意ください。
Q: モジュールを無効化した後、EAS を再購入する必要がありますか?サービスインスタンスが見つからない場合はどうすればよいですか?
再購入不要: 一度アクティブ化された PAI-EAS は無期限に利用可能です。再度使用するには、PAI コンソールにアクセスし、ワークスペースを選択または作成して、そのワークスペース内に EAS インスタンスを作成します。追加の購入や再アクティブ化は不要です。
インスタンスが見つからない場合:
PAI コンソールにログインし、ページ上部に表示されているワークスペースが目的のものであることを確認します。
ワークスペースが削除または切り替えられている場合は、概要ページまたは目的のワークスペース内からModel Serving (EAS)リストを探します。
リストにデータが表示されず、インスタンスがない場合は、そのワークスペース内に課金対象の EAS インスタンスが作成されていません。モジュールのアクティブ化のみでは課金されず、追加のクリーンアップも不要です。
Q: ストレージマウント構成の変更はいつ有効になりますか?サービスを再デプロイする必要がありますか?
ストレージマウント設定はサービスのデプロイ構成の一部であり、動的に有効になりません。変更を適用するには、サービスを更新します。更新が完了すると、サービスインスタンスが新しい構成で再起動され、新しいマウントが有効になります。
サービス継続性が必要な場合は、サービス更新時にローリングアップデートを構成して中断を回避してください。
Q: サービス構成を更新した後、マウントされたファイルが消えてしまいました。どうすればよいですか?
この問題は通常、以下のいずれかが原因です。
更新により元のストレージマウント設定が削除された、またはマウントパスが変更されたため、インスタンスが元のストレージをマウントしなくなりました。ファイルは実際に失われていません。元の OSS または NAS に残っています。
ファイルがマウントディレクトリではなく、コンテナ内の一時的なローカルディスクに書き込まれました。ローカルディスクのデータは、インスタンスが再起動または更新されるとクリアされます。
最初のケースでは、マウント設定を更新前の値に復元して再度サービスを更新します。するとファイルが再表示されます。2 番目のケースでは、データを復旧できません。永続化が必要なデータは常に OSS または NAS マウントディレクトリに書き込み、サービス更新前にマウント設定が完全かつ正確であることを確認してください。
その他
Q: EAS サービスをデプロイする際に OSS バケットを選択できません。なぜですか?
EAS サービスをデプロイする際、ストレージの場所を指定してモデルやコードをマウントできます。OSS バケットおよび NAS ファイルシステムが EAS サービスと同じリージョンにあることを確認してください。クロスリージョンストレージは選択できません。
Q: EAS サービスに OSS ストレージをマウントした場合の課金方法は?必要な容量をどのように見積もればよいですか?
EAS 自体はストレージ容量に対して課金しません。OSS をマウントする場合、OSS は実際の使用量およびストレージクラスに基づいてストレージを課金します。EAS はサービスの計算リソースに対してのみ課金します。容量を見積もるには、モデル、コード、データファイルの実際のサイズを使用します。OSS ストレージは使用量に応じてエラスティックにスケーリングするため、事前に固定容量を購入する必要はありません。
Q: Q: EAS がデフォルトのパブリックエンドポイント経由で OSS にアクセスできません。どのように解決すればよいですか?
カスタムドメイン経由で OSS リソースにアクセスする場合、OSS リージョンが中国本土にある場合は、規制によりドメインの ICP 登録を完了する必要があります。ICP 登録が完了していないドメインはアクセスに使用できません。
以下の代替手段を使用してください。
内部エンドポイントを使用します。
パブリックネットワークアクセスの場合は、カスタムドメインを使用します。カスタムドメイン経由で OSS リソースにアクセスする場合、OSS リージョンが中国本土にある場合は、規制によりドメインの ICP 登録を完了する必要があります。ICP 登録が完了していないドメインはアクセスに使用できません。
Q: TensorFlow の問題
詳細については、「TensorFlow のよくある質問」をご参照ください。