VPC環境で利用できます。
Notebooksの画面構成について説明します。Notebooksではユーザーが学習プロセスをモニタリングするために Notebookを作成、削除したり、運用中の Notebooksリストを確認できます。また、運用中の Notebookの詳細情報と最新イベント履歴を照会できます。
Notebooks
Notebooks画面における基本的な説明は、次の通りです。

| 領域 | 説明 |
|---|---|
| ① メニュー名 | 現在確認中のメニューの名前 |
| ② 基本機能 | Notebook追加、Notebook削除 |
| ③ Notebookリスト | 運用中の Notebookリストと情報の確認 |
Notebookリストを照会
ユーザーが作成した Notebookリストの情報は、次の通りです。
- Notebook名: 初回作成時に設定した Notebookの名前
- 作成日時: 初回作成日時
- ステータス: Notebookのステータス
- タイプ: Notebook作成時に選択した実行プログラム
- JupyterLab
- VisualStudio Code
- イメージ: Notebook作成時に選択したイメージ
- Actions: 作成した Notebookへのアクセスまたはステータス変更
- CONNECT: クリックすると、新しいウィンドウで Notebook実行環境にアクセス
- STOP: Notebookの使用停止
- START: Notebookを使用
Notebook作成
新規 Notebookを作成する方法は、次の通りです。
- [追加] をクリックします。
- Create Notebook画面が表示されたら、Notebookの名前を入力します。
- 英小文字(a-z)、数字(0-9)、記号(-)を使用して3~30文字で入力
- 先頭は英字、末尾は英字または数字
- livyキーワードは使用不可
- Tensorboardおよび既存の Notebookと重複使用は不可
- Notebookを実行するプログラムを選択します。
- JupyterLab
- VisualStudio Code
- Imageを選択します。ML expert Platformで提供するイメージは、次の通りです。
kubeflow-jupyter-*: kubeflow公式イメージベースの jupyter-labkubeflow-codeserver-*: kubeflow公式イメージベースの codeserver
- 別途制作した Custom Imageを使用したい場合は、Custom Imageを制作して Notebookを使用するをご参照ください。
- Notebookを実行したプログラムと Custom Imageは一致する必要があります。使用用途に応じて Notebookが設定されるため、実行プログラムとイメージが一致しない場合、正常に動作しません。
- Notebookで使用する CPUと Memoryの仕様を設定します。
- 最小値は Kubernetesの resource requestsに、最大値は Kubernetesの resource limitに対応します。
- 最小値が高すぎるとスケジューリングが正常に行われない可能性があるため、デフォルトで設定された値の使用をお勧めします。
- Notebookで使用する GPUインスタンスの仕様を設定します。
- Workspace Volumeを設定します。Workspace Volume用途で新規 Volumeを作成するか、既存の Volumeを使用できます。
- 単一 Volumeマウントのみ可能です。
- Workspace Volume設定時のマウントパスが、Notebookイメージ内のユーザーの HOME PATH設定と異なる場合があります。
- Workspace Volumeをイメージの HOME PATH (e.g.
/home/irteam)にマウントする場合、当該パスに存在する既存のイメージデータを上書きできます。- イメージの HOME PATHにマウントされる Volumeが ReadOnlyMany(ROX)モードの場合、エラーが発生します。
- イメージ HOME PATHに含まれたプロファイル、ユーティリティなどのデータを使用する場合、Workspace Volumeのマウントパスをイメージ HOME PATHと異なるパスに設定します。
- Workspace Volumeをマウントしなくても、Notebookを実行できます。ただし、コンテナの内部ストレージを使用するため、Notebook終了時に削除されます。
- Data Volumeを設定します。別途の Data Volumeを Notebookにマウントしてデータを読み込むか、タスク履歴を保存する用途として使用します。別途の Data Volumeが必要ない場合、設定しなくても構いません。Data Volume用途で新規 PVCを作成するか、既存の PVCを使用できます。
- 複数の Volumeをマウントできます。
- Notebookで実行したタスク内容を別途ストレージに保存するために、Data Volumeを作成してマウントできます。
- Readonlyオプションを使用してマウントする場合、マウントパスはイメージの HOME PATH (e.g.
/home/irteam)のサブディレクトリではなく、外部に存在する必要があります。
- Advanced Settingsで Configurationsを選択します。
- 現在 ML expert Platformは Private Zoneで GPUリソースを提供しているため、ユーザーの Workspaceが割り当てられた GPU Zone情報を選択します。
- GPU Zone情報は、使用できる GPU Zone情報の照会をご参照ください。
- 必要に応じて Advanced Settingsで Miscellaneous Settingsオプションを設定します。
- [Launch] をクリックします。
- 現在、ML expert Platformでは NVMeベースの Local Pathボリュームと DDNベースの高性能ストレージを提供します。
- Local Pathボリュームは NVMeストレージを提供します。NVMeは特定のホストに物理的に直結されたストレージであり、GPUインスタンスに直接割り当てて使用されます。
- GPUインスタンスの Failoverまたはホストマイグレーションにより他のホストへ移動した場合、元のホストに接続されていた NVMeストレージは自動的に移動しません。そのため、他のホストに移動した GPUインスタンスから既存の NVMeデータにアクセスできません。
- したがって、長期保存が必要なデータは Data Managerや NCloud Storage、Object Storageをご利用ください。
Notebook削除
運用中の Notebookを削除できます。
- 削除する Notebookを選択し、 [削除] ボタンをクリックします。
- Notebook削除のポップアップが表示されたら、削除する Notebookの名前を入力して [削除] ボタンをクリックします。
- Notebookリストで選択した Notebookが削除されたことを確認します。
Notebookの詳細情報を照会
選択した Notebookの詳細情報を照会できます。各情報はタブで区切られています。
Overview
選択した Notebookの詳細情報は、次の通りです。
- Volumes: Notebookにマウントした Volumeの情報
- Shared memory enabled:
- Notebook creator: Notebookを作成したユーザー情報
- Configurations: Notebook作成時に設定した Configuration情報
- Type: Notebookを実行したプログラム
- Minimum CPU: 初回作成時に設定した CPUの最小値
- Maximum CPU: 初回作成時に設定した CPUの最大値
- Minimum memory: 初回作成時に設定した Memoryの最小値
- Maximum memory: 初回作成時に設定した Memoryの最大値
- Image: Notebook作成時に選択したイメージ
- Environment: Notebookの実行環境
Logs
選択した Notebookの最新ログ情報を照会できます。
Events
選択した Notebookの最新イベント履歴を照会できます。
- Type: 発生したイベントのタイプ
- Reason: 発生したイベントの名前
- Created At: イベント発生日時
- Message: 発生したイベントの説明
YAML
選択した Notebookの yaml形式の設定を表示します。
コンソールでは照会のみ可能で、変更はできません。
Custom Imageを制作して Notebookを使用する
既に使用するイメージが準備されている場合、イメージの作成およびアップロード手順は省略できます。
イメージ制作とアップロード
以下のコードは、Custom Imageをビルドする Dockerfileの例です。
特に、sudoは特定の root権限のコマンドが Notebookの実行環境に問題を引き起こす可能性があるため、必ず必要な場合にのみインストールします。
Notebookにボリュームをマウントして使用する場合、UIDおよび GIDは500を使用します。そうでないと、権限の問題によりボリューム内のファイルにアクセスできない可能性があります。
FROM nvcr.io/nvidia/pytorch:24.05-py3
# Kubectlコマンドを使用できるようにインストール
RUN apt update && apt install curl -y && curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
rm -f kubectl
# jupyterlabインストール
RUN pip install notebook==6.0.2 jupyterlab==1.2.4 jupyterlab-server==1.0.6
# sudoインストールと設定: 必要な場合のみ、コメントを解除してインストール
#RUN apt install -y sudo && \
# echo "irteam ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/irteam && \
# chmod 0440 /etc/sudoers.d/irteam
# Notebookユーザーを作成
ENV NB_USER irteam
ENV NB_UID 500
RUN useradd -M -s /bin/bash -U -u ${NB_UID} ${NB_USER} \
&& mkdir -p /home/$NB_USER \
&& chown -R ${NB_USER}:${NB_USER} /home/$NB_USER
USER ${NB_USER}
WORKDIR /home/$NB_USER
# Notebook作成時に使用するベーススクリプトを作成
CMD ["sh", "-c", "jupyter lab --notebook-dir=/home/$NB_USER --ip=0.0.0.0 --no-browser --allow-root --port=8888 --LabApp.token='' --LabApp.password='' --LabApp.allow_origin='*' --LabApp.base_url=${NB_PREFIX}"]
上記のファイルを作成した後、次のコマンドを入力して新しい Dockerイメージをビルドできます。ご希望の REPOSITORYと TAGの値を指定してください。
また、イメージを管理する Dockerレジストリサービスを事前に決定し、準備してください。
$ docker build -t REPOSITORY:TAG -f Dockerfile .
イメージのビルドに成功した場合は、Dockerレジストリにイメージをアップロードします。
$ docker push REPOSITORY:TAG
Custom Image設定
イメージの準備が完了している場合は、Notebook作成ステップの Image項目にある「Advanced Settings」を開き、「Custom Image」チェックボックスにチェックを入れた後、「Custom Image」入力欄に REPOSITORY:TAG形式の image情報を入力します。このように入力して Notebookを作成すると、指定したイメージを使用して Notebookが実行されます。

Privateレジストリ
以下の内容は、認証が必要な privateレジストリを使用する場合の説明です。
Privateレジストリにアップロードされている Custom Imageを使用して Notebookを実行すると、以下のようなエラーメッセージが表示されます。
ImagePullBackOff: Back-off pulling image "reg.image.com/xxx/yyy:z": ErrImagePull: failed to pull and unpack image "reg.image.com/xxx/yyy:z": failed to resolve reference "reg.image.com/xxx/yyy:z": unexpected status from HEAD request to reg.image.com/xxx/yyy:z: 403 Forbidden
Privateレジストリにアクセスするための imagePullSecretが登録されていない場合に発生するエラーメッセージです。
以下の2つの方法のいずれかを選択して解決できます。
先に以下のように実行して Secretを作成します。作成する Secretの名前、レジストリアドレス、username、passwordを入力します。
$ kubectl create secret docker-registry {image-pull-secret-name} \
--docker-server='{my-registry}' \
--docker-username='{my-username}' \
--docker-password='****'
1. PodDefaultを活用する
以下のように PodDefaultを定義した yamlファイルを作成してリリースする方法です。
apiVersion: kubeflow.org/v1alpha1
kind: PodDefault
metadata:
name: add-image-secret
namespace: p-{projectName}
spec:
selector:
matchLabels:
add-image-secret: "true"
desc: "add imagePullSecrets to pod"
imagePullSecrets:
- name: "{image-pull-secret-name}"
$ kubectl apply -f {yaml file name}
PodDefaultが正常にリリースされている場合、Notebook作成ステップの「Advanced Settings」を開くと、「Configurations」項目に「add imagePullSecrets to pod」設定が表示され、選択できるようになります。この設定を選択して Notebookを作成します。

2. Notebook specに imagePullSecretを追加する
実行に失敗した Notebook specを手動で編集し、imagePullSecretを追加する方法です。
Notebook specを次のように編集し、imagePullSecretsフィールドに上記で作成した Secretの名前を入力して保存します。
しばらくすると、Notebookが正常に Runningステータスとなり、Notebookを使用できます。
$ kubectl edit notebook {notebook-name}
apiVersion: kubeflow.org/v1
kind: Notebook
...
spec:
template:
spec:
imagePullSecrets: # 追加する部分
- name: {image-pull-secret-name} # 追加する部分
containers:
...