カスタムモデルランタイムパラメーターを定義¶
モデルメタデータを介してカスタムモデルにランタイムパラメーターを追加することで、カスタムモデルのコードを再利用しやすくします。 ランタイムパラメーターを定義するには、model-metadata.yamlに以下の runtimeParameterDefinitionsを追加します。
| キー | 説明 |
|---|---|
fieldName |
ランタイムパラメーターの名前を定義します。 |
type |
ランタイムパラメーターに含まれるデータ型(string、boolean、numeric、credential、deployment)を定義します。 |
defaultValue |
(Optional) Set the default value for the runtime parameter. For credential type parameters, use defaultValue to reference an existing credential by its credential ID. For other types, set the default string, boolean, or numeric value. defaultValueを指定せずにランタイムパラメーターを定義した場合、デフォルト値はNoneです。 |
minValue |
(オプション)numericランタイムパラメーターには、ランタイムパラメーターで使用可能な最小数値を設定します。 |
maxValue |
(オプション)numericランタイムパラメーターには、ランタイムパラメーターで使用可能な最大数値を設定します。 |
credentialType |
(オプション)credentialランタイムパラメーターの場合、パラメーターに含める資格情報のタイプを設定します。 |
allowEmpty |
(オプション)ランタイムパラメーターに空のフィールドポリシーを設定します。
|
description |
(オプション)ランタイムパラメーターの目的または内容の説明を入力します。 |
DataRobotで予約されたランタイムパラメーター¶
DataRobotでは、カスタムモデルの設定用に、以下のランタイムパラメーターが予約されています。
| ランタイムパラメーター | タイプ | 説明 |
|---|---|---|
CUSTOM_MODEL_WORKERS |
数値 | 各レプリカは、設定された数の同時プロセスを処理できます。 このオプションは、主に生成AIのユースケースで、プロセスセーフなカスタムモデルを対象としています(プロセスセーフモデルの詳細については、以下の注を参照してください)。 レプリカごとに許可する適切な同時プロセス数を決定するには、カスタムモデルでリクエスト数とレスポンス時間の中央値を監視します。 カスタムモデルでのレスポンス時間の中央値は、LLMでのレスポンス時間の中央値に近い必要があります。 カスタムモデルのレスポンス時間がLLMのレスポンス時間を超えた場合、同時プロセスの数を増やすのをやめ、代わりにレプリカの数を増やしてください。 デフォルト値: 1 最大値: 40 |
カスタムモデルプロセスの安全性
CUSTOM_MODEL_WORKERSを有効にして設定する場合は、モデルがプロセスセーフであることを確認してください。これにより、複数の独立したプロセスが、競合を引き起こすことなく、共有リソースと安全にやり取りできるようになります。 この設定は、リソース効率を向上させるためにカスタムモデルで一般的に使用するためのものではありません。 この方法でCPUリソースを利用するメリットがあるのは、I/Oバウンドタスクを持つプロセスセーフなカスタムモデル(プロキシモデルなど)だけです。
カスタムモデルのメタデータを定義する¶
model-metadata.yamlでruntimeParameterDefinitionsを定義する前に、ターゲットタイプに必要なカスタムモデルメタデータを定義します。
name: binary-example
targetType: binary
type: inference
inferenceModel:
targetName: target
positiveClassLabel: "1"
negativeClassLabel: "0"
name: regression-example
targetType: regression
type: inference
name: textgeneration-example
targetType: textgeneration
type: inference
name: anomaly-example
targetType: anomaly
type: inference
name: unstructured-example
targetType: unstructured
type: inference
name: multiclass-example
targetType: multiclass
type: inference
次に、モデル情報の下にruntimeParameterDefinitionsを指定できます。
name: runtime-parameter-example
targetType: regression
type: inference
runtimeParameterDefinitions:
- fieldName: my_first_runtime_parameter
type: string
description: My first runtime parameter.
- fieldName: runtime_parameter_with_default_value
type: string
defaultValue: Default
description: A string-type runtime parameter with a default value.
- fieldName: runtime_parameter_boolean
type: boolean
defaultValue: true
description: A boolean-type runtime parameter with a default value of true.
- fieldName: runtime_parameter_numeric
type: numeric
defaultValue: 0
minValue: -100
maxValue: 100
description: A boolean-type runtime parameter with a default value of 0, a minimum value of -100, and a maximum value of 100.
- fieldName: runtime_parameter_for_credentials
type: credential
credentialType: basic
allowEmpty: false
description: A runtime parameter containing a dictionary of credentials; credentials must be provided before registering the custom model.
- fieldName: runtime_parameter_for_connected_deployment
type: deployment
description: A runtime parameter defined to accept the deployment ID of another deployment to connect to the deployed custom model.
ランタイムパラメーターによる資格情報の提供¶
credentialランタイムパラメータータイプは、DataRobot REST APIで使用可能な任意のcredentialType値をサポートします。 You can provide credentials in two ways:
-
Reference existing credentials: Use the credential ID as the
defaultValueto reference credentials defined in the DataRobot Credentials management section. -
Provide credential values directly: Include the full credential structure when defining the runtime parameter (typically used during local development with DRUM).
資格情報のタイプ
サポートされている資格情報タイプの詳細については、 資格情報のAPIリファレンスドキュメントを参照してください。
Reference existing credentials¶
To reference an existing credential, set the defaultValue to the credential ID:
- fieldName: my_api_token
type: credential
credentialType: api_token
allowEmpty: false
defaultValue: <credential-id>
description: A runtime parameter referencing an existing API token credential.
Credential requirements
When you reference an existing credential, the credential must exist in the credential management section before registering the custom model, must match the credentialType specified in the runtime parameter definition, and must match the credential ID used as the defaultValue.
Provide credential values directly¶
The credential information required depends on the credentialType, as shown in the examples below:
| 資格情報タイプ | 例 |
|---|---|
basic |
basic:
credentialType: basic
description: string
name: string
password: string
user: string
|
azure |
azure:
credentialType: azure
description: string
name: string
azureConnectionString: string
|
gcp |
gcp:
credentialType: gcp
description: string
name: string
gcpKey: string
|
s3 |
s3:
credentialType: s3
description: string
name: string
awsAccessKeyId: string
awsSecretAccessKey: string
awsSessionToken: string
|
api_token |
api_token:
credentialType: api_token
apiToken: string
name: string
|
ローカル開発中にオーバーライド値を指定する¶
DRUMを使用したローカル開発では、ランタイムパラメーターの値を含む.yamlファイルを指定できます。 ここで定義された値は、model-metadata.yamlでのdefaultValueセットをオーバーライドします。
my_first_runtime_parameter: Hello, world.
runtime_parameter_with_default_value: Override the default value.
runtime_parameter_for_credentials:
credentialType: basic
name: credentials
password: password1
user: user1
DRUMを使用する場合、--runtime-params-fileオプションはランタイムパラメーター値を含むファイルを指定します。
drum score --runtime-params-file .runtime-parameters.yaml --code-dir model_templates/python3_sklearn --target-type regression --input tests/testdata/juniors_3_year_stats_regression.csv
カスタムコードでのランタイムパラメーターのインポートと使用¶
ランタイムパラメーターをインポートしてアクセスするには、custom.pyでコードにRuntimeParametersモジュールをインポートします。
from datarobot_drum import RuntimeParameters
def mask(value, visible=3):
return value[:visible] + ("*" * len(value[visible:]))
def transform(data, model):
print("Loading the following Runtime Parameters:")
parameter1 = RuntimeParameters.get("my_first_runtime_parameter")
parameter2 = RuntimeParameters.get("runtime_parameter_with_default_value")
print(f"\tParameter 1: {parameter1}")
print(f"\tParameter 2: {parameter2}")
credentials = RuntimeParameters.get("runtime_parameter_for_credentials")
if credentials is not None:
credential_type = credentials.pop("credentialType")
print(
f"\tCredentials (type={credential_type}): "
+ str({k: mask(v) for k, v in credentials.items()})
)
else:
print("No credential data set")
return data