1. HOME
  2. What's New
  3. JupyterLabでWeb GUI をもつジョブランチャーを簡単に作る

What's New

最新情報

Tech Blog

JupyterLabでWeb GUI をもつジョブランチャーを簡単に作る

JupyterLabを使って、Web GUIに対応したジョブランチャーを作成することができます。
今回のTech Blogでは、JupyterLabを使ったジョブランチャーの作成方法について解説します。

実現したいこと/実現できること

JupyterLabでジョブランチャーを簡単作成し、これにより以下を実現します。

  • HPC初心者でもジョブを実行できるユーザフレンドリーなインターフェイスの提供
  • 解析ワークフローが変わっても、すぐにジョブランチャーを修正/更新できる柔軟性の提供

従来の課題

製造業のシミュレーションエンジニアは大きく分けて2タイプに分類されます。

  • タイプA:シミュレータを道具として利用し、設計や解析業務にフォーカスするエンジニア
  • タイプB:高いコンピューティングスキルを使ってシミュレーションの解析ワークフローを構築し、CAE/CFDの技術開発を行うエンジニア

タイプAのエンジニアは、普段Windows環境を利用しており、LINUXのコマンドラインやHPCの使いこなしに苦労するケースも多く、タイプBのエンジニアが作成したテンプレートや、ワークフローについてまとめられたマニュアルに従って解析を行うケースが一般的です。しかし、タイプBのエンジニアが作成したテンプレートやマニュアルは、タイプAのエンジニアにとって、使いやすいインターフェイスとは言えません。また、これに対応する専用のGUIを時間をかけて作成したとしても、解析ワークフローが改定されてしまうと、すぐに陳腐化してしまうという課題がありました。

目的

上記課題に対し以下を実現することを目的とします。

  • HPC初心者でもジョブを実行できるユーザフレンドリーなジョブランチャーの提供
  • 解析ワークフローが変わっても、すぐに修正や更新できる柔軟性の提供

解決手段

今回、JupyterLabがジョブスケジューラーのマスターノードにインストールされている環境を想定し、以下の2つを用いて上記目的を達成します。

  • ipywidgetsを使ってJupyter Notebook上にジョブランチャーを作成します。
  • JupyterLabのエクステンション機能jupyterlab_templatesを使ってこのジョブランチャーをテンプレートとして登録し、Adminが一元管理できるようにします。

ipywidgets

ipywidgetsはjupyter-widgetsまたは単にウィジェットとも呼ばれ 、Jupyter NotebookおよびIPythonカーネル用のインタラクティブなHTMLウィジェットです。Jupyter Notebook 上でこのパッケージをインポートして、pythonコードを書くことで、比較的簡単に Jupyter Notebook 上にジョブランチャーを作成することができです。Jupyter Notebook上のipywidgetsの動作を見てみましょう。

  • 1つ目のセルはシンプルなスライダーです。スライダーを動かすことで表示される整数値が変化することがわかります。
  • 2つめのセルはボタンをクリックするとslurmの sinfo -s コマンド が実行されます。

このように短いpythonコードでWidgetを作成することができです。また、セル上のpythonコードを編集すればすぐにWidgetに変更を加えることができます。

jupyterlab_templates

jupyterlab_templatesはJupyterLabのExtensionの一つです。このExtensionを使うと、作成したJupyter Notebookをテンプレートとして登録することができます。具体的には、Jupyter Notebookを所定のディレクトリーに置くだけで、このNotebookを、グループ間もしくは個人で利用できるテンプレートとして登録することができます。また、登録したテンプレートをLauncher画面のTemplateアイコンから選択できるようになります。つまり、所定のディレクトリーに保存するだけで登録されるため、ジョブランチャーに変更があっても、そのデプロイ作業が簡単にすることができ、Adminユーザはテンプレートを一元的に管理することができます。先程作成したJupyter Notebookをjupyterlab_templatesに登録したときの動作を見てみましょう。

  • 一度登録するとTemplateアイコンから、登録済みのテンプレートを選択でき、このテンプレートを使い回すことができます。
  • 複数のバージョンを登録することで簡単なバージョン管理も可能です。また、Jupyterlab_templatesの共有ディレクトリーに配置し登録することで、作成されたジョブランチャーのテンプレートを社内で共有することができます。
  • ユーザーがあらかじめ選択したディレクトリーに、先程選んだテンプレートを元に作成された untitled.ipynb というファイルができているので、この名前を変更します。
  • 実行ボタンを押し、ジョブランチャーを生成します。
  • 先程と同じく、スライダーと sinfo -s コマンドを実行するボタンが表示されます。
  • 各セルに記述したpythonコードはあらかじめ非表示にしていますので表示します。

 

出来上がり例

ここではAnsys Fluentを例としたジョブランチャーのサンプルを見てみます。

  • Ansys Fluentのjouファイルがあるディレクトリに移動し、先程と同様にFluentのテンプレートを選択、実行ボタンをおしてジョブランチャーのGUIを表示します。
  • Ansys Fluent実行に必要なパラメーター、ジョブ名、コア数、インプットファイル名などを入力します
  • Create run.sh のボタンを押してSlurm実行に必要なランスクリプトを生成します。#SBATCH で始まるSlurmの設定や、Fluent実行に必要なパラメータをもったファイルが作成されていることを確認します。
  • RUNボタンをクリックしジョブを実行します。
  • ライセンス消費状況を確認します。

まとめ

ipywidgetsを使ってJupyter Notebook上にジョブランチャーを作成し、このNotebookをjupyterlab_templatesに登録することで、以下を実現可能なことを示しました。

  • HPC初心者でもジョブを実行できるユーザフレンドリーなジョブランチャーを提供できること
  • 解析ワークフローが変わったとして、notebook上のipywidegetのコード変更し、jupyterlab_templatesに再登録することで、すぐに修正や更新できる柔軟性も提供できること

言い換えれば、簡単にブラウザー上で動作するGUIを作成でき、設計現場でジョブランチャーを簡単に作成することが可能ことを意味します。