モデルの接続と開発モデルの評価モデル評価ツールカスタムモデル評価ツール

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

カスタム評価ライブラリ

評価ライブラリは、モデル評価ツールを生成する、Foundry の公開済み Python パッケージです。評価ライブラリを使用すると、モデルの性能、公平性、堅牢性、その他のメトリクスを測定する処理を、異なるモデリング目標で再利用できます。

Foundry では、二値分類モデルおよび回帰モデル用のデフォルトのモデル評価ツールに加えて、モデリング目標でネイティブに使用できるカスタムモデル評価ツールも作成できます。

モデリング目標内のカスタム評価ツール

カスタム評価ツール、その設定オプション、および生成されるメトリクスは、評価ツールの実装の冒頭にある docstring で指定された名前と説明で、Modeling Objectives アプリケーションに表示されます。

カスタム評価ツールを公開すると、公開済みライブラリの閲覧権限を持つすべてのユーザーが Modeling Objective アプリケーションで利用できるようになります。これにより、組織全体で標準化されたメトリクスを計算するための再利用可能なロジックを記述できます。

コード内のカスタム評価ツール

カスタム評価ツールは、モデリング目標の評価ライブラリ設定で選択できます。このライブラリは、評価ツールで定義されたパラメーターに基づいて設定できます。

モデリング目標内のカスタム評価ツール

カスタム評価ツールを作成する

カスタム評価ツールを作成するには、次の手順を実行します。

  1. Model Evaluator Template Library からコードリポジトリを作成します。
  2. カスタム評価ツールを実装します。
  3. カスタム評価ツールにパラメーターを追加します。
  4. 変更をコミットし、その変更を含む新しいタグを公開します。

コードリポジトリを作成する

Code Repositories アプリケーションには、多くのテンプレート実装があります。この例では Model Evaluator Template Library を使用します。Foundry のプロジェクトに移動し、+ 新規 > リポジトリタイプ > モデル統合 > Template の言語を選択して、Model Evaluator Template Library を選択し、最後に初期化を選択します。

新しいコードリポジトリを初期化する

評価ツールテンプレートの構造

Model Evaluator Template Library の src/evaluator/custom_evaluator.py ファイルには、実装例が含まれています。Evaluator Python インターフェースの実装は、新しいリポジトリバージョンタグを付けてリポジトリの新しいバージョンを公開すると、自動的に登録され、利用可能になります。

カスタム評価ツールのロジックを含むリポジトリでは、複数の評価ツールを公開できます。評価ツールの実装ファイルを追加する場合は、評価ツールテンプレートの build.gradle にあるモデル評価ツールモジュールのリストに、そのファイルへの参照を追加する必要があります。

追加のカスタム評価ツール

カスタム評価ツールを実装する

カスタム評価ツールを実装するには、Evaluator インターフェースの実装を作成する必要があります。また、任意で、Modeling Objectives アプリケーションが解釈する設定フィールドを指定できます。

評価ツールテンプレートライブラリで、src/evaluator/custom_evaluator.py ファイルに評価ツールを追加します。

評価ツールのインターフェース

評価ツールのインターフェースは、次のように定義されています。

Copied!
1 2 3 4 5 6 7 8 9 10 11 class Evaluator(): def apply_spark(self, df: DataFrame) -> List[ComputedMetricValue]: """ 評価ツールを適用して、PySpark Dataframe のメトリクスを計算します。 :param df: The PySpark DataFrame to compute metrics on :return: A list of computed metric values """ pass

評価ツールのドキュメント

カスタム評価ツール、その設定オプション、および生成されるメトリクスは、実装の冒頭にある docstring で指定された名前と説明で、Modeling Objectives アプリケーションに表示されます。

必須の値は次のとおりです。

  • display-name:評価ツールの表示名
  • description:評価ツールの説明

任意で、次の項目を0個以上追加できます。

  • param:カスタム評価ツールの設定パラメーター
  • metric:評価ツールが生成するメトリクス

評価ツールの実装例

これは、入力データセットの行数を計算する評価ツールの例です。

この評価ツールの例は、Modeling Objectives アプリケーションに次の内容で表示されます。

  • タイトル:行数評価ツール。
  • 説明:この評価ツールは、入力 DataFrame の行数を計算します。
  • 生成されるメトリクス:行数。説明は「行数」です。
  • 設定パラメーター:0個。
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from pyspark.sql import DataFrame from pyspark.sql import functions as F from foundry_ml_metrics.evaluation import ComputedMetricValue, Evaluator class CustomEvaluator(Evaluator): """ :display-name: Row Count Evaluator :description: This evaluator calculates the row count of the input DataFrame. :metric Row Count: The row count """ def apply_spark(self, df: DataFrame) -> List[ComputedMetricValue]: row_count = df.count() return [ ComputedMetricValue( metric_name='Row Count', metric_value=row_count ) ]

評価ツールをパラメーター化する

設定パラメーターを指定すると、Modeling Objectives アプリケーションで評価ツールを設定可能にできます。 設定パラメーターには、実行時に Modeling Objectives アプリケーションによってユーザーが入力した値が設定されます。 この評価ツールのユーザーは、モデリング目標で自動評価を設定するときに、パラメーターの値を設定できます。

使用できる設定フィールドは次のとおりです。

  • int:整数
  • float:浮動小数点数
  • bool:ブール値(True または False)
  • str:文字列値
  • Field[float]:入力 DataFrame 内の浮動小数点数の列
  • Field[int]:入力 DataFrame 内の整数の列
  • Field[str]:入力 DataFrame 内の文字列の列

パラメーターを Optional(組み込みの typing パッケージ)で囲むと、任意にできます。

例:

  • 任意の str は Optional[str] になります
  • 任意の Field[str] は Optional[Field[str]] になります

設定フィールドを持つ評価ツールの例

これは、入力データセットの行数と、入力列 column の値が value になるように入力 DataFrame を絞り込んだときの行数を計算する評価ツールの例です。

この評価ツールの例は、Modeling Objectives アプリケーションに次の内容で表示されます。

  • タイトル:設定可能な行数評価ツール。
  • 説明:この評価ツールは、指定された値で絞り込んだ入力 DataFrame の行数を計算します。
  • 生成されるメトリクス:行数。説明は「絞り込み前の行数」です。
  • 生成されるメトリクス:絞り込み後の行数。説明は「絞り込み後の行数」です
  • 2個の設定パラメーター:
    • 評価データセット内の列。Integer 型である必要があり、名前は column、説明は「絞り込み対象の列」です。
    • 整数値。名前は value、説明は「絞り込みに使用する値」です。
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 from pyspark.sql import DataFrame from pyspark.sql import functions as F from foundry_ml_metrics.evaluation import ComputedMetricValue, Evaluator, Field class CustomEvaluator(Evaluator): """ :display-name: Configurable Row Count Evaluator :description: This evaluator calculates the row count of the input DataFrame, filtered to the specified value. :param column: Filtered column :param value: Filtered value :metric Row Count: The unfiltered row count :metric Filtered Row Count: The filtered row count """ column: Field[int] value: int def __init__(self, column: Field[int], value: int): self.column = column self.value = value def apply_spark(self, df: DataFrame) -> List[ComputedMetricValue]: column_name = self.column.name column_value = self.value row_count = df.count() filtered_row_count = df.filter( F.col(column_name) == column_value ).count() return [ ComputedMetricValue( metric_name='Row Count', metric_value=row_count ), ComputedMetricValue( metric_name='Filtered Row Count', metric_value=filtered_row_count ) ]

新しく設定したカスタム評価ツールを Modeling Objectives アプリケーションで使用するには、まず、新しいリポジトリバージョンタグを付けてリポジトリの新しいバージョンを公開する必要があります。

参照用クラス

以下のクラスを参照用に示します。

Field

フィールドは、評価ツールライブラリの設定パラメーターとして使用され、実装する必要があるプロパティを Modeling Objective アプリケーションに伝えます。 Field には、次のインターフェースがあります。

Copied!
1 2 class Field(): name: str

ComputedMetricValue

ComputedMetricValue は、Foundry モデルに付加するメトリクスの情報を格納します。

Copied!
1 2 3 4 5 6 7 8 9 10 class ComputedMetricValue(): """ 評価ツールのいずれかで計算されるメトリクスで、メトリクス名、値、およびサブセット情報で構成されます。 """ metric_name: str metric_value: MetricValue def __init__(self, metric_name, metric_value): self.metric_name = metric_name self.metric_value = metric_value

MetricValue

MetricValue は、次のいずれかにできます。

  • 次のデータ型のいずれかの数値:
    • int
    • np.int8
    • np.int16
    • np.int32
    • np.int64
    • np.uint8
    • np.uint16
    • np.uint32
    • np.uint64
    • float
    • np.float32
    • np.float64
  • 次の型のいずれかの Figure:
    • matplotlib.Figure
    • matplotlib.pyplot.Figure
  • 次のメソッドのうち、ちょうど1個を実装する任意のクラス:
    • get_figure(self) -> Figure:多くの seaborn プロットがこの関数を実装しています。
    • save(self, path: str):多くの seaborn プロットがこの関数を実装しています。
    • savefig(self, path: str)
  • BarChart
  • LineChart