ノートブックの使用

Red Hat OpenShift Data Science 1

OpenShift Data Science ノートブックでのノートブックの作成および連携

概要

OpenShift Data Science ノートブック環境で、ノートブックを作成し、連携する方法を説明します。

前書き

このドキュメントは、Red Hat OpenShift Data Science のフィールドトライアルリリース用に作成されています。

このフィールドトライアルリリースに関連するサービスおよびライフサイクル情報については、以下のドキュメントを参照してください。

第1章 ノートブックの作成およびインポート

空のノートブックを作成したり、さまざまなソースからノートブックをインポートしたりできます。

1.1. 新規ノートブックの作成

既存のノートブックコンテナーイメージから新規の Jupyter ノートブックを作成し、そのリソースおよびプロパティーにアクセスできます。JupyterHub Spawner には、単一ユーザーのノートブックサーバーとして実行できる利用可能なコンテナーイメージの一覧が含まれます。

前提条件

  • Red Hat OpenShift Data Science にログインしていることを確認します。
  • JupyterHub にログインし、ノートブックサーバーを起動していることを確認します。
  • ノートブックイメージはレジストリー、イメージストリームに存在し、アクセス可能である必要があります。

手順

  1. FileNewNotebook の順にクリックします
  2. プロンプトが表示されたら、一覧からノートブックのカーネルを選択します。

    カーネルを使用する場合は、Select をクリックします。カーネルを使用しない場合は、No Kernel をクリックします。

検証

  • ノートブックファイルが JupyterHub に表示されることを確認します。

1.1.1. データサイエンティストのノートブックイメージ

Red Hat OpenShift Data Science には、データサイエンスの作業に必要な業界をリードするツールやライブラリーで最適化された Jupyter ノートブックイメージが含まれます。モデル開発に一貫性のある安定したプラットフォームを提供するために、すべてのノートブックイメージには、同じバージョンの Python が含まれます。Red Hat OpenShift Data Science で利用可能なノートブックイメージは、サポートされる最新バージョンに自動的にアップグレードされます。

Red Hat OpenShift Data Science には、デフォルトでインストールされる以下のノートブックイメージが含まれます。

表1.1 デフォルトのノートブックイメージ

イメージ名説明

標準データサイエンス

TensorFlow または PyTorch を必要としないモデルには、Standard Data Science ノートブックイメージを使用します。

TensorFlow

TensorFlow は、機械学習のためのオープンソースプラットフォームです。TensorFlow を使用すると、マシンラーニングモデルを構築し、トレーニングし、デプロイできます。TensorFlow には、計算グラフの視覚化など、高度なデータ可視化機能が含まれています。また、モデルの進捗を簡単に監視し、追跡することもできます。

PyTorch

Pytorch は、ディープラーニング向けに最適化されたオープンソースマシンラーニングライブラリーです。コンピュータービジョンまたは自然言語処理モデルを使用している場合は、Pytorchノートブックイメージを使用してください。

Python の最小化

高度な機械学習機能や、計算量の多いデータサイエンス作業のための追加のリソースが必要ない場合は、Minimal Pythonイメージを使用してモデルを開発できます。

1.2. ローカルストレージからの既存のノートブックのインポート

ローカルストレージから JupyterLab に既存のノートブックを読み込んで作業を継続したり、新しいユースケースに合わせてプロジェクトを調整したりできます。

前提条件

  • JupyterHub にログインするための認証情報。
  • 起動済みで実行中のノートブックサーバー。
  • ノートブックファイルがローカルストレージにある。

手順

  1. JupyterLab インターフェースの左側のサイドバーの File Browser で、Upload Files ( Upload Files ) をクリックします。
  2. ノートブックファイルを見つけ、これを選択して Open をクリックします。

    ファイルは File Browser に表示されます。

検証

  • ノートブックファイルは、JupyterLab インターフェースの左側のサイドバーの File Browser に表示されます。
  • JupyterLab でノートブックファイルを開くことができます。

1.3. JupyterLab を使用した Git リポジトリーからの既存ノートブックファイルのインポート

JupyterLab ユーザーインターフェースを使用して Git リポジトリーをワークスペースにクローンし、そのまま作業を継続したり、外部プロジェクトのファイルを統合したりできます。

前提条件

  • 起動済みで実行中の JupyterHub サーバー。
  • クローンを作成する Git リポジトリーの読み取りアクセス。

手順

  1. Git リポジトリーの HTTPS URL をコピーします。

    • GitHub で ⤓ CodeHTTPS をクリックし、Clipboard ボタンをクリックします。
    • GitLab で Clone をクリックし、Clone with HTTPS の下にある Clipboard ボタンをクリックします。
  2. JupyterLab インターフェースで、Git Clone ボタン ( Git Clone button ) をクリックします。

    また、メニューで GitClone a repository をクリックするか、または Git アイコン ( Git button ) をクリックして Clone a repository ボタンをクリックできます。

    Clone a repo ダイアログが表示されます。

  3. ノートブックが含まれるリポジトリーの HTTPS URL を入力します。
  4. CLONE をクリックします。
  5. プロンプトが表示されたら、Git リポジトリーのユーザー名とパスワードを入力します。

検証

  • リポジトリーの内容が JupyterLab のファイルブラウザーに表示されるか、ターミナルで ls コマンドを実行して、リポジトリーがディレクトリーとして表示されることを確認します。

1.4. コマンドラインインターフェースを使用した Git リポジトリーからの既存のノートブックファイルのインポート

コマンドラインインターフェースを使用して Git リポジトリーをワークスペースにクローンし、そのまま作業を継続したり、外部プロジェクトのファイルを統合したりできます。

前提条件

  • 起動済みで実行中の JupyterHub サーバー。

手順

  1. Git リポジトリーの HTTPS URL をコピーします。

    • GitHub で ⤓ CodeHTTPS をクリックし、Clipboard ボタンをクリックします。
    • GitLab で Clone をクリックし、Clone with HTTPS の下にある Clipboard ボタンをクリックします。
  2. JupyterLab で FileNewTerminal の順にクリックして、ターミナルウィンドウを開きます。
  3. git clone コマンドを入力します。

    git clone git-clone-url

    git-clone-url を HTTPS URL に置き換えます。以下に例を示します。

    [1234567890@jupyterhub-nb-jdoe ~]$ git clone https://github.com/example/myrepo.git
    Cloning into myrepo...
    remote: Enumerating objects: 11, done.
    remote: Counting objects: 100% (11/11), done.
    remote: Compressing objects: 100% (10/10), done.
    remote: Total 2821 (delta 1), reused 5 (delta 1), pack-reused 2810
    Receiving objects: 100% (2821/2821), 39.17 MiB | 23.89 MiB/s, done.
    Resolving deltas: 100% (1416/1416), done.

検証

  • リポジトリーの内容が JupyterLab のファイルブラウザーに表示されるか、ターミナルで ls コマンドを実行して、リポジトリーがディレクトリーとして表示されることを確認します。

1.5. 関連情報

第2章 Git を使用したノートブックでの連携

ノートブックまたはその他のファイルが Git バージョン制御に保存される場合は、Git リポジトリーからノートブックサーバーにインポートして JupyterHub で使用できます。準備が整ったら、変更を Git リポジトリーに再びプッシュし、他のユーザーがモデルをレビューしたり、使用したりできるようにします。

2.1. JupyterLab を使用した Git リポジトリーからの既存ノートブックファイルのインポート

JupyterLab ユーザーインターフェースを使用して Git リポジトリーをワークスペースにクローンし、そのまま作業を継続したり、外部プロジェクトのファイルを統合したりできます。

前提条件

  • 起動済みで実行中の JupyterHub サーバー。
  • クローンを作成する Git リポジトリーの読み取りアクセス。

手順

  1. Git リポジトリーの HTTPS URL をコピーします。

    • GitHub で ⤓ CodeHTTPS をクリックし、Clipboard ボタンをクリックします。
    • GitLab で Clone をクリックし、Clone with HTTPS の下にある Clipboard ボタンをクリックします。
  2. JupyterLab インターフェースで、Git Clone ボタン ( Git Clone button ) をクリックします。

    また、メニューで GitClone a repository をクリックするか、または Git アイコン ( Git button ) をクリックして Clone a repository ボタンをクリックできます。

    Clone a repo ダイアログが表示されます。

  3. ノートブックが含まれるリポジトリーの HTTPS URL を入力します。
  4. CLONE をクリックします。
  5. プロンプトが表示されたら、Git リポジトリーのユーザー名とパスワードを入力します。

検証

  • リポジトリーの内容が JupyterLab のファイルブラウザーに表示されるか、ターミナルで ls コマンドを実行して、リポジトリーがディレクトリーとして表示されることを確認します。

2.2. コマンドラインインターフェースを使用した Git リポジトリーからの既存のノートブックファイルのインポート

コマンドラインインターフェースを使用して Git リポジトリーをワークスペースにクローンし、そのまま作業を継続したり、外部プロジェクトのファイルを統合したりできます。

前提条件

  • 起動済みで実行中の JupyterHub サーバー。

手順

  1. Git リポジトリーの HTTPS URL をコピーします。

    • GitHub で ⤓ CodeHTTPS をクリックし、Clipboard ボタンをクリックします。
    • GitLab で Clone をクリックし、Clone with HTTPS の下にある Clipboard ボタンをクリックします。
  2. JupyterLab で FileNewTerminal の順にクリックして、ターミナルウィンドウを開きます。
  3. git clone コマンドを入力します。

    git clone git-clone-url

    git-clone-url を HTTPS URL に置き換えます。以下に例を示します。

    [1234567890@jupyterhub-nb-jdoe ~]$ git clone https://github.com/example/myrepo.git
    Cloning into myrepo...
    remote: Enumerating objects: 11, done.
    remote: Counting objects: 100% (11/11), done.
    remote: Compressing objects: 100% (10/10), done.
    remote: Total 2821 (delta 1), reused 5 (delta 1), pack-reused 2810
    Receiving objects: 100% (2821/2821), 39.17 MiB | 23.89 MiB/s, done.
    Resolving deltas: 100% (1416/1416), done.

検証

  • リポジトリーの内容が JupyterLab のファイルブラウザーに表示されるか、ターミナルで ls コマンドを実行して、リポジトリーがディレクトリーとして表示されることを確認します。

2.3. リモート Git リポジトリーからの変更を含むプロジェクトの更新

他のユーザーが作成した変更をリモート Git リポジトリーからデータサイエンスプロジェクトにプルできます。

前提条件

  • リモート Git リポジトリーを設定している。
  • Git リポジトリーを JupyterLab にインポートしており、リポジトリーの内容は JupyterLab のファイルブラウザーに表示されます。
  • リモート Git リポジトリーからローカルリポジトリーにファイルをプルするパーミッションがある。
  • JupyterHub にログインするための認証情報がある。
  • JupyterHub サーバーを起動して実行している。

手順

  1. JupyterLab インターフェースで、Git ボタン ( Git button ) をクリックします。
  2. Pull latest changes ボタン( Pull latest changes button )をクリックします。

検証

  • Git ペインの History タブで、リモートリポジトリーからプルした変更を表示できます。

2.4. プロジェクトの変更を Git リポジトリーにプッシュ

実稼働環境でアプリケーションをビルドし、デプロイするには、作業をリモート Git リポジトリーにアップロードします。

前提条件

  • JupterHub インターフェースでノートブックを開く。
  • 関連する Git リポジトリーが、すでにノートブックサーバーに追加されている。
  • 関連する Git リポジトリーに変更をプッシュするパーミッションがある。
  • Git バージョン制御拡張がインストールされている。

手順

  1. FileSave All をクリックして、保存していない変更を保存します。
  2. Git アイコン( Git button )をクリックし、JupyterHub インターフェースで Git ペインを開きます。
  3. 変更したファイルが Changed に表示されることを確認します。

    変更したファイルが Untracked にある場合は、GitSimple Staging をクリックして簡素化された Git プロセスを有効にします。

  4. 変更をコミットします。

    1. Changed の下にあるすべてのファイルに、青いチェックマークが付いていることを確認します。
    2. Summary フィールドに、加えた変更の簡単な説明を入力します。
    3. Commit をクリックします。
  5. GitPush to Remote をクリックして、変更をリモートリポジトリーにプッシュします。
  6. プロンプトが表示されたら、Git 認証情報を入力し、OK をクリックします。

検証

  • 最近プッシュされた変更は、リモート Git リポジトリーに表示されます。

第3章 OpenShift Data Science でのノートブックの使用

データサイエンティストとして、ノートブックサーバー環境に含めるものを制御します。必要に応じてソフトウェアをインストールし、ノートブックとモデルに必要なものをすべて含めることができます。

重要

OpenShift Data Scienceでは、ノートブックサーバーのストレージが90%以上になると指定したメールアドレス(通常は管理者)に通知が送られ、完全に満杯になると再度通知が送られます。

非常に大きなデータセットをダウンロードする場合は、管理者が通知を受け取る前にストレージがいっぱいになる可能性があるため、管理者がストレージを増やす前にスペースが不足する可能性があります。

この問題を回避するには、可能な場合に、外部サービスから大規模なデータセットをストリーミングすることを推奨します。または、非常に大きなデータセットを使用する場合は、十分なスペースを確保するために、管理者に事前に追加のストレージを要求することもできます。

3.1. ノートブックサーバーにインストールされているPythonパッケージの表示

ノートブックセルで pip ツールを実行して、ノートブックサーバーにインストールされている Python パッケージおよびパッケージのバージョンを確認できます。

前提条件

  • JupyterHub にログインし、ノートブックを開きます。

手順

  1. ノートブックの新しいセルに、以下のコマンドを入力します。

    !pip list
  2. セルを実行します。

検証

  • 出力には、インストールされているすべての Python パッケージとそのバージョンがアルファベット順に表示されます。たとえば、Minimal イメージを使用してノートブックサーバーを作成した後すぐにこのコマンドを使用する場合に、表示される最初のパッケージは以下のようになります。

    Package                           Version
    --------------------------------- ----------
    aiohttp                           3.7.3
    alembic                           1.5.2
    appdirs                           1.4.4
    argo-workflows                    3.6.1
    argon2-cffi                       20.1.0
    async-generator                   1.10
    async-timeout                     3.0.1
    attrdict                          2.0.1
    attrs                             20.3.0
    backcall                          0.2.0

3.2. ノートブックサーバーへの Python パッケージのインストール

パッケージとバージョンを requirements.txt ファイルに追加し、ノートブックセルで pip install コマンドを実行すると、デフォルトのノートブックサーバーイメージの一部ではない Python パッケージをインストールできます。

注記

Red Hat は、パッケージを直接インストールすることもできますが、モデルを後でデプロイできるように requirements.txt ファイルを使用することを推奨します。

前提条件

  • JupyterHub にログインし、ノートブックを開きます。

手順

  1. 以下の方法のいずれかを使用して、新規テキストファイルを作成します。

    • + をクリックして新規のランチャーを開き、Text file をクリックします。
    • FileNewText File の順にクリックします。
  2. テキストファイルの名前を requirements.txt に変更します。

    1. ファイルの名前を右クリックし、Rename Text をクリックします。Rename File ダイアログが開きます。
    2. New Name フィールドに requirements.txt を入力し、Rename をクリックします。
  3. Requirements.txt ファイルにインストールするパッケージを追加します。

    altair

    == (等しい) 演算子を使用して、インストールするバージョンを指定できます。以下に例を示します。

    altair==4.1.0

    複数のパッケージを同時にインストールするには、各パッケージを別々の行に配置します。

  4. ノートブックセルを使用して、requirements.txt のパッケージをサーバーにインストールします。

    1. ノートブックに新しいセルを作成し、以下のコマンドを入力します。

      !pip install -r requirements.txt
    2. Shift と Enter を押してセルを実行します。
    重要

    これにより、ノートブックサーバーにパッケージがインストールされますが、コードセルで import ディレクティブを実行してコード内のパッケージを使用する必要があります。

    import altair

検証

3.3. サーバーの再起動によるノートブックサーバー設定の更新

ノートブックサーバーを停止および再起動することで、ノートブックサーバーの設定を更新できます。たとえば、サーバーがメモリー不足になる場合は、サーバーを再起動してコンテナーのサイズを大きくすることができます。

前提条件

  • 実行中のノートブックサーバー。
  • JupyterHub にログインします。

手順

  1. FileHub Control Panel をクリックします。

    コントロールパネルが新規タブに表示されます。

  2. Stop my server ボタンをクリックします。

    このボタンは、サーバーが停止すると表示されなくなります。

  3. My Server をクリックしてサーバーを再起動して、新しい設定を選択します。

検証

  • ノートブックサーバーランチャーは、サーバーの再起動時に開きます。

第4章 JupyterHub での一般的な問題のトラブルシューティング

JupyterHub、ノートブック、またはノートブックサーバーに関連する Red Hat OpenShift Data Science のエラーが表示される場合は、本セクションを読み、問題が発生する可能性があるかを確認します。

その問題が本書またはリリースノートに記載されていない場合は、Red Hatサポートに連絡してください。

4.1. JupyterHub にログインすると 403: Forbidden エラーが表示される

問題

ユーザー名が、OpenShift Data Science のデフォルトのユーザーグループまたはデフォルトの管理者グループに追加されていない可能性があります。正しいグループに追加するように、管理者に連絡してください。

診断

ユーザーがデフォルトのユーザーグループまたはデフォルトの管理者グループに属しているかどうかを確認します。

  1. JupyterHub へのアクセスが許可されるグループ名を見つけます。

    1. OpenShift Dedicated Web コンソールにログインします。
    2. WorkloadsConfigMaps をクリックし、rhods-groups-config ConfigMap をクリックして開きます。
    3. YAML タブをクリックし、admin_groups および allowed_groups の値を確認します。これらは、JupyterHub にアクセスできるグループの名前です。

        data:
          admin_groups: rhods-admins
          allowed_groups: rhods-users
  2. User managementGroups の順にクリックし、各グループ名をクリックしてメンバーを表示します。

解決策

  • ユーザーが JupyterHub へのアクセスが許可されるグループに追加されていない場合は、Adding users for OpenShift Data Science に従ってユーザーを追加します。
  • JupyterHub へのアクセスが許可されるグループにユーザーがすでに追加されている場合は、Red Hat サポートにお問い合わせください。

4.2. ノートブックサーバーが起動しない

問題

ノートブックサーバーをホストするOpenShift Dedicatedクラスターが十分なリソースにアクセスできないか、JupyterHub Pod に障害が発生した可能性があります。さらにチェックできるように管理者に問い合わせてください。

診断

  1. OpenShift Dedicated Web コンソールにログインします。
  2. このユーザーのノートブックサーバー Pod を削除して再起動します。

    1. WorkloadsPods をクリックし、Projectrhods-notebooks に設定します。
    2. このユーザーに属するノートブックサーバー Pod を検索します(例: jupyterhub-nb-username-*)。

      ノートブックサーバー Pod が存在する場合は、断続的な失敗がノートブックサーバー Pod で発生した可能性があります。

      ユーザーのノートブックサーバー Pod が存在しない場合は、診断を続行します。

  3. 選択したノートブックサーバーイメージで必要なリソースに対して、OpenShift Dedicated クラスターで現在利用可能なリソースを確認します。

    クラスター内でのスケジューリングに CPU および RAM が十分にあるワーカーノードが利用可能な場合は、診断を続行します。

  4. JupyterHub Pod の状態を確認します。

解決策

  • ノートブックサーバー Pod の断続的な失敗がある場合:

    1. ユーザーに属するノートブックサーバー Pod を削除します。
    2. ユーザーにノートブックサーバーを再度開始するよう依頼します。
  • ノートブックサーバーに、選択したノートブックサーバーイメージを実行するのに十分なリソースがない場合は、OpenShift Dedicated クラスターにリソースを追加するか、小規模なイメージサイズを選択します。
  • JupyterHub Pod が FAILED 状態にある場合は、以下を実行します。

    1. jupyterhub-* Pod のログを取得し、詳細な評価のために Red Hat サポートに送信します。
    2. jupyterhub-* Pod を削除します。

      警告

      正しい Pod が削除されていることを確認します。jupyterhub-db-* Pod を誤って削除しないでください。

  • 以前の解決策がない場合は、Red Hat サポートにお問い合わせください。

4.3. ノートブックセルの実行時に、database or disk is full エラーか no space left on device エラーが表示される

問題

ノートブックサーバーでストレージ領域が不足している可能性があります。さらにチェックできるように管理者に問い合わせてください。

診断

  1. JupyterHub にログインし、問題のあるユーザーに属するノートブックサーバーを起動します。ノートブックサーバーが起動しない場合は、
  2. ユーザーがストレージ領域を使い果たすかどうかを確認します。

    1. OpenShift Dedicated Web コンソールにログインします。
    2. WorkloadsPods をクリックし、Projectrhods-notebooks に設定します。
    3. このユーザーに属するノートブックサーバー Pod(例: jupyterhub-nb-username-*)をクリックします。
    4. Logs をクリックします。以下のような行が表示された場合、ユーザーは利用可能な容量を超えています。

      Unexpected error while saving file: XXXX database or disk is full

解決策

  • 永続ボリュームを拡張し、ユーザーで利用可能なストレージを拡張します (永続ボリュームの拡張)。
  • ユーザーと連携し、/opt/app-root/src ディレクトリーから削除できるファイルを特定し、既存のストレージ領域を解放します。