Parameters
次の表に、JSONオブジェクトのパラメーターを示します。
パラメーター | 必須 | 説明 |
name | 必須 | サービスの名前。 名前はリージョン内で一意である必要があります。 |
トークン | 任意 | 認証トークン。 このパラメーターを指定しない場合、システムは自動的にトークンを生成します。 |
model_path | 必須 | 入力モデルパッケージのパス。 model_pathとprocessor_pathパラメーターを次のいずれかの形式で指定します。 HTTP URL: 入力パッケージは、TAR.GZ、TAR、BZ2、またはZIP形式である必要があります。 OSSパス: object Storage Service (OSS) の特定のオブジェクトまたはディレクトリのパスを指定できます。 別のリージョンでOSSパスを使用する場合は、oss_endpointパラメーターも指定する必要があります。 例: "model_path":"oss://wowei-beijing-tiyan/alink/",
"oss_endpoint":"oss-cn-beijing.aliyuncs.com",
オンプレミスパス: test コマンドを実行してデバイスでデバッグを実行する場合は、オンプレミスパスを使用できます。
|
oss_endpoint | 任意 | リージョン内のOSSのパブリックエンドポイント。 例: oss-cn-beijing.aliyuncs.com。 詳細については、「リージョンとエンドポイント」をご参照ください。
説明 このパラメーターを指定しない場合、システムは現在のリージョンのOSSのエンドポイントを使用してモデルパッケージまたはプロセッサパッケージをダウンロードします。 別のリージョンのOSSにアクセスする場合は、このパラメーターを指定する必要があります。 たとえば、サービスを中国 (杭州) リージョンにデプロイするが、中国 (北京) リージョンのOSSエンドポイントをmodel_pathパラメーターに使用する場合は、このパラメーターを指定する必要があります。 |
model_entry | 任意 | モデルパッケージのエントリファイル。 ファイルは任意のファイルとすることができます。 このパラメーターを指定しない場合、model_pathパラメーターの値が使用されます。 モデルパッケージ内のメインファイルパスは、プロセッサのinitialize() 関数に渡されます。 |
model_config | 任意 | モデルの構成。 値はTEXT型です。 このパラメータの値は、プロセッサのinitialize() 関数の2番目のパラメータに渡されます。 |
プロセッサ | 任意 | 組み込みプロセッサを使用する場合は, このパラメーターにプロセッサコードを指定してください。 EASCMD クライアントで使用されるプロセッサコードについては、「組み込みプロセッサ」をご参照ください。 カスタムプロセッサを使用する場合は、このパラメーターを指定する必要はありません。 代わりに、processor_path、processor_entry、processor_mainclass、およびprocessor_typeパラメーターを指定する必要があります。
|
processor_path | 任意 | プロセッサパッケージのパス。 詳細については、model_pathパラメーターの説明をご参照ください。 |
processor_entry | 任意 | プロセッサパッケージのメインファイル。 libprocessor.so、app.pyなどの メインファイルには、予測に必要なinitialize() 関数とprocess() 関数の実装が含まれています。 processor_typeパラメーターをcppまたはpythonに設定した場合、このパラメーターを指定する必要があります。 |
processor_mainclass | 任意 | プロセッサのJARパッケージのメインクラス。 com.aliyun.TestProcessorなど。 processor_typeパラメーターをjavaに設定した場合、このパラメーターを指定する必要があります。 |
processor_type | 任意 | プロセッサの実装に使用される言語。 有効な値: |
warm_up_data_パス | 任意 | モデルのウォームアップに使用されるリクエストファイルのパス。 詳細については、「ウォームアップモデルサービス」をご参照ください。 |
runtime.enable_crash_ブロック | 任意 | プロセッサコードの例外によりインスタンスがクラッシュした場合に、サービスインスタンスが自動的に再起動するかどうかを指定します。 有効な値: |
クラウド | 任意 | パブリックリソースグループを使用してサービスをデプロイする場合は、cloud.com puting.instance_typeパラメーターを使用して、サービスのデプロイに使用するインスタンスタイプを指定する必要があります。 "cloud":{
"computing":{
"instance_type":"ecs.gn6i-c24g1.6xlarge"
}
}
詳細については、「共有リソースグループの使用に関する注意事項」をご参照ください。 |
autoscaler | 任意 | モデルサービスの水平自動スケーリング設定。 詳細については、「自動スケーリング」をご参照ください。 |
コンテナー | 任意 | サービスのデプロイに使用するカスタムイメージのコンテナー情報。 詳細については、「カスタムイメージを使用したモデルサービスのデプロイ」をご参照ください。 |
ストレージ | 任意 | サービスのストレージ情報。 |
メタデータ | 必須 | サービスのメタデータ。 詳細については、このトピックの表1メタデータパラメーターセクションをご参照ください。 |
特徴 | 任意 | サービスの特徴。 詳細については、このトピックの表2特徴パラメータセクションをご参照ください。 |
ネットワーキング | 任意 | サービスの呼び出し設定。 詳細については、このトピックの表3ネットワークパラメーターセクションをご参照ください。 |
表 1 metadataパラメーター
パラメーター | 必須 | 説明 |
標準パラメータ | インスタンス | 必須 | サービスインスタンスの数。 |
workspace_id | 任意 | ワークスペースIDを設定すると、指定されたPAIワークスペース内でのみサービスを使用できます。 例: 1405 ** |
cpu | 任意 | 各インスタンスに必要なCPUの数。 |
メモリ | 任意 | 各インスタンスに必要なメモリ量。 値は整数でなければなりません。 単位:MB。 たとえば、"memory": 4096 は、各インスタンスに4 GBのメモリが必要であることを指定します。 |
gpu | 任意 | 各インスタンスに必要なGPUの数。 |
gpu_メモリ | 任意 | 各インスタンスに必要なGPUメモリの量。 値は整数でなければなりません。 単位は GB です。 PAIでは、1つのGPUのメモリリソースを複数のインスタンスに割り当てることができます。 複数のインスタンスが1つのGPUのメモリリソースを共有する場合は、gpuパラメーターを0に設定します。 gpuパラメーターを1に設定すると、各インスタンスがGPUを占有し、gpu_memoryパラメーターは有効になりません。
重要 PAIはGPUメモリの厳密な分離を可能にしません。 メモリ不足 (OOM) エラーを防ぐために、各インスタンスで使用されるGPUメモリが要求量を超えないようにしてください。 |
gpu_core_パーセンテージ | 任意 | 各インスタンスがGPUごとに必要とする計算能力の比率。 値は1〜100の整数です。 単位:パーセント。 たとえば、パラメーターを10に設定すると、システムは各GPUの10% の計算能力を使用します。 これにより、コンピューティングパワーの柔軟なスケジューリングが容易になり、複数のインスタンスが単一のGPUを共有できます。 有効にするには、gpu_core_procentageパラメーターにgpu_memoryパラメーターを指定する必要があります。 |
qos | 任意 | 各インスタンスのサービス品質 (QoS) レベル。 このパラメーターは空のままにするか、このパラメーターをBestEffortに設定できます。 qosパラメーターをBestEffortに設定した場合、ノード上のすべてのインスタンスがノードのCPUコアを共有します。 このように、システムはメモリとGPUリソースに基づいてインスタンスをスケジュールし、ノードのCPU数によって制限されません。 すべてのインスタンスは、ノードのCPUコアを共有します。 この場合、cpuパラメーターは各インスタンスに許可されるCPUコアの最大数を指定しますが、メモリとGPUリソースはメモリとGPUパラメーターの値に基づいてインスタンスに割り当てられます。 |
リソース | 任意 | リソースグループの ID です。 |
cuda | 任意 | サービスに必要なCompute Unified Device Architecture (CUDA) バージョン。 サービスが起動すると、指定されたバージョンのCUDAがインスタンスの /usr/local/cuda ディレクトリに自動的にマウントされます。 サポートされているCUDAバージョン: 8.0、9.0、10.0、10.1、10.2、11.0、11.1、11.2。 例: "cuda":"11.2" |
_grpcの有効化 | 任意 | サービスゲートウェイのGoogleリモートプロシージャコール (gRPC) 接続を有効にするかどうかを指定します。 デフォルト値:false 有効な値:
説明 カスタムイメージを使用してサービスをデプロイし、イメージがgRPCサーバーを使用する場合は、このパラメーターをtrueに設定する必要があります。 |
_webserviceの有効化 | 任意 | Webサーバー機能を有効にするかどうかを指定します。 この機能が有効になっている場合、システムはAIを利用したwebアプリケーションとしてサービスをデプロイします。 デフォルト値:false 有効な値: false: Webサーバー機能を無効にします。 true: Webサーバー機能を有効にします。
|
高度なパラメータ
重要 これらのパラメーターは慎重に指定することを推奨します。 | rpc. バッチ処理 | 任意 | サーバーでバッチ処理を有効にしてGPUベースのモデリングを高速化するかどうかを指定します。 内蔵プロセッサのみがこのパラメータをサポートしています。 デフォルト値:false 有効な値: |
rpc.keepalive | 任意 | 1つのリクエストの最大処理時間。 リクエスト処理に必要な時間がこの値を超えると、サーバーはタイムアウトエラーコード408を返し、接続を閉じます。 デフォルト値: 5000。 単位:ミリ秒。 |
rpc.io_スレッド | 任意 | ネットワークI/Oを処理するために各インスタンスによって使用されるスレッドの数。 デフォルト値: 4。 |
rpc.max_batch_サイズ | 任意 | 各バッチの最大サイズ。 デフォルト値: 16。 このパラメーターは、rpc.batchingパラメーターをtrueに設定した場合にのみ有効になります。 内蔵プロセッサのみがこのパラメータをサポートしています。 |
rpc.max_batch_timeout | 任意 | 各バッチの最大タイムアウト期間。 デフォルト値は 50 です。 単位:ミリ秒。 このパラメーターは、rpc.batchingパラメーターをtrueに設定した場合にのみ有効になります。 内蔵プロセッサのみがこのパラメータをサポートしています。 |
rpc.max_queue_サイズ | 任意 | リクエストキューのサイズ。 デフォルト値: 64。 キューがいっぱいになると、サーバーはエラーコード450を返し、接続を閉じます。 サーバーが過負荷になるのを防ぐために、リクエストキューは、キューがいっぱいになったときに他のインスタンスにリクエストを送信するようにクライアントに指示します。 応答時間が長すぎる場合は、リクエストタイムアウトを防ぐためにこのパラメーターを小さい値に設定します。 |
rpc.worker_スレッド | 任意 | 同時リクエストを処理するために各インスタンスによって使用されるスレッドの数。 既定値:5 内蔵プロセッサのみがこのパラメータをサポートしています。 |
rpc.rate_limit | 任意 | インスタンスに対してQPSベースのスロットリングを有効にするかどうかを指定し、1秒あたりにインスタンスが処理できるクエリの最大数を制限します。 デフォルト値は 0 です。 値0は、QPSベースのスロットリングが無効になることを示します。 たとえば、このパラメーターを2000に設定した場合、1秒あたりのクエリ数 (QPS) が2,000を超えると、新しいリクエストは拒否され、ステータスコード429が返されます。 |
rolling_strategy.max_surge | 任意 | ローリング更新中にサービスに対して作成できる追加インスタンスの最大数。 このパラメーターは、追加のインスタンスの数を指定する正の整数に設定できます。 このパラメーターを、サービスインスタンスの元の数に対する追加インスタンスの数の比率を指定する2% などのパーセンテージに設定することもできます。 デフォルト値は2% です。 値が高いほど、サービスはより速く更新されます。 たとえば、サービスインスタンスの数を100に設定し、このパラメーターを20に設定すると、サービスを更新するとすぐに20のインスタンスが追加されます。 |
rolling_strategy.max_利用できません | 任意 | ローリング更新中に使用できなくなるサービスインスタンスの最大数。 ローリング更新中に、システムは既存のインスタンスをリリースして、新しいインスタンスのリソースを解放できます。 これにより、リソース不足による更新の失敗を防ぎます。 専用リソースグループでは、このパラメーターのデフォルト値は1です。 パブリックリソースグループでは、このパラメーターのデフォルト値は0です。 たとえば、このパラメーターをNに設定すると、サービスの更新開始時にN個のインスタンスがすぐに停止します。
説明 アイドルリソースで十分な場合は、このパラメーターを0に設定できます。 このパラメーターを大きな値に設定すると、サービスの安定性に影響を与える可能性があります。 これは、サービスの更新中に使用可能なインスタンスの数が減少し、各インスタンスのワークロードが増加するために発生します。 このパラメーターを指定するときは、サービスの安定性と必要なリソースを考慮する必要があります。 |
eas.termination_grace_period | 任意 | 優雅なシャットダウンのために許される最大時間。 単位は秒です。 デフォルト値:30。 EASサービスはローリング更新ポリシーを使用します。 インスタンスがリリースされる前に、インスタンスは [終了] 状態になり、指定した期間中に受信したリクエストの処理を続行し、システムはトラフィックを他のインスタンスに切り替えます。 インスタンスがリクエストの処理を完了すると、インスタンスはリリースされます。 したがって、グレースフルシャットダウンプロセスの期間は、このパラメータの値以内でなければなりません。 リクエストの処理に必要な時間が長い場合は、このパラメーターの値を大きくして、システムがサービスを更新したときに進行中のすべてのリクエストを処理できるようにすることができます。
重要 このパラメーターを小さい値に設定すると、サービスの安定性に影響を与える可能性があります。 このパラメーターを大きな値に設定すると、サービスの更新が延長される可能性があります。 特別な要件がない限り、デフォルト値を使用することを推奨します。 |
scheduling.spread.policy | 任意 | インスタンスのスケジューリング中にインスタンスを配布するために使用されるポリシー。 有効な値: host: インスタンスはできるだけ多くのノードに分散されています。 zone: インスタンスはできるだけ多くのゾーンに分散されています。 default: インスタンスはデフォルトポリシーを使用してスケジュールされ、意図的に配布されません。
|
rpc.enable_sigterm | 任意 | 有効な値: false: サービスインスタンスがEXIT状態になると、システムはSIGTERM信号を送信しません。 デフォルト値です。 true: サービスインスタンスがEXIT状態になると、システムは直ちにSIGTERM信号をメインプロセスに送信します。 信号が受信された後、サービスのメインプロセスは、信号処理機能でカスタムのグレースフルシャットダウンを実行します。 信号が処理されない場合、メインプロセスは信号を受信した直後に終了し、グレースフルシャットダウンが失敗する可能性があります。
|
表 2. 特徴パラメータ
パラメーター | 必須 | 説明 |
eas.aliyun.com/extra-ephemeral-storage | 任意 | システムディスクメモリの追加量。 無料クォータがビジネス要件を満たしていない場合は、このパラメーターを指定します。 値は0から2000までの正の整数でなければなりません。 単位は GB です。 |
表 3. ネットワークパラメーター
パラメーター | 必須 | 説明 |
disable_internet_エンドポイント | 任意 | インターネット経由のサービス呼び出しを無効にするかどうかを指定します。 デフォルト値はfalseです。 このパラメーターをtrueに設定すると、インターネット経由でサービスを呼び出すことはできません。 |
例
サンプルJSONファイル:
{{
"name": "test_eascmd",
"processor": "tensorflow_cpu_1.12",
"model_path": "oss://examplebucket/exampledir/",
"oss_endpoint": "oss-cn-beijing.aliyuncs.com",
"model_entry": "",
"model_config": "",
"processor": "",
"processor_path": "",
"processor_entry": "",
"processor_mainclass": "",
"processor_type": "",
"warm_up_data_path": "",
"runtime": {
"enable_crash_block": false
},
"cloud": {
"computing": {
"instance_type": "ecs.gn6i-c24g1.6xlarge"
}
},
"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/"
}
}
],
"metadata": {
"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,
"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"
}
}
},
"features": {
"eas.aliyun.com/extra-ephemeral-storage": "100Gi"
},
"networking": {
"disable_internet_endpoint": false
}
}