Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20170726 py data.tokyo

8,577 views

Published on

20170726 py data.tokyo

Published in: Engineering
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2u6xbL5 ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/2u6xbL5 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

20170726 py data.tokyo

  1. 1. エヌビディア合同会社 ディープラーニング ソリューションアーキテクト兼CUDAエンジニア 村上真奈 PyData.Tokyo Meetup #14 NVIDIA GPUとディープラーニング
  2. 2. 2 自己紹介 村上真奈(むらかみまな) / mmurakami@nvidia.com • CUDAエンジニア+ディープラーニングSA • ディープラーニング・CUDA技術サポートとか、いろいろ 埼玉県さいたま市 早稲田大学教育学部理学科数学⇒システム計画研究所⇒サムスン日本研究所⇒エヌビディア 画像処理(主に静止画)、ソフトの最適化とか、 プリクラとか放送機器とかテレビとか 2010年頃に初めてCUDAにふれる(CUDA1.XXとかの時代) NVIDIAGPUComputing NVIDIAJapan @NVIDIAJapan
  3. 3. 3 AGENDA エヌビディアのGPUについて ディープラーニングに最適なGPUは? ディープラーニング開発の為のエヌビディアDLプラットフォーム
  4. 4. 4 エヌビディアのGPUについて
  5. 5. 6 エヌビディア AI コンピューティングカンパニー > 1993 年創業 > 創業者及び CEO ジェンスン ファン > 従業員 11,000 人 > 2017 会計年度売上高 69億ドル (約 7700 億円) > 時価総額 808億ドル (約 9兆円) “World’s Best Performing CEOs” — Harvard Business Review “World’s Most Admired Companies” — Fortune “America’s Greenest Companies” — Newsweek “50 Smartest Companies” — MIT Tech Review “Top 50 Best Places to Work” — Glassdoor
  6. 6. 7 NVIDIA GPU の歴史 CUDA
  7. 7. 8 2012 20142008 2010 2016 2018 48 36 12 0 24 60 72 Tesla Fermi Kepler Maxwell Pascal 混合精度演算 倍精度演算 3D メモリ NVLink GPU ロードマップ SGEMM/W Volta 混合精度演算 TensorCore 3D メモリ NVLink2
  8. 8. 9 Tesla K20x (CC 3.5) 2688 CUDA Cores FP64: 1.31 TF FP32: 3.95 TF FP16: … INT8: … GDDR5 384 bit width 6GB 250 GB/s
  9. 9. 10 Tesla P100 SXM2 (CC 6.0) 3584 CUDA Cores FP64: 5.3 TF FP32: 10.6 TF FP16: 21.2 TF INT8: … HBM2 4096 bit width 16 GB 732 GB/s
  10. 10. 11 Tesla V100 (CC 7.0) 5120 CUDA Cores 640 Tensor Cores FP64: 7.5 TF FP32: 15 TF DL:120 TOPS HBM2 4096 bit width 16GB 900 GB/s
  11. 11. 12 Compute Capability (CC) Kepler CC 3.5 192 cores / SMX Maxwell CC 5.0 128 cores / SMM Pascal CC 6.0 64 cores / SMM https://developer.nvidia.com/cuda-gpus Volta CC 7.0 64 cores / SMM
  12. 12. 13 GPUアーキテクチャ概要 例:Tesla P100 SXM2 (CC 6.0) SM CUDAコア . . .
  13. 13. 14 GPUアーキテクチャ概要 PCI I/F ホスト接続インタフェース Giga Thread Engine SMに処理を割り振るスケジューラ DRAM (384-bit, GDDR5) 全SM、PCI I/Fからアクセス可能な メモリ (デバイスメモリ, フレームバッ ファ) L2 cache (1.5MB) 全SMからアクセス可能なR/Wキャッ シュ SM (Streaming Multiprocessor) 「並列」プロセッサ Pascal GP100
  14. 14. 15 SM (streaming multiprocessor) ▪ CUDA core ▪ GPUスレッドはこの上で動作 ▪ Pascal: 64個 ▪ Other units ▪ DP, LD/ST, SFU ▪ Register File (65,536 x 32bit) ▪ Shared Memory/L1 Cache (64KB) ▪ Read-Only Cache(48KB)
  15. 15. 16 ディープラーニングに最適なGPUは?
  16. 16. 17 ディープラーニングのアプローチ 推論(インファレンス): 犬 猫 蜜穴熊 エラー 犬 猫 アライグマ 犬 学習(トレーニング): モデル モデル
  17. 17. 様々な構成のネットワーク 18 Alexnet(8層) VGG(19層) GoogleNet(22層) ILSVRC’12 ILSVRC’14 ILSVRC’14 ILSVRC’15 ResNet(152層) deeper
  18. 18. 19 Image Recognition (Microsoft) 認識精度向上のため モデルはよりディープに、データはより大きく 強力な計算パワーが必要に 2012 AlexNet 8 Layers 1.4 GFLOP ~16% Error 152 Layers 22.6 GFLOP ~3.5% Error 2015 ResNet 16X Model 2014 Deep Speech 1 80 GFLOP 7,000 hrs of Data ~8% Error 465 GFLOP 12,000 hrs of Data ~5% Error 2015 Deep Speech 2 10X Training Ops Speech Recognition (Baidu)
  19. 19. 様々な問題への応用 20 Semantic segmentaion GAN Medical image analysis using 3D convolution
  20. 20. GPUがディープラーニングに向いている理由 1. 汎用アクセラレータである。しかも計算が高速 ▪ 様々なアプリケーションを走らせる事が可能。しかも高速に計算する事が出来る。 2. 開発時間は短い。最適化が簡単。 ▪ CUDA C/C++というC/C++の拡張言語で記述可能。学習コストも低く、簡単にアプリケーション開 発が出来る。 ▪ 開発ツールが充実しており、プロファイラやデバッガを使えば、バグ修正や最適化が容易 3. ハードウェアがディープラーニングに向けに進化 ▪ NVLINKという高速なデータ転送インターコネクトをサポート(マルチGPUでの学習がより高速に) ▪ GPU搭載メモリ量の増加(より複雑なネットワークを大きなバッチサイズで計算可能に) ▪ その他いろいろ 21
  21. 21. 22 K80 M40 M4 P100 (SXM2) P100 (PCIE) P40 P4 GPU 2x GK210 GM200 GM206 GP100 GP100 GP102 GP104 CUDA core 4992(2496*2) 3072 1024 3584 3584 3840 2560 PEAK FP64 (TFLOPs) 2.9 NA NA 5.3 4.7 NA NA PEAK FP32 (TFLOPs) 8.7 7 2.2 10.6 9.3 12 5.5 PEAK FP16 (TFLOPs) NA NA NA 21.2 18.7 NA NA PEAK TIOPs NA NA NA NA NA 47 22 Memory Size 2x 12GB GDDR5 24 GB GDDR5 4 GB GDDR5 16 GB HBM2 16/12 GB HBM2 24 GB GDDR5 8 GB GDDR5 Memory BW 480 GB/s 288 GB/s 80 GB/s 732 GB/s 732/549 GB/s 346 GB/s 192 GB/s Interconnect PCIe Gen3 PCIe Gen3 PCIe Gen3 NVLINK + PCIe Gen3 PCIe Gen3 PCIe Gen3 PCIe Gen3 ECC Internal + GDDR5 GDDR5 GDDR5 Internal + HBM2 Internal + HBM2 GDDR5 GDDR5 Form Factor PCIE Dual Slot PCIE Dual Slot PCIE LP SXM2 PCIE Dual Slot PCIE Dual Slot PCIE LP Power 300 W 250 W 50-75 W 300 W 250 W 250 W 50-75 W Tesla製品一覧 たくさんあるが、どれを使えばよいのか?
  22. 22. 23 Tesla (Pascal以前)
  23. 23. 24 Tesla (Pascal世代)
  24. 24. 25 学習におすすめのGPUと推論におすすめのGPUがある!
  25. 25. 26 K80 M40 M4 P100 (SXM2) P100 (PCIE) P40 P4 GPU 2x GK210 GM200 GM206 GP100 GP100 GP102 GP104 CUDA core 4992(2496*2) 3072 1024 3584 3584 3840 2560 PEAK FP64 (TFLOPs) 2.9 NA NA 5.3 4.7 NA NA PEAK FP32 (TFLOPs) 8.7 7 2.2 10.6 9.3 12 5.5 PEAK FP16 (TFLOPs) NA NA NA 21.2 18.7 NA NA PEAK TIOPs NA NA NA NA NA 47 22 Memory Size 2x 12GB GDDR5 24 GB GDDR5 4 GB GDDR5 16 GB HBM2 16/12 GB HBM2 24 GB GDDR5 8 GB GDDR5 Memory BW 480 GB/s 288 GB/s 80 GB/s 732 GB/s 732/549 GB/s 346 GB/s 192 GB/s Interconnect PCIe Gen3 PCIe Gen3 PCIe Gen3 NVLINK + PCIe Gen3 PCIe Gen3 PCIe Gen3 PCIe Gen3 ECC Internal + GDDR5 GDDR5 GDDR5 Internal + HBM2 Internal + HBM2 GDDR5 GDDR5 Form Factor PCIE Dual Slot PCIE Dual Slot PCIE LP SXM2 PCIE Dual Slot PCIE Dual Slot PCIE LP Power 300 W 250 W 50-75 W 300 W 250 W 250 W 50-75 W Tesla製品一覧 推論 推論学習 学習
  26. 26. 27 K80 M40 M4 P100 (SXM2) P100 (PCIE) P40 P4 GPU 2x GK210 GM200 GM206 GP100 GP100 GP102 GP104 CUDA core 4992(2496*2) 3072 1024 3584 3584 3840 2560 PEAK FP64 (TFLOPs) 2.9 NA NA 5.3 4.7 NA NA PEAK FP32 (TFLOPs) 8.7 7 2.2 10.6 9.3 12 5.5 PEAK FP16 (TFLOPs) NA NA NA 21.2 18.7 NA NA PEAK TIOPs NA NA NA NA NA 47 22 Memory Size 2x 12GB GDDR5 24 GB GDDR5 4 GB GDDR5 16 GB HBM2 16/12 GB HBM2 24 GB GDDR5 8 GB GDDR5 Memory BW 480 GB/s 288 GB/s 80 GB/s 732 GB/s 732/549 GB/s 346 GB/s 192 GB/s Interconnect PCIe Gen3 PCIe Gen3 PCIe Gen3 NVLINK + PCIe Gen3 PCIe Gen3 PCIe Gen3 PCIe Gen3 ECC Internal + GDDR5 GDDR5 GDDR5 Internal + HBM2 Internal + HBM2 GDDR5 GDDR5 Form Factor PCIE Dual Slot PCIE Dual Slot PCIE LP SXM2 PCIE Dual Slot PCIE Dual Slot PCIE LP Power 300 W 250 W 50-75 W 300 W 250 W 250 W 50-75 W Tesla製品一覧
  27. 27. 28 2つのPASCAL
  28. 28. 29
  29. 29. 30
  30. 30. 31
  31. 31. 32
  32. 32. 33
  33. 33. 34
  34. 34. 35
  35. 35. 37 ディープラーニングSDK / DIGITS
  36. 36. 38 ディープラーニング・フレームワーク Mocha.jl ディープラーニング・フレームワーク GPUで高速化されているディープラーニング・フレームワークが多数存在 https://developer.nvidia.com/deep-learning-frameworks
  37. 37. 39 ディープラーニングフレームワーク コンピュータビジョン ボイス&オーディオ 自然言語処理 物体検出 音声認識 言語翻訳 推薦エンジン 感情分析 Mocha.jl 画像分類 ディープラーニング SDK ディープラーニングを加速するディープラーニングライブラリ ディープラーニング cuDNN CUDA 数学ライブラリ cuBLAS cuSPARSE マルチGPU間通信 NCCLcuFFT ビデオ解析 インファレンス
  38. 38. 44 NVIDIA ディープラーニング SDK GPUで高速化されたディープラーニングのアプリケーションを設計、 開発する為の強力な開発ツールおよびライブラリ NVIDIA GPUの為の高速なディープラーニング環境を保障 最新のディープラーニングアルゴリズムおよび、新ディープニュー ラルネットワーク開発の為の線形代数サブルーチンを提供 マルチGPUおよび8GPU以上のマルチノード環境でも高速に 学習する事が可能 ディープラーニングの為の高性能GPUアクセラレータ “ We are amazed by the steady stream of improvements made to the NVIDIA Deep Learning SDK and the speedups that they deliver.” — Frédéric Bastien, Team Lead (Theano) MILAdeveloper.nvidia.com/deep-learning-software
  39. 39. 45 cuDNN
  40. 40. 46 NVIDIA cuDNN GPU上でディープニューラルネットワークの計算を 高速に行う為のプリミティブ群 ディープニューラルネットワークの学習の高いパ フォーマンスを発揮 Caffe、 CNTK、 Tensorflow、 Theano、 Torch、Chainerなどディープラーニングフレー ムワークを高速化 バージョンアップ毎にパフォーマンスが向上 “NVIDIAはcuDNNのリリースの度により多くの操作 ができるような機能拡張をおこなっており、同時 に計算速度も向上させている” —UC バークレー、 Caffe リードデベロッパー、 Evan Shelhamer developer.nvidia.com/cudnn 0 2,000 4,000 6,000 8,000 10,000 12,000 8x K80 8x Maxwell DGX-1 DGX-1V
  41. 41. 47 developer.nvidia.com/cudnn cuDNN 7: CNNの計算が2.5倍 RNNの計算が3倍高速に 0 100 200 300 400 500 600 700 K80 + cuDNN 6 P100 + cuDNN 6 V100 + cuDNN 7 Images/Second Caffe2 performance (images/sec), Tesla K80 + cuDNN 6 (FP32), Tesla P100 + cuDNN 6 (FP32), Tesla V100 + cuDNN 7 (FP16). ResNet50, Batch size: 64 0x 1x 2x 3x 4x 5x 6x K80 + cuDNN 6 P100 + cuDNN 6 V100 + cuDNN 7 Speed-upvs.K80 MXNet performance (min/epoch), Tesla K80 + cuDNN 6 (FP32), Tesla P100 + cuDNN 6 (FP32), Tesla V100 + cuDNN 7 (FP16). OpenNMT 662M seq2seq RNN (http://opennmt.net/Models/) 2.5x Faster Training of CNNs 3x Faster Training of LSTM RNNs
  42. 42. 48 NCCL
  43. 43. 49 NCCL(NVIDIA Collective Collection Library) マルチGPUおよびマルチノードの為の集合通信ライブラリ all-gather, reduce, broadcast など標準的な集合通 信の処理をバンド幅が出るように最適化 シングルプロセスおよびマルチプロセスで使用する事が可能 NCCL1:マルチGPU対応(オープンソースプロジェクト) • https://github.com/NVIDIA/nccl NCCL2:マルチノード対応(coming soon) https://developer.nvidia.com/nccl ディープラーニング SDK マルチノード: インフィニバンド IP Sockets マルチGPU: NVLink PCIe GPUトポロジの 自動検出
  44. 44. 50 NCCL(NVIDIA Collective Collection Library) NCCLの集合通信処理
  45. 45. 51 NCCL1: ChainerMNを高速化 developer.nvidia.com/nccl Images/Second 1xV100 8xV100
  46. 46. 52 NCCL2: マルチGPU および マルチノードでスケール developer.nvidia.com/nccl 216.925 843.475 1684.79 3281.07 6569.6 0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 0 8 16 24 32 NCCL 2 Images/Second Near-Linear Multi-Node Scaling Microsoft Cognitive Toolkit multi-node scaling performance (images/sec), NVIDIA DGX-1 + cuDNN 6 (FP32), ResNet50, Batch size: 64 Images/Second 7x Faster Training on DGX vs. single GPU Caffe2 multi-GPU performance (images/sec) DGX-1 + cuDNN 6 (FP32), DGX-1V + cuDNN 7 (FP16). ResNet50, Batch size: 64 0 500 1,000 1,500 2,000 2,500 3,000 3,500 4,000 4,500 DGX-1 DGX-1V 1xP100 1xV100 8xP100 8xV100
  47. 47. 53 DIGITS
  48. 48. 54 DIGITS WebベースのディープラーニングGPUトレーニングシステム ディープラーニング SDK ユーザー インターフェース レイヤーの 可視化 学習モデルの 作成 データセット の作成 学習過程の 可視化 DIGITS(UI/Server) ディープラーニングの学習・テストを 簡単に行う為のUI 別マシンからDIGITSを操作する為の サーバ機能 Chainer GPUGPU HW クラウドGPUクラスタマルチGPU Theano Torch Caffe cuDNN, cuBLAS CUDA 学習 NVCaffe cuDNN, cuBLAS CUDA NVCaffe BVLC/caffe(本家)からフォーク 最新のCUDAライブラリを使用 エヌビディアGPUに最適化
  49. 49. 55 エヌビディアDIGITS GPUで高速化されたディープラーニングトレーニング・システム Test Image 学習過程の可視化モデルの作成学習データの作成 モデルのテスト http://developer.nvidia.com/digits
  50. 50. 56 NVIDIA DIGITS ユーザー インターフェース レイヤーの 可視化 学習モデルの 作成 データセット の作成 学習過程の 可視化 Theano クラウド TensorFlow Torch Caffe cuDNN, cuBLAS CUDA 学習 NVCaffe cuDNN, cuBLAS CUDA エヌビディアDIGITS http://developer.nvidia.com/digits 学習 モデルの ダウンロード Got permission denied while trying to connect to the Docker daemon socket
  51. 51. 57
  52. 52. 58 DIGITS 5 • イメージセグメンテーション(領域分割)に対応 • FCN(全畳込みニューラルネットワーク)を用いたセグメンテーショ ンワークフローに対応 • ディープラーニング・モデルストア機能を追加 • 様々な種類の学習済みモデルをDIGITSのモデルストア • からダウンロードし転移学習可能に • DIGITSジョブのグループ機能 • ジョブをグループ化、結果を整理してより見やすく。 領域分割タスクに対応した新しいDIGITS
  53. 53. 59 DIGITSでディープラーニングを始めましょう • DIGITSで何が出来るのか? • 画像分類問題 • 物体位置検出問題(DIGITS4 or later) • 領域分割問題 (DIGITS5 or later) • その他色々なサンプルも付いてきます →https://github.com/NVIDIA/DIGITS/tree/master/examples オートエンコーダー/テキスト分類/リグレッション/etc… エヌビディアDIGITSの機能について
  54. 54. 62 モデルストア機能 • イメージセグメンテーションのような複雑なタスクでは、学習済みモデルを使った転移学習が必須に なってくる。 DIGITS5 • DIGITSモデルストアでは、LeNet,Alexnet のような有名なモデルからセグメンテーション 用のAlexnet-FCNまで学習済みモデルを 提供 • モデルストアからダウンロードする事で簡単 に転移学習を行う事が出来る。
  55. 55. 63 DIGITS 6 • TensorFlowに対応 • TensorFlowによるモデルのトレーニング機能 • TensorBoardによる可視化機能 • GANのサポート • GAN(Generative Adversarial Networks)モデルのトレーニング機能 • GAN 学習済みモデルをモデルストアで公開 TensorFlowに対応
  56. 56. 64 DIGITS インストール方法 developer.nvidia.com/digitsgithub.com/NVIDIA/DIGITS hub.docker.com/r/nvidia/digits
  57. 57. 65 NVIDIAがメンテナンスするAMI(Amazon Machine Image) エヌビディアDIGITSやCUDA環境を1クリックでAWSに構築可能 • エヌビディアが提供するAMI • NVIDIA DIGITS AMI • https://aws.amazon.com/marketplace/pp/B01LZN28VD • NVIDIA CUDA Toolkit7.5 AMI • https://aws.amazon.com/marketplace/pp/B01LZMLK1K • Windows AMI with the NVIDIA driver • https://aws.amazon.com/marketplace/pp/B01M0LNZZO https://developer.nvidia.com/gpu-cloud-images
  58. 58. 66 nvidia-docker
  59. 59. 67 nvidia-docker GPU(CUDA)を使ったアプリケーションの環境を簡単に構築出来る。GPUの為のDockerツール。 https://github.com/NVIDIA/nvidia-docker TensorFlowのマルチGPU学習にお勧め
  60. 60. 68 NVIDIAが公開中のDockerイメージ github.com/NVIDIA/nvidia-docker hub.docker.com/u/nvidia
  61. 61. 69 nvidia-docker+コンテナでアプリケーションを起動 GPU2 GPU3 GPU4 GPU6 GPU7 NVIDIA CUDA Driver Dockerエンジン GPU5GPU0 GPU1 ホストPC GPU0 GPU1 CUDA Libraries Dockerコンテナ1 CUDA 7.5 Runtime アプリケーション1 GPU0 GPU1 GPU2 CUDA Libraries Dockerコンテナ2 CUDA 8.0 Runtime アプリケーション2 GPU0 GPU1 GPU2 CUDA Libraries Dockerコンテナ3 CUDA 7.0 Runtime アプリケーション3
  62. 62. 70 明示的にどのGPUを使うか指定して起動 sudo NV_GPU=‘1,2’ nvidia-docker run –rm gcr.io/tensorflow/tensorflow:1.0.1 nvidia-dockerでコンテナの起動 GPU 1と2を使用 (GPU0は使用しない) dockerコンテナ名
  63. 63. 71 REST APIでGPUリソースの状態を取得 • nvidia-dockerのサブ機能。起動すると指定したポート(デフォルト3476ポート)でLISTEN開始 • ノード内のGPUの情報(json形式)、Mesos連携する為のコマンドなど様々な情報がREST APIで取得できる nvidia-docker-plugin
  64. 64. 72 REST APIでGPUリソースの状態を取得 nvidia-docker-plugin GPUリソースの情報を取得 GPUリソースの状態を取得
  65. 65. THANK YOU!

×