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

モデルをトレーニングして操作する

モデルの操作は、JupyterLab® コードワークスペースでのみサポートされています。

Code Workspaces では、モデルのトレーニングと公開に加え、以前に公開したモデルをインポートして操作できます。

Code Workspaces では、ワークスペース内で参照する Foundry のモデルアセットごとにモデルエイリアスを作成する必要があります。モデルエイリアスは特定のモデルへの参照として機能し、モデルを操作して新しいバージョンを公開したり、保存されたモデルファイルをダウンロードしたりできます。

モデルタブでモデルを登録すると、Code Workspaces は、選択したモデルエイリアスと Foundry モデルの一意の識別子とのマッピングを、ワークスペースの /home/user/repo/.foundry フォルダー内にある隠しファイルに作成します。

Jupyter® ノートブックからモデルを公開する方法については、モデル統合のドキュメントを参照してください。

ワークスペースにモデルを追加する

モデルの作成やワークスペースへのインポートは、すべてモデルサイドバーパネルから行えます。

新しいモデルを作成するには、モデルサイドバーパネルを開き、追加 > 新しいモデルを作成するを選択します。新しいモデルの作成とエイリアスの登録の手順が案内され、モデルを公開するためのスニペットが提供されます。また、モデルアダプターのひな形となる Python ファイルも生成されます。モデルを Foundry に公開するには、このファイルに実装する必要があります。

サイドバーの新しいモデルを作成するためのコントロール

既存のモデルをインポートするには、モデルサイドバーパネルを開き、追加 > 既存のモデルをインポートするを選択します。モデルのインポートとエイリアスの登録の手順が案内され、保存されたモデルの状態ファイルをダウンロードするためのスニペットが提供されます。

サイドバーの既存のモデルをインポートするためのコントロール

インポートしたモデルは、指定されたモデルバージョンからシリアライズされたモデルの状態を読み込みます。Code Workspaces には、モデルのインポート時に使用するモデルバージョンを選ぶためのコントロールが用意されています。現在のワークスペースブランチの最新バージョン、指定したブランチの最新バージョン、または特定のモデルバージョンを選択できます。

利用可能なスニペット

モデルサイドバーパネルには、一般的なワークフローでノートブックにコピーして貼り付けられるスニペットが用意されています。すべてのスニペットで、モデルの開発と操作のために Palantir が提供するライブラリである palantir_models のインストールが案内されます。

サイドバーの各モデルカードでは、そのモデル専用のスニペットが生成されます。モデルカードを選択するとカードが展開され、特定のタスクのスニペットを表示するためのセレクターが表示されます。

スニペットセレクターを備えた展開済みのモデルカード

モデルバージョンを公開する

モデルバージョンを公開するには、まずモデルアダプターを開発する必要があります。Code Workspaces 内で作成したモデルには、モデルに指定したエイリアスに基づく名前の Python ファイルに、実装用のアダプターのひな形が作成されます。モデルカードには、モデルアダプターの開発とモデルの Foundry への公開についての詳細な手順が表示されます。

以下のスニペットは、エイリアスが linear_regression_model のモデル用です。モデルアダプターを linear_regression_model_adapter.py に記述した場合、モデル公開のコードは次のようになります。

Copied!
1 2 3 4 5 6 7 8 9 10 from palantir_models.code_workspaces import ModelOutput # モデルアダプター API は linear_regression_model_adapter.py で定義されています from linear_regression_model_adapter import LinearRegressionModelAdapter # sklearn_model は別のセルで学習したモデルです linear_regression_model_adapter = LinearRegressionModelAdapter(sklearn_model) model_output = ModelOutput("linear_regression_model") model_output.publish(linear_regression_model_adapter)

モデルをダウンロードする

以前に公開したモデルバージョンをダウンロードするには、スニペットセレクターをモデルをダウンロードに変更します。モデルバージョンを解決するためのコントロールが表示され、モデルファイルのダウンロードに使用するモデルバージョンを指定できます。

  • 現在のブランチの最新情報: 現在のワークスペースブランチの最新のモデルバージョンが選択されます。
  • ブランチの最新情報: 選択したブランチの最新のモデルバージョンが選択されます。
  • 特定のモデルバージョン: 選択するモデルバージョンが、指定されたモデルバージョン RID に固定されます。

モデル入力のモデルバージョン解決コントロール

スニペットは、選択したモデルバージョンの解決コントロールに対応するよう自動的に更新されます。詳細については、以下の ModelInput クラスのドキュメントを参照してください。

推論用にモデルをデプロイする

Code Workspaces では、推論用にモデルをデプロイできます。これらのデプロイはモデルバージョンごとに共有されるため、1つのモデルバージョンに関連付けられるデプロイは最大1つです。また、これらのデプロイは、既存のモデリング目標のライブデプロイおよびモデルデプロイとは完全に分離されています。デプロイはコードから全面的に設定でき、デフォルトのスケーリングポリシーでは、20分間使用されなかったデプロイはシャットダウンされます。

指定したモデルバージョンのデプロイを読み込むには、スニペットを選択ドロップダウンメニューを使用して、選択肢を推論のためにデプロイするに変更します。モデルをデプロイするためのスニペットが読み込まれ、モデルバージョンを選択するために、ファイルをダウンロードの選択肢と同じセレクターが表示されます。スニペットでは、モデルのデプロイと、そのモデルでの推論の実行手順が案内されます。

Code Workspaces 内からデプロイを監視するには、操作対象のモデルのモデルカードを展開し、デプロイを選択します。デプロイタブには、デプロイされたモデルバージョンの一覧が表示されます。モデルバージョンを選択すると、右側に新しいパネルが展開され、使用リソースやログなど、デプロイに関する情報が表示されます。

Code Workspaces のモデルデプロイ表示

詳細については、以下の ModelInput クラスのドキュメントを参照してください。

モデルアダプターを開発する

モデルアダプターは、プラットフォーム全体でモデルを保存、読み込み、実行する方法を Foundry に指示するために使用されます。モデルを公開する際は、モデルをモデルアダプターでラップする必要があります。

Code Workspaces では、モデルアダプターを別の .py ファイルで定義する必要があります。新しいモデルをワークスペースに追加すると、指定したエイリアス名に基づいてファイルが生成されます。たとえば、エイリアスが my_model の場合、my_model_adapter.py という名前のファイルが生成され、MyModelAdapter という名前のモデルアダプタークラスのひな形が含まれます。

モデルパネルに表示されるコードスニペットは、エイリアス、ファイル名、クラス名が一致することを前提に生成されます。ファイルを移動したりアダプタークラスの名前を変更したりした場合は、生成されたスニペットを手動で編集する必要がある場合があります。

モデルアダプターの開発について詳しくはこちら。

モデル出力クラス

palantir_models.code_workspaces からインポートされる ModelOutput クラスは、Foundry モデルへの書き込み可能な参照を提供します。モデルを公開するには、モデルをモデルアダプターでラップし、publish メソッドでその参照に渡す必要があります。

publish メソッドを呼び出すと、モデルが新しいモデルバージョンとして保存されます。model_output.publish メソッドの呼び出しが Jupyter® ノートブックのセルの最後の行にある場合は、モデルが正常に公開されたことを確認するプレビューウィンドウが表示されます。

モデルバージョンのプレビュー

モデル入力クラス

palantir_models.code_workspaces からインポートされる ModelInput クラスは、Foundry モデルへの軽量な読み取り用参照を提供します。これにより、公開済みモデルのシリアル化された状態を読み取り、推論のためにモデルをローカルにデプロイできます。以下のコードは、エイリアスが my_model のモデルへの読み取り用参照を取得し、test ブランチの最新のモデルバージョンを取得する例です。

Copied!
1 2 from palantir_models.code_workspaces import ModelInput my_model_input = ModelInput("my_alias", branch="test")

モデルをダウンロードする

ModelInput を使用すると、モデルの公開時に保存された、シリアル化されたモデルの重みをダウンロードできます。

Copied!
1 2 3 4 5 6 from palantir_models.code_workspaces import ModelInput # 最新のモデルバージョンを取得します my_model_input = ModelInput("my_alias") # ファイルをダウンロードします my_model_input.download_files()

これにより、ファイルのダウンロード先となる一時ディレクトリへのパスが返されます。

モデルアダプターを初期化する

モデルのファインチューニングや再公開を伴うワークフローでは、モデルファイルをダウンロードしてアダプターに読み込めると便利なことがよくあります。ワークスペースにモデルの公開に使用したアダプターのローカルコピーがある場合、またはアダプターが共有アダプターパッケージに含まれていて、そのパッケージをワークスペースの依存関係として追加している場合は、アダプターを読み込み、ほかの場所と同じように使用できます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 # この例では、アダプターはローカルの Python ファイル `my_adapter_file.py` にあります from my_adapter_file import MyAdapter from palantir_models.code_workspaces import ModelInput my_model_input = ModelInput("my_alias", model_version="ri.models.main.model-version...") # アダプターを初期化します initialized_adapter = my_model_input.initialize_adapter(MyAdapter) # 初期化したアダプターは `ModelOutput` を使って再公開できます。また、アダプター内に保存されている Python オブジェクトにアクセスできます # たとえば、Hugging Face のパイプラインを保持する変数 `pipeline` がある場合です。このコードは、 # アダプターの定義によって異なることに注意してください。 pipeline = initialized_adapter.pipeline

推論用にモデルをデプロイする

コードワークスペース内で推論用にモデルをデプロイすることもできます。これらのデプロイはモデルバージョンごとに共有されるため、同じモデルバージョンを使用する複数の同時セッションは、同じデプロイにリクエストを送信します。

モデルのデプロイとやり取りするには、そのモデルのデプロイクライアントを取得する必要があります。

Copied!
1 2 3 4 5 from palantir_models.code_workspaces import ModelInput my_model_input = ModelInput("my_alias") deployment_client = my_model_input.deploy(cpu=2, memory="8G", max_replicas=1)

デプロイクライアントには、デプロイを制御するためのメソッドがいくつか用意されています。

Copied!
1 2 3 4 5 6 7 8 9 10 11 # モデルの準備ができるまで待機します client.wait_for_readiness() # デプロイメントをスケーリングします client.scale(cpu=4) # 推論を実行します client.predict(...) # 手動でシャットダウンします(デプロイメントは20分間使用されないと自動的にシャットダウンします) client.disable()

推論入力のサイズ制限

この方法は、本番規模の推論ではなく、ほかのモデルを利用してすばやく試行を繰り返すことを目的としているため、1回の推論リクエストのサイズには 40 MB の制限があります。実際には、行のサイズにもよりますが、通常は約100,000行の平均的なデータセットに相当します。

より大きなデータセットに対してモデルを実行する必要がある場合は、チャンク化を有効にできます。チャンク化は、大きなデータセットを扱いやすいサイズに分割し、1チャンクずつモデルに送信します。以下のように client.use_chunking メソッドを True に設定すると、チャンク化を有効にできます。

Copied!
1 2 client.use_chunking = True client.predict(...)

チャンク化では現在、入力として使用できるデータセットは1個のみですが、ほかのパラメーターはいくつでも含めることができます。データセットがこれらの制限を超える場合、またはチャンク化ではワークフローの要件を満たせない場合は、Code Repositories とトランスフォームを使用して、より大規模なデータ処理を行うことを検討してください。

トランスフォーム

モデルを出力する Jupyter® ノートブックは、Code Workspaces から作成したトランスフォームでも使用できます。モデル出力用のトランスフォームを登録するには、以下の手順に沿って進めてください。

  1. モデルパネルで、トランスフォームから出力するモデルのモデルカードを見つけ、メニューで変換出力として公開を選択します。

モデル出力トランスフォームの設定メニュー項目。

  1. 変換を作成パネルでは、実行するファイルと、トランスフォームに必要な入力および出力を設定できます。以下の例では、トレーニングデータを入力として使用し、テストデータセットとモデルを出力として使用しています。

モデル出力トランスフォームの設定ページ。

  1. 入力と出力の設定が完了したら、設定ページの下部にある同期して実行を選択して、現在のコードの変更を保存し、トランスフォームを作成します。トランスフォームの実行が開始され、ジョブのステータスが、関連するデータセットおよびモデルとともにモデルパネルに表示されます。

モデル出力トランスフォームのステータス。

次に、Build を表示を選択すると、実行中のトランスフォームジョブを確認できます。ノートブックのコードを変更してモデルを再ビルドする場合は、モデルカードで再実行を選択してビルドを再実行します。トランスフォームで作成したモデルとデータセットは、プラットフォームのほかの場所で作成したトランスフォームと同様にスケジュールできます。トランスフォームのスケジュール設定について詳しくはこちら。


Jupyter®、JupyterLab®、および Jupyter® のロゴは、NumFOCUS の商標または登録商標です。

記載されているすべての第三者の商標(ロゴおよびアイコンを含む)は、それぞれの所有者に帰属します。提携や推奨を示唆するものではありません。