モデルの接続と開発モデルファイルとしてアップロードされたモデル例:scikit-learn モデルのアップロード

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

例:scikit-learn モデルをアップロードする

以下のドキュメントでは、既存のモデルファイルからモデルを Foundry に統合する例を紹介します。手順を説明したガイドについては、事前学習済みファイルからモデルを公開する方法に関するドキュメントを参照してください。

モデルファイルからモデルを作成する

次の例では、UC Irvine が公開した Iris 分類データセット ↗ を使用してローカルで学習したモデルを使用します。このデータセットには、sepal_length、sepal_width、petal_length、petal_width の4個の特徴量があり、アヤメの花の種を予測するモデルの構築に使用できます。

この例では、scikit-learn ライブラリ ↗ を使用し、K 近傍法の分類器 ↗としてローカルでモデルを学習したことを前提とします。また、Python 3.8.0 と scikit-learn 1.3.2 を使用してモデルを学習したことも前提とします。

学習後、以下に定義するとおり、モデルを pickle ファイル ↗として保存します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier import pickle iris = load_iris() X = iris.data y = iris.target X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.4, random_state=4) knn = KNeighborsClassifier(n_neighbors = 5) knn.fit(X_train, y_train) with open("iris_model.pkl", "wb") as f: pickle.dump(knn, f)

1. モデルファイルを非構造化データセットにアップロードする

以下の画像に示すように、scikit-learn モデルファイルを非構造化データセットとして Palantir にアップロードします。

Palantir プラットフォームに pickle ファイルとして保存されたアヤメ分類モデルのデータセット。

2. モデルアダプターのロジック用のリポジトリを作成する

Code Repositories アプリケーションで、モデル訓練言語テンプレートを使用して新しいモデル統合リポジトリを作成し、scikit-learn 1.3.2 への依存関係を追加します。モデルファイルを読み込み、モデルを公開するためのロジックを定義します。

3. モデルファイルをモデルとして公開する

モデルアダプターのロジックが実行されると、プラットフォーム内でモデルが公開されます。

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 44 45 46 from transforms.api import transform, Input import palantir_models as pm from palantir_models.transforms import ModelOutput from palantir_models.serializers import DillSerializer import pickle @transform( model_files=Input("<Your Input Path>"), model_output=ModelOutput("<Your Output path>") ) def compute(model_files, model_output): fs = model_files.filesystem() with fs.open("iris_model.pkl", "rb") as f: model = pickle.load(f) model_adapter = IrisModelAdapter(model, "target") model_output.publish( model_adapter=model_adapter ) class IrisModelAdapter(pm.ModelAdapter): @pm.auto_serialize( model=DillSerializer(), prediction_column_name=DillSerializer() ) def __init__(self, model, prediction_column_name): self.model = model self.prediction_column_name = prediction_column_name @classmethod def api(cls): column_names = ["sepal_length", "sepal_width", "petal_length", "petal_width"] columns = [(name, float) for name in column_names] inputs = {"df_in": pm.Pandas(columns=columns)} outputs = {"df_out": pm.Pandas(columns=columns + [("target", int)])} return inputs, outputs def predict(self, df_in): inference_data = df_in predictions = self.model.predict(inference_data.values) inference_data[self.prediction_column_name] = predictions return inference_data

4. 公開済みモデルを利用する

モデルが公開されると、プラットフォーム内で推論に利用できるようになります。この例では、新しいモデリング目標を作成し、モデルを送信します。

  1. 新しいモデリング目標を作成するには、目標を配置するプロジェクトフォルダーに移動し、新規 > Modeling Objective を選択します。これにより、Modeling Objectives アプリケーションが開きます。

Modeling Objectives アプリケーションの空の状態。

  1. 次に、目標にモデルを送信します。モデルの送信 > モデルを送信セクションで、モデルを追加を選択すると、以下に示すダイアログが開きます。

プラットフォームにモデルを追加する方法の選択肢が表示された、Foundry モデルを追加するポップアップ。

  1. Foundry からモデルを送信を選択し、次に次へを選択すると、プラットフォーム内の保存場所から公開済みモデルを読み込むためのダイアログが開きます。

プラットフォームに送信するモデルを選択するポップアップダイアログ。

  1. モデルが送信されると、モデリング目標の概要ページに戻り、モデルの送信セクションに送信に関する情報が表示されます。

モデリング目標の概要ページから表示できるようになった、最近送信されたモデル。

  1. モデルの送信セクションから新しく送信されたモデルを選択すると、モデルページが開きます。

モデリング目標内のアヤメ分類モデルの詳細ページ。

  1. 右上の新しいリリースを作成するを選択すると、リリースを作成するための新しいウィンドウが開きます。

モデルの新しいリリースを作成するポップアップダイアログ。

  1. リリースを作成した後、画面左上の名前を選択してモデリング目標の概要ページに戻ります。デプロイまで下にスクロールし、デプロイを作成するを選択すると、別のダイアログウィンドウが開きます。

新しいモデルデプロイを設定するためのオプションが表示された、新しいデプロイを作成するページ。

  1. 設定フォームを入力し、右下のデプロイを作成するを選択します。モデリング目標の概要に戻り、デプロイまで下にスクロールして、新しくデプロイされたモデルを選択し、テストします。

モデルデプロイのテスト詳細ページ。

  1. ページ左上のクエリタブから値を追加し、出力を確認してモデルをテストします。

入力を指定するセクションと結果を表示するセクションがある、デプロイテストのクエリページ。

ライブデプロイの作成とクエリの詳細については、ライブデプロイのドキュメントを参照してください。