学生用 GPU 計算サーバの導入とパフォーマンス測定
総合情報基盤センター 講師 山下和也
総合情報基盤センターでは,学生向けの演習用として
Web
サーバを計算サーバと兼用して開放し ている。深層学習の普及に伴いTensorFlow
等の機械学習フレームワークの演習環境が必要とされて きている。しかし,現在運用している計算サーバや演習用端末では膨大な計算量を必要とする機械学 習の演習に対応できなかった。そこで,新たにGPU
計算サーバを導入したので紹介する。また,パ フォーマンス測定した結果を示す。キーワード:教育用計算機システム,GPU,人工知能,機械学習,深層学習
1. はじめに
2016
年にGoogle DeepMind
が開発した囲碁プ ログラムのAlphaGo
が世界のトップ棋士に勝利 した[1]
。これを一つの契機として人工知能技術が 注目されるようになり,現在は第3
次人工知能ブ ームと呼ばれている。人工知能を実現するための一つの手法に機械学 習がある。機械学習には様々な手法があるが,現 在よく用いられる手法の一つが深層学習である。
深層学習は,学習に膨大な計算量を必要とする。
深層学習の演算は主に行列演算であり,
CPU
より も行列演算を高速に行うことができるGPU
を用 いることが多い。総合情報基盤センターでは,学生向けの演習用 として
Web
サーバを計算サーバと兼用して開放 している[2]
。しかし,GPU
が実装されていない ため,計算量を必要とするTensorFlow[3]
等のよ うな機械学習フレームワークを用いた演習を行う ことが困難であった。そこで,
GPU
計算サーバを導入したので紹介す る。また,パフォーマンス測定した結果を示す。2.
GPU計算サーバの基本仕様
NVIDIA Tesla V100 32GB
を搭載したGPU
計 算サーバを導入した。表1
に基本仕様を示す。利 用資格・方法等については,総合情報基盤センタ ーのWeb
ページ「学生用GPU
計算サーバ(教育 利用)」[4]
に記載されている。表
1 GPU
計算サーバの基本仕様CPU Intel Xeon Gold 5218 1
基 メモリ64 GB 2933 RDIMM
GPU NVIDIA Tesla V100 32 GB 1
基OS Ubuntu 18.04.4 LTS
Driver 440.64.00 / CUDA10.2
機械学習の演習のために必要と思われるソフト ウェアをインストールした。
2020
年4
月現在,イ ンストールされている主なソフトウェアとそのバ ージョンは以下の通りである。包括ライセンス契 約しているMATLAB [5]
と科学計算などのライ ブラリが充実しているPython
を導入している。
MATLAB R2019b
- 包括ライセンスに含まれるツールボッ クス一式
Python 3.6.9
-Chainer 7.0.0
-Keras 2.3.1
-PyTorch 1.3.1
-TensorFlow 1.14.0
-Theano 1.0.4 3. パフォーマンス測定
GPU
計算サーバのパフォーマンスを測定した。測定手法は,
MATLAB
を用いたGPU
パフォー マンスの測定[6], tf_cnn_benchmarks[7], Keras
のサンプルコード(mnist_cnn.py) [8]
を用いた。-28-
3
.1
MATLABを用いたパフォーマンス測定
MATLAB
を用いて,データ転送帯域,メモリ帯域,倍精度
FLOPS
を測定した。まず,関数
gpuArray
を用いてローカルワーク スペースの配列をGPU
へ送信し,関数gather
を 用いてGPU
上の配列をローカルワークスペース へ転送することでデータ転送帯域を測定した。配 列サイズを2
𝑥𝑥(𝑥𝑥 = 14, 15, … , 28)
としたときのデ ータ転送帯域をそれぞれ20
回測定して平均値を 求めた。図
1
に結果を示す。横軸は配列サイズ,縦軸は データ転送帯域,エラーバーは標準誤差を表す。実線は
GPU
へのデータ転送帯域,破線はGPU
か らのデータ転送帯域を表す。測定範囲内のピーク 値は,GPU
へのデータ転送帯域は配列サイズ2
19 のとき平均9.83 GB/s
であり,GPU
からのデー タ転送帯域は配列サイズ2
24のとき平均5.43 GB/s
であった。図
1
データ転送帯域と配列サイズの関係次に,関数
plus
を用いて倍精度浮動小数点演算 のメモリ書き込みと読み込みを行うことでメモリ 帯 域 を 測 定 し た 。 配 列 サ イ ズ を2
𝑥𝑥(𝑥𝑥 =
14, 15, … , 28)
としたときのメモリ帯域をそれぞれ20
回測定して平均値を求めた。図
2
に結果を示す。横軸は配列サイズ,縦軸は メモリ帯域,エラーバーは標準誤差を表す。実線 はGPU
のメモリ帯域,破線はCPU
のメモリ帯 域を表す。測定範囲内のピーク値は,GPU
の場合 は配列サイズ2
28のとき平均792.03 GB/s
であり,CPU
の場合は配列サイズ2
22のとき平均125.79 GB/s
であった。図
2
メモリ帯域と配列サイズの関係最後に,行列の乗算の処理時間から倍精度
FLOPS
を 求 め た 。 行 列 サ イ ズ を2
𝑥𝑥(𝑥𝑥 = 12, 14, … , 26)
としたときの倍精度FLOPS
をそれ ぞれ20
回測定して平均値を求めた。図 3に結果を示す。横軸は行列サイズ,縦軸は
倍精度
FLOPS
,エラーバーは標準誤差を表す。実線は
GPU
の倍精度FLOPS
,破線はCPU
の倍精 度FLOPS
を表す。行列サイズ2
14までは大きな差 はないが,行列サイズが大きくなるにつれてGPU
の方が速く計算できることが分かる。図
3
倍精度FLOPS
と行列サイズの関係3
.2
tf_cnn_benchmarkstf_cnn_benchmarks
はTensorFlow
が公開して いるベンチマークテストである。画像分類問題に 対して畳み込みニューラルネットワークの学習モ デルやバッチサイズ等を指定して実行すると,1
秒あたりに処理された画像枚数を出力する。測定する学習モデルは,
AlexNet, InceptionV3, ResNet50, VGG16
の4
種類を用いた。バッチサ-29-
イズには,
32, 64
の2
種類を用いた。これらの全8
通りの組み合わせに対して,それぞれ10
回ずつ 測定して平均値を求めた。比較対象は,
TITAN RTX
,TITAN V
,GeForce RTX 2080Ti
,GeForce RTX 2080
,GeForce GTX 1080Ti
とした。いずれもNVIDIA
社製のGPU
で ある。比較対象の測定結果は文献[9]
より引用した。いずれも
GPU
を1
基用いた場合の結果であるが,システム構成が異なるため,
GPU
のみの比較では ないことに注意されたい。図
4
はAlexNet
,図5
はInceptionV3
,図6
はResNet50
,図7
はVGG16
をそれぞれ学習モ デルに用いた結果を示す。Tesla V100 32GB
が今 回導入したGPU
計算サーバの測定結果である。縦軸が
1
秒あたりに処理された画像枚数であり,この値が大きいほど高速に処理できることを表し ている。どの学習モデルでも,今回導入した
GPU
計算サーバが高速に処理できることが分かる。図
4 AlexNet
の結果図
5 InceptionV3
の結果図
6 ResNet50
の結果図
7 VGG16
の結果3
.3
Kerasを用いた学習時間の測定
Keras
のサンプルコードを用いて,機械学習の学習に掛かる時間を測定した。
MNIST
データセ ットに対して畳み込みニューラルネットワークを 用いて画像分類するコードを用いた。比較対象は,演習用端末と計算サーバ兼
Web
サ ーバとした。表2
に演習用端末の基本仕様を示す。演習用端末には,
Unix
の演習環境としてHyper- V
上にUbuntu
の仮想マシンを作成している。表3
に仮想マシンの設定を示す。表4
にWeb
サー バの基本仕様を示す。表
2
演習用端末の基本仕様CPU Intel Core i5-8500
メモリ16 GB
GPU Intel UHD Graphics 630 OS Windows 10 Education 1903
-30-
表
3
仮想マシンの設定CPU
仮想プロセッサ2
個 メモリ 動的割り当てOS Ubuntu 18.04.4 LTS
表
4 Web
サーバの基本仕様CPU
仮想プロセッサ4
個(
Intel Xeon Platinum 8168
) メモリ7.5 GB
OS Red Hat Enterprise Linux 7.7
12 epoch
を1
試行として5
回測定し,1 epoch
当たりの平均値を求めた。図
8
に結果を示す。図中のVM
が演習用端末 上のUbuntu
,WEB
がWeb
サーバ,CPU
がGPU
計算サーバでCPU
のみを用いた場合,GPU
がGPU
計算サーバでGPU
を用いた場合の結果 である。横軸は1 epoch
当たりの学習時間の平均 値,エラーバーは標準偏差である。演習用端末は 平均55.6
秒,Web
サーバは平均37.8
秒,GPU
計算サーバでCPU
のみを用いた場合は平均16.4
秒,GPU
を用いた場合は平均4.1
秒であった。図
8 1 epoch
当たりの学習時間4. おわりに
GPU
計算サーバを導入し,パフォーマンスを測定した。
Keras
を用いた学習時間の測定の結果から,演習用端末上で実行する場合に比べて,
GPU
計算サーバで実行すると学習時間を約1/14
に短 縮できることが分かった。また,演習用として開 放しているWeb
サーバに比べても,学習時間を 約1/9
に短縮できることが分かった。仮に10
epoch
学習させると,演習用端末で約9
分,Web
サーバでも約6
分も掛かる。GPU
計算サーバで あれば約40
秒で終わるため,学生演習の進行に 影響がない時間で結果が得られると考えられる。複数人が同時利用した場合のパフォーマンスを 測定できていないが,
GPU
計算機を用いることで プログラム実行時間を短縮でき,演習を円滑に進 行できると考えられる。参考文献
[1] D. Silver et al., “Mastering the game of Go with deep neural networks and tree search”, nature, 529, 484-489 (2016).
[2] 富山大学総合情報基盤センター,“学生用計算サー
バ(教育利用)”,https://www.itc.u-
toyama.ac.jp/service/compute_server.html(参照 2020/03/23).
[3] M. Abadi, “TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems”, https://www.tensorflow.org/ (2015)
[4] 富山大学総合情報基盤センター,“学生用GPU計算
サーバ(教育利用)”,https://www.itc.u-
toyama.ac.jp/service/gpu_server/gpu_server.html
(参照2020/05/08).
[5] 富山大学総合情報基盤センター,“MATLAB 使用可
能なライセンス”,https://www.itc.u- toyama.ac.jp/service/pdf/matlab.pdf(参照 2020/03/24)
[6] MathWorks,“GPUパフォーマンスの測定”, https://jp.mathworks.com/help/parallel- computing/examples/measuring-gpu- performance.html(参照 2020/03/23).
[7] TensorFlow, “TensorFlow benchmarks”, https://github.com/tensorflow/benchmarks(参照 2020/03/23).
[8] Keras, “Keras Documentation Mnist cnn”, https://keras.io/examples/mnist_cnn/(参照 2020/03/23).
[9] HPCテクノロジーズ株式会社,“Tensorflow Benchmarks”,https://www.hpc-
technologies.co.jp/tensorflow-benchmark-2(参照 2020/03/23).
-31-