クラウド環境構築システムVCPによるmdxでのスケーラブルなHPCクラスタの構築〇大江 和一1, 竹房 あつ子1,2, 丹生 智也1,3, 合田 憲人1,2
1 国立情報学研究所, 2 総合研究大学院大学,
3 国立遺伝学研究所

SWoPP2023 HPC-3（2023.8.3）© 2023 National Institute of Informatics

1

はじめに
研究の背景 初心者がHPCクラスタの前提知識なしでアプリケーション実行が可能なOpen
OnDemandの利用が進んでいる。しかしながら、その構築・運用は初心者にとって容易ではない。
 NIIでは、SINETとクラウドを活用して再現性のある研究教育用アプリケーション環境の構築・運用を行うVCP(Virtual Cloud Provider)の開発・運用を進めており、OpenHPC環境構築を行うHPCテンプレートv2は開発済みである。
mdxの計算資源割り当てを行うmdx REST API対応機能も開発済みである。

技術的な課題 VCP + mdxによるOpenHPC環境構築が可能なテンプレート開発

 mdx REST APIによる計算資源割り当て、計算資源のオートスケーリング機能

 構築したOpenHPC環境上にOpen OnDemandを容易にインストールする方法

本研究の成果

 HPCテンプレートv2を機能拡張することでVCP + mdxを前提にしたOpenHPC環境の構築と運用を実現
 新たにOpen OnDemand環境構築を行うテンプレートを開発
 HPCテンプレートv2を用いたOpenHPC環境が前提

2

Open OnDemandとは
HPCクラスタを容易に利用可能とするWebポータル
これまでの経緯

 2007年より開発
 2013年から提供開始
 2022年時点で250以上のインストール

コミュニティhttps://openondemand.org/

 https://github.com/OSC/ond
emand https://discourse.openondemand.org/
3

VCP(Virtual Cloud Provider)とはテンプ
レート

NII Datacenter
VC
コントローラon-premise
University orResearch Institute

SINET VPN

Public/AcademicCloudCloudC

Cloud
Cloud BA
VirtualSegment

VPNで接続された１つ以上のクラウドとオンプレミスシステム（仮想クラウド）でアプリ環境構築を支援 クラウドの異なる制御APIの差異を吸収するVCコントローラを提供
 アプリケーションテンプレートによるアプリケーション環境構築支援

 アプリケーションの構築・運用手順を記述したJupyterNotebook形式のファイル4mdx(データ活用社会創成プラットフォーム)とは
Goal： 用途に応じてオンデマンドで短時間に構築・拡張・融合できるデータ収集・集積・解析機能を提供するプラットホーム
 SINETを活かしたリアルタイム収集・集積・解析環境の動的な構築
 高性能計算環境によるデータ科学と計算科学の融合
 異種データ・異種知識の融合活用の推進と利用者支援

https://mdx.jpより引用
5Outline
1. 基盤ソフトウエアVCPの概要
2. OpenHPC環境構築テンプレート（mdx）の開発方針
3. mdx 対応OCSテンプレートの開発
4. 活用例（Open OnDemandからLinpack実行）
5. まとめ6

VCPの概要
On-premise
ProviderテンプレートJupyter
Notebook
VCP SDK(Python)

VirtualCloud Provider(overlay cloud)Real Cloud
Provider A

Real Cloud
Provider B

Real Cloud
Provider C

Application-1
VM, BM,or Server

VM orBM

VM orBM

VM orBM

VCコントローラappbins/libs

Containerappbins/libs

Container

VCP Base Container

Application-2
VM orBM

アプリケーション利用者

OS (kernel)

VM or BMw/ GPU

Hardware / VM
Application-3
VM or BM

Academic Hi-Speed Backbone Network, SINET (L2VPN)
7

VCPの概要
On-premise
ProviderテンプレートJupyter
Notebook
VCP SDK(Python)

VirtualCloud Provider(overlay cloud)Real Cloud
Provider A

Real Cloud
Provider B

Real Cloud
Provider C

Application-1
VM, BM,or Server

VM orBM

VM orBM

VM orBM

VCコントローラ

appbins/libs

Container

appbins/libs

Container

VCP Base Container

Application-2
VM orBM

アプリケーション利用者

OS (kernel)

VM or BMw/ GPU

Hardware / VM
Application-3
VM or BM

クライアント側からのアクセス方法
Academic
Hi-Speed Backbone Network, SINET (L2VPN)に関して説明8クライアント側からのアクセス方法
VC利用者

 アプリケーションテンプレート*からVCP
SDKを利用してVCP REST APIを操作

VCコントローラ

 VCP REST API（プロバイダIFを抽象化）からTerraformを介して各クラウドを操作

Jupyter Notebook
VCP SDK (Python)
各クラウド固有設定
VCコントローラ

VCP REST API
Terraform..

各クラウドへ*: JupyterNotebook（+NII拡張）で記述

9

アプリケーションテンプレート

他者が作ったテンプレートの流用も可能

図表を組み合わせた説明を挿入できるスクリプトを組み込むことができ、ここから実行できる。実行結果を残すことも出来る。
10

VCPの概要
On-premise
ProviderテンプレートJupyter
Notebook
VCP SDK(Python)

VirtualCloud Provider(overlay cloud)Real Cloud
Provider A

Real Cloud
Provider B

Real Cloud
Provider C

Application-1
VM, BM,or Server

VM orBM

VM orBM

VM orBM

VCコントローラappbins/libs

Containerappbins/libs

Container

VCP Base Container

Application-2
VM orBM

アプリケーション利用者

OS (kernel)

VM or BMw/ GPU

Hardware / VM
Applicatio
n-3

VCノードの構成を説明

VM or BM

Academic Hi-Speed Backbone Network, SINET (L2VPN)
11

VCノード構成
Docker in Docker構成
 ベースコンテナ
死活監視やメトリクス収集などシステムの基本機能
 アプリケーションコンテナ
アプリケーションと関連ソフトウェアをベースコンテナ上に起動

ユーザのアプリケーションコンテナ

appbins/libs

Container
VCP のベースコンテナ

appbins/libs

Container

VCP Base Container
OS (kernel)
Hardware / VM
12

VCPからmdx計算資源を確保するには
Jupyter Notebook
VCP SDK (Python)

Python拡張
ライブラリ

各クラウド固有設定
VCコントローラ

VCP REST API

VCPからmdx計算資源確保
は、mdx REST APIを用いる。VCP側もこのAPIをキックするPython拡張ライブラリを開発*

Terraform..

mdx RESTAPI

各クラウドへ*: クラウド環境構築システムVCPのmdxへの適用とOSS化に向けた試作@SWoPP2022（OS研究会）

13

VCPからmdx計算資源を確保するには
Jupyter Notebook
VCP SDK (Python)

Python拡張
ライブラリ

各クラウド固有設定
VCコントローラ

VCP REST API
Terraform..

各クラウドへ

mdx RESTAPIVCPからmdx計算資源確保
は、mdx REST APIを用いる。VCP側もこのAPIをキックするPython拡張ラ
イブラリを開発*
アプリケーションテンプ
レート側もPython拡張ラ
イブラリから計算資源を確保するようにコード修正が必要

このpathから計算資源を確保*: クラウド環境構築システムVCPのmdxへの適用とOSS化に向けた試作@SWoPP2022（OS研究会）

14

OpenHPC環境構築テンプレート（mdx）の開発方針
OpenHPC環境を構築するアプリケーションテンプレートは開発済。但し、mdxは未サポート

 HPCテンプレート v2 （https://github.com/nii-gakunin-cloud/ocstemplates/tree/master/OpenHPC-v2）

開発方針

 HPCテンプレート v2のmdx対応

 mdx REST APIから計算資源獲得（mdxサポートのため）
 オートスケーリング機能（クラウド使用料の効率化）
 Slurmの待ちジョブ数に応じて計算資源を増減

 Open OnDemand環境構築テンプレートを新規開発（HPCクラスタ前提知識なしで使えるUIのサポート）15

HPCテンプレート v2のmdx対応
updatemdxをクラウドプロバイダに指定すると、mdx REST
API経由で計算資源の獲得・解放が出来るように修正・追加

new

16

オートスケーリング機能

mdx REST
API

追加・削除

計算ノード

計算ノード

計算ノード

アプリ
ケーション

アプリ
ケーション

アプリ
ケーション

slurmdslurmdslurmdマスタノードSlurmctld
Job queue

NFS

監視Auto scale agent
17オートスケーリング機能
今回の試作で実装したロジックmdx REST
API

( 1計算ノード) Slurm ジョブキューのジョブ実行状況を確認し，実行待ち計算ノード
計算ノード
ジョブが1 個以上あれば1VM 追加する
• mdx
REST API からVM 生成
アプリ
アプリ
アプリ
追加・削除
ケーションケーション• 生成したVMに組み込む
ケーション をVC ノードとしてVCP( 2 ) 実行待ちジョブが1 個もない場合，’CLEAN NODE WAIT
slurmdslurmdslurmdTIME’
秒待機する( 3 ) 再度ジョブ実行状況を確認し，実行待ち・実行中ジョブがどちらもない場合に1VM 削除する
• 削除するVM（VC ノード）をVCP から削除
• mdx REST API からVM 削除
マスタノード( 4 ) （１）へ戻る
Slurmctld
Job queue

NFS

監視Auto scale agent
18

計算ノードの追加・削除時間
mdxAWS
Azure
oracleinstance
spot VM
m4.large
Standard B2s
VM.Standard.E2.1

vCPU RAM(GiB) DISK(GB) 計算ノード追加(秒) 計算ノード削除(秒)
3
4.4
40282
322816151
692440264
115
1850207104

mdxの計算ノード追加が遅い理由は、IP address割り当てが遅い既知問題*のためと推定しており、この問題が解決されればAWSより短時間で計算ノードが追加になると期待してる。
*: DHCP でIPv4 アドレスがVM のサービスネットワーク用インターフェースに付与されるのにVM 起動後5 分程度かかる
19

Open OnDemand環境の構築

HPCテンプレート v2を用いて、OpenHPC環境を構築
VCコントローラ

VC
利用者

計算ノード

計算ノード

計算ノード

アプリ
ケーション

アプリ
ケーション

アプリ
ケーション

slurmdslurmdslurmdクライアント環境
HPCテンプ
レート v2slurmctld

NFS

Open HPC環境
マスタノード20

Open OnDemand環境の構築

Open OnDemandテンプレートを用いて、Open OnDemand環境を構築
VCコントローラ

VC
利用者

計算ノード

計算ノード

計算ノード

アプリ
ケーション

アプリ
ケーション

アプリ
ケーション

slurmdslurmdslurmdクライアント環境
Open
OnDemandテンプレートNFS

slurmctld

Open HPC環境

Open
OnDemandマスタノードユーザ

21

準備（Open OnDemandからLinpack実行）
Open OnDemandをインストールしたマスタノード上で以下を実行
 HPL (High-Performance Linpack) のソースコードを展開
 xhplコマンドのビルド Open OnDemandフロントエンドの設定（HPL.dat生成）
 ノード数 MPI プロセス数
 HPL.dat のN 値(問題のサイズ)
 HPL.dat のNB 値(ブロックサイズ)
 HPL.dat のP 値
 HPL.dat のQ 値

22

UI操作例（Open OnDemandからLinpack実行）Open OnDemandダッシュボードを起動し、Linpackを選択

23

UI操作例（Open OnDemandからLinpack実行）ジョブパラメータを適切に選択し、Launchボタンをクリック
24

UI操作例（Open OnDemandからLinpack実行）’Completed’となったら、ここをクリック

ここにジョブの状態が表示される。’Completed’となったら実行完了

25

UI操作例（Open OnDemandからLinpack実行）

実行結果はここに入っている26

実行結果例（Open OnDemandからLinpack実行）
Script starting...
Generating connection YAML file...
TIMING - Starting main script at: Tue May 30 05:43:04 UTC 2023
TIMING - Starting HPL at: Tue May 30 05:43:04 UTC 2023================================================================================
HPLinpack 2.3 -- High-Performance Linpack benchmark -- December 2, 2018
Written by A. Petitet and R. Clint Whaley, Innovative Computing Laboratory, UTK
Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK
Modified by Julien Langou, University of Colorado Denver================================================================================（中略）================================================================================T/V
N NB
PQTimeGflops-------------------------------------------------------------------------------WR00C2R2
41088 384
1 1262.44
7.4069e+02
HPL_pdgesv() start time Tue May 30 05:43:08 2023
HPL_pdgesv() end time

Tue May 30 05:44:10 2023-------------------------------------------------------------------------------||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 1.24926993e-03 ...... PASSED================================================================================
Finished

正常終了

1 tests with the following results:
1 tests completed and passed residual checks,
0 tests completed and failed residual checks,
0 tests skipped because of illegal input values.
--------------------------------------------------------------------------------End of Tests.
================================================================================
Cleaning up...

27

関連研究
Ansible オーケストレーションやソフトウェアデプロイメントが可能

Kubernetes(K8s) デプロイやスケーリングを自動化したり，コンテナ化されたアプリケーション管理が可能
 VCPは、クラウドやオンプレ上での新規の計算資源配備まで含めて操作が可能であり、且つJupyter Notebookで記述されたテンプレートから操作する仕様とすることで操作の再現性と可読性を両立させたことがAnsibleやK8sと異なる。

Chameleon Cloud（米国アカデミッククラウド） Jupyter Notebook で計算環境の構築手順を共有しているが、Chameleon Cloud の利用を前提としている点が異なる。
28

まとめ
VCP (Virtual Cloud Provider) VPNで接続された１つ以上のクラウドとオンプレミスシステム（仮想クラウド）でアプリ環境構築を支援

今回、VCP + mdxによるOpenHPC環境構築機能とHPCクラスタ前提知識なしで使えるOpen OnDemand環境構築機能を開発
 HPCテンプレート v2のmdx対応
 オートスケーリング機能
 Open OnDemandテンプレート

Open OnDemandからLinpackが実行出来ることを確認テンプレートはGithubから公開中
 https://github.com/nii-gakunin-cloud/ocs-templates
29

学認クラウドオンデマンド構築サービス（OCS）
OCSとは VCPを用いてユーザアプリケーションの構築・運用を提供
 サポートプロバイダ
 商用プロバイダ&オンブレ：
 学術プロバイダ：

AWS, Azure, さくら, Oracle, VMware vSphere

北大、mdx

サービスの提供形態
 サービス版
 NIIクラスタ内でVCコントローラを運用

 ポータブル版
 利用機関様側環境でVCコントローラを運用
 ソースコードやインストールスクリプトを提供するGitHubを準備中
30

学認クラウドオンデマンド構築サービス（OCS）
サービス版
長所：
NII側でVCP運用・保守
仮想ルータが利用可能
短所：
NIIへのVCP構築申請が必要

NII
VCコント
ローラ

利用機関

ポータブル版
長所：
VCP構築申請が不要となり、すぐに利用可
短所：
利用機関側でVCP構築・運用・保守

NII

VCコント
ローラ
利用機関
31

OCSハンズオン実習
開催日時： 2023年8月30日 9:30-12:30
開催場所： 北海道大学（北大クラウドウィーク2023内で実施）and online
実習内容（暫定） VCPを用いたmdx上でのOpen OnDemand環境の構築・運用
 HPCテンプレート v2を用いたOpenHPC環境構築
 Open OnDemand環境構築
 構築したOpen OnDemand環境からLinpack実行 質疑応答申込方法：

 8/18より申込開始予定。申込方法は以下に掲載予定
 https://cloud.gakunin.jp/32

Thank You.

33

34