カスタム環境の作成¶
DataRobotにアップロードされたカスタムモデル、ジョブ、アプリケーション、ノートブックは、Kubernetesで実行されるDockerコンテナの環境内で実行されます。 つまり、DataRobotは、カスタムタスクを定義するアップロードされたファイルをコンテナにコピーします。 DataRobotにはさまざまなビルトイン環境が用意されているので、ほとんどの場合、カスタム環境を追加する必要はありません。 カスタムモデルのカスタム環境の作成の詳細については、以下のガイドラインを参照してください。
カスタムモデル環境のガイドライン¶
PythonやRのパッケージは、コードを含むrequirements.txtファイルをアップロードすることで、これらの環境に簡単に追加できます。 カスタム環境は、カスタムモデルが以下の場合にのみ必要です。
- 追加のLinuxパッケージが必要な状況。
- 別のオペレーティングシステムが必要な状況。
- Python、R、Java以外の言語を使用する状況。
このドキュメントでは、これらのケースでカスタム環境を構築する方法について説明します。 カスタム環境をローカルで構築してテストするには、Docker DesktopとDataRobot User Models (DRUM) CLIツールの両方をマシンにインストールします。
備考
環境テンプレートを使用することをお勧めします。特定のユースケースを除き、独自の環境を構築することは推奨されません。 (DRUMを使用せず、独自の予測サーバーを実装する場合など)
テンプレート環境でサポートされていないツール、言語、またはフレームワークを使用する場合は、独自に作成できます。 DataRobotでは、提供された環境を必要に応じて変更することをお勧めします。ただし、使いやすく再利用可能な環境を作成するには、次のガイドラインに従う必要があります。
-
環境には、必要な要件をインストールするDockerfileが含まれている必要があります。
-
カスタムモデルには、予測を行うための単純なウェブサーバーが必要です。 DataRobotでは、複数のモデルで再利用できるように、これを環境内に置くことをお勧めします。 ウェブサーバーはポート
8080でリッスンし、次のルートを実装する必要があります。URL prefix環境変数
URL_PREFIXはランタイムで使用可能な環境変数です。 以下のルートに追加する必要があります。必須エンドポイント 説明 GET /URL_PREFIX/このルートは、モデルのサーバーが実行されているかどうかを確認するために使用されます。 POST /URL_PREFIX/predict/このルートは予測の作成に使用されます。 オプションの拡張エンドポイント 説明 GET /URL_PREFIX/stats/このルートは、DataRobotカスタムモデルテストのメモリー使用量データを取得するために使用されます。 GET /URL_PREFIX/health/このルートは、モデルがロードされ、正常に機能するかどうかを確認するために使用されます。 モデルの読み込みに失敗した場合、513レスポンスコードを含むエラーが返されます。 このケースを処理しないと、バックエンドk8sコンテナがクラッシュし、数分間の再起動ループに入ることがあります。 -
モデルサーバーを起動するには、実行可能な
start_server.shファイルが必要です。 -
すべてのコードおよび
start_server.shは、Dockerfileによって/opt/code/にコピーする必要があります。
備考
完全なAPI仕様の詳細については、 DRUMサーバーAPIyamlファイルを参照してください。
カスタムモデルの環境変数¶
DRUMでカスタム環境を構築する場合、カスタムモデルコードは、 DataRobotクライアントと MLOps Connected Clientへのアクセスを容易にするために挿入された複数の環境変数を参照できます。
| 環境変数 | 説明 |
|---|---|
MLOPS_DEPLOYMENT_ID |
カスタムモデルがデプロイモードで実行されている場合(カスタムモデルがデプロイされている場合)、デプロイIDを使用できます。 |
DATAROBOT_ENDPOINT |
カスタムモデルに パブリックネットワークアクセスがある場合、DataRobotエンドポイントURLを使用できます。 |
DATAROBOT_API_TOKEN |
カスタムモデルに パブリックネットワークアクセスがある場合、DataRobot APIトークンを使用できます。 |
環境の作成¶
DRUMのインストールが完了したら、GitHubにある例の1つをコピーして環境作成を開始します。 このリンクをクリックする前にGitHubにログインしてください。 以下を確認してください。
-
環境コードは単一のフォルダーに保存されます。
-
env_info.jsonファイルを削除します。
Linuxパッケージの追加¶
Linuxパッケージを環境に追加するには、dockerfileの先頭の、FROM datarobot…の行の直後にコードを追加します。 Ubuntuベース用のdockerfile構文を使用します。 たとえば、次のコマンドはDataRobotにどのベースを使用するかを指示し、そしてDockerイメージ内にパッケージfoo、boo、mooをインストールするよう指示します。
FROM datarobot/python3-dropin-env-base
RUN apt-get update --fix-missing && apt-get install foo boo moo
Python/Rパッケージの追加¶
場合によっては、Python/Rのパッケージを環境に含めたい場合があります。 その場合は、以下の点に注意してください。
-
インストールするパッケージを
requirements.txtに表示します。 Rパッケージの場合、バージョンはリストに含めません。 -
PythonとRのパッケージを同じ
requirements.txtファイルに混在させないでください。 その代わり、複数のファイルを作成し、dockerfileを調整して、DataRobotがそれらを見つけて使用できるようにします。
ローカルで環境をテストする¶
次の例では、DockerツールとDRUMを使って環境をすばやくテストする方法を示しています。 カスタムタスクをカスタム環境と一緒にテストするには、タスクの内容が保存されているローカルフォルダーに移動します。 以下を実行し、< >ブラケットの中のプレースホルダー名を実際の名前に置き換えてください。
``` sh
drum fit --code-dir <path_to_task_content> --docker <path_to_a_folder_with_environment_code> --input <path_to_test_data.csv> --target-type <target_type> --target <target_column_name> --verbose
```