Successfully reported this slideshow.
Your SlideShare is downloading. ×

Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 46 Ad

Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)

Download to read offline

PFN金子紘也による東大大学院「融合情報学特別講義Ⅲ」(2022年10月19日)の講義資料です。
・PFNにとっての計算能力の位置付け
・代表的なDeep Learningの高速化手法
・なぜ今プロセッサ開発なのか?
・MN-Coreの概要
・開発チームの働き方
・最近の成果

PFN金子紘也による東大大学院「融合情報学特別講義Ⅲ」(2022年10月19日)の講義資料です。
・PFNにとっての計算能力の位置付け
・代表的なDeep Learningの高速化手法
・なぜ今プロセッサ開発なのか?
・MN-Coreの概要
・開発チームの働き方
・最近の成果

Advertisement
Advertisement

More Related Content

More from Preferred Networks (20)

Recently uploaded (20)

Advertisement

Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)

  1. 1. Deep Learningのための 専用プロセッサ「MN-Core」 の開発と活用 Hiroya Kaneko 2022/10/19 融合情報学特別講義Ⅲ
  2. 2. ここからは Deep Learningのための 計算機インフラについて 話します
  3. 3. 自己紹介 - 金子 紘也 (Hiroya Kaneko) ● 2017/4- 株式会社Preferred Networks, Engineering Manager — Deep Learningの高速化のための計算機基盤 — MN-Coreの開発/検証, MN-Core向けソフトウェアスタックの開発/実活用 ● バックグラウンド ● HPC向けインタコネクトの研究@筑波大学(2011-2013) ● 通信キャリア向けネットワーク仮想化(SDN/NFV) @電機メーカ研究所(2013-2017) ● ハードウェア屋さんではない
  4. 4. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  5. 5. 豊富な計算資源と高度な技術を基盤に複数の事業を創出 PFNを支える技術と事業内容 Computer Vision(コンピュータビジョン) Data Analytics(データ解析) Navigation(ナビゲーション) Visual Inspection(外観検査) Pose(ポーズ推定) Scene(シーン解析) Image Segmentation Anomaly Detection(異常検知) Optimization(最適化) Time series data(時系列データ) Infrastructure (インフラ技術) Machine Learning and Deep Learning(機械学習と深層学習) Manufacturing Transportation Bio & Healthcare Personal Robot Visual Inspection Entertainment PFN Technology Business Object Detection(物体検出)
  6. 6. ディープラーニング(深層学習)とは ● 層が深く、幅も広いニューラルネットワーク を利用した機械学習手法の一手法 ● 画像認識、音声認識、強化学習、自然言語処理 などで劇的な精度向上を果たし、その多くが既に実用化されている 2014年の一般画像認識コンテストで優勝した 22層からなるのGoogLeNetの例 [Google 2014] The graph was excerptedfrom https://leonardoaraujosantos.gitbooks.io/artificial- inteligence/content/object_localization_and_detection.html
  7. 7. 深層学習の要求計算量の増大 最先端の研究においてモデルサイズは増加 する傾向 ● 画像→動画/立体、画像の高精細化 ● 言語処理モデルの大規模化 ● Foundation Model NAS (Neural Architecture Search) ● アーキテクチャ探索の自動化 ● 人ではなく、計算能力がボトルネック → 計算力の強化 = 競争力の強化 -> PFNが計算能力に対して投資する理由 The graph was excerptedfrom Shaden Smith et al. (2022) Using DeepSpeed and Megatron to Train Megatron-TuringNLG 530B, A Large-Scale Generative Language Model
  8. 8. ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study 目次
  9. 9. Deep Learning の高速化 ● Scale-out (分散深層学習) – たくさんのプロセッサをつなげて高速化 ● Keywords: データ並列、モデル並列 , 計算と通信 のオーバラップ ● Scale-up (専用アクセラレータ) – はやいプロセッサを使って高速化 ● Keywords: Inference/Training専用アクセラレー タ
  10. 10. 同期型データ並列による学習の高速化 ● 同期型データ並列によって、2年弱で100倍以上高速化した — 元々の論文では8枚のGPUで数週間要していたものは、2.2minに高速化 — バッチサイズを増やせる問題については、GPU台数に対してほぼリニアに性能向上が達 成できる程度にノウハウがたまっている ● 常に適用できる万能な手法ではない — バッチサイズを増やしても精度や学習の安定性に問題が出ないモデルのにのみ適用可能 Company Processor Date Training time PFN TITAN X *128 17/1 4h Facebook P100 *256 17/6 1h PFN P100 *1024 17/11 15min SONY V100 *2176 18/11 3.7min Google TPUv3 *1024 18/11 2.2min
  11. 11. Deep Learning の高速化 ● Scale-out (分散深層学習) – たくさんのプロセッサをつなげて高速化 ● Keywords: データ並列、モデル並列 , 計算と通信 のオーバラップ ● Scale-up (専用アクセラレータ) – はやいプロセッサを使って高速化 ● Keywords: Inference/Training専用アクセラレー タ
  12. 12. The image was excerptedfrom https://github.com/basicmi/AI-Chip
  13. 13. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  14. 14. なぜ今DL専用アクセラレータ開発なのか? ● 「大きな計算能力が必要」という需要の観点以外にも、ハードウェア開発を 加速させる背景がある — Deep Learningの応用範囲が拡大していること — 分散学習では高速化が難しいワークロードが一部存在すること — Deep Learningにおいて必要とされる演算精度がこれまでの科学技術計算と異なること — 演算手順が計算グラフによって宣言的に定義されること
  15. 15. 演算精度について(Training) ● Trainingでは混合精度 (fp16乗算+fp32加算)の活用が進む — NVIDIA Volta: Tensor Core (4x4の混合積和演算, fp16 matmul, fp32 accumulate) — Google TPU: BFLOAT16 (brain float) ◆ fp16よりもdynamic rangeが広い ◆ 勾配のunderflow対策 ● 最新のH100(Hopper)ではfp8 formatも登場 ● Deep learningに最適な数値表現とはなにか?という問題には答えは出ていない — fp16でもCNN, RNN, GANなどのTrainingがある程度可能であるという報告(arxiv:1905.12322) — fp8についても研究がいくつか出てきつつある(arxiv:2001.05674) — 使う観点ではcuDNNなどが対応を始めているが、正しく利用するためにはノウハウが必要 The figure was excerpted from https://cloud.google.com/tpu/docs/bfloat16
  16. 16. 演算精度について(Inference) ● Inferenceでは、よりAggressiveな最適化が可能 — Int8, Int4, binary ● 学習済みモデルをターゲットアーキテクチャに対して最適化する — モデルの量子化 (Quantization) ◆ モデルのN-bit整数化 — モデルの剪定 (Pruning) ◆ 構築済みモデルのSparse化 (主にSpMV Acceleratorとの組み合わせ) — 小さいモデルへの蒸留 (distillation) ◆ 小さなモデルに教師モデルの分布を学習させる ● Emerging deviceを利用したものも様々提案がある(が、現時点ではまだ MNISTなどのToy Problemが解ける程度という印象)
  17. 17. なぜ今DL専用アクセラレータ開発なのか? ● 「大きな計算能力が必要」という需要の観点以外にも、ハードウェア開発を 加速させる背景がある — Deep Learningの応用範囲が拡大していること — 分散学習では高速化が難しいワークロードが一部存在すること — Deep Learningにおいて必要とされる演算精度がこれまでの科学技術計算と異なること — 演算手順が計算グラフによって宣言的に定義されること
  18. 18. 計算グラフと中間表現 ● Deep learning のモデルは計算 グラフとして表 現できる ● 手続き的な表現 でなく宣言的な 表現 (グラフ IR)が手に入る ! — 中間表現の標準 化も進む (ONNX) 手続き的な表現 宣言的な表現
  19. 19. 計算グラフが手に入るうれしさ - アーキテクチャ観点から 手続き的な計算 ● メモリへのアクセスパターンが不明 であるため、HWによる高度なキャ ッシュ機構が必要 ● 演算順序が実行時に決定されるため 、分岐予測/投機実行が必要 ● 並列性をプログラマが陽に制御する ため、コンパイラによる並列性の抽 出/活用が困難 計算グラフにより定義される計算 ● メモリのアクセスパターンがプログ ラム全域で実行前に明確であるため 、キャッシュ機構無し(scratch pad only)で最適なメモリ配置戦略をオ フラインで決定可能 ● 演算順序が実行前に確定することが 多いため分岐予測の重要性低 ● 依存関係が明確なため並列性の抽出 が容易 -> 高度なオフラインスケジューラ(コンパイラ)を前提としたシンプ ルかつ並列度の高いプロセッサアーキテクチャを現実的に利用可能
  20. 20. 深層学習コンパイラ ● グラフIRを入力に、ターゲット依存の最適化を行うコンパイラ The figure was excerptedfrom Tianqi Chen et al. TVM: An AutomatedEnd-to-End Optimizing Compiler for Deep Learning https://arxiv.org/abs/1802.04799 ● オペレータ単位でプロセッサ専用 の高効率カーネルを定義可能 ● 演算のfusionやスケジューリング 、メモリ配置の最適化 ● 演算のスケジューリング/メモリ配 置の最適化 ● 再計算 — 計算量を増加させることで、メモリ使用 量を削減する
  21. 21. なぜ今PFNがDL専用アクセラレータ開発なのか? ● 「大きな計算能力が必要」という需要の観点以外にも、ハードウェア開発を 加速させる背景がある — Deep Learningの応用範囲が拡大していること — 分散学習では高速化が難しいワークロードが一部存在すること -> 実際に社内にワークロードが存在し、幅広いタスクの高速化が図れる — Deep Learning において必要とされる演算精度がこれまでの科学技術計算と異なること -> モデルの改善も含めた専用アクセラレータの活用の研究開発が可能 — 演算手順が計算グラフによって宣言的に定義されること -> シンプルなHW + それを活かす高度なコンパイラという構成によるアーキテクチャレ ベルの性能向上の余地がある ソフトウェアに強い企業だからこそハードウェアを作っている
  22. 22. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  23. 23. MN-Coreの概要 超大規模なSIMD型プロセッサ Single Instruction, Multiple Data (単一命令・複数データ) ● 各階層のメモリは陽にプログラムが制御(scratchpad) ● 各階層間では分配、結合、放送、縮約といった複数の転 送モードをサポート プログラマが陽にすべての演算器の挙動を制御可 能(fully-deterministic architecture) ● 計算グラフの情報などから最適なスケジューリングを時 間空間方向に対して明示的に指示可能 HWとしては以下利点がある ● 1. 制御構造なしの大規模SIMD採用により 回路オーバーヘッド最小化/性能予測の容易 化を実現 ● 2. 演算器ローカルな大サイズSRAMにより 実行効率を向上 消費電力 (W、設計値) 500 (4die, 1package合計) ピーク性能 (TFLOPS、設計値) 32.8 (DP) / 131 (SP) / 524 (HP) 電力性能 (TFLOPS / W、設計値) 0.066 (DP) / 0.26 (SP) / 1.0 (HP)
  24. 24. MN-Coreのプログラミング (超概略版) 計算 ユニット 入力 データ 出力 データ 計算 ユニット 計算 ユニット 計算 ユニット 命令 - 計算ユニットが休むことのないように データを流す - 可能な限りデータの移動を減らすよう な演算スケジュールを組む
  25. 25. ソフトウェア:ONNX-to-MN-Core Compilerのアーキテクチャ 25 layer 1 layer 2 layer 3 PFVM PyTorch Code Graph / Node / Value MN-Core (Assembler) ONNX ONNX+ training Generic Conv Tensor Generic Move Vector Layers Low-level Computational Graph MN-Core Instructions グラフの単純化 大域的スケジューリング 計算グラフから徐々に MN-Core向けコードを生成 スケジューリングおよび メモリ配置の決定 ← ONNX計算グラフ可視化例 (Squeezenetの一部) レイヤの分離による実装の抽象化・最適化の共通化
  26. 26. MN-Coreを搭載したクラスタ(MN-3) ● 1rack辺り 4MN-Core Server ● 1MN-Core Server辺り4MN-Core Board ○ サーバ間はRoCEv2で接続 ● 1MN-Core Board辺り1MN-Core Chip ○ MN-Core Board間はMNCore DirectConnectで相互接続
  27. 27. MN-Coreのためのソフトウェアスタック ● MN-Coreを動作させる ための様々なruntime software ● 計算グラフから最適な MN-Core向けプログラ ムを自動生成するための コンパイラ ● ユーザコードの改変を最 小限に抑えるためのユー ザ向けI/F ● クラスタの一部として動 作させるためのk8sや Middlewareとの統合
  28. 28. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  29. 29. MN-Core開発チーム ● ハードウェア/ソフトウェアエンジニアの垣根なくフレキシブルに働いている — そもそも肩書として区別が会社全体として存在していない ● HDLをソフトウェアエンジニアが読みつつ・・・などはよくある 開発メンバー(一部) ● 神戸大学 牧野淳一郎教授と共同 でアーキテクチャ検討を実施
  30. 30. MN-Coreの開発 ハードウェア開発 ● アーキテクチャ検討 ● 詳細仕様検討 ● 論理設計 ● 物理設計 ● 検証 ソフトウェア開発 ● 機能/精度検証用ソフトウェア実装 ● 記述性確認用アプリケーションの作成 ● ランタイム/コンパイラの先行開発 システムとしての実装 ● ボード/サーバの設計 ● 工事スケジュール ● システムの初期検証 ● 様々な仕事があるが、ハードウェア/ソフトウェアエンジニアで明確な区切りが あるわけではない — 時期によってそれぞれ自身の得意分野を活かしながら業務が移り変わっている ◆ ex. 既存のプロセッサ上で高速なカーネルを書くのが得意な人は、チップができるまでは自 分が使うチップの仕様検討をしていたりする (一例): 私が実作業していたところ ● コンパイラの開発 ● GREEN500 Benchmark開発 ● モデル検討/社内での実利用 ● 社内k8sとの統合 ● Monitoring プロセッサ tapeoutまで プロセッサES入手後 ● 問題解析 ● 次期チップの検討
  31. 31. MN-Coreチームの開発スタイル ● HW/SWも一つのリポジトリで開発を行っ ている(monorepo) ● 社内の開発リポジトリのActivity: 8700PRs(+1700PR), 44KCommits(+9Kcommit)ぐ らい(昨年比) ● CIを大切にする文化がある — PRの影響範囲ごとに自動的にRTL Simが流れたり 、実機を用いたコンパイラのtest-runが走る — Weeklyで検証の状況やコンパイラの性能などに 関する自動CIが回る — かなり大規模なコードベースで、大人数で作業を しているためかなり大事 ● 各ドメインのチームと密に連携し具体的な アプリケーションの高速化を実施
  32. 32. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  33. 33. ● TOP500は、世界中にあるスパコンのプログラム実行時の最高性能による順位リストである ○ 連立一次方程式をLU分解を用いて解くWorkload ● TOP500.orgに申告されたシステム性能をNo.1からNo.500までリストにしたもの ● 1993年に始まり、以後毎年6月と11月に更新される ● Green500は、TOP500に申告されたシステム性能をNo.1からNo.500までリストにしたもの の性能を、消費電力で除算して、電力あたり性能を求めリストにしたもの TOP500とGreen500
  34. 34. PFN Confidential Improvements MN-Core Environment with Green500 Challenge 34 Our Journey of Green500 Challenge ● 2022/Juneから2021/Novまで世界最高クラスの電力 性能を達成 ● 定期的なチャレンジ実施によって、MN-Coreの最適 化に関する知見を多く貯めることができた 2020/June 2020/Nov. 2021/June 2021/Nov 2022/June Rank 1 2 1 1 5 Energy Eff. 21.11GF/W 26.04GF/W 29.70GF/W 39.38GF/W 40.90GF/W Exec. Eff.(*) 41.33% 52.68% 58.08% 64.35% 65.09% MI250X (AMD)
  35. 35. 実際の性能改善においては、リアルタイムの測定/通知システムが非常に大きな役割を果た した(ソフトウェアの改善具合の効果を即時/自動的に確認できる仕組み)
  36. 36. 36 • システム全体(アクセラレータ/ホスト/インタコネクト)が安定かつ高性能に、一定の期間動 き続ける必要があり、システム自体のBringupとして非常に有効だった • HPLは基本的な計算カーネルが行列積、かつ低レイテンシな通信が性能を出すために必須で ある。これは分散深層学習のWorkloadが要求する条件でもあり、今回得られた最適化のため の知見が実際にDeep Learning向けコンパイラのコード生成にも応用できた – 通常はコンパイラ開発をしているメンバが期間前の3week程度の稼働のみでChallenge している状況 • システム全体を正確(level3)に計測する試みを通じてクラスタの系全体の挙動や、MN-Coreへ のへの理解が深まった • やり切ればきちんと世界一が獲れるシステムが作れるという経験 Top/Green500 Challengeで得られたもの
  37. 37. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  38. 38. ● PFNには様々なDeep Learning Workloadが存在している ● 何か特定のWorkloadだけが早いのではなく、モデルの変更やデータセットの変 更に対して堅牢かつ平均的に高速に動作する事をターゲットにコンパイラを開発 ○ ベンチマーク的な性能だけでなく、実応用における試行錯誤に利用できることが重要 ● すでに社内ではk8s経由でMN-Coreを全社員が利用できる状況にある ○ MN-Coreチームのサポートなしに実際にR&DにMN-Coreを使える状況までソフトウェアスタックや インフラの整備が進みつつある ○ 実案件への応用も実際に進んでいる MN-Coreを用いたDeep Learning Workload
  39. 39. MN-Coreの高速性 ● CNNベースのVision系ワーク ロード(det/semseg)において 約6倍程度の高速化 ● 社内の複数の実ワークロード においてもGPUに対してE2E での高速化を実現 MN-Coreを用いたDeep Learning Workload MN-Coreの汎用性 ● MobileNetV2ベースのNASにお いて平均的に4倍程度の高速化 ● Inference時にbackpropを含む Graph Convlutional Network(GCN)において3倍程度 の高速化 see: https://tech.preferred.jp/ja/blog/mncore-compiler-1/ 以下の測定結果は2021/06時点のもの 継続的な高速化 ● 複数のモデルに対して継続的に性 能をトラッキング ● 継続的に性能向上のためのアルゴ リズム導入を実施
  40. 40. 目次 ● PFNにとっての計算能力の位置付け ● 代表的なDeep Learningの高速化手法 ● なぜ今プロセッサ開発なのか? ● MN-Coreの概要 ● 開発チームの働き方 ● 最近の成果 ○ Green500における成果 ○ DL Workloadにおける成果 ○ Simulation WorkloadにおけるFeasibility Study
  41. 41. ● MN-Coreの優れた特性をDL以外の計算に活用するためにJAXの活用を模索 ○ JAXであれば計算グラフが取得できる && JIT前提のコードが多いため良い特性を持つコードが多い Simulation WorkloadにおけるFeasibility Study ● JAX=「高性能な自動微分付きNumpy」 ○ Differentiable: Autograd ○ High-performance: XLA ○ GPUだけでなくTPUなどのbackend実装 ● 様々なシミュレーション実装 ○ JAX-CFD: “Computational Fluid Dynamics in JAX” ○ JAX-MD: “Differentiable, Hardware Accelerated, Molecular Dynamics” ● DL Framework on JAX ○ Haiku: “JAX-based neural network library” ○ Flax: “A neural network library and ecosystem for JAX designed for flexibility” JIT compilation for high performance
  42. 42. ● MN-Coreの優れた特性をDL以外の計算に活用するためにJAXの活用を模索 ○ JAXであれば計算グラフが取得できる && JIT前提のコードが多いため良い特性を持つコードが多い Simulation WorkloadにおけるFeasibility Study ● JAX=「高性能な自動微分付きNumpy」 ○ Differentiable: Autograd ○ High-performance: XLA ○ GPUだけでなくTPUなどのbackend実装 ● 様々なシミュレーション実装 ○ JAX-CFD: “Computational Fluid Dynamics in JAX” ○ JAX-MD: “Differentiable, Hardware Accelerated, Molecular Dynamics” ● DL Framework on JAX ○ Haiku: “JAX-based neural network library” ○ Flax: “A neural network library and ecosystem for JAX designed for flexibility” JIT compilation for high performance 😊 Use mnjit() to utilize MN-Core
  43. 43. ● JAX to MN-Coreの実装 ○ JAXをGPU同様にTensorflow HLOにlowering ○ HLO to ONNX(for MN-Core)をPFN独自で実装 し、DL向けコンパイラスタックと同様のバッ クエンドで命令生成 Simulation WorkloadにおけるFeasibility Study Harmonic Minimization (512 particles in total) 2D Channel Flow
  44. 44. ● バタフライ演算を活用した高速フーリエ変換(FFT)をMN-Core向けのMN- Core上に実装し、cuFFTに対して高い性能を実現 Simulation WorkloadにおけるFeasibility Study 2D拡散方程式の時間発展の様子 n=FFT長さ, b=MAB辺りbatchsize
  45. 45. 45 • 計算機インフラはDeep Learningをコアとする研究開発の競争力の源泉の一つ – Deep Learningが多量の計算能力を必要とするだけでなく、Deep Learningというワークロード自 体の特性を生かした新しいアーキテクチャが様々開発されている • PFNでは計算機インフラの研究開発に多くの投資を行っている – 複数のコンピュータを並べてScale-out – 高速なアクセラレータ(MN-Core)を開発し単一ノードの性能をScale-up • PFN独自設計のDeep Learning向けアクセラレータ「MN-Core」が電力性能比の世界ランキ ングで複数回一位を獲得し、Deep Learning向け/汎用ワークロード向けの利活用も実際に進 んでいる 計算機を1から作るのは楽しい さいごに
  46. 46. Q&A

×