ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博...
Transcript of ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博...
![Page 1: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/1.jpg)
山崎和博
第100回お試しアカウント付き並列プログラミング講習会「REEDBUSH スパコンを用いたGPUディープラーニング入門」
ディープラーニング基礎
NVIDIA, ディープラーニング ソリューションアーキテクト
![Page 2: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/2.jpg)
AGENDA
ディープラーニングとは
ディープラーニングの基本と処理の流れ
ディープラーニングを支えるソフトウェア
本日使用するフレームワーク: Chainer&ChainerMN
![Page 3: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/3.jpg)
ディープラーニングとは
![Page 4: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/4.jpg)
ディープラーニングは機械学習の一分野
4
人工知能(AI)
ディープラーニング(深層学習)
マシンラーニング(機械学習)
![Page 5: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/5.jpg)
ディープラーニングとは多数の層から構成されるニューラルネットワークがベース
5
入力層 出力層
隠れ層
十分なトレーニングデータを与え学習させることで複雑な問題を解くことができるようになる
![Page 6: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/6.jpg)
ディープラーニングを加速する3つの要因
6
“ Google’s AI engine also reflects how the world of computer hardware is changing. (It) depends on machines equipped with GPUs… And it depends on these chips more than the larger tech universe realizes.”
DNN GPUBIG DATA
![Page 7: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/7.jpg)
どのようにGPUはディープラーニングを加速させるか
7
Application Code
+
GPU CPU5% of Code
Compute-Intensive Functions
Rest of SequentialCPU Code
行列計算が処理時間の大半を占める
![Page 8: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/8.jpg)
ディープラーニングの基本と処理の流れ
![Page 9: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/9.jpg)
人工ニューラルネットワーク基本単位
9
w1 w2 w3
x1 x2 x3
y
y=w1x1+w2x2+w3x3
人工ニューロン(パーセプトロン)
人工ニューラルネットワーク
人工ニューロンをたくさんの層として組み合わせる
各層にそれぞれ重みパラメータを持つ
![Page 10: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/10.jpg)
人工ニューラルネットワーク活性化関数
10
w1
w2
w3
x1
x2
x3
y=w1x1+w2x2+w3x3
人工ニューロン(パーセプトロン)
y F
z=F(y)F: activation function
活性化関数(activation function)
z 次の層
tanh
ReLU
sigmoid
![Page 11: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/11.jpg)
人工ニューラルネットワーク基本構造のまとめ
11
活性化関数 各ノードは入力された値を合計して出力
各ユニット(ノードとも)の出力は、各層の重みと積算され次の層へ
![Page 12: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/12.jpg)
人工ニューラルネットワーク基本構造のまとめ
12
活性化関数 各ノードは入力された値を合計して出力
各ユニット(ノードとも)の出力は、各層の重みと積算され次の層へ
![Page 13: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/13.jpg)
ディープラーニングの2つのフェーズ
13
モデル
犬
推論(inference):
蜜穴熊
学習(training):
モデル
犬
狸
猫
フィードバックにより重みを調整
学習した結果を用いる
犬
猫
![Page 14: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/14.jpg)
ディープラーニングの学習フロー
14
トレーニングデータ
出力
“dog”“cat”
“human”“tiger”
正解ラベル
“cat”“dog”
“monkey”“lion”
1.入力されたデータにしたがい結果を出力
誤差
2.期待結果との違いを誤差として計算
4.誤差が小さくなるまで繰り返す
3.誤差を用いてネットワークを更新
![Page 15: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/15.jpg)
ディープラーニングの学習フロー
15
トレーニングデータ1.入力されたデータにしたがい結果を出力
4.誤差が小さくなるまで繰り返す
3.誤差を用いてネットワークを更新
出力
“dog”“cat”
“human”“tiger”
正解ラベル
“cat”“dog”
“monkey”“lion”誤差
2.期待結果との違いを誤差として計算
![Page 16: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/16.jpg)
出力
“tiger”
出力
“tiger” 80%
“lion” 20%
誤差の計算
16
“tiger”
“lion”
誤差
期待結果との差などを誤差として計算
出力
80%
20%
正解ラベル
0%
100%
トレーニングデータ
![Page 17: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/17.jpg)
出力
“tiger”
出力
“tiger” 80%
“lion” 20%
誤差の計算
17
トレーニングデータ
誤差の例: 交差エントロピー(cross entropy)
: 入力がtigerかを示す正解(0 or 1)
: 入力がtigerと予測した確率 : 入力がlionと予測した確率
: 入力がlionかを示す正解(0 or 1)
![Page 18: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/18.jpg)
ディープラーニングの学習フロー
18
トレーニングデータ1.入力されたデータにしたがい結果を出力
4.誤差が小さくなるまで繰り返す
2.期待結果との違いを誤差として計算
出力
“dog”“cat”
“human”“tiger”
正解ラベル
“cat”“dog”
“monkey”“lion”誤差
3.誤差を用いてネットワークを更新
![Page 19: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/19.jpg)
重み更新勾配降下法による更新
19重み w
誤差 E
最適解 現在値
誤差を最小化する重みが最適解
ニューラルネットワークの内部状態(=重み)に応じて誤差は変動
![Page 20: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/20.jpg)
重み更新勾配降下法による更新
20重み w
誤差 E
最適解
傾きが正(=右上がり)なら値を減少させる
傾きが負(=右下がり)なら値を増加させる
wn wm
![Page 21: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/21.jpg)
重み更新勾配降下法による更新
21重み w
誤差 E
最適解
傾きが正(=右上がり)なら値を減少させる
傾きが負(=右下がり)なら値を増加させる
wn wm
勾配ベクトルにより重みを逐次更新
![Page 22: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/22.jpg)
ディープラーニングの学習フロー
22
トレーニングデータ1.入力されたデータにしたがい結果を出力
4.誤差が小さくなるまで繰り返す
2.期待結果との違いを誤差として計算
出力
“dog”“cat”
“human”“tiger”
正解ラベル
“cat”“dog”
“monkey”“lion”誤差
3.誤差を用いてネットワークを更新
![Page 23: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/23.jpg)
誤差逆伝播法
23
を更新したい
が必要
直接計算することが容易ではない
![Page 24: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/24.jpg)
誤差逆伝播法
24
を直接考えるのではなく、
を考える
![Page 25: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/25.jpg)
は としてのみ出現するので
とできる
誤差逆伝播法
25
![Page 26: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/26.jpg)
誤差逆伝播法
26
を更新したい
は次の層の複数要素に影響
![Page 27: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/27.jpg)
誤差逆伝播法
27
となる。
いろいろ計算すると、
繰り返し処理により計算可能
処理対象層の情報なので計算可能
![Page 28: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/28.jpg)
誤差逆伝播法
28
を更新したい
![Page 29: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/29.jpg)
誤差逆伝播法処理のイメージ
29
誤差
誤差を逆方向に伝えて、各層の重み行列を更新する
トレーニングデータ
![Page 30: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/30.jpg)
ディープラーニングの学習フロー
30
トレーニングデータ1.入力されたデータにしたがい結果を出力
2.期待結果との違いを誤差として計算
出力
“dog”“cat”
“human”“tiger”
正解ラベル
“cat”“dog”
“monkey”“lion”誤差
3.誤差を用いてネットワークを更新
4.誤差が小さくなるまで繰り返す
![Page 31: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/31.jpg)
学習プロセスの単位: ミニバッチ
31
全トレーニングデータ(バッチ)
ミニバッチ#3
ミニバッチ#2
ミニバッチ#1
ミニバッチ#1
誤差誤差誤差誤差
ミニバッチ単位で誤差を計算し更新
![Page 32: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/32.jpg)
学習プロセスの単位: エポック
32
全トレーニングデータ(バッチ)
ミニバッチ#3
ミニバッチ#2
ミニバッチ#1
ミニバッチ#3
誤差誤差誤差誤差
ミニバッチ#2
誤差誤差誤差誤差
ミニバッチ#1
誤差誤差誤差誤差
全トレーニングデータを使った1サイクルを
エポック(epoch)と呼ぶ
![Page 33: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/33.jpg)
ディープラーニングを支えるソフトウェア
![Page 34: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/34.jpg)
ディープラーニング フレームワークGPUで高速化されたディープラーニング フレームワークが多数存在
34
ディープラーニング フレームワーク
Mocha.jl
https://developer.nvidia.com/deep-learning-frameworks
![Page 35: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/35.jpg)
NVIDIA DEEP LEARNING プラットフォーム
35
COMPUTER VISION SPEECH AND AUDIO BEHAVIOR
Object Detection Voice Recognition TranslationRecommendation
EnginesSentiment Analysis
DEEP LEARNING
cuDNN
MATH LIBRARIES
cuBLAS cuSPARSE
MULTI-GPU
NCCL
cuFFT
Mocha.jl
Image Classification
ディープラーニングSDK
フレームワーク
アプリケーション
GPU プラットフォーム
CLOUD GPU
Tesla V100
TeslaP40/P4
Jetson TX2
SERVER
DGX-1
TensorRT
DRIVEPX2
本日使用するフレームワーク
![Page 36: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/36.jpg)
本日使用するフレームワーク:CHAINER&CHAINERMN
36
![Page 37: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/37.jpg)
CHAINER
• Preferred Networks社によって開発
• 最新はv4.1.0 (2018/05/25時点)
• NumPyインターフェース互換のGPU用数値計算ライブラリCuPyで計算を高速化
• 柔軟に記述でき、デバッグしやすく、直感的
• Define-by-Run方式(後述)の先駆者
Pythonベースのディープラーニング フレームワーク
37
https://chainer.org/https://github.com/chainer/chainer
![Page 38: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/38.jpg)
CHAINERソフトウェアスタックのイメージ
38http://www.slideshare.net/unnonouno/chainer-59664785から引用
![Page 39: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/39.jpg)
CHAINER特徴的な実行方式: Define-by-Run
39
# Define-and-Run# 計算グラフを構築後に、計算を実行
x = Variable(‘x’)w = Variable(‘w’)y = x * w
for xi, wi in data:eval(y, (xi, wi))
# Define-by-Run# 計算グラフの構築と実行が同時
for xi, wi in data:x = Variable(xi)w = Variable(wi)y = x * w
データに応じて処理を分岐することが容易
![Page 40: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/40.jpg)
CHAINER特徴的な実行方式: Define-by-Run
40
# Define-by-Run# 計算グラフの構築と実行が同時
for i, (xi, wi) in enumerate(data):x = Variable(xi)w = Variable(wi)if i % 2 == 0:
y = x * welse:
y = x + w
# Define-and-Run# 計算グラフを構築後に、計算を実行
x = Variable(‘x’)w = Variable(‘w’)y = x * w
for xi, wi in data:eval(y, (xi, wi))
![Page 41: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/41.jpg)
CUPY
• CUDAで高速化された数値計算ライブラリ
• 最新はv4.1.0 (2018/05/25時点)
• NumPy互換のI/Fを持つ
• CPUで実装したコードをシームレスにGPU化
• もとはChainerの内部モジュールとして開発
• 現在は単独でも提供されている
• インストールコマンドは pip install cupy など
GPUで動作するNumPy互換の数値計算ライブラリ
41
https://cupy.chainer.org/https://github.com/cupy/cupy
![Page 42: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/42.jpg)
CUPYGPUで動作するNumPy互換の数値計算ライブラリ
42
import cupy
x = cupy.array([1,2,3], cupy.float32) y = x * x s = cupy.sum(y) print(s)
CuPyコード
import numpy
x = numpy.array([1,2,3], numpy.float32) y = x * x s = numpy.sum(y) print(s)
NumPyコード
![Page 43: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/43.jpg)
CHAINERMN
• マルチノードでの分散学習をサポートするための追加パッケージ
• 最新はv1.3.0 (2018/05/25時点)
• CUDA-aware MPIやNCCLなどのライブラリを利用して実装
• 大規模なクラスタでも非常によくスケールする
Chainerをベースとした分散学習用ライブラリ
43
https://github.com/chainer/chainermn
![Page 44: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/44.jpg)
まとめ
• ディープラーニングはニューラルネットワークを基本としている
• 学習では、勾配法や誤差逆伝播法を用いて、パラメータを更新
• さまざまなフレームワークがあり、用途に応じて使い分けることも重要
![Page 45: ディープラーニング基礎 - cc.u-tokyo.ac.jp · 山崎和博 第100回お試しアカウント付き並列プログラミング講習会 「reedbush スパコンを用いたgpuディープラーニング入門」](https://reader031.fdocument.pub/reader031/viewer/2022013002/5d67948788c9931a568bbdb2/html5/thumbnails/45.jpg)
www.nvidia.com/dli