# ランタイムパラメーターの定義

> ランタイムパラメーターの定義 - モデルメタデータを介してカスタムモデルにランタイムパラメーターを追加することで、カスタムモデルのコードを再利用しやすくします。

This Markdown file sits beside the HTML page at the same path (with a `.md` suffix). It summarizes the topic and lists links for tools and LLM context.

Companion generated at `2026-07-15T05:55:44.599212+00:00` (UTC).

## Primary page

- [ランタイムパラメーターの定義](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md): Full documentation for this topic (Markdown sidecar).

## Sections on this page

- [ランタイムパラメーターの定義](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#runtime-parameter-definitions): In-page section heading.
- [DataRobotで予約されたランタイムパラメーター](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#datarobot-reserved-runtime-parameters): In-page section heading.
- [カスタムモデルのメタデータを定義する](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#define-custom-model-metadata): In-page section heading.
- [ランタイムパラメーターによる資格情報の提供](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#provide-credentials-through-runtime-parameters): In-page section heading.
- [既存の資格情報を参照する](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#reference-existing-credentials): In-page section heading.
- [資格情報の値を直接指定する](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#provide-credential-values-directly): In-page section heading.
- [ローカル開発中にオーバーライド値を指定する](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#_1): In-page section heading.
- [カスタムコードでのランタイムパラメーターのインポートと使用](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-runtime-parameters.html.md#_2): In-page section heading.

## Related documentation

- [資格情報のAPIリファレンスドキュメント](https://docs.datarobot.com/en/docs/api/reference/public-api/credentials.html#schemacredentialsbody): Linked from this page.

## Documentation content

環境変数を定義し、それらをランタイムパラメーターとして含めることで、実行時にカスタムモデルコードに異なる値を指定します。これにより、カスタムモデルの再利用が容易になります。 コードまたはUIからランタイムパラメーターを定義します。

- コード：モデルアーティファクトでmodel-metadata.yamlファイルを指定します。 モデルをワークショップにアップロードする前にこのファイルを定義するか、カスタムモデルのファイル >作成ドロップダウンからワークショップで利用可能なテンプレートを使用します。 YAMLの構造はこのページで定義されています。
- UI：ワークショップで、カスタムモデルのランタイムパラメーターセクションにランタイムパラメーターを定義します。 詳細については、カスタムモデルの作成のドキュメントを参照してください。

ランタイムパラメーターは、次の2つの方法でコンテナに挿入されます。

1. 単純な型の場合、プレフィックスやJSONの解析を伴わない標準の環境変数として挿入されます（そのため、 datarobot-drum ライブラリを使用せずに os.getenv で環境変数にアクセスできます）。
2. 下位互換性を確保するため、従来のプレフィックス付き（ MLOPS_RUNTIME_PARAM_* ）およびJSON形式でも挿入されます。

[ワークショップのUIを通じて作成された](https://docs.datarobot.com/ja/docs/workbench/nxt-registry/nxt-model-workshop/nxt-create-custom-model.html.md#define-runtime-parameters) パラメーターは、新しいコードバージョンをアップロードする際にも保持およびマージされ、シームレスな開発フローが確保されます。

**ランタイムパラメーターに関する注意事項**

システムでは、動的設定で管理される予約済みパターンのブロックリスト（例： `DRUM_*` 、 `MLOPS_*` 、 `KUBERNETES_*` ）が使用されます。 一致判定では、 `*` ワイルドカードがサポートされています（完全な正規表現構文はサポートされていません）。 予約名は完全にはブロックされません。ランタイムパラメーターで予約名が使用されている場合、UIに警告が表示されます。 変数がどのように公開されるかは、コンテキストによって異なります。

- カスタムモデル： システムの競合を防ぐために、未加工の（プレフィックスが付かない）環境変数としてではなく、 プレフィックス付き（ MLOPS_RUNTIME_PARAM_* ）およびJSON形式のみ。
- カスタムアプリ： プレフィックスは付きますが、値はJSONペイロードに格納されません（資格情報を除く）。
- カスタムジョブ： プレフィックスもJSONペイロードもありません（資格情報タイプを除く）。この変数は、未加工の環境変数として使用できます。

資格情報タイプのランタイムパラメーターの場合、システムはJSONフィールドを単一の文字列ではなく、個別の環境変数として自動的に展開します。 たとえば、次のようなJSON構造を持つ `MAIN_AWS_CREDENTIAL` という名前の資格情報があります。

```
{"awsAccessKeyId": "<your-key-id>", "awsSecretAccessKey": "<your-access-key>"} 
```

パラメーター名とJSONキーを組み合わせ、大文字にして、以下の環境変数に展開されます。

```
MAIN_AWS_CREDENTIAL_AWS_ACCESS_KEY_ID="<your-key-id>"
MAIN_AWS_CREDENTIAL_AWS_SECRET_ACCESS_KEY="<your-access-key>" 
```

単一フィールド の資格情報タイプ（たとえば、 `api_token` 、 `bearer` 、または `gcp` ）の場合、挿入される環境変数には、パラメーター名に資格情報のフィールド名を組み合わせた形式（たとえば、 `MY_CRED_API_TOKEN` ）ではなく、ランタイムパラメーター名そのもの（ `MY_CRED` ）が使用されます。 複数フィールド JSONエンコードされたランタイムパラメーター変数（例： `MLOPS_RUNTIME_PARAMETERS_OPEN_AI_API` ）は変更されません。単一フィールドのシークレットにおけるフラット変数のみが、パラメーター名そのものを使用します。

> [!TIP] コンテナ内のランタイムパラメーターへのアクセス
> コンテナ内のランタイムパラメーターにプログラムでアクセスするには、SDK APIリファレンスに記載されているように、 `DataRobotAppFrameworkBaseSettings` を使用します。

既存のデプロイでランタイムパラメーターの値を変更するには、そのデプロイを無効にし、 設定 > リソース タブで値を更新してから、デプロイを再度有効にします。 詳細については、 [デプロイリソースの設定](https://docs.datarobot.com/ja/docs/workbench/nxt-console/nxt-settings/nxt-resource-settings.html.md) を参照してください。

## ランタイムパラメーターの定義

モデルメタデータを介してカスタムモデルにランタイムパラメーターを追加することで、カスタムモデルのコードを再利用しやすくします。 ランタイムパラメーターを定義するには、 `model-metadata.yaml` に以下の `runtimeParameterDefinitions` を追加します。

| キー | 説明 |
| --- | --- |
| fieldName | ランタイムパラメーターの名前を定義します。 |
| type | ランタイムパラメーターに含まれるデータ型（string、boolean、numeric、credential、deployment）を定義します。 |
| defaultValue | （オプション）ランタイムパラメーターのデフォルト値を設定します。 資格情報タイプのパラメーターでは、defaultValueを使用して、既存の資格情報をその資格情報IDで参照します。 他のタイプでは、デフォルトの文字列値、ブール値、または数値を設定します。 defaultValueを指定せずにランタイムパラメーターを定義した場合、デフォルト値はNoneです。 |
| minValue | （オプション）numericランタイムパラメーターには、ランタイムパラメーターで使用可能な最小数値を設定します。 |
| maxValue | （オプション）numericランタイムパラメーターには、ランタイムパラメーターで使用可能な最大数値を設定します。 |
| credentialType | （オプション）credentialランタイムパラメーターの場合、パラメーターに含める資格情報のタイプを設定します。 |
| allowEmpty | （オプション）ランタイムパラメーターに空のフィールドポリシーを設定します。True：（デフォルト）空のランタイムパラメーターを許可します。False：デプロイ前にランタイムパラメーターの値を指定するよう徹底します。 |
| description | （オプション）ランタイムパラメーターの目的または内容の説明を入力します。 |

## DataRobotで予約されたランタイムパラメーター

DataRobotでは、カスタムモデルの設定用に、以下のランタイムパラメーターが予約されています。

| ランタイムパラメーター | タイプ | 説明 |
| --- | --- | --- |
| CUSTOM_MODEL_WORKERS | 数値 | 各レプリカは、設定された数の同時プロセスを処理できます。 このオプションは、主に生成AIのユースケースで、プロセスセーフなカスタムモデルを対象としています（プロセスセーフモデルの詳細については、以下の注を参照してください）。 レプリカごとに許可する適切な同時プロセス数を決定するには、カスタムモデルでリクエスト数とレスポンス時間の中央値を監視します。 カスタムモデルでのレスポンス時間の中央値は、LLMでのレスポンス時間の中央値に近い必要があります。 カスタムモデルのレスポンス時間がLLMのレスポンス時間を超えた場合、同時プロセスの数を増やすのをやめ、代わりにレプリカの数を増やしてください。デフォルト値：1 最大値：40 |

> [!WARNING] カスタムモデルプロセスの安全性
> `CUSTOM_MODEL_WORKERS` を有効にして設定する場合は、モデルが プロセスセーフ であることを確認してください。これにより、複数の独立したプロセスが、競合を引き起こすことなく、共有リソースと安全にやり取りできるようになります。 この設定は、リソース効率を向上させるためにカスタムモデルで一般的に使用するためのものでは ありません 。 この方法でCPUリソースを利用するメリットがあるのは、I/Oバウンドタスクを持つプロセスセーフなカスタムモデル（プロキシモデルなど）だけです。

## カスタムモデルのメタデータを定義する

`model-metadata.yaml` で `runtimeParameterDefinitions` を定義する前に、ターゲットタイプに必要な [カスタムモデルのメタデータを定義](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-metadata.html.md) します。 二値、多クラス、および多ラベルモデルの場合、これには [inferenceModel](https://docs.datarobot.com/ja/docs/api/code-first-tools/drum/custom-model-metadata.html.md#inference-model-metadata) ブロック（ `targetName` およびクラスラベル。多クラスおよび多ラベルの場合は `classLabels` ）が含まれます。

**二値分類:**
```
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
inferenceModel:
  targetName: class
  classLabels:
    - class_a
    - class_b
    - class_c 
```

**多ラベル:**
```
name: multilabel-example
targetType: multilabel
type: inference
inferenceModel:
  targetName: genre
  classLabels:
    - action
    - comedy
    - sci-fi 
```


次に、モデル情報の下に `runtimeParameterDefinitions` を指定できます。

```
# Example: runtimeParameterDefinitions in model-metadata.yaml
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` 値をサポートします。 実行時には、資格情報のペイロードもコンテナ内で環境変数として反映されます。命名規則については、ランタイムパラメーターに関する注意事項を参照してください（ `api_token` 、 `bearer` 、 `gcp` などの単一フィールド型は、パラメーター名そのものが使用されます。 `basic` や `s3` などの複数フィールド型は、フィールドごとにサフィックスが付いた名前が使用されます）。

資格情報は、以下の2つの方法で指定できます。

- 既存の資格情報を参照する：DataRobotの資格情報の管理セクションで定義された資格情報を参照するには、資格情報IDをdefaultValueとして使用します。
- 資格情報の値を直接指定する：（通常、DRUMを用いたローカル開発時に使用される）ランタイムパラメーターを定義する際には、完全な資格情報構造を含めます。

> [!NOTE] 資格情報のタイプ
> サポートされている資格情報タイプの詳細については、 [資格情報のAPIリファレンスドキュメント](https://docs.datarobot.com/en/docs/api/reference/public-api/credentials.html#schemacredentialsbody) を参照してください。

### 既存の資格情報を参照する

既存の資格情報を参照するには、 `defaultValue` を資格情報IDに設定します。

```
# Example: Reference an existing credential
- fieldName: my_api_token
  type: credential
  credentialType: api_token
  allowEmpty: false
  defaultValue: <credential-id>
  description: A runtime parameter referencing an existing API token credential. 
```

> [!WARNING] 資格情報の要件
> 既存の資格情報を参照する場合、その資格情報は、カスタムモデルを登録する前に資格情報管理セクションに存在し、ランタイムパラメーター定義で指定された `credentialType` と一致し、 `defaultValue` として使用される資格情報IDと一致する必要があります。

### 資格情報の値を直接指定する

必要な資格情報は、以下の例に示すように、 `credentialType` によって異なります。

| 資格情報タイプ | 例 |
| --- | --- |
| 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` セットをオーバーライドします。

```
# Example: .runtime-parameters.yaml
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` オプションはランタイムパラメーター値を含むファイルを指定します。

```
# Example: --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` モジュールをインポートします。

```
# Example: custom.py
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 
```
