このページでは、Elastic Algorithm Service (EAS) でのカスタムプロセッサのデプロイと実行に関するよくある質問について説明します。
デプロイメントの問題
EASCMD で作成したタスクが「[OK] Waiting [Total: 1, Pending: 1, Running: 0]」の状態で止まってしまうのはなぜですか?
エラー:「Download processor files failed: forbidden to download file with size larger than 10G」
ランタイムの問題
認証と設定
カスタムプロセッサパッケージのアップロード効率の向上
Docker イメージを使用して、ランタイム環境と大きなファイルをパッケージ化します。コードが変更された場合、パッケージ全体ではなく、変更されたレイヤーのみを再ビルドしてプッシュする必要があります。これにより、開発イテレーションが大幅に高速化されます。
詳細については、「Python を使用したカスタムプロセッサの開発」をご参照ください。
cv2 インポート時の「libSM.so.6: cannot open shared object file: No such file or directory」エラーの解決
pip install opencv でインストールされる標準パッケージは、EAS ランタイム環境にプリインストールされていない libXext、libSM、および libXrender に依存しています。このパッケージは、ローカルのテスト環境では動作する可能性がありますが、オンラインにデプロイすると失敗する場合があります。
この問題を解決するには、次のいずれかの方法を使用します:
推奨:代わりに
opencv-python-headlessをインストールします。このバリアントは libXext、libSM、または libXrender に依存しません。pip install opencv-python-headless代替案:ローカルシステムで libXext、libSM、libXrender のバイナリファイルを見つけ、プロセッサパッケージ内の
ENV/libディレクトリにコピーして、パッケージをアップロードします。注:この方法では、追加の依存関係の問題が発生し、別途解決が必要になる場合があります。
EAS Python プロセッサでの環境変数の設定
EAS はプロセッサディレクトリのすべてのサブディレクトリを自動的に LD_LIBRARY_PATH に追加するため、プロセッサディレクトリ内に保存されている依存ライブラリは、場所を問わず自動的に認識されます。
その他の環境変数については、Python コードでプログラムで設定します:
import os
os.environ['key'] = 'val'未処理の例外によるプロセスの終了防止
未処理の例外によるプロセスの終了を防ぐために、サービスロジックの重要なセクションを try-catch ブロックで囲みます。
何らかの理由でプロセスが終了した場合、EAS はサービスの可用性を維持するために自動的にプロセスを再起動します。アプリケーションレベルでの例外処理により、より詳細に制御できるようになり、不要な再起動を回避できます。
AccessKey とエンドポイントの設定
EAS 予測サービスは、ID 認証に Alibaba Cloud の AccessKey を使用します。eascmd64 config コマンドを使用して、AccessKey ID、AccessKey Secret、およびエンドポイントを設定します:
./eascmd64 config -i <yourAccessKeyID> -k <yourAccessKeySecret> -e <endpoint>デフォルトのエンドポイントは、中国 (上海) リージョンに接続します。別のリージョンにデプロイするには、-e パラメーターでそのリージョンのエンドポイントを指定します。たとえば、中国 (北京) リージョンを使用するには、次のように指定します:
./eascmd64 config -i <yourAccessKeyID> -k <yourAccessKeySecret> -e pai-eas.cn-beijing.aliyuncs.comEASCMD で作成したタスクが「[OK] Waiting [Total: 1, Pending: 1, Running: 0]」の状態で停止する問題
リソースグループに、要求されたインスタンスを起動するのに十分な利用可能なリソースがないため、タスクは待機状態になっています。
サービスの設定ファイルで、以下を確認してください:
リージョン:
metadata.regionが、リソースグループが配置されているリージョンと一致していることを確認してください。リソースグループ名:
metadata.resourceが、そのリージョンの正しいリソースグループ名 (例:EAS-LsFlrwBP56) であることを確認してください。利用可能なリソース:リソースグループに、設定した
instance数を満たすのに十分な空き GPU、CPU、およびメモリがあることを確認してください。
以下の設定例は、関連するフィールドを示しています:
{
"name": "service",
"token": "[Authorization-token]",
"data_image": "[your-public-docker-image-repo]",
"processor_entry": "app.py",
"processor_type": "python",
"processor_path": "[oss://eas-model-shenzhen/xxxxxxxxx/codes.tar.gz]",
"metadata": {
"region": "cn-shenzhen",
"resource": "resource-name",
"gpu": 1,
"cpu": 6,
"memory": 2000,
"instance": 2,
"cuda": "10.0"
}
}この例では、各インスタンスに 1 GPU、6 CPU、2000 MB のメモリが必要です。リソースグループがこの要件を 2 インスタンス分同時に満たせない場合、タスクは待機状態のままになります。
EAS サービスのパブリックネットワークへのアクセス
EAS サービスは、デフォルトではパブリックネットワークにアクセスできません。プロセッサコードが起動時にインターネットからファイルをダウンロードする場合、ファイル読み込みエラーが原因でデプロイに失敗します。
この問題を解決するには、EAS サービス用にパブリックネットワーク接続を設定してください。
ヒント:デプロイする前に、プロセッサをローカルでテストし、EAS 環境では利用できない可能性のあるパブリックネットワークへのアクセスに依存していないことを確認してください。
エラー:「Download processor files failed: forbidden to download file with size larger than 10G」
EAS では、モデルとプロセッサパッケージの合計サイズが 10 GB に制限されています。パッケージがこの制限を超える場合は、代わりにコンソールからイメージベースのカスタムデプロイメントを使用してください。