Skip to content

モデルメタデータおよび検証スキーマ

model-metadata.yamlファイルは、次に示すような、カスタムタスクまたはカスタム推論モデルの追加情報の指定に使用されます。

  • ブループリントの作成時にタスクの入出力要件の隣接タスクとの一致を検証する、サポートされている入出力データ型。

  • drum push実行中のタスクまたはモデルの環境IDおよびモデルID。

メタデータを定義するには、model-metadata.yamlファイルを作成して、タスクまたはモデルのディレクトリのトップレベルに置きます。 この手順はほとんどのケースで省略できますが、カスタムタスクが非数値データを出力する場合のカスタム変換タスクには必要です。 model-metadata.yamlは、custom.pyと同じフォルダーにあります。

以下のセクションでは、カスタムモデルとカスタムタスクのメタデータを定義する方法について説明します。 詳細については、DRUMリポジトリのカスタムモデルタスクの完全な例を参照してください。

一般的なメタデータのパラメーター

次の表で、タスクや推論モデルで利用可能なオプションについて説明します。 drum pushを使用して、作成するモデル/タスク/バージョンに関する情報を提供するには、そのパラメーターが必要です。 一部のパラメーターは、互換性の理由から、drum push以外でも必要です。

備考

そのmodelIDパラメーターは、指定されたIDを持つ既存のカスタムモデルやカスタムタスクに新しいバージョンを追加します。 このため、新しいベースレベルのカスタムモデルやカスタムタスクを構成するすべてのオプションは、このパラメーターと一緒に渡された場合、無視されます。 ただし、現時点ではまだこれらのパラメーターを含める必要があります。

オプション 必要な場合 タスクまたは推論モデル 説明
name 常時 両方 drum pushがカスタムモデルのタイトルとして使用する文字列で、検索を容易にするため、ユニークなものにすることが望ましいです。
type 常時 両方 training(カスタムタスク用)またはinference(カスタム推論モデル用)のいずれかの文字列です。
environmentID 常時 両方 カスタムモデルやカスタムタスクの実行中に使用する実行環境のハッシュです。 利用可能な実行環境の一覧は、モデルレジストリ > カスタムモデルワークショップ > 環境で確認できます。 環境を展開して、環境情報タブをクリックすると、ファイルIDが表示され、コピーできます。 drum pushの場合のみに必要です。
targetType 常時 両方 ターゲットのタイプを示す文字列です。 次のいずれかである必要があります。
  • binary
  • regression
  • anomaly
  • unstructured(推論モデルのみ)
  • multiclass
  • textgeneration(推論モデルのみ)
  • agenticworkflow(推論モデルのみ)
  • transform(変換タスクのみ)
modelID オプション 両方 モデルやタスクの作成後に、バージョン管理を使って反復しながらコードを追加することがベストプラクティスです。 新しいモデルやタスクの代わりに新しいバージョンを作成する場合は、このフィールドを使用して作成したカスタムのモデルやタスクをリンクします。 このID(ハッシュ)は、カスタムのモデルやタスクのURLを介して、UIから取得できます。 drum pushでのみ使用します。
description オプション 両方 検索可能なフィールドです。 modelIDが設定されている場合、モデルやタスクの説明の変更にはUIを使います。 drum pushでのみ使用します。
majorVersion オプション 両方 このパラメーターで、作成するモデルのバージョンをメジャー(True、デフォルト)または、マイナー(False)のどちらの更新バージョンにするか指定します。 たとえば、更新前のモデルのバージョンが2.3の場合、メジャーなら3.0、マイナーなら2.4の更新バージョンが作成されます。drum pushにのみ使用します。
targetName For binary and multiclass (in inferenceModel) モデル In inferenceModel, the name of the column the model predicts. For multiclass, use the same name as Target name in the Workshop and the same order of classes as Target classes for classLabels.
positiveClassLabel / negativeClassLabel 二値分類モデル用 モデル inferenceModelでは、モデルが確率を予測する場合、positiveClassLabelは予測がどのクラスに対応するかを示します。
classLabels For multiclass classification models モデル In inferenceModel, a list of class names (strings). The list order must match the order of predicted class probabilities your model returns (for example, the column order of probability outputs). Use the same labels as the Target classes you configure for the custom model in the Workshop.
predictionThreshold オプション(二値分類モデルでのみ使用) モデル inferenceModelでは、予測ラベルとして選択されるラベルを示す、0と1の間のカットオフポイント。
trainOnProject オプション タスク モデルやバージョンのトレーニングを行う、プロジェクトID(PID)のハッシュ。 drum pushを使用してカスタム推定タスクのテストとアップロードを行う場合、DataRobotへの推定タスクのアップロードに成功した直後に、シングルタスクのブループリントをトレーニングするオプションを選択できます。 trainOnProjectオプションは、そのブループリントをトレーニングするプロジェクトを指定します。

Inference model metadata (inferenceModel)

For structured inference models, target and class-label settings belong under the top-level key inferenceModel in model-metadata.yaml. If you omit fields that DataRobot or DRUM require for your targetType, builds, tests, or deployments can fail.

targetType Required under inferenceModel 備考
binary targetName, positiveClassLabel, negativeClassLabel Optional: predictionThreshold.
multiclass targetName, classLabels classLabels is a YAML list of class names in the same order as your model’s probability outputs.
regression (often none) Many regression templates work without an inferenceModel block; follow your environment and DRUM requirements.
anomaly, unstructured, textgeneration, … Follow template / DRUM See examples for your target type.

Workshop-generated file: On the Registry Workshop Assemble tab, Create model-metadata.yaml produces a starter file for your model’s target type. For multiclass, that file includes inferenceModel with targetName and classLabels (aligned with your Target classes), matching what you need for a successful deployment.

検証スキーマとフィールド

model_metadata.yaml内のtypeSchemaフィールドで定義されるスキーマ検証システムは、所定のカスタムタスク用に期待される入出力データ要件を定義するために使用されます。 オプションのinput_requirementsフィールドとoutput_requirementsフィールドを含めることにより、カスタムタスクが期待または出力するデータの種類を正確に指定できます。 DataRobotは指定した条件をプル―プリントエディターに表示して、近接するタスクがその条件と一致するかどうかを示します。 それらはブループリントのトレーニング中にも使用され、タスクのデータ形式が条件に一致するかどうかが検証されます。 サポートされる条件は次の通りです:

  • データ型
  • データのスパース性
  • 列数
  • 欠損値のサポート

備考

output_requirementsはカスタム変換タスクでのみサポートされており、推定タスクでは省略される必要がある点に注意してください。

以下のセクションでは、許可される条件と値について説明します。 特に明記されていない限り、入出力の要件として必要なのは1つのエントリーだけです。

data_types

data_typesフィールドは、期待されるデータ型、あるいは特定的に許可しないデータ型を指定します。 input_requirementsには、単一のデータ型またはリストを指定できます。output_requirementsには、単一のデータ型のみを指定できます。

許可される値は、NUM、TXT、IMG、DATE、CAT、DATE_DURATION、COUNT_DICT、GEOです。

data_typesで使用できる条件は次のとおりです:

  • EQUALS(等しい):データフレームには、リストされているすべてのデータ型が必要です。 データ型の欠損や予期しない型が含まれる場合は、エラーとなります。
  • IN:リストされたすべてのデータ型をサポートしますが、そのすべてが存在する必要はありません。
  • NOT_EQUALS:入力データフレームのデータ型はこの値であってはなりません。
  • NOT_IN:このタスクはリストされたデータ型をいずれもサポートしません。

sparse

sparseフィールドは、タスクが疎データを入力としてサポートするか、またはタスクが疎形式の出力データを作成できるかを定義します。

  • スパース性の仕様には常にEQUALS条件を含める必要があります。

入力の場合は次の値を適用します:

  • FORBIDDEN:タスクは、疎行列形式を処理できません。もし提供された場合は処理が失敗します。
  • SUPPORTED:このモデルは、CSR形式の密なデータフレームと疎データフレームの両方をサポートする必要があります。 どちらも前のタスクから渡されます。
  • REQUIRED:タスクは、入力として疎行列のみをサポートし、密行列は使用できません。 DRUMの場合、行列を疎データフレームに読み込みます。

タスク出力の場合は次の値を適用します。

  • NEVER:タスクは、疎データフレームを出力できません。
  • DYNAMIC:タスクは、密行列または疎行列のいずれかを出力できます。
  • ALWAYS:タスクは、常に疎行列を出力します。
  • IDENTITY:タスクは、疎行列または密行列のいずれかを出力でき、スパース性は入力行列と一致します。

number_of_columns

number_of_columnsフィールドは、特定の最小列数または最大列数のどちらか必要な方を指定します。 この値は負でない整数である必要があります。

時間のかかるタスクにおいて最大列数を指定すれば、パフォーマンスを妥当に保つことに役立ちます。 number_of_columnsフィールドでは、許容値の範囲を作成するための複数エントリーを可能にします。 一部の条件では1つのエントリーだけが許可されます(を参照してください)。

データフレームのnumber_of_columnsで使用する条件は次のとおりです:

  • EQUALS(等しい):列数とこの値は一致する必要があります。 追加条件は許可されません。
  • IN:複数の可能な値が許容可能です。 値は値フィールドにリストとして提供されます。 追加条件は許可されません。
  • NOT_EQUALS:列数は指定する値と一致してはなりません。
  • GREATER_THAN:列数は提供された値よりも大きいことが必要です。
  • LESS_THAN:列数は提供された値よりも小さいことが必要です。
  • NOT_GREATER_THAN:列数は提供された値以下である必要があります。
  • NOT_LESS_THAN:列数は提供された値以上である必要があります。

この値は負でない整数である必要があります。

contains_missing

contains_missingフィールドは、タスクが欠損データを承認できるか、欠損値を出力できるかを指定します。

  • EQUALSの条件を常に使用する必要があります。

入力の場合、次の値が入力データフレームに適用されます。

  • FORBIDDEN:タスクは、欠損値およびNAを承認することができません。
  • SUPPORTED:タスクは、欠損値を処理できます。

タスク出力の場合は次の値を適用します。

  • NEVER:タスクは、欠損値を出力できません。
  • DYNAMIC:タスクは、欠損値を出力できます。

デフォルトスキーマ

タスクにスキーマが提供されていない場合、DataRobotはデフォルトスキーマを使用します。これにより、入力で疎データ欠損値が許可されます。 デフォルトは以下のとおりです。

name: default-transform-model-metadata
type: training
targetType: transform
typeSchema:
  input_requirements:
    - field: data_types
      condition: IN
      value:
        - NUM
        - CAT
        - TXT
        - DATE
        - DATE_DURATION
    - field: sparse
      condition: EQUALS
      value: SUPPORTED
    - field: contains_missing
      condition: EQUALS
      value: SUPPORTED

   output_requirements:
    - field: data_types
      condition: EQUALS
      value: NUM
    - field: sparse
      condition: EQUALS
      value: DYNAMIC
    - field: contains_missing
      condition: EQUALS
      value: DYNAMIC 

デフォルトの出力データ型はNUMです。 これらの値のいずれかがタスクに適していない場合、model-metadata.yamlでスキーマを提供する必要があります(これは、非数値データを出力するカスタム変換タスクに必要です)。

ローカルチェックの実行

drum fitまたはdrum pushを実行すると、フルセットの検証が自動的に実行されます。 検証では最初に、提供されたtypeSchemaアイテムが要求された形式を満たしているかを確認します。 ローカルまたはDataRobotでタスクをトレーニングする前に、形式の問題に対処する必要があります。 形式の検証後、適合に使用される入力データセットが、提供されたinput_requirementsの仕様と比較されます。 タスクをトレーニングした後に、タスクの出力とoutput_requirementsが比較され、不一致が存在する場合はエラーが報告されます。

検証の無視

タスクの開発中は、検証の無効化が役立つ場合があります。 エラーを無視するには、drum fitまたはdrum pushで以下のコマンドを使用します。

--disable-strict-validation