環境管理¶
このページでは、ノートブック環境を設定して開始する方法の概要を説明します。
ノートブック環境の管理¶
コードを作成して実行する前に、環境アイコンをクリックしてノートブックの環境を設定します。 環境イメージは、ノートブック内で使用されるコーディング言語、依存関係、およびオープンソースライブラリを決定します。 DataRobot Notebooksのデフォルトイメージは、事前に構築済みのPythonイメージです。 デフォルトイメージで利用可能なすべてのパッケージのリストを表示するには、環境タブでそのイメージにカーソルを合わせます。
次のスクリーンショットと表は、ノートブック環境で使用可能な設定オプションの概要を示しています。
要素 | 説明 | |
---|---|---|
1 | 開始環境のトグル | ノートブック環境のカーネルを開始または停止し、これによりノートブックのコードセルを実行できます。 |
2 | リソースタイプ | マシンプリセットを表すもので、環境のカーネルを実行するマシン上にあるCPUとRAMを指定します。 |
3 | 環境 | ノートブックで使用するコーディング言語とそれに関連するライブラリを決定します。 |
4 | ランタイム | アクティブなセッション中のノートブック環境のCPU使用率、RAM使用量、および経過したランタイムを示します。 |
5 | 非アクティブタイムアウト | 環境の実行が停止し、ベースとなるマシンがシャットダウンするまでの非アクティブ時間を制限します。 非アクティブ時のデフォルトのタイムアウトは60分で、設定可能な最大タイムアウトは180分です。 |
6 | 公開されているポート | ポート転送を有効にして、MLflowやStreamlitなどのツールやライブラリによって起動されるWebアプリケーションにアクセスできるようにします。 ローカルで開発する場合、Webアプリケーションはhttp://localhost:PORT でアクセスできます。しかし、ホストされたDataRobot環境で開発する場合、Webアプリケーションにアクセスするには、そのアプリケーションが実行されている(セッションコンテナ内の)ポートを転送する必要があります。 詳細については、公開ポートの管理を参照してください。 |
セッションステータスの管理¶
ノートブックセッションを開始して、そこでコードを作成して実行するには、ツールバーで環境をオンにして起動します。
環境が初期化されるまで少し待ってから、開始ステータスが表示されたら、編集を開始できます。
セッション中に、ノートブック環境の既存パッケージのいずれかをアップグレードし、アップグレードされたバージョンを認識したい場合は、カーネルを再起動する必要があります。 そのためには、ツールバーの丸い矢印アイコンをクリックします。
カーネルの再起動は、以下のように、環境セッションの再起動とは異なることに注意してください。環境セッションを停止(セッショントグルを使用)すると、ノートブックが実行中のコンテナが停止します。 次回セッションを開始すると、新規コンテナがスピンアップするため、ノートブックの状態と実行時にインストールされたパッケージは失われます。
非アクティブ状態でタイムアウトに達すると、自動的にシャットダウンされることに注意してください。 ノートブックに実行中のセルがなく、セッションタイムアウト値によって設定された時間内にノートブックの内容が変更されていない場合、セッションは非アクティブと見なされます。
公開ポートの管理¶
ポート転送用のポートを作成するには、+ ポートを追加をクリックし、ポート番号とオプションの説明を入力して、承認アイコン をクリックします。
ポート番号の上限
The maximum port number you can specify is 65535
, and the minimum port number is 1024
. Ports 8888
, 8889
, and 8022
are reserved and not allowed for use. 1つのノートブックまたはcodespaceで、最大5つのポートを公開できます。 Self-managed users can override this limit.
The port number dropdown includes options for the default port number options commonly used by OSS tools (MLFlow, Streamlit, etc.):
転送するポートを追加したら、ノートブックやcodespaceのコンテナセッションを開始できます。 Webアプリケーションを起動したら、公開されているポートリストにあるポートのURL経由でWebアプリケーションにアクセスします。
-
リンクをクリックすると、新しいブラウザータブが開き、アプリケーションが実行されます。
-
コピーアイコン をクリックすると、WebアプリケーションのURLがコピーされます。
-
To access the URL for the web application running on a specified port, you must have access to the corresponding notebook or codespace.
ポート番号を変更したり、ポートの説明を編集したり、そのポートの転送を停止したりするには、アクションメニュー をクリックします。
-
編集をクリックすると、ポート番号や説明を変更できます。
-
削除をクリックすると、公開されているポートが削除され、そのポートへのセッション転送が終了します。
公開ポートの変更
転送されるポートを変更(追加、編集、削除)できるのは、ノートブックやcodespaceのセッションがオフラインのときだけです。
機能に関する注意事項とFAQ¶
ポート転送を設定する前に、以下の注意点とよくある質問を確認してください。
-
サーバーアプリケーションは
0.0.0.0
にバインドされている必要があります。 多くのライブラリで起動されるWebサーバーは、デフォルトでは、localhost
/127.0.0.1
からの接続しか受け付けません。 この設定は、ライブラリをローカルで使用する場合は有効ですが、DataRobotがホストするセッションでは無効です。 Webサーバーが他のマシンからの接続を受け付けるようにするには、ホストとして0.0.0.0
を指定します。 たとえば、 MLflow Tracking UIを起動するには、DataRobotのターミナルから以下のコマンドを実行します。mlflow ui --host 0.0.0.0
-
Webサーバーを実行するために指定されたポートは、ノートブックやcodespaceの環境設定で公開されているポートと一致する必要があります。そうでない場合、公開ポートのURLでWebアプリケーションにアクセスできません。 たとえば、ノートブックやcodespaceの環境設定でポート
8080
への転送を有効にした場合を考えてみます。MLflowのTracking UIのデフォルトはポート5000
です。 WebブラウザーでMLflow Tracking UIにアクセスするには、DataRobotのターミナルからMLflowアプリケーションを起動する際に、デフォルトの--port
引数を上書きします。mlflow ui --port 8080 --host 0.0.0.0.
-
指定されたポートで一度に実行できるサーバープロセスは1つだけです。 たとえば、MLflow Tracking UIが公開ポート
8080
で実行されているとき、同じポートでStreamlitアプリケーションをテストするには、新しいサーバーを実行する前にそのプロセスを終了します。
スタンドアロンのノートブックセッションにスクリプトの内容を書き込むには?
Jupyterカーネルには、セルの内容をファイルとして保存する%%writefile
コマンドが用意されています。
%%writefile app.py
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@app.get("/")
async def echo():
return {"message": "Hello, world!"}
DataRobot NotebookセッションでStreamlitにアクセスするには?
Streamlitのデフォルトポートは8501
です。
そのポートを公開した場合は、以下のコマンドを使用します。
streamlit run app.py
ポートを上書きしたい場合は、server.port
引数を使用します。
streamlit run app.py --server.port 8080
DataRobot NotebookセッションでMLFlowにアクセスするには?
MLflowのTracking UIのデフォルトポートは5000
です。
ノートブックやcodespaceの環境設定でポート8080
への転送を有効にしている場合、WebブラウザーでMLflow Tracking UIにアクセスするには、DataRobotのターミナルからMLflowアプリケーションを起動する際に、デフォルトの--port
引数を上書きします。
mlflow ui --port 8080 --host 0.0.0.0
MLFlowは、別のプロセスセットを起動して着信接続を処理します。 これらのプロセスは、正しく終了しないことがあります(ターミナルセッション経由でmlflow ui
を実行した後、プロセスを停止せずに突然セッションを終了した場合など)。 サーバープロセスがそのまま残っている場合、ポートを再利用することはできません。 これらのプロセスをクリーンアップするには、以下のコマンドを使用します。
pkill -f mlflow.server
DataRobot NotebookセッションでShinyにアクセスするには?
Shinyはランダムなポートとlocalhost
を使用します。
デフォルトのポートを上書きするには、以下のコマンドを使用します。
options(shiny.port = 7775)
options(shiny.host = "0.0.0.0")
ui <- fluidPage(
"Hello, world!"
)
server <- function(input, output, session) {
}
shinyApp(ui, server)
DataRobot NotebookセッションでKedro-Vizを実行するには?
Kedro-Vizのデフォルトポートは4141
です。
!kedro viz run --host 0.0.0.0
DataRobot NotebookセッションでTensorBoardを実行するには?
TensorBoardのデフォルトポートは6006
です。
tensorboard --bind_all --logdir .
DataRobot NotebookセッションでGradioアプリケーションを実行するには?
Gradio UIのデフォルトポートはlocalhost:7680
です。
Gradioアプリケーションを実行する前に、以下のコードを使用して、別のFastAPIアプリケーションのサブアプリケーションとしてマウントします。
import gradio as gr
from fastapi import FastAPI
def greet(name, intensity):
return "Hello, " + name + "!" * int(intensity)
demo = gr.Interface(
fn=greet,
inputs=["text", "slider"],
outputs=["text"],
)
fapp = FastAPI(root_path="/notebook-sessions/{NOTEBOOK_ID}/ports/{YOUR_PORT}")
gr.mount_gradio_app(fapp, demo, f"/", root_path="/notebook-sessions/{NOTEBOOK_ID}/ports/{YOUR_PORT}")
その後、スクリプト(この例ではapp.py
)をuvicorn
で実行します。
uvicorn app:fapp --host 0.0.0.0 --port 7860 --reload
DataRobot NotebookセッションでNiceGUIアプリケーションを実行するには?
NiceGUIのデフォルトポートは8080
です。
以下のコードを使用して、NiceGUIのデモアプリケーションを作成します。
from nicegui import ui
class Demo:
def __init__(self):
self.number = 1
demo = Demo()
v = ui.checkbox('visible', value=True)
with ui.column().bind_visibility_from(v, 'value'):
ui.slider(min=1, max=3).bind_value(demo, 'number')
ui.toggle({1: 'A', 2: 'B', 3: 'C'}).bind_value(demo, 'number')
ui.number().bind_value(demo, 'number')
ui.run()
その後、スクリプト(この例ではapp.py
)を実行します。
!python app.py
カスタムサーバーにアクセスできますか?
独自のTCP/HTTPサーバーを作成して実行することができます。 たとえば、以下では、FastAPIで記述されたシンプルなカスタムサーバーを作成します。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
@app.get("/")
async def echo():
return {"message": "Hello there"}
その後、uvicorn
でアプリを実行します。
!uvicorn app:app --host 0.0.0.0 --port 8501 --reload
カスタム環境のイメージ¶
DataRobot Notebooksは DataRobotのカスタム環境と連携しており、ノートブックセッションを実行するための再利用可能なカスタムDockerイメージを定義できます。 カスタム環境では、環境設定を完全に制御でき、ビルトインイメージで利用可能なもの以外にも、再現可能な依存関係を活用することができます。 DataRobot NotebooksではPythonとRのカスタム環境のみがサポートされていることに注意してください。
カスタム環境の作成¶
カスタム環境を追加するには、ノートブックのサイドバーで環境タブ()に移動し、環境フィールドドロップダウンを展開します。 リストの一番下までスクロールし、新しい環境を作成を選択します。 レジストリの環境ページが表示されます。
環境ページでは、ノートブックとモデルの両方の環境を作成してアクセスできます。 ノートブックに新しいカスタム環境を作成し、その詳細を設定するには、+ 環境を追加をクリックします。
DataRobotでは、 ノートブック組み込み環境テンプレートにアクセスして、DataRobot Notebooksの実行と互換性のあるDockerコンテキストの作成に必要な要件を参照することを強くお勧めします。
環境バージョンの追加パネルで、以下の情報を入力します。
フィールド | 説明 |
---|---|
環境ファイル | |
コンテキストファイル | Dockerfileと環境イメージを構築するために必要なその他のファイルを含むアーカイブ。 This file is not required if you supply a prebuilt image. |
構築済みイメージ | (Optional) A prebuilt environment image saved as a tarball using the Docker save command. |
設定 | |
名前 | 環境の名前。 |
サポート | この環境でサポートされるDataRobotのアーティファクトタイプ:モデルとジョブ、アプリケーション、ノートブック。 |
プログラミング言語 | 環境が作られた言語。 |
説明 | カスタム環境に関するオプションの説明。 |
すべてのフィールドに入力して環境を追加をクリックします。 カスタム環境は使用可能です。
アップロードした環境は、他のユーザーと 共有しない限り、自分だけが使用できます。 既存の環境に変更を加えるには、新しい バージョンを作成します。 現在のノートブックタブをクリックすると、ノートブックのコンテナイメージとしてカスタム環境のバージョンを使用するように設定されているDataRobotのノートブックのリストを表示できます。
新しく作成したカスタム環境をノートブックで使用するには、ノートブックのサイドバーで環境タブ()に戻って、環境フィールドドロップダウンを再度展開します。 今回は、ドロップダウンリストのカスタムヘッダーの下にリストされているカスタム環境を選択できます。
ノートブックセッションにカスタム環境を使用する¶
ノートブックコンテナセッションで実行するイメージとしてカスタム環境を使用するには、使用するノートブックを開き、ノートブックサイドバーの環境タブ()に移動します。
In the Environment field dropdown, you can see all custom environments that you have access to that are compatible with DataRobot Notebooks. 使用したいカスタム環境を選択します。 バージョンフィールドでは、使用する環境のバージョンを選択できます。 デフォルトでは、最新バージョンの環境が選択されます。 環境を選択したら、ノートブックセッションを開始できます。
組み込み環境のイメージ¶
DataRobotでは、特定のノートブックのコンテナイメージとして選択できる組み込みのDockerイメージのセットが維持されます。
DataRobotは以下のイメージを提供します。
-
Python 3.11のイメージ:Pythonバージョン3.11、 DataRobot Pythonクライアント、および一般的なデータサイエンスライブラリのスイートが含まれています。
-
Python 3.9のイメージ:Pythonバージョン3.9、 DataRobot Pythonクライアント、および一般的なデータサイエンスライブラリのスイートが含まれています。
-
R 4.3のイメージ:Rバージョン4.3、 DataRobot Rクライアント、および一般的なデータサイエンスライブラリのスイートが含まれています。
環境変数¶
機微情報である文字列をノートブック内にプレーンテキストで保存せずに、ノートブック内で参照する必要がある場合は、環境変数を使用して値を安全に保存できます。 これらの値はDataRobotによって暗号化されて保存されます。 環境変数は、ノートブック内の外部データソースに接続するための資格情報を指定する必要がある場合などに便利です。
ノートブックセッションを開始するたびに、DataRobotはコンテナ環境でノートブックの関連する環境変数を設定するため、次のコードを使用してノートブックコードから参照できます。
import os
KEY = os.environ['KEY'] # KEY variable now references your VALUE
KEY = Sys.getenv("KEY")
環境変数にアクセスするには、サイドバーのロックアイコンをクリックします。
新しいエントリーを作成をクリックします。
ダイアログボックスで、1つのエントリーにキーと値を入力し、オプションの説明を入力します。
複数の変数を追加する場合は、一括インポートを選択します。 フィールドの各行で次の形式を使用します。
KEY=VALUE # DESCRIPTION
備考
同じキーを持つ既存の環境変数の値は、指定した新しい値によって上書きされます。
環境変数の追加が完了したら、保存をクリックします。
既存の変数の編集¶
環境変数パネルからノートブックの関連する環境変数を編集および削除することもできます。
- 変数の鉛筆アイコンをクリックして、変数を編集します。
- 目のアイコンを選択すると、非表示の値が表示されます。
- ゴミ箱アイコンをクリックすると変数が削除されます。
- すべて挿入をクリックして、ノートブックのすべての環境変数を取得してノートブックに含めるコードスニペットを挿入します。