ハイパフォーマンスコンピューティング(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のウェブとサービスのバックエンドとフロントエンドの開発に携わっています。

関連記事

  • 関連記事
  • おすすめ記事
  • 特集記事
TOP