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

Platform For AI:モデルサービスのパラメータ

最終更新日:Sep 18, 2024

EASCMDクライアントを使用して、Platform for AI (PAI) のElastic Algorithm Service (EAS) でサービスを作成できます。 サービスを作成する前に、JSONオブジェクトで関連パラメーターを指定する必要があります。 このトピックでは、JSONオブジェクトのパラメーターについて説明します。

説明

EASCMDクライアントの使用方法の詳細については、「EASCMDクライアントのダウンロードとID認証の完了」をご参照ください。

Parameters

次の表に、JSONオブジェクトのパラメーターを示します。

パラメーター

必須

説明

name

必須

サービスの名前。 名前はリージョン内で一意である必要があります。

トークン

任意

認証トークン。 このパラメーターを指定しない場合、システムは自動的にトークンを生成します。

model_path

必須

入力モデルパッケージのパス。 model_pathprocessor_pathパラメーターを次のいずれかの形式で指定します。

  • HTTP URL: 入力パッケージは、TAR.GZTARBZ2、または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_pathprocessor_entryprocessor_mainclass、およびprocessor_typeパラメーターを指定する必要があります。

processor_path

任意

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

processor_entry

任意

プロセッサパッケージのメインファイル。 libprocessor.soapp.pyなどの メインファイルには、予測に必要なinitialize() 関数とprocess() 関数の実装が含まれています。

processor_typeパラメーターをcppまたはpythonに設定した場合、このパラメーターを指定する必要があります。

processor_mainclass

任意

プロセッサのJARパッケージのメインクラス。 com.aliyun.TestProcessorなど。

processor_typeパラメーターをjavaに設定した場合、このパラメーターを指定する必要があります。

processor_type

任意

プロセッサの実装に使用される言語。 有効な値:

  • cpp

  • java

  • python

warm_up_data_パス

任意

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

runtime.enable_crash_ブロック

任意

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

  • true: サービスインスタンスは自動的に再起動されません。 これは問題のトラブルシューティングに役立ちます。

  • false: サービスインスタンスが自動的に再起動します。 デフォルト値です。

クラウド

任意

パブリックリソースグループを使用してサービスをデプロイする場合は、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 です。

  • サービスがパブリックリソースグループにデプロイされている場合、このパラメーターは無視できます。 この場合、サービスは従量課金に基づいて課金されます。

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

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 有効な値:

  • false: gRPC接続を無効にします。 この場合、HTTPリクエストはデフォルトでサポートされます。

  • true: gRPC接続を有効にします。

説明

カスタムイメージを使用してサービスをデプロイし、イメージがgRPCサーバーを使用する場合は、このパラメーターをtrueに設定する必要があります。

_webserviceの有効化

任意

Webサーバー機能を有効にするかどうかを指定します。 この機能が有効になっている場合、システムはAIを利用したwebアプリケーションとしてサービスをデプロイします。 デフォルト値:false 有効な値:

  • false: Webサーバー機能を無効にします。

  • true: Webサーバー機能を有効にします。

高度なパラメータ

重要

これらのパラメーターは慎重に指定することを推奨します。

rpc. バッチ処理

任意

サーバーでバッチ処理を有効にしてGPUベースのモデリングを高速化するかどうかを指定します。 内蔵プロセッサのみがこのパラメータをサポートしています。 デフォルト値:false 有効な値:

  • false: サーバーのバッチ処理を無効にします。

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

rpc.keepalive

任意

1つのリクエストの最大処理時間。 リクエスト処理に必要な時間がこの値を超えると、サーバーはタイムアウトエラーコード408を返し、接続を閉じます。 デフォルト値: 5000。 単位:ミリ秒。

説明

組み込みプロセッサを使用する場合は、コードでallsparkパラメーターも設定する必要があります。 詳細については、「Pythonを使用したカスタムプロセッサの開発」をご参照ください。

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
  }
}