トレンドコラム

技術解説

JupyterHub/JupyterLabを構築してみた
~マルチユーザでGPUマシンを共有するための開発環境~

2023.10.25

GPUエンジニア 岡本 茄生

GPUエンジニア
岡本 茄生

JupyterHub/JupyterLabを構築してみた ~マルチユーザでGPUマシンを共有するための開発環境~

はじめまして。入社2年目社員の岡本と申します。普段はGPUサーバーの構築や開発環境構築を中心として、インフラエンジニア業務を担当しています。

GPUサーバーの利用を検討されている方の中には、このようなインフラ構築のお悩みを持っている方も多いのではないでしょうか。

  • 複数台のマシンを用意する際、環境構築が大変!
  • 一人に1台マシンを購入するのはお金がかかる!

今回はこうした複数台の環境構築の簡素化、マシン調達のコスト削減という課題を解決するため、マルチユーザでGPUサーバーにアクセスしプログラムを実行できる「JupyterHub」「JupyterLab」を構築してみました!

JupyterLabとは

  • Pythonをはじめ、40種類以上の言語をサポートしている開発環境
  • Webブラウザから簡単に利用できるため、利用者側の環境構築が必要ない
  • オープンソースかつ無料で利用可能

JupyterHubとは

  • 複数のユーザが同時にログインできる、認証機能を備えたJupyterサーバー
  • ユーザもしくはグループに対して実行環境(JupyterLab)を割り当てられる

こんな方におすすめ

  • 学校や研究機関など、複数人の生徒や研究者でリソースを共同利用したい
  • 開発環境として特別なソフトウェアをインストールしたくない
  • 他のメンバとGPU / CPU / メモリ等のマシンリソースを共有して開発したい
  • プログラム実行時のみサーバーリソースを使用するため、サーバーを占有せずにチーム内で共有できる

今回は、JupyterHub/JupyterLabを触ってテストできる環境をデスクトップPCに構築してみました。
JupyterHub/JupyterLabをインストールし正常に実行できることを目標に設定します。
本記事が、JupyterHub/JupyterLabについて知りたかった方や気になっていた方の助力になればと思います。

【実行環境】機器・OS・パッケージ一覧

デスクトップPCにUbuntu20.04 DesktopのISOをインストールしました。 バージョン情報は下記の通りです。

ハードウェアスペック

CPU:AMD Ryzen 75700G with Radeon Graphics
MEM:SODIMM 3200Hz 16GB×2
SSD:SATA500GB
SSD:NVNe 1TB
GPU:NVIDIA Gforce RTX3070

パッケージバージョン

Python 3.10.12
pip 22.0.2
npm 9.8.0
vim 8.2.213
node.js v20.5.1
jupyterlab 4.0.5
juputerhub 4.0.2

【事前準備】必要なコマンドを追加インストール

プリインストールされていないコマンドをいくつか使⽤するため、追加でインストールします。

1. pip/vim/curl/npmのインストール

今回はAnacondaは使⽤せず、pipでインストールしてみたいと思います。 ⼀括でインストールできると楽なので、以下コマンドを使⽤しましょう。

# sudo apt install python3-pip & sudo apt install vim & sudo apt install curl &&
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -&&\
sudo apt-get install -y nodejs

正常にインストールできたか確認しましょう。それぞれの確認コマンドは以下の通りです。

#pip -V
#vim -V
#curl -V
#npm -V
#node -V

バージョン情報が表示されればインストールは完了しています。

2. http proxyのインストール

今回は外部に公開するシステムではありませんが、JupyterHubの起動時に必要なため、http proxyを追加インストールします。

#sudo npm install -g configurable-http-proxy

以下のように表⽰されていれば成功です。

npm notice Run npm install -g npm@9.8.1 to update!
npm notice 

3. パッケージ更新

インストールしたパッケージを更新します。

#sudo apt-get update -y 
#sudo apt-get upgrade -y

4. JupyterHubの構築に必要なディレクトリの作成

JupyterHubとJupyterLabをインストールするディレクトリを作成しておきます。

#sudo mkdir /opt/jupyter 
#sudo mkdir ~/notebook

JupyterHubとJupyterLabのインストール・設定

1. JupyterHub とJupyterLabのインストール

事前準備ができたら、いよいよJupyterHub とJupyterLabをインストールしていきます。

#cd /opt/jupyter

インストールを実行するディレクトリには気を付けましょう。

#sudo pip install jupyterlab jupyterhub

正常にインストールできたか確認しましょう。それぞれの確認コマンドは以下の通りです。

#jupyterhub --version
#jupyterlab --version

バージョン情報が表示されればインストールは完了しています。

2. コンフィグファイル(jupyterhub_config.py)の作成

インストールできたらコンフィグファイルを作成・設定していきます。

#sudo jupyterhub --generate-config

もしファイルが編集できない場合はrootを有効化して編集してください。

#sudo passwd root
password:root

rootアカウントに切り替えるコマンド

su –

3. jupyterhub_config.pyの編集

私はvimエディタを用いて設定ファイル(jupyterhub_config.py)を編集しました。

#vim jupyterhub_config.py

以下をファイルに追記します。

c.JupyterHub.ip = '0.0.0.0'
#設定したIP アドレス(この場合0.0.0.0)を JupyterHubで使⽤する
c.Spawner.default_url = '/lab'
#JupyterLab を使うよう指定
c.Spawner.notebook_dir = '~notebook'
#JupyterLab で利⽤する個⼈ディレクトリのパスを指定
c.Authenticator.admin_users ={'Ubuntuのユーザ名'}
#管理者アカウントを設定。今回はOS のユーザーアカウントを指定
c.Authenticator.allowed_users = {'Ubuntuのユーザ名'}
#利⽤者アカウントを設定。今回はOS のユーザーアカウントを指定

以下の例のようにユーザ名をUbuntuで現在ログインしているユーザ名にしましょう。
{''}の部分は残してください。

c.Authenticator.admin_users ={'NTTPC'}
c.Authenticator.allowed_users = {'NTTPC'}

JuputerHubの実⾏

1. jupyterhubの実⾏

ここまでの手順が完了していれば、以下のコマンドで実行できます。

cd /opt/jupyter
sudo jupyterhub

実行すると以下の画面のように表示されます。

2. WebブラウザでJupyterHubにアクセス

上記の実行画面に表示されているアドレス「http://0.0.0.0:8000/」にWebブラウザからアクセスします。

http://0.0.0.0:8000/にアクセスすると、上記のようにログイン画面が表示されます。

「3. jupyterhub_config.pyの編集」手順で設定したUbuntuユーザ名でログインします。

3. エラーが起こった場合

http://0.0.0.0:8000/にアクセスしても「500:Internal Server Error」が表⽰される場合、ブラウザのcookieを削除し、ブラウザを⼀度閉じてから再度アクセスしてみましょう。

これでJupyterHub・JupyterLabのインストールは完了です。おつかれさまでした。

まとめ

今回はJupyter Hub / Jupyter Labのインストール手順について解説しました。
日本語化も行いませんでしたが、まずは動作したのでよしとしましょう。
次回以降の記事では、日本語化からJupyterLabの基本的な使い方、複数のユーザやワークスペースの作成、GPUの割り当て設置などを解説したいと思います。

Jupyter Hub / Jupyter LabにはRubyやC言語を導入することができ、コードを書く上で便利な拡張機能があります。利用される方の参考になるような記事を執筆したいと考えていますので、楽しみにお待ちください。

Jupyter Hub / Jupyter Labを用いたマルチユーザ認証環境の構築をお考えの方は、NTTPCまでお問い合わせください。