すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:JSON 構成ファイルによるサービスデプロイ

最終更新日:Mar 25, 2026

カスタマイズ可能なリソース、ネットワーク、およびコンテナパラメーターを指定した JSON 構成ファイルを使用して、Elastic Algorithm Service (EAS) のオンラインサービスを定義およびデプロイします。

クイックスタート

JSON 構成ファイルの準備

必須設定を含む JSON 構成ファイルを作成します。初めてご利用になる場合は、Custom Model Deployment > Custom Deployment ページでパラメーターを設定してください。システムが対応する JSON を自動生成し、その後、必要に応じて編集および拡張できます。

以下の例は、service.json ファイルです。各パラメーターの詳細については、「JSON パラメーター」をご参照ください。

{
    "metadata": {
        "name": "demo",
        "instance": 1,
        "workspace_id": "your-workspace-id"
    },
    "cloud": {
        "computing": {
            "instances": [
                {
                    "type": "ecs.c7a.large"
                }
            ]
        }
    },
    "containers": [
        {
            "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/python-inference:py39-ubuntu2004",
            "script": "python app.py",
            "port": 8000
        }
    ]
}

サービスのデプロイ

  1. PAI コンソール にログインします。ページ上部から対象リージョンを選択し、目的のワークスペースを選択して、Elastic Algorithm Service (EAS) をクリックします。

  2. Inference Service タブで、Deploy Service をクリックします。Custom Model Deployment セクションで、JSON Deployment を選択します。

  3. JSON 構成ファイルの内容を貼り付け、Deploy をクリックします。サービスのステータスが 実行中 に変更された時点で、デプロイは完了です。

JSON パラメーター

パラメーター

必須

説明

metadata

はい

サービスのメタデータです。各パラメーターの詳細については、「metadata パラメーターの説明」をご参照ください。

cloud

いいえ

コンピューティングリソースおよび VPC 構成です。詳細については、「cloud パラメーターの説明」をご参照ください。

containers

いいえ

コンテナイメージの構成です。詳細については、「containers パラメーターの説明」をご参照ください。

dockerAuth

いいえ

プライベートリポジトリへの認証情報です。値は、リポジトリの username:password を Base64 エンコードした文字列です。

networking

いいえ

ネットワークおよび呼び出し構成です。各パラメーターの詳細については、「networking パラメーターの説明」をご参照ください。

storage

いいえ

OSS または NAS からコンテナへデータをマウントするストレージマウント構成です。構成の詳細については、「ストレージのマウント」をご参照ください。

token

いいえ

サービス認証用のアクセストークンです。省略した場合、システムが自動的にトークンを生成します。

aimaster

いいえ

マルチノード分散推論サービス向けの計算能力チェックおよびフォールトトレランスを有効化します。

model_path

はい

プロセッサを使用してサービスをデプロイする場合に必須です。model_path および processor_path パラメーターは、モデルおよびプロセッサの入力データソースのパスを指定します。サポートされるアドレス形式は以下のとおりです:

  • OSS アドレス:特定のファイルまたはディレクトリを指します。

  • HTTP アドレス: ファイルは TAR.GZTARBZ2、または ZIP などの圧縮パッケージである必要があります。

  • ローカルパス:ローカルデバッグ用の test コマンドを使用する場合に利用します。

oss_endpoint

いいえ

OSS エンドポイントです。例: oss-cn-beijing.aliyuncs.com。その他の値については、「リージョンとエンドポイント」をご参照ください。

説明

デフォルトでは、このパラメーターを省略できます。システムは、現在のリージョンの内部 OSS エンドポイントを使用してモデルまたはプロセッサファイルをダウンロードします。クロスリージョンの OSS アクセスには、このパラメーターが必要です。たとえば、中国 (杭州) リージョンでサービスをデプロイし、model_path パラメーターに中国 (北京) リージョンの OSS アドレスを指定する場合、中国 (北京) リージョンのパブリック OSS エンドポイントを指定する必要があります。

model_entry

いいえ

モデルのエントリーファイルです。任意のファイルを指定できます。未指定の場合、システムは model_path からファイル名を取得します。システムはメインファイルのパスを、プロセッサ内の initialize() 関数に渡します。

model_config

いいえ

モデル構成です。任意のテキストを指定できます。システムはこの値を、プロセッサ内の initialize() 関数の第 2 引数として渡します。

processor

いいえ

  • 公式の事前ビルド済みプロセッサを使用する場合、プロセッサコードを指定します。eascmd で使用されるプロセッサコードについては、「事前ビルド済みプロセッサ」をご参照ください。

  • カスタムプロセッサを使用する場合、このパラメーターを省略します。代わりに、processor_pathprocessor_entryprocessor_mainclass、および processor_type パラメーターを構成します。

processor_path

いいえ

プロセッサパッケージのパスです。詳細については、「model_path パラメーターの説明」をご参照ください。

processor_entry

いいえ

プロセッサのメインファイルです。例: libprocessor.so および app.py。ファイルには、推論に必要な initialize() および process() 関数の実装が含まれている必要があります。

processor_typecpp または python に設定されている場合、このパラメーターは必須です。

processor_mainclass

いいえ

JAR パッケージ内のプロセッサのメインクラスです。例: com.aliyun.TestProcessor

processor_typejava に設定されている場合、このパラメーターは必須です。

processor_type

いいえ

processor の実装言語です。有効な値は以下のとおりです:

  • cpp

  • java

  • python

warm_up_data_path

いいえ

モデルプリフェッチに使用するリクエストファイルのパスです。モデルプリフェッチの詳細については、「モデルサービスのプリフェッチ」をご参照ください。

runtime.enable_crash_block

いいえ

プロセッサコードの例外によりクラッシュした場合に、サービスインスタンスが自動再起動するかどうかを指定します。有効な値は以下のとおりです:

  • true:サービスインスタンスは自動再起動しません。トラブルシューティングのために環境を保持できます。

  • false:サービスインスタンスは自動再起動します(デフォルト値)。

autoscaler

いいえ

水平方向のオートスケーリングの構成です。各パラメーターの詳細については、「水平方向のオートスケーリング」をご参照ください。

labels

いいえ

EAS サービスのラベルです。フォーマットは key:value です。

unit.size

いいえ

分散推論構成における単一インスタンスあたりのデプロイマシン数です。デフォルト値は 2 です。

sinker

いいえ

すべてのサービスリクエストおよび応答を MaxCompute または Simple Log Service (SLS) に永続化します。各パラメーターの詳細については、「sinker パラメーターの説明」をご参照ください。

confidential

いいえ

システム信頼管理サービスを構成することで、安全かつ検証可能な推論サービスを有効化します。これにより、サービスデプロイおよび呼び出し時にデータ、モデル、コードが安全に暗号化されます。フォーマットは以下のとおりです:

説明

安全な暗号化環境は、主にマウントストレージ上のファイルを対象としています。この機能を有効化する前に、ストレージのマウントを実行してください。

"confidential": {
        "trustee_endpoint": "xxxx",
        "decryption_key": "xxxx"
    }

以下に、各パラメーターについて説明します

  • trustee_endpoint:信頼管理サービス Trustee の URI です。

  • decryption_key:復号鍵の KBS URI です。例: kbs:///default/key/test-key

メタデータパラメーター

一般パラメーター

パラメーター

必須

説明

name

はい

リージョン内で一意となるサービス名です。

instance

はい

サービスインスタンス数です。

workspace_id

いいえ

ワークスペース ID です。指定した場合、サービスはこの PAI ワークスペースに制限されます。例: 1405**

cpu

いいえ

各インスタンスが要求する CPU コア数です。

memory

いいえ

各インスタンスが要求するメモリ量(MB 単位の整数)です。たとえば、"memory": 4096 は、各インスタンスが 4 GB のメモリを要求することを意味します。

gpu

いいえ

各インスタンスが要求する GPU 数です。

gpu_memory

いいえ

GPU スライシングを有効化し、複数のインスタンスが単一の GPU を共有できるようにします。この機能には EAS リソースグループまたはリソースクォータが必要です。

gpu_core_percentage

qos

いいえ

インスタンスのサービス品質 (QoS) です。有効な値は空または BestEffort です。qosBestEffort に設定すると、CPU 共有モードが有効になります。このモードでは、インスタンスはシステムのメモリおよび GPU メモリ要件に基づいてスケジュールされ、ノード上の CPU コア数によって制限されません。ノード上のすべてのインスタンスが CPU リソースを共有します。cpu パラメーターは、単一インスタンスが使用できる最大 CPU クォータを指定します。

resource

いいえ

リソースグループの ID です。次のように設定します:

  • サービスをパブリックリソースグループにデプロイする場合、このパラメーターを省略します。サービスは従量課金で請求されます。

  • サービスを専用リソースグループにデプロイする場合、このパラメーターをリソースグループ ID に設定します。例: eas-r-6dbzve8ip0xnzt****

cuda

いいえ

サービスが要求する CUDA バージョンです。ランタイム時に、指定された CUDA バージョンが自動的にインスタンスの /usr/local/cuda ディレクトリにマウントされます。

サポートされるバージョン:8.0、9.0、10.0、10.1、10.2、11.0、11.1、11.2。例: "cuda":"11.2"

rdma

いいえ

分散推論向けに RDMA ネットワーキングを有効化するには、1 に設定します。省略した場合、RDMA ネットワーキングは無効になります。

説明

現在、RDMA ネットワーキングは、Lingjun インテリジェントコンピューティングリソースを使用してデプロイされたサービスのみで利用可能です。

enable_grpc

いいえ

サービスゲートウェイ向けの gRPC を有効化します。有効な値は以下のとおりです:

  • false(デフォルト):サービスゲートウェイは gRPC を有効化せず、デフォルトで HTTP リクエストをサポートします。

  • true:サービスゲートウェイは gRPC 接続を有効化します。

説明

サーバー側の実装が gRPC であるカスタムイメージでサービスをデプロイする場合、このパラメーターを true に設定して、ゲートウェイプロトコルを切り替えてください。

enable_webservice

いいえ

サービスを AI Web アプリケーションとしてデプロイするかどうかを指定します。有効な値は以下のとおりです:

  • false(デフォルト):Web サーバーは有効化されません。

  • true:Web サーバーが有効化されます。

type

いいえ

LLM インテリジェントルーターをデプロイするには、このパラメーターを LLMGatewayService に設定します。JSON ファイルの構成方法については、「LLM インテリジェントルーターのデプロイ」をご参照ください。

高度なパラメーター

重要

これらのパラメーターは、慎重に調整してください。

パラメーター

必須

説明

rpc

batching

いいえ

GPU モデルの高速化のため、サーバー側のバッチ処理を有効化するかどうかを指定します。この機能は、事前ビルド済みプロセッサモードでのみサポートされます。有効な値は以下のとおりです:

  • false(デフォルト):サーバー側のバッチ処理を無効化します。

  • true:サーバー側のバッチ処理を有効化します。

keepalive

いいえ

単一リクエストの最大処理時間(ミリ秒単位)です。リクエストがこの時間を超えると、サーバーは 408 タイムアウトエラーを返して接続を閉じます。デフォルト値:専用ゲートウェイの場合 600000。Application Load Balancer (ALB) 専用ゲートウェイでは、このパラメーターはサポートされていません。

io_threads

いいえ

各インスタンスあたりのネットワーク I/O スレッド数です。デフォルト値:4。

max_batch_size

いいえ

各バッチの最大サイズです。デフォルト値:16。このパラメーターは、事前ビルド済みプロセッサモードでのみサポートされ、rpc.batchingtrue に設定されている場合にのみ有効です。

max_batch_timeout

いいえ

各バッチの最大タイムアウト(ミリ秒単位)です。デフォルト値:50。このパラメーターは、事前ビルド済みプロセッサモードでのみサポートされ、rpc.batchingtrue に設定されている場合にのみ有効です。

max_queue_size

いいえ

非同期推論サービスの場合、このパラメーターは最大キュー長を指定します。デフォルト値:64。キューが満杯になると、サーバーは 450 エラーを返して接続を閉じます。サーバーの過負荷を防ぐため、キューはクライアントに対して他のインスタンスでリクエストを再試行するよう積極的に通知できます。応答時間が長いサービスでは、リクエストのバックログおよびタイムアウトを回避するために、キュー長を短くすることを検討してください。

worker_threads

いいえ

同時リクエスト処理のための各インスタンスあたりのワーカースレッド数です。デフォルト値:5。このパラメーターは、事前ビルド済みプロセッサモードでのみサポートされます。

rate_limit

いいえ

QPS レート制限を有効化し、インスタンスが処理できる最大 QPS を指定します。値が 0(デフォルト)の場合、この機能は無効化されます。

たとえば、このパラメーターを 2000 に設定した場合、QPS が 2000 を超えると、リクエストは 429(Too Many Requests)エラーで拒否されます。

enable_sigterm

いいえ

インスタンスが終了状態に入ったときに SIGTERM シグナルを送信するかどうかを指定します。有効な値は以下のとおりです:

  • false(デフォルト):SIGTERM シグナルは送信されません。

  • true:インスタンスが終了状態に入ったとき、システムはメインプロセスに SIGTERM シグナルを送信します。サービスプロセスは、このシグナルを処理してカスタムのグレースフル終了を実行する必要があります。シグナルが処理されない場合、メインプロセスは即座に終了し、グレースフル終了が失敗する可能性があります。

rolling_strategy

max_surge

いいえ

ローリングアップデート中に、希望するインスタンス数を超えて作成できる追加インスタンスの最大数です。この値は正の整数またはパーセンテージ(例:「2%」)で指定できます。デフォルト値は「2%」です。この値を増やすと、アップデートプロセスを加速できます。

たとえば、サービスが 100 個のインスタンスを持ち、このパラメーターが 20 に設定されている場合、アップデート開始時にシステムは直ちに 20 個の新しいインスタンスを作成します。

max_unavailable

いいえ

ローリングアップデート中に、利用不可となるインスタンスの最大数です。このパラメーターは、新しいインスタンスのためのリソースを解放し、容量不足によるアップデートの停止を防止します。デフォルト値は、専用リソースグループで 1、パブリックリソースグループで 0 です。

たとえば、このパラメーターが N に設定されている場合、アップデート開始時に N 個の古いインスタンスが直ちに停止されます。

説明

十分なアイドルリソースがある場合は、このパラメーターを 0 に設定してください。高い値を設定すると、利用可能なインスタンス数が減少し、各残りのインスタンスの負荷が増加するため、サービスの安定性に影響を与える可能性があります。このパラメーターを構成する際は、サービスの安定性とリソースの可用性のバランスを考慮してください。

eas.termination_grace_period

いいえ

インスタンスのグレースフル終了期間(秒単位)です。デフォルト値:30。

EAS サービスはローリングアップデート戦略を使用します。インスタンスはまず Terminating 状態に入り、その間にトラフィックが転送されなくなります。その後、インスタンスは指定された期間待機して、進行中のリクエストの処理を完了した後にシャットダウンします。リクエストの処理に長い時間がかかる場合、この値を増やすことで、アップデート中にすべてのリクエストが完了することを保証できます。

重要

この値を小さくすると、サービスの安定性に影響を与える可能性があります。大きすぎると、アップデートプロセスが遅くなる可能性があります。特別な要件がない限り、このパラメーターは変更しないでください。

scheduling

spread.policy

いいえ

サービスインスタンスのスケジューリング向けのディストリビューションポリシーです。サポートされるポリシーは以下のとおりです:

  • host:インスタンスを異なるノードに分散します。

  • zone:インスタンスを異なる可用性ゾーンに分散します。

  • default:アクティブなディストリビューション戦略なしで、デフォルトのスケジューリングポリシーを使用します。

構成例:

{
  "metadata": {
    "scheduling": {
      "spread": {
        "policy": "host"
      }
    }
}

resource_rebalancing

いいえ

リソースのリバランスを有効化するかどうかを指定します。有効な値は以下のとおりです:

  • false(デフォルト):この機能を無効化します。

  • true:EAS が高優先度リソース上で定期的にプローブインスタンスを作成するようになります。プローブインスタンスが正常にスケジュールされた場合、システムは指数関数的にさらに多くのプローブインスタンスを作成し、スケジュールに失敗するまで続けます。正常にスケジュールされたプローブインスタンスが準備完了すると、低優先度リソース上で実行中のインスタンスと置き換えられます。

この機能は、以下の問題の解決に役立ちます:

  • ローリングアップデート中に、終了中のインスタンスがリソースを占有し、新しいインスタンスが専用リソースグループに再スケジュールされる前にパブリックリソースグループで開始してしまう場合。

  • スポットインスタンスと通常のインスタンスの両方を使用している場合、システムが定期的に利用可能なスポットインスタンスを確認し、利用可能であれば通常のインスタンスからスポットインスタンスへインスタンスを移行する場合。

workload_type

いいえ

EAS サービスをジョブとしてデプロイするには、このパラメーターを elasticjob に設定します。Elastic Job サービスの詳細については、「Elastic Job サービス」をご参照ください。

resource_burstable

いいえ

専用リソースグループにデプロイされた EAS サービス向けに、弾力的リソースプール 機能を有効化します。有効な値は以下のとおりです:

  • true:この機能を有効化します。

  • false:この機能を無効化します。

shm_size

いいえ

インスタンスの共有メモリサイズ(GB 単位)です。共有メモリは、データのレプリケーションや転送を行わずに直接メモリアクセスを提供します。

Cloud パラメーター

パラメーター

必須

説明

computing

instances

いいえ

パブリックリソースグループでサービスをデプロイするためのインスタンスの仕様リストを指定します。インスタンスの仕様に対する入札が失敗したり在庫が不足したりした場合、システムは構成された順序で次のインスタンスの仕様を使用してサービスを作成しようとします。

  • type:インスタンスの仕様タイプです。

  • spot_price_limit

    • 設定した場合、このパラメーターは、指定された最大価格制限を持つスポットインスタンスとしてインスタンスを定義します。単位は USD です。

    • このパラメーターを省略した場合、インスタンスは通常の従量課金インスタンスになります。

  • capacity:このタイプのインスタンスの最大数です。数値(例:500)または文字列のパーセンテージ(例:「20%」)で指定できます。この制限に達すると、在庫がさらにあっても、このタイプのインスタンスの作成は停止されます。

    たとえば、サービスの合計インスタンス数が 200 であり、インスタンスタイプ A の capacity が「20%」に設定されている場合、サービスは最大で 40 個のインスタンスタイプ A を使用します。残りのインスタンスは、他の仕様を使用して作成されます。

disable_spot_protection_period

いいえ

このパラメーターは、スポットインスタンスにのみ適用されます。有効な値は以下のとおりです:

  • false(デフォルト):スポットインスタンスが作成された後、デフォルトで 1 時間の保護期間が適用されます。この期間中は、市場価格が入札価格を超えても、インスタンスは回収されません。

  • true:保護期間を無効化します。保護期間のないインスタンスは、通常、保護期間のあるインスタンスよりも約 10 % 安価です。

networking

vpc_id

いいえ

EAS サービスの VPC、vSwitch、およびセキュリティグループを指定します。

vswitch_id

いいえ

security_group_id

いいえ

例:

{
    "cloud": {
        "computing": {
            "instances": [
                {
                    "type": "ecs.c8i.2xlarge",
                    "spot_price_limit": 1
                },
                {
                    "type": "ecs.c8i.xlarge",
                    "capacity": "20%"
                }
            ],
            "disable_spot_protection_period": false
        },
        "networking": {
            "vpc_id": "vpc-bp1oll7xawovg9*****",
            "vswitch_id": "vsw-bp1jjgkw51nsca1e****",
            "security_group_id": "sg-bp1ej061cnyfn0b*****"
        }
    }
}

コンテナパラメーター

カスタムイメージを使用してサービスをデプロイするには、「カスタムイメージによるサービスデプロイ」をご参照ください。

パラメーター

必須

説明

image

はい

モデルサービスのコンテナイメージの URI です。

env

name

いいえ

環境変数の名前です。

value

いいえ

環境変数の値です。

command

command または script のいずれかが必須です。

コンテナのエントリーポイントコマンドです。単一コマンドのみサポートされます。複雑なスクリプト(例:cd xxx && python app.py)の場合は、代わりに script パラメーターを使用してください。/bin/sh コマンドを持たないイメージでは、このフィールドを使用します。

script

コンテナのエントリーポイントスクリプトです。\n またはセミコロン (;) を使用して複数のコマンドを区切ります。

port

いいえ

コンテナのポートです。

重要
  • 8080 および 9090 のポートは、EAS エンジンで予約されているため、使用しないでください。

  • このポートは、command または script 内のアプリケーションがリッスンするポートと一致させる必要があります。

prepare

pythonRequirements

いいえ

サービスインスタンスの起動前にインストールする Python パッケージのリストです。イメージには、システムパスに python および pip コマンドが含まれている必要があります。例:

"prepare": {
  "pythonRequirements": [
    "numpy==1.16.4",
    "absl-py==0.11.0"
  ]
}

pythonRequirementsPath

いいえ

requirements.txt ファイルへのパスです。このファイルに記載されたパッケージは、サービスインスタンスの起動前にインストールされます。イメージには、システムパスに python および pip コマンドが含まれている必要があります。requirements.txt ファイルはイメージ内に含まれるか、外部ストレージからマウントできます。例:

"prepare": {
  "pythonRequirementsPath": "/data_oss/requirements.txt"
}

ネットワークパラメーター

パラメーター

必須

説明

gateway

いいえ

EAS サービス向けの専用ゲートウェイ を指定します。

gateway_policy

いいえ

  • rate_limit: サービスが受信できる 1 秒あたりの最大リクエスト数です。

    • enable:レート制限を有効化するかどうかを指定します。

    • limit:1 秒あたりの最大リクエスト数です。

      説明

      共有ゲートウェイを使用するサービスには、単一サービスあたりのデフォルト制限が 1,000 QPS、サーバーグループ全体の制限が 10,000 QPS あります。専用ゲートウェイにはデフォルト値はありません。

  • concurrency_limit: 同時処理可能な進行中のリクエストの最大数です。Application Load Balancer (ALB) を使用する専用ゲートウェイでは、この設定はサポートされていません。

    • enable:同時実行制御を有効化するかどうかを指定します。

    • limit:同時リクエストの最大数です。

構成例:

{
    "networking": {
        "gateway_policy": {
            "rate_limit": {
                "enable": true,
                "limit": 100
            },
            "concurrency_limit": {
                "enable": true,
                "limit": 50
            }
        }
    }
}

Sinker パラメーター

パラメーター

必須

説明

type

いいえ

レコードを永続化するストレージタイプです。サポートされるタイプは以下のとおりです:

  • maxcompute:MaxCompute

  • sls:Simple Log Service (SLS)

config

maxcompute.project

いいえ

MaxCompute プロジェクト名です。

maxcompute.table

いいえ

MaxCompute テーブル名です。

sls.project

いいえ

SLS プロジェクト名です。

sls.logstore

いいえ

SLS Logstore 名です。

以下のセクションでは、構成例を示します。

MaxCompute

"sinker": {
        "type": "maxcompute",
        "config": {
            "maxcompute": {
                "project": "cl****",
                "table": "te****"
            }
        }
    }

Simple Log Service

"sinker": {
        "type": "sls",
        "config": {
            "sls": {
                "project": "k8s-log-****",
                "logstore": "d****"
            }
        }
    }

付録:JSON 構成ファイルの例

以下の JSON 例では、前述のパラメーターを使用しています:

{
  "token": "****M5Mjk0NDZhM2EwYzUzOGE0OGMx****",
  "processor": "tensorflow_cpu_1.12",
  "model_path": "oss://examplebucket/exampledir/",
  "oss_endpoint": "oss-cn-beijing.aliyuncs.com",
  "model_entry": "",
  "model_config": "",
  "processor_path": "",
  "processor_entry": "",
  "processor_mainclass": "",
  "processor_type": "",
  "warm_up_data_path": "",
  "runtime": {
    "enable_crash_block": false
  },
  "unit": {
        "size": 2
    },
  "sinker": {
        "type": "maxcompute",
        "config": {
            "maxcompute": {
                "project": "cl****",
                "table": "te****"
            }
        }
    },
  "cloud": {
    "computing": {
      "instances": [
        {
          "capacity": 800,
          "type": "dedicated_resource"
        },
        {
          "capacity": 200,
          "type": "ecs.c7.4xlarge",
          "spot_price_limit": 3.6
        }
      ],
      "disable_spot_protection_period": true
    },
    "networking": {
            "vpc_id": "vpc-bp1oll7xawovg9t8****",
            "vswitch_id": "vsw-bp1jjgkw51nsca1e****",
            "security_group_id": "sg-bp1ej061cnyfn0b****"
        }
  },
  "autoscaler": {
    "min": 2,
    "max": 5,
    "strategies": {
      "qps": 10
    }
  },
  "storage": [
    {
      "mount_path": "/data_oss",
      "oss": {
        "endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
        "path": "oss://bucket/path/"
      }
    }
  ],
  "confidential": {
        "trustee_endpoint": "xx",
        "decryption_key": "xx"
    },
  "metadata": {
    "name": "test_eascmd",
    "resource": "eas-r-9lkbl2jvdm0puv****",
    "instance": 1,
    "workspace_id": "1405**",
    "gpu": 0,
    "cpu": 1,
    "memory": 2000,
    "gpu_memory": 10,
    "gpu_core_percentage": 10,
    "qos": "",
    "cuda": "11.2",
    "enable_grpc": false,
    "enable_webservice": false,
    "rdma": 1,
    "rpc": {
      "batching": false,
      "keepalive": 5000,
      "io_threads": 4,
      "max_batch_size": 16,
      "max_batch_timeout": 50,
      "max_queue_size": 64,
      "worker_threads": 5,
      "rate_limit": 0,
      "enable_sigterm": false
    },
    "rolling_strategy": {
      "max_surge": 1,
      "max_unavailable": 1
    },
    "eas.termination_grace_period": 30,
    "scheduling": {
      "spread": {
        "policy": "host"
      }
    },
    "resource_rebalancing": false,
    "workload_type": "elasticjob",
    "shm_size": 100
  },
  "features": {
    "eas.aliyun.com/extra-ephemeral-storage": "100Gi",
    "eas.aliyun.com/gpu-driver-version": "tesla=550.127.08"
  },
  "networking": {
    "gateway": "gw-m2vkzbpixm7mo****"
  },
  "containers": [
    {
      "image": "registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz",
      "prepare": {
        "pythonRequirements": [
          "numpy==1.16.4",
          "absl-py==0.11.0"
        ]
      },
      "command": "python app.py",
      "port": 8000
    }
  ],
  "dockerAuth": "dGVzdGNhbzoxM*******"
}