国立大学法人 山形大学様Deep Learning計算演習用
サーバシステム
利用者様向け説明資料
2020年3月25日
富士通株式会社

FUJITSU CONFIDENTIAL

All Rights Reserved, Copyright FUJITSU LIMITED 2020.

目次●目次
1. Deep Learningシステムの概要
1-1. システムの特徴
1-2. ハードウェア構成
1-3. GPUサーバの概要
1-4. Deep Learningシステム利用イメージ
2. Deep Learningシステムの利用方法
2-1. ログイン方法
2-2. JOBの投入
2-3. JOBの確認
2-4. JOBの取消し
2-5. コンテナ利用時の留意点
2-6. Singularityのコンテナのビルドと実行
2-7. Nvidia GPU Cloud
2-8. サンプルコンテナのダウンロードや利用方法
2-9. サンプルコンテナをSingularityで実行する方法
2-10. tensorflow+DIGITS
2-11. nbodyコンテナのJOB起動
FUJITSU CONFIDENTIAL

1All Rights Reserved, Copyright FUJITSU LIMITED 2020.

1. Deep Learningシステムの概要

FUJITSU CONFIDENTIAL

2All Rights Reserved, Copyright FUJITSU LIMITED 2020.

1-1. システムの特徴
 NVIDIA社製の高性能GPU「Tesla T4」を2基搭載したGPU搭載サーバを1台提供
 複数人での利用を考慮したジョブ管理機能を提供
 Tesla T4 スペック
Tensorコア数

CUDAコア数

演算性能(Tensor演算)

演算性能 (半精度)演算性能 (単精度)

320 Tensorコア

2560 CUDAコア

65 TFLOPS

16.2 TFLOPS

8.1 TFLOPS

Caffe

最大メモリ容量

メモリ性能

16GB
(GDDR6)

320GB/sTensorflow

お客様で任意のコンテナを準備可能

各種コンテナSingularity
PBS Professional OSS版
JOB管理機能：PBS Professional OSS版

NVIDIAドライバOS：Redhat7

OS：CentOS7

ジョブ管理サーバ
PRIMERGY RX1330M4
FUJITSU CONFIDENTIAL

GPUサーバPRIMERGY RX2530 M5
3All Rights Reserved, Copyright FUJITSU LIMITED 2020.

1-2. ハードウェア構成
 ハードウェア構成
対象

ハードウェア構成

備考

GPUサーバPRIMERGY RX2530 M5（NVIDIA Tesla T4ｘ2搭載）ｘ１

電源：100V

CPU：Xeon Sliver4110（2.1GHz,8コア）ｘ２
メモリ：96GB（メモリ-16GB ｘ6）
ハードディスク：物理容量１TB（RAID1）ｘ２
ジョブ管理サーバ

PRIMERGY RX1330M4ｘ１

電源：100V

CPU：Xeon E-2226G（3.4GHz,6コア）ｘ１
メモリ：32GB（メモリ-8GB ｘ４）
ハードディスク：物理容量３TB（RAID５＋ホットスペアｘ１）ｘ１

FUJITSU CONFIDENTIAL

4All Rights Reserved, Copyright FUJITSU LIMITED 2020.

1-3. GPUサーバの概要
 動作検証済み環境のためすぐに利用可能
 導入ソフトウェアは動作検証済の組み合わせを利用することができ、お客様が試行錯誤する必要なく、すぐに利用することができます。
 Docker Hubに公開されている実績あるコンテナを導入し、すぐにディープラーニングを始められます GPU搭載サーバは、Ubuntu Server certified hardwareに認定されています。

nvidia/digits
tensorflow/tensorflow
コンテナ
コンテナ

インターネット

digitsCaffe
CUDA

Jupyter notebook
Tensorflow-gpu
CUDA

NVIDIA Container-Toolkit

GPUを活用するためのフレームワークは、お客様の好みに応じてコンテナをご導入ください

NVIDIA Driver
CentOS7
導入ソフトウェア
FUJITSU CONFIDENTIAL

5All Rights Reserved, Copyright FUJITSU LIMITED 2020.

1-4. Deep Learningシステム利用イメージ
学内NW
利用者
WS利用者
WSジョブ管理サーバ
PRIMERGY RX1330M4 x1

利用者端末からSSHで接続

利用想定イメージ2
・JOBの投入（qsub スクリプト）

ストレージ
3TB

個人のデータを格納する
ファイルサーバとしても利用利用想定イメージ1
・ログインして操作（ qsub –I or ssh）

注：qsubはJOB投入コマンド

GPUサーバPRIMERGY RX2530 M5

ストレージ
1TB

ユーザ認証

ActiveDirectory

UPS(貴学所有)

 利用想定イメージ1① 教育用コンテナを作成し、GPU搭載サーバに配置します。
② ジョブ管理サーバから JOBスケジューラのInteractiveモードでGPUサーバにログインします。
③ ログイン後にGPUを確保していることを確認します。
④ 該当のコンテナをsingularityで実行します。
 利用想定イメージ2① ジョブスクリプトでJOB投入する場合は、JOB管理サーバから、qsubコマンドで投入します。
② qstatコマンドでJOBの完了を確認します。
③ JOBの結果を確認します。
FUJITSU CONFIDENTIAL

6All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2. Deep Learningシステムの利用方法

FUJITSU CONFIDENTIAL

7All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-1. ログイン方法
Deep LearningシステムへログインするID・パスワードは、情報基盤センター様のPC、メール環境等にログインする時と同じものとなります。
また、接続にはTeraTerm等のSSHクライアントが必要となります。
 作業端末でTeraTermを起動し、ジョブ管理サーバに接続します

接続先： yzaijs.yz.yamagata-u.ac.jp

次ページ以降のJOBの投入やコンテナの起動を行う場合、ジョブ管理サーバのホームディレクトリへデータ等を転送しておく必要があります。
その際はWinSCP等のツールを使用して転送を行ってください。

FUJITSU CONFIDENTIAL

8All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-2. JOBの投入
ジョブ管理サーバへ接続後、qsubコマンドを実行しJOBの投入を行います。
利用想定イメージ1,2どちらの方法を使用するかでqsubコマンド実行時に指定するオプションが変わります。
1．利用想定イメージ1(GPUサーバへログインして操作を行う場合)$ qsub -l select=1:ncpus=2:ngpus=1 –I
コマンド実行時に「-I(大文字のi)」オプションを指定するとGPUサーバへのログインが行われます。
ログイン後は通常のLinuxサーバと同じように操作し処理を行います。
「exit」コマンドを実行することでJOBは終了されます。

2．利用想定イメージ2(ジョブスクリプトを使用しジョブを自動化する場合)$ qsub JobScript.sh
使用するジョブスクリプトを指定してqsubコマンドを実行します。
ジョブスクリプトには要求するリソースの量やJOBの投入後に実行したいコマンドを記載します。

FUJITSU CONFIDENTIAL

9All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-3. JOBの確認
JOBの状態はqstatコマンドで確認します。
$ qstat
Job idNameUserTime Use S Queue---------------- ---------------- ---------------- -------- - ----100.yzaijs
Jobfujitsu
00:00:00 R default_q
JOB投入時に出力される番号(JOB ID) から自分が投入したJOBを特定出来ます。
上記は「fujitsu」ユーザが投入したID 「100」番のJOBの出力例です。
右から2つ目の項目はジョブの状態を示します。「Q」は実行待ち状態で、「R」は実行中です。
実行中のJOBだけではなく実行待ちのJOBも出力されるため、システム全体の利用状況を確認出来ます。
処理が完了したJOBは出力結果に表示されなくなくなるため、qstatコマンドの実行結果でJOBが出力されない場合はシステムが空いていると判断できます。

FUJITSU CONFIDENTIAL

10All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-4. JOBの取消し
ジョブスケジューラで投入したJOBの状態はqdelコマンドで取消しが行えます。
JOBを2つ投入してしまった、何らかの問題でJOBの中止を行いたい場合等、JOBの正常終了を待たずにJOBを終了させたい場合に使用します。
$ qdel 100
上記はJOB ID100番のJOBの取消しを行う場合の実行例です。

FUJITSU CONFIDENTIAL

11All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-5. コンテナ利用時の留意点
Dockerの利用にはroot資格が必要です。
Docker実行後の残dockerプロセスの再利用、回収は利用者の責任です。
Dockerの利用のついてはNvidiaの各種ドキュメント、Web上の情報を参照してください。
本システムのDockerは nvidia-container-toolkit です。
Singularityの利用は一般ユーザ資格で可能ですが、コンテナのビルド時はroot資格が必要な場合があります。
Singularityの詳細については、Sylab社のドキュメントを参照してください。
Singularityの版数は最新の3.5.3をセットアップしています。
Singularityの実行コマンドはPATHが通っていない状況です。
コマンドを以下のフルパスで記載するか、PATH環境変数を設定して実行を行います。
/usr/local/singularity/bin/singularity

また、Singularityの利用時には環境変数等の設定が必要なため、以下のコマンドを実行して設定を行います。
このコマンドは「.bashrc」ファイル等に記載し、ログイン時に自動実行することも可能です。
$ source /usr/local/singularity/etc /bash_completion.d/singularity
FUJITSU CONFIDENTIAL

12All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-6. Singularityのコンテナのビルドと実行

Docker Hub
docker://コンテナの作成$ singularity build <container name> <source># singularity build –sandbox <container name> <source>

Singularity SCS
library://

コンテナの実行
Local Repository
localhost://$ singularity exec <container name> command$ singularity shell <container name># singularity exec –writable <container> command

Definition File

FUJITSU CONFIDENTIAL

13

All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-6. Singularityのコンテナのビルドと実行
Command

説明使い方

build

buildを使用して、既存のコンテナをダウンロードしたり、フォーマットのコンテナを変換したり、レシピからコンテナを作成することができます。

singularity build centos7.sif library://centos
singularity build centos8.simg
docker://centos
singularity build lolcow.simg
library://sylabs-jms/testing/lolcow

exec

コンテナイメージ内の任意のコマンドの実行ができます。Docker execとは異なり、コンテナを使用する前にコンテナを実行する必要がありません

singularity exec centos7.sif cat /etc/osreleasesingularity exec centos8.simg cat /etc/osreleaseshell

コンテナ内のシェルを実行します。

singularity shell centos7.sif
singularity shell centos8.simg

run

コンテナがファイル名で直接実行または実行されたときに実行されるカスタムアクションを定義できます。

pullDocker HubやSingularity Hub からコンテナーのイメージを取得します

FUJITSU CONFIDENTIAL

14

singularity run lolcow.sif./lolcow.sif
singularity pull centos7.sif library://centos
singularity pull centos8.simg
docker://centos

All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-7. Nvidia GPU Cloud https://ngc.nvidia.com

FUJITSU CONFIDENTIAL

15All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-8.サンプルコンテナのダウンロードや利用方法
Docker pull
DockerDockerHubInternet

各種Hub

Singularity pull
Singularity

Docker Hubからコンテナをダウンロードする例（注意：DockreHubのコンテンツは変更が多いため、実行前にパスの確認が必要となります。）# docker pull nvcr.io/nvidia/digits:latest# docker pull nvcr.io/tensorflow/tensorflow:2.0.0-gpu-py3-jupyter$ singularity build digits-latest.simg docker://nvcr.io/nvidia/digits:latest$ singularity build tensorflow-gpu-py3-jupyter.simg docker://nvcr.io/tensorflow/tensorflow:2.0.0-gpu-py3-jupyter

FUJITSU CONFIDENTIAL

16

All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-9. サンプルコンテナをSingularityで実行する方法
GPUサーバへのログイン後、以下の操作を行うことでSingularityを実行できます。
注）以下は「fujitsu」ユーザを使用する場合の例です。読み替えて実施してください。

1．Tensorflow+Jupyterコンテナ$ export SINGULARITY_NOHTTPS=true$ singularity run --nv tensorflow-gpu-py3-jupyter.simg
画面に出力されるhttpアクセスを実施します。
2．Caffe+DIGITSコンテナ$ cd /home/fujitsu/work/sing (コンテナのあるDirectoryに移動）$ mkdir digits-jobs$ echo > digits.log$ chmod 777 digits-jobs$ chmod 666 digits.log$ export DIGITS_LOGFILE_FILENAME=/home/fujitsu/work/sing/digits/digits.log$ export DIGITS_JOBS_DIR=/home/fujitsu/work/sing/sing/digits-jobs$ singularity run --nv digits-latest.simg
URL:http://GPU搭載サーバIPアドレス:5000/FUJITSU CONFIDENTIAL

17でアクセスします。

All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-10. tensorflow+DIGITSGPUサーバへのログイン後、以下の操作を行うことでSingularityを実行できます。
注）以下は「fujitsu」ユーザを使用する場合の例です。読み替えて実施してください。
$ cd /home/fujitsu/work/sing (コンテナのあるDirectoryに移動）$ singularity pull digits-tensorflow.simg docker://nvcr.io/nvidia/digits:20.02-tensorflow-py3$ cd /home/fujitsu/work/sing (コンテナのあるDirectoryに移動）$ mkdir digits-jobs$ echo > digits.log$ chmod 777 digits-jobs$ chmod 666 digits.log$ export DIGITS_LOGFILE_FILENAME=/home/fujitsu/work/sing/digits/digits.log$ export DIGITS_JOBS_DIR=/home/fujitsu/work/sing/sing/digits-jobs$ singularity run --nv digits-tensorflow.simg

URL:http://GPU搭載サーバIPアドレス:5000/

FUJITSU CONFIDENTIAL

18でアクセスします。

All Rights Reserved, Copyright FUJITSU LIMITED 2020.

2-11. nbodyコンテナのJOB起動
以下の内容でスクリプトを作成します。

注）以下は「fujitsu」ユーザを使用する場合の例です。読み替えて実施してください。
#!/bin/sh#PBS -N nbody-job#PBS -l walltime=01:00:00#PBS -l select=1:ncpus=1:ngpus=1#PBS -j oe#PBS -m abe#PBS -M test@example.com/usr/bin/nvidia-smi
singularity run --nv /home/fujitsu/sing/cuda_sample.sif nbody -benchmark -numdevices=1 -numbodies=10000000

作成したスクリプトを指定しJOBを投入します。
JOB投入が行われるとsingularityがcuda_sample.sifを使用して起動し、nbodyが実行されます。
$ qsub JobScript.sh

FUJITSU CONFIDENTIAL

19All Rights Reserved, Copyright FUJITSU LIMITED 2020.

FUJITSU CONFIDENTIAL