Notebooks

Prev Next

VPC環境で利用できます。

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

Notebooks

Notebooks画面における基本的な説明は、次の通りです。

mlxp_console_notebooks01_ko

領域 説明
① メニュー名 現在確認中のメニューの名前
② 基本機能 Notebook追加、Notebook削除
③ Notebookリスト 運用中の Notebookリストと情報の確認

Notebookリストを照会

ユーザーが作成した Notebookリストの情報は、次の通りです。

  • Notebook名: 初回作成時に設定した Notebookの名前
  • 作成日時: 初回作成日時
  • ステータス: Notebookのステータス
  • タイプ: Notebook作成時に選択した実行プログラム
    • JupyterLab
    • VisualStudio Code
  • イメージ: Notebook作成時に選択したイメージ
  • Actions: 作成した Notebookへのアクセスまたはステータス変更
    • CONNECT: クリックすると、新しいウィンドウで Notebook実行環境にアクセス
    • STOP: Notebookの使用停止
    • START: Notebookを使用

Notebook作成

新規 Notebookを作成する方法は、次の通りです。

  1. [追加] をクリックします。
  2. Create Notebook画面が表示されたら、Notebookの名前を入力します。
    • 英小文字(a-z)、数字(0-9)、記号(-)を使用して3~30文字で入力
    • 先頭は英字、末尾は英字または数字
    • livyキーワードは使用不可
    • Tensorboardおよび既存の Notebookと重複使用は不可
  3. Notebookを実行するプログラムを選択します。
    • JupyterLab
    • VisualStudio Code
  4. Imageを選択します。ML expert Platformで提供するイメージは、次の通りです。
    • kubeflow-jupyter-*: kubeflow公式イメージベースの jupyter-lab
    • kubeflow-codeserver-*: kubeflow公式イメージベースの codeserver
参考
  • 別途制作した Custom Imageを使用したい場合は、Custom Imageを制作して Notebookを使用するをご参照ください。
  • Notebookを実行したプログラムと Custom Imageは一致する必要があります。使用用途に応じて Notebookが設定されるため、実行プログラムとイメージが一致しない場合、正常に動作しません。
  1. Notebookで使用する CPUと Memoryの仕様を設定します。
参考
  • 最小値は Kubernetesの resource requestsに、最大値は Kubernetesの resource limitに対応します。
  • 最小値が高すぎるとスケジューリングが正常に行われない可能性があるため、デフォルトで設定された値の使用をお勧めします。
  1. Notebookで使用する GPUインスタンスの仕様を設定します。
  2. 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終了時に削除されます。
  1. Data Volumeを設定します。別途の Data Volumeを Notebookにマウントしてデータを読み込むか、タスク履歴を保存する用途として使用します。別途の Data Volumeが必要ない場合、設定しなくても構いません。Data Volume用途で新規 PVCを作成するか、既存の PVCを使用できます。
参考
  • 複数の Volumeをマウントできます。
  • Notebookで実行したタスク内容を別途ストレージに保存するために、Data Volumeを作成してマウントできます。
  • Readonlyオプションを使用してマウントする場合、マウントパスはイメージの HOME PATH (e.g./home/irteam)のサブディレクトリではなく、外部に存在する必要があります。
  1. Advanced Settingsで Configurationsを選択します。
注意
  • 現在 ML expert Platformは Private Zoneで GPUリソースを提供しているため、ユーザーの Workspaceが割り当てられた GPU Zone情報を選択します。
  • GPU Zone情報は、使用できる GPU Zone情報の照会をご参照ください。
  1. 必要に応じて Advanced Settingsで Miscellaneous Settingsオプションを設定します。
  2. [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を削除できます。

  1. 削除する Notebookを選択し、 [削除] ボタンをクリックします。
  2. Notebook削除のポップアップが表示されたら、削除する Notebookの名前を入力して [削除] ボタンをクリックします。
  3. 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が実行されます。
Image

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を作成します。

Image

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:
        ...