ハイパフォーマンスコンピューティング(HPC)とはどのようなものでしょうか。
ハイパフォーマンスコンピューティング(HPC)とは、データを処理し、複雑な計算を行うための大規模な方法のことです。スーパーコンピューターと並列処理技術を利用して、1つまたは複数のタスクを同時に処理します。例えば、研究所、メディアエンターテインメント、AI・機械学習、製品開発のためのテストシナリオシミュレーションなど、さまざまな業界で利用されています。
ハイパフォーマンスコンピューティング(HPC)の普及に伴い、JupyterLabはHPC環境に欠かせない存在となっています。前回のブログでは、JupyterLabのクイックスターターガイドをご紹介しました。今回は、そのJupyterLabをHPC環境に導入する方法をご紹介します。
まず、環境を準備する必要があります。
NGINXは、Webサービング、リバースプロキシ、キャッシング、ロードバランシング、メディアストリーミングなどの機能を備えたオープンソースソフトウェアです。一般的には、受信したトラフィックを管理し、レガシーなデータベースサーバーからマイクロサービスまで、低速なアップストリームに分配するために使用されます。
# Ubuntu 18.04 and 20.04
apt install -y nginx
# CentOS
yum install -y nginx
Node.jsは、オープンソースでクロスプラットフォームのバックエンドJavaScript実行環境です。V8エンジン上で動作し、ウェブブラウザの外でJavaScriptコードを実行することができます。
# Ubuntu 18.04
apt install -y nodejs nodejs-dev node-gyp libssl1.0-dev
# Ubuntu 20.04
apt install -y nodejs node-gyp libssl1.1
# CentOS
yum install -y nodejs
Npmは、npm, Inc.が管理しているJavaScriptのパッケージマネージャーです。npmは、JavaScriptの実行環境であるNode.jsのデフォルトのパッケージマネージャーです。
# Ubuntu 18.04 and Ubuntu 20.04
apt install -y npm
# CentOS
yum install -y npm
Node.jsのバージョンをv14.8.0以降にアップグレードします。
npm cache clean -f
npm install -g n
n 14.8.0
これらのインストールが終わったら、次にsystemdサービスファイルを作成します。このファイルはJupyterLabを簡単に管理するために使用されます。
jupyterlab.serviceファイルを作成します。
cd /etc/systemd/system/
touch jupyterlab.service
# Paste the content below for jupyterlab.service
[Unit]
Description=JupyterLab
After=syslog.target network.target
[Service]
User=root
StandardOutput=file:/var/log/systemd/jupyterlab/sysout.log
ExecStart=jupyter lab
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
jupyterlab.serviceを起動し有効化します。
systemctl daemon-reload
systemctl start jupyterlab.service
systemctl enable jupyterlab.service
systemctl status jupyterlab.service
# systemctl status should show something like this
● jupyterlab.service - JupyterLab
Loaded: loaded (/path/to/jupyterlab.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2021-10-04 04:04:09 UTC; 24h ago
Main PID: 54 (gunicorn)
CGroup: /path/to/jupyterlab.service
├─ 54 /path/to/python3 /path/to/jupyter lab
これで、リバースプロキシの設定を行うことができるようになりました。リバースプロキシは、クライアントやユーザーとアプリケーションサーバーとの間のゲートウェイの役割を果たします。一般的には、セキュリティ、パフォーマンス、信頼性を向上させるために実装されます。
jupyterlab.confという名前でnginx設定ファイルを作成します。
注:SSL証明書とドメイン名を用意しておく必要があります。
vi /etc/nginx/conf.d/jupyterlab.conf
# Paste the content below for jupyterlab.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream jupyterlab {
server 127.0.0.1:8888;
}
server {
listen 443 ssl;
server_name ;
charset utf-8;
include /path/to/ssl.certificate.conf;
location / {
proxy_pass http://jupyterlab;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# websocket headers
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Scheme $scheme;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_buffering off;
}
location ~ /.well-known {
allow all;
}
}
nginxが問題なく動作していることを確認します。
nginx -t
systemctl reload nginx
最後に、お使いのブラウザーでJupyterLab(<insert_domain_name>)にアクセスします。
JupyterLabを導入した後に、インストールすることができる拡張機能について説明します。生産性を高めてくれるプラグインがたくさん用意されています。
複数のユーザーでJupyter Notebookを利用する際には、JupyterHubを利用するのが最良の方法です。学生のクラスでも、企業のデータサイエンスグループでも、科学研究グループでも利用できます。JupyterHubは、シングルユーザー用のJupyter Notebookサーバーの複数のインスタンスを生成、管理、プロキシするマルチユーザー用のハブです。
JupyterHub-ldap-authenticatorは、JupyterLabにLDAPを統合して有効にするパッケージです。JupyterHubのユーザーは、LDAPアカウントを使ってログインできるようになります。本パッケージは複数のLDAPサーバーにも対応しており、企業での利用にも適しています。
JupyterLab-Matplotlibは、Matplotlibをインタラクティブに利用できるようにする拡張機能です。

JupyterLab-DawIOは、JupyterLab上でダイアグラムを描くことができるようにする拡張機能です。

JupyterLab-Spreadsheetは、JupyterLabに簡単なスプレッドシートビューアーを追加する拡張機能です。データサイエンティストやデータエンジニアのユーザーはもちろん、JupyterLabでスプレッドシートを見たいと思っているユーザーに大きな助けとなります。

最後に
JupyterLabは、個人のタスクやワークロードだけでなく、ハイパフォーマンスコンピューティング(HPC)環境でも広く活用できます。非常に強力なツールとなり、日々の活動を完全にサポートしてくれます。また、プラグインを利用することで、生産性を向上させるパッケージをインストールすることができます。
<著者について>
Ray Marc Marcellonesは、エクストリームーDのHPCエンジニアとして3年以上活躍しています。AXXE-Lのウェブとサービスのバックエンドとフロントエンドの開発に携わっています。