注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
以下のドキュメンテーションでは、既存のモデルファイルからFoundryにモデルを統合する方法の例を提供しています。ステップバイステップのガイドについては、事前学習ファイルからモデルを公開する方法のドキュメンテーションを参照してください。
以下の例では、UC Irvineが公開したIris分類データセットを使用してローカルで学習したモデルを使用しています。このデータセットには、sepal_length
、sepal_width
、petal_length
、petal_width
の4つの特徴が含まれており、これを使用してアイリスの花の特定の種類を予測するモデルを作成することができます。
この例では、モデルはローカルでscikit-learnライブラリのK-nearest neighbors classifierとして学習されたものと仮定しています。また、この例では、Python 3.8.0
とscikit-learn 1.3.2
でモデルが学習されたと仮定しています。
学習後、モデルは以下で定義されるpickleファイルとして保存されます。
Copied!1from sklearn.datasets import load_iris 2from sklearn.model_selection import train_test_split 3from sklearn.neighbors import KNeighborsClassifier 4 5import pickle 6 7# アイリスデータセットを読み込む 8iris = load_iris() 9X = iris.data # 特徴量 10y = iris.target # ターゲット 11 12# データセットを学習データとテストデータに分割 13X_train, X_test, y_train, y_test = train_test_split( 14 X, y, test_size=0.4, random_state=4) 15 16# k近傍法を用いた分類器を作成 17knn = KNeighborsClassifier(n_neighbors = 5) 18# 分類器を学習データに適用 19knn.fit(X_train, y_train) 20 21# 学習済みモデルをファイルに保存 22with open("iris_model.pkl", "wb") as f: 23 pickle.dump(knn, f)
scikit-train モデルファイルは、下の画像に示すように、非構造化データセットとして Palantir にアップロードされます。
Code Repositories アプリケーションで、新しい Model Integration リポジトリを Model Training 言語テンプレートで作成し、scikit-learn 1.3.2
に依存関係を追加します。モデルファイルを読み込んでモデルを公開するロジックを定義します。
モデルアダプターロジックが実行されると、モデルがプラットフォームに公開されます。
Copied!1from transforms.api import transform, Input 2import palantir_models as pm 3from palantir_models.transforms import ModelOutput 4from palantir_models_serializers import DillSerializer 5import pickle 6import os 7 8# モデルの入出力を定義し、モデルを呼び出す関数 9@transform( 10 model_files=Input("<Your Input Path>"), # モデルの入力パス 11 model_output=ModelOutput("<Your Output path>") # モデルの出力パス 12) 13def compute(model_files, model_output): 14 fs = model_files.filesystem() # ファイルシステムの操作 15 with fs.open("iris_model.pkl", "rb") as f: # モデルを読み込む 16 model = pkl.load(f) 17 18 model_adapter = IrisModelAdapter(model, "target") # モデルアダプターの生成 19 model_output.publish( # モデルアダプターを公開 20 model_adapter=model_adapter 21 ) 22 23# Irisモデルのアダプタークラス 24class IrisModelAdapter(pm.ModelAdapter): 25 26 # シリアライズを自動化するデコレーター 27 @auto_serialize( 28 model=DillSerializer(), # モデルのシリアライザー 29 prediction_column_name=DillSerializer() # 予測列名のシリアライザー 30 ) 31 def __init__(self, model, prediction_column_name="target"): # 初期化メソッド 32 self.model = model # モデル 33 self.prediction_column_name = prediction_column_name # 予測列名 34 35 @classmethod # クラスメソッド 36 def api(cls): # APIの定義 37 column_names = ["sepal_length", "sepal_width", "petal_length", "petal_width"] # 列名 38 columns =[(name, float) for name in column_names] # 列の型定義 39 inputs = {"df_in": pm.Pandas(columns=columns)} # 入力の定義 40 outputs = {"df_out": pm.Pandas(columns=columns+[("target", int)])} # 出力の定義 41 return inputs, outputs # 入出力を返す 42 43 def predict(self, df_in): # 予測メソッド 44 inference_data = df_in # 推論データ 45 46 predictions = self.model.predict(inference_data.values) # 予測の実行 47 inference_data[self.prediction_column_name] = predictions # 予測結果を追加 48 return inference_data # データを返す
モデルが公開されると、プラットフォームで推論のために使用する準備が整います。この例では、新しいモデリング目標を作成し、モデルを送信します。
ライブデプロイメントの作成とクエリに関する詳細は、live deployment documentation で確認できます。