SlideShare une entreprise Scribd logo
1  sur  16
RISC-VベースカスタムSoC開発ツールChipyardによる
ベイズニューラルネット向け学習アクセラレータ開発
@RISC-V Day Tokyo 2020 Virtual Booths 20/11/5
西田 圭吾
理化学研究所 生命機能科学研究センター 計算分子設計研究チーム リサーチアソシエイト
/ 大阪大学大学院 生命機能研究科 生命動態システム科学講座 博士一貫課程
深層学習の運用上の課題
• 学習データと異なる入力を受けた場合のふるまい
– 犬の識別を学習したNNに猫の入力を与えたら?
– 運用中のカメラのピントがずれたり天候が悪い状況になったら?
• 破滅的忘却(Catastrophic Forgetting)
– 新しいタスクの学習を続けると昔に学習したタスクを忘れる
• 例) 犬の識別を学習した後に猫の識別の学習をすると犬の識別ができなくなってたりする
– ストリームデータを扱う学習のような継続学習(Continual Learning)で重要になる
考え方
[2] Sayna Ebrahimi et. al., “Uncertainty-guided Continual Learning with Bayesian Neural Networks .” ICLR 2020
[1] Yaniv Ovadia et. al., “Can You Trust Your Model's Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift.” NIPS 2019
ベイズニューラルネットが今後これらの課題を解決する候補に挙がる[1][2]
ふんわりと書いているのはまだ基礎研究段階という印象があるため。今後の発展に期待したいですが…
ベイズニューラルネット(ベイズNN)
• 訓練データ𝐷から得た重みパラメータ𝑤の不確実性を表現する事後分布𝑝(𝑤|𝐷)
を学習
– 重みのパラメータ𝑤に対して確率分布のパラメータ𝜃(平均𝜇や分散𝜎とか)を持つ
– 事前分布の選択次第で事後分布の表現する不確実性に変化が生じる
• 𝑤 = 𝜇 + 𝜎 ∗ 𝜀, 𝜀 ~ 𝑁(0, 𝐼) としてガウス事後分布を表現しBackpropagation法で
学習するBayes by Backprop(BbB)法[3]が実装的にシンプル
[3] Charles Blundell et. al., “Weight Uncertainty in Neural Networks.” ICML 2015
ニューラルネット
(NN)
ベイズニューラルネット
(ベイズNN)
重みの分布
(事後分布)
ニューラルネットとベイズニューラルネットの違い[3]
ベイズNN(BbB法)での未知データ入力の簡単なテスト
Copyright © 2017 Ali Gholamihttps://en.wikipedia.org/wiki/MNIST_database
MNISTデータセット notMNISTデータセット
ネットワークの最大出力値(Confidence)の閾値 τ
閾値τ以上のネットワーク出力に
おける正答率(Accuracy)
[4] Balaji Lakshminarayanan et. al., “Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles.” NIPS 2017
独自拡張
ベイズNNによって学習されたモデルは未知のデータセットの入力が
混ざることによる正答率の低下がMLPと比べて抑えられる傾向
閾値によってnotMNISTによる
影響をほぼ除けない範囲
0.9以上の出力に限れば
正答率が40%からおよそ
70%程度に改善する
• MNISTデータセットでモデルを学習
– 4層の全結合NN(MLP)
– 4層のベイズ全結合NN (MLP, BbB法)
• 学習時と同じデータと異なるデータを入力
– 既知のデータセット MNIST 10,000データ
– 未知のデータセット notMNIST 20,000データ
• 正答率-信頼度カーブで評価[4]
– Accuracy vs Confidence curves
– サンプリングサイズ 5 (ベイズモデル平均化(BMA)法)
– ベイズNNの改良にもチャレンジしているものの
今のところ改善は軽微
MLPの
ベイズ化
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1.0
0.8
0.6
0.4
0.2
0.0
BbB
MLP
ベイズNN(BbB法)の学習時間
RISC-VコアのQEMU実行(RV64GCコア)
重みのサンプリング(主に推論時)や確率分布の評価(推論・学習時)に膨大な計算コストがかかる
• RISC-Vのエミュレータを利用したMLPとBbBの学習
における実行サイクル数の比較
– Cフルスクラッチ実装
• 条件
– 入力層: 28x28
– 中間層: 128 x 2層
– 出力層: 10
– バッチサイズ: 8
– 学習則: SGD
– 事前分布(BbBのみ): 混合ガウス(Scale Mixture)[3]
– サンプルサイズ(BbBのみ): 1
MLPのベイズ化によって追加で必要になる処理
専用ハードウェア化のターゲット
replace
Sample+KL
forward
update
backward
bayesgrad
ベイズNN(BbB法)向けの学習アクセラレータに必要な機能
重みのサンプリングの効率化
– 𝑤 = 𝜇 + 𝜎 ∗ 𝜀, 𝜀 ~ 𝑁(0, 𝐼)の計算をベクトルで一気に処理
– 専用の乱数生成器(RNG)と演算器までのデータフローを作りこむ
– ベイズNNの推論をターゲットとしたハードウェア(HW)アクセラレータと本質的には変わらない[5][6]
• 学習時の行列積計算やベクトル計算を想定してHWを設計するかしないかの違い(デジタル計算機の場合)
確率分布の数値計算の高速化
– 事後分布と事前分布のKullback-Leibler計算(分布間の距離計算)でモンテカルロサンプリングによる
期待値計算が必要
– BbB法[3]では事前分布に混合ガウシアンを採用しているため計算コストが高い(推論のみだと不要)
• 特にここのBackpropagationが重い
– テーブルによる近似計算で対応(Chebyshev多項式近似)
[5] R. Cai et. al., “VIBNN: Hardware Acceleration of Bayesian Neural.” ASPLOS 2018
[6] Y. Hirayama et. al., “A Hardware-efficient Weight Sampling Circuit for Bayesian Neural Networks.” IJNC 2020
Chebyshev多項式近似HW
Chipyard
• UC Berkeleyが主導で開発しているシステムオンチップ(SoC)開発ツール[7]
– ハードウェア構成言語Chisel(Scalaのドメイン特化言語)で主に構成されている
– オープンソースソフトウェア(OSS) https://github.com/ucb-bar/chipyard
• ハードウェア
– RISC-Vコア、アクセラレータ、キャッシュ型メモリシステム、各種周辺回路
• ハードウェア環境
– RISC-Vエミュレート環境、ASWのF1インスタンスによるFPGA実行環境
– ASIC向けのツールもあり(使ったこと無いですが)
• ソフトウェア
– クロスコンパイル環境、RISC-Vのテスト環境、
アクセラレータのソフトウェアサンプル
• など
© Copyright 2017-2020, The Regents of the University of California
[7] A. Amid et. al., “Chipyard: Integrated Design, Simulation, and Implementation Framework for Custom SoCs.” MICRO 2020
FireMarshal 環境
FireMarshal Chipyardのソフトウェア実行ツール
• RISC-Vをベースとするワークロード生成ツール
– RISC-Vでのソフトウェアの実行ターゲットを簡単に切り替えられるラッパー
– QEMUやRISC-V ISAシミュレータ(Spike)、RTLシミュレーションとしてAWSのF1インスタンス
による起動(Firesim)の切り替えとLinux、ベアメタル実行サポート
– Verilatorによる実行は今のところ正式にない
• RTLをシミュレーションしたければFireMarshalの利用だとAWS上のFPGAを使うしかない
• FireMarshalのフローを流用してベアメタルで実行させるといった工夫はできる
QEMU, spike simulator Firesim
easy
to switch
コンパイルフローを流用
Verilator
ベイズNNのRISC-V SoC向けソフトウェア開発フロー
1. 非RISC-Vコア上でのベイズNNの実装(C, Pytorch(Python))
QEMU
✓ターゲットアルゴリズムの一般的な実装
Pytorch実装とC実装での実行結果を比較して実装を間違えていないか検証
2. FireMarshal環境によるRISC-Vへの移植
5. FPGA上でアクセラレータを実行
4. アクセラレータへの移植
Verilator
Rocket
with Acc
SoC
アクセラレータの単体テスト作成含む
3. FPGA 環境の確認
Gemmini: RISC-V シストリックアレイ コプロセッサ[8]
[8] H. Genc et. al., “Gemmini: An Agile Systolic Array Generator Enabling Systematic Evaluations of Deep-Learning Architectures.” arXiv 2019
• 深層学習の推論向けに開発されたシストリックアレイ
のアクセラレータ
– Chipyardに組み込まれているアクセラレータの一つ
– 専用のインターフェース(RoCCインターフェース)から制御
• UC Berkeleyで開発されているRISC-Vコア(Rocket, BOOM)
でサポートされているインターフェース
– ASIC化された実績あり
• Chipyardの利用を前提としてメンテナンスされている
– HW構成がシンプルかつソフトウェアサンプルが充実
• テンプレート的に使いやすい
– Rocket SoCのNoCであるTileLinkと結合済み
• アクセラレータ内でのデータ依存性の管理回路やアクセ
ラレータ内外でのDMA実装をゼロから作る必要なし
• 個人的にかなり助かった部分
Gemmini SoC
Gemmini SoC のフロアプラン
Gemminiからの主なベイズNNの学習向け拡張
Module Gemmini [8] BNNs Accelerator [ K.Nishida & M.Taiji ]
実行コントローラ 演算器の構成 シストリックアレイ ベクトルレーン (非RISC-V ISA)
転置回路 あり (現状)なし
乱数生成(RNG) なし あり (専用データフロー含む)
活性化関数の演算場所 実行コントローラ内 ベクター演算器内
活性化関数 Relu, Relu6 基本なんでも(多項式近似)
アキュームレータ スクラッチパッド内 ベクター演算器内 (register)
演算のバーストサイズ 固定 可変
Re-Order Buffer データ依存性の管理 サイズ固定 サイズ可変
(ベクトル-スカラ演算対応)
ChipyardによるベイズNNの学習アクセラレータ開発
RISC-V Core
L2$
DRAM
L1$
Scratchpad
with Accum mem
RF
ALU
Frontend Re-Order
Buffer
Store
cntl
Load
cntl
Execute
cntl
Mesh
Gemmini RISC-V co-processor [8]
Transposer
RISC-V Core
L2$
DRAM
L1$ Scratchpad
RF
ALU
Frontend Re-Order
Buffer
Store
cntl
Load
cntl
Execute
cntl
Vector
Proposed Bayesian Neural Networks
Training Accelerator [ K.Nishida & M.Taiji ]
PEs
Accum Reg
Gauss
Reduction Tree
Elementary
Functions Acc
Systolic
Array
FPU
RNG
Chipyard Framework, Designing and Evaluating RISC-V full-system Hardware [7]
Original
expansion
Major
Changes
開発中…
for(int epoch = 0; epoch < num_epoch; epoch++) {
shuffle_array_rng(rng, index_random, train_dataset.size);
for(int iter = 0; iter < num_iter; iter++) {
for(int j = 0; j < batch_size; j++) {
int idx = index_random[iter * batch_size + j];
for(int k = 0; k < N_IN; k++) {
batch[j][k] = train_dataset.data[idx*N_IN+k];
}
for(int k = 0; k < N_OUT; k++) {
t[j][k] = train_dataset.target[idx*N_OUT+k];
}
}
for(int s = 0; s < num_sample; s++){
sampling_layers(true);
forward_propagation((elem_t *)batch);
backward_propagation((elem_t *)t, (elem_t *)batch);
}
update_all_layers(lr);
init_grad();
validation(epoch, iter, 1, (elem_t *)batch, (elem_t *)t, batch_size,
N_IN, N_OUT, batch_size);
}
validation(epoch, -1, 0, test_dataset.data, test_dataset.target,
test_dataset.size, N_IN, N_OUT, batch_size);
}
カスタムSoCにおけるBbB法の実行割り当て
• 基本的にC言語で書いていけばRISC-V
SoCは動かせる
– アクセラレータでの動作はイントリンシック
(RISC-Vカスタム命令)で記述
• 学習時に行うデータセットのシャッフ
ル以外は基本的にアクセラレータ内
で実行
• elem_t 型
– アクセラレータへ渡すデータの型
• Gemminiで採用されている方法
– RISC-Vコアはint型でデータ幅のみ認識
– アクセラレータ内では実装されている
データ型(float32 or bfloat)で計算される
RISC-Vコア
アクセラレータ
Chipyardを使ってみて良かった点
• とにかく動くサンプルがたくさんある
– とりあえず実装の方法に困ったらいろんなプロジェクトを参考にできる
• プロジェクトの一つをテンプレート的に使ってハードウェアが動く状態のまま
独自拡張しながら開発できる
– Cで実行を確認しながらアクセラレータを徐々に開発できるのは楽
• アルゴリズムの検討からアクセラレータの設計、ソフトウェアの実装まで一人
で全体像を見渡すことが(頑張ればプロトタイプ程度の開発なら)できる
• Chipyardでツール群の依存関係が管理されていて変な苦労が無い
– Chipyardが出るまでは依存関係に苦しんで何度も環境構築で挫折…
– バージョンが上がるときに若干の依存関係の管理が抜けてたりするが、issueに直ぐ上
がっているのでそこまで問題は無さそう(今のところ)
Chipyardを使ってみて不満な点
• 実のところそこまでない
– RISC-Vエコシステムの構築がChipyardがリリースされるまであまりに辛過ぎて、
それと比べると多少の環境構築時のエラーは許容範囲
– 他にChipyardみたいなツールを使ったことが無いので感覚がわからないだけ?
• 不満があるとすればChipyardというより各ツールのバグや使い勝手
– これから改善されてくるはず
RISC-Vコミュニティによる継続的な開発が進むことで
かなり使いやすいフレームワークになる予感
まとめ
• ニューラルネットをベイズ化すると訓練データの特徴から離れたデータを
入力されてもある程度はロバストに動く
– ただし、学習に時間がかかる
• ベイズNN(BbB法)の学習の高速化には大量の乱数の生成と専用のデー
タフローに加えて確率分布計算の高速化が必須で専用ハードウェア化
• ベイズNNの学習を行うハードウェアをゼロから作成するのは大変なので
OSSのRISC-V SoC開発ツールChipyardを採用した
– Gemminiアクセラレータがテンプレート的に使うのに便利な感じ
• Chipyardの枠組みを利用して、ソフトウェア、アルゴリズム、ハードウェアの
検討および実装を進めている

Contenu connexe

Tendances

CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDエピック・ゲームズ・ジャパン Epic Games Japan
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例Fixstars Corporation
 
最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI
最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI
最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCINVIDIA Japan
 
とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)iPride Co., Ltd.
 
An AI accelerator ASIC architecture
An AI accelerator ASIC architectureAn AI accelerator ASIC architecture
An AI accelerator ASIC architectureKhanh Le
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?Kuniyasu Suzaki
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話torisoup
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)Kuniyasu Suzaki
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi
 
Unityで音声認識
Unityで音声認識Unityで音声認識
Unityで音声認識光喜 濱屋
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングSatoshi Kodaira
 

Tendances (20)

vSphere環境での自動化とテスト
vSphere環境での自動化とテストvSphere環境での自動化とテスト
vSphere環境での自動化とテスト
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DDマテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明) #UE4DD
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI
最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI
最新の HPC 技術を生かした AI・ビッグデータインフラの東工大 TSUBAME3.0 及び産総研 ABCI
 
とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)
 
An AI accelerator ASIC architecture
An AI accelerator ASIC architectureAn AI accelerator ASIC architecture
An AI accelerator ASIC architecture
 
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
 
Nutanixってナニ?
Nutanixってナニ?Nutanixってナニ?
Nutanixってナニ?
 
Unityで音声認識
Unityで音声認識Unityで音声認識
Unityで音声認識
 
Accel series 2023 Spring
Accel series 2023 SpringAccel series 2023 Spring
Accel series 2023 Spring
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
 
NVIDIA 入門
NVIDIA 入門NVIDIA 入門
NVIDIA 入門
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 

Similaire à Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths

OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」Nobuyuki Tamaoki
 
Vitisのご紹介とAmazon EC2 F1体験デモ
Vitisのご紹介とAmazon EC2 F1体験デモVitisのご紹介とAmazon EC2 F1体験デモ
Vitisのご紹介とAmazon EC2 F1体験デモJun Ando
 
Summercamp2020 group4
Summercamp2020 group4Summercamp2020 group4
Summercamp2020 group4openrtm
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)OSgeo Japan
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出marsee101
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open sourceYoshiyuki Nakamura
 
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsugJAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsugYasuhiro Matsuo
 
160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大openrtm
 
RISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチRISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチYutaka Yasuda
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド
2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド
2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライドEMC Japan
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」VirtualTech Japan Inc.
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29Takefumi MIYOSHI
 

Similaire à Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths (20)

OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 
Openhard150114
Openhard150114Openhard150114
Openhard150114
 
Vitisのご紹介とAmazon EC2 F1体験デモ
Vitisのご紹介とAmazon EC2 F1体験デモVitisのご紹介とAmazon EC2 F1体験デモ
Vitisのご紹介とAmazon EC2 F1体験デモ
 
Summercamp2020 group4
Summercamp2020 group4Summercamp2020 group4
Summercamp2020 group4
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
 
Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出Pynqでカメラ画像をリアルタイムfastx コーナー検出
Pynqでカメラ画像をリアルタイムfastx コーナー検出
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsugJAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
 
160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大
 
RISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチRISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチ
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
Osc2010 Do LT
Osc2010 Do LTOsc2010 Do LT
Osc2010 Do LT
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
Mt basic as-os_on_danbot
Mt basic as-os_on_danbotMt basic as-os_on_danbot
Mt basic as-os_on_danbot
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド
2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド
2015.6.5 EMC主催OpenStackセミナー - 日本仮想化技術様講演スライド
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29RISC-V introduction for SIG SDR in CQ 2019.07.29
RISC-V introduction for SIG SDR in CQ 2019.07.29
 

Dernier

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Chipyardによるベイズニューラルネットワーク向け学習アクセラレータ開発 @ RISC-V Day Tokyo 2020 Virtual Booths

  • 1. RISC-VベースカスタムSoC開発ツールChipyardによる ベイズニューラルネット向け学習アクセラレータ開発 @RISC-V Day Tokyo 2020 Virtual Booths 20/11/5 西田 圭吾 理化学研究所 生命機能科学研究センター 計算分子設計研究チーム リサーチアソシエイト / 大阪大学大学院 生命機能研究科 生命動態システム科学講座 博士一貫課程
  • 2. 深層学習の運用上の課題 • 学習データと異なる入力を受けた場合のふるまい – 犬の識別を学習したNNに猫の入力を与えたら? – 運用中のカメラのピントがずれたり天候が悪い状況になったら? • 破滅的忘却(Catastrophic Forgetting) – 新しいタスクの学習を続けると昔に学習したタスクを忘れる • 例) 犬の識別を学習した後に猫の識別の学習をすると犬の識別ができなくなってたりする – ストリームデータを扱う学習のような継続学習(Continual Learning)で重要になる 考え方 [2] Sayna Ebrahimi et. al., “Uncertainty-guided Continual Learning with Bayesian Neural Networks .” ICLR 2020 [1] Yaniv Ovadia et. al., “Can You Trust Your Model's Uncertainty? Evaluating Predictive Uncertainty Under Dataset Shift.” NIPS 2019 ベイズニューラルネットが今後これらの課題を解決する候補に挙がる[1][2] ふんわりと書いているのはまだ基礎研究段階という印象があるため。今後の発展に期待したいですが…
  • 3. ベイズニューラルネット(ベイズNN) • 訓練データ𝐷から得た重みパラメータ𝑤の不確実性を表現する事後分布𝑝(𝑤|𝐷) を学習 – 重みのパラメータ𝑤に対して確率分布のパラメータ𝜃(平均𝜇や分散𝜎とか)を持つ – 事前分布の選択次第で事後分布の表現する不確実性に変化が生じる • 𝑤 = 𝜇 + 𝜎 ∗ 𝜀, 𝜀 ~ 𝑁(0, 𝐼) としてガウス事後分布を表現しBackpropagation法で 学習するBayes by Backprop(BbB)法[3]が実装的にシンプル [3] Charles Blundell et. al., “Weight Uncertainty in Neural Networks.” ICML 2015 ニューラルネット (NN) ベイズニューラルネット (ベイズNN) 重みの分布 (事後分布) ニューラルネットとベイズニューラルネットの違い[3]
  • 4. ベイズNN(BbB法)での未知データ入力の簡単なテスト Copyright © 2017 Ali Gholamihttps://en.wikipedia.org/wiki/MNIST_database MNISTデータセット notMNISTデータセット ネットワークの最大出力値(Confidence)の閾値 τ 閾値τ以上のネットワーク出力に おける正答率(Accuracy) [4] Balaji Lakshminarayanan et. al., “Simple and Scalable Predictive Uncertainty Estimation using Deep Ensembles.” NIPS 2017 独自拡張 ベイズNNによって学習されたモデルは未知のデータセットの入力が 混ざることによる正答率の低下がMLPと比べて抑えられる傾向 閾値によってnotMNISTによる 影響をほぼ除けない範囲 0.9以上の出力に限れば 正答率が40%からおよそ 70%程度に改善する • MNISTデータセットでモデルを学習 – 4層の全結合NN(MLP) – 4層のベイズ全結合NN (MLP, BbB法) • 学習時と同じデータと異なるデータを入力 – 既知のデータセット MNIST 10,000データ – 未知のデータセット notMNIST 20,000データ • 正答率-信頼度カーブで評価[4] – Accuracy vs Confidence curves – サンプリングサイズ 5 (ベイズモデル平均化(BMA)法) – ベイズNNの改良にもチャレンジしているものの 今のところ改善は軽微 MLPの ベイズ化 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 0.8 0.6 0.4 0.2 0.0 BbB MLP
  • 5. ベイズNN(BbB法)の学習時間 RISC-VコアのQEMU実行(RV64GCコア) 重みのサンプリング(主に推論時)や確率分布の評価(推論・学習時)に膨大な計算コストがかかる • RISC-Vのエミュレータを利用したMLPとBbBの学習 における実行サイクル数の比較 – Cフルスクラッチ実装 • 条件 – 入力層: 28x28 – 中間層: 128 x 2層 – 出力層: 10 – バッチサイズ: 8 – 学習則: SGD – 事前分布(BbBのみ): 混合ガウス(Scale Mixture)[3] – サンプルサイズ(BbBのみ): 1 MLPのベイズ化によって追加で必要になる処理 専用ハードウェア化のターゲット replace Sample+KL forward update backward bayesgrad
  • 6. ベイズNN(BbB法)向けの学習アクセラレータに必要な機能 重みのサンプリングの効率化 – 𝑤 = 𝜇 + 𝜎 ∗ 𝜀, 𝜀 ~ 𝑁(0, 𝐼)の計算をベクトルで一気に処理 – 専用の乱数生成器(RNG)と演算器までのデータフローを作りこむ – ベイズNNの推論をターゲットとしたハードウェア(HW)アクセラレータと本質的には変わらない[5][6] • 学習時の行列積計算やベクトル計算を想定してHWを設計するかしないかの違い(デジタル計算機の場合) 確率分布の数値計算の高速化 – 事後分布と事前分布のKullback-Leibler計算(分布間の距離計算)でモンテカルロサンプリングによる 期待値計算が必要 – BbB法[3]では事前分布に混合ガウシアンを採用しているため計算コストが高い(推論のみだと不要) • 特にここのBackpropagationが重い – テーブルによる近似計算で対応(Chebyshev多項式近似) [5] R. Cai et. al., “VIBNN: Hardware Acceleration of Bayesian Neural.” ASPLOS 2018 [6] Y. Hirayama et. al., “A Hardware-efficient Weight Sampling Circuit for Bayesian Neural Networks.” IJNC 2020 Chebyshev多項式近似HW
  • 7. Chipyard • UC Berkeleyが主導で開発しているシステムオンチップ(SoC)開発ツール[7] – ハードウェア構成言語Chisel(Scalaのドメイン特化言語)で主に構成されている – オープンソースソフトウェア(OSS) https://github.com/ucb-bar/chipyard • ハードウェア – RISC-Vコア、アクセラレータ、キャッシュ型メモリシステム、各種周辺回路 • ハードウェア環境 – RISC-Vエミュレート環境、ASWのF1インスタンスによるFPGA実行環境 – ASIC向けのツールもあり(使ったこと無いですが) • ソフトウェア – クロスコンパイル環境、RISC-Vのテスト環境、 アクセラレータのソフトウェアサンプル • など © Copyright 2017-2020, The Regents of the University of California [7] A. Amid et. al., “Chipyard: Integrated Design, Simulation, and Implementation Framework for Custom SoCs.” MICRO 2020
  • 8. FireMarshal 環境 FireMarshal Chipyardのソフトウェア実行ツール • RISC-Vをベースとするワークロード生成ツール – RISC-Vでのソフトウェアの実行ターゲットを簡単に切り替えられるラッパー – QEMUやRISC-V ISAシミュレータ(Spike)、RTLシミュレーションとしてAWSのF1インスタンス による起動(Firesim)の切り替えとLinux、ベアメタル実行サポート – Verilatorによる実行は今のところ正式にない • RTLをシミュレーションしたければFireMarshalの利用だとAWS上のFPGAを使うしかない • FireMarshalのフローを流用してベアメタルで実行させるといった工夫はできる QEMU, spike simulator Firesim easy to switch コンパイルフローを流用 Verilator
  • 9. ベイズNNのRISC-V SoC向けソフトウェア開発フロー 1. 非RISC-Vコア上でのベイズNNの実装(C, Pytorch(Python)) QEMU ✓ターゲットアルゴリズムの一般的な実装 Pytorch実装とC実装での実行結果を比較して実装を間違えていないか検証 2. FireMarshal環境によるRISC-Vへの移植 5. FPGA上でアクセラレータを実行 4. アクセラレータへの移植 Verilator Rocket with Acc SoC アクセラレータの単体テスト作成含む 3. FPGA 環境の確認
  • 10. Gemmini: RISC-V シストリックアレイ コプロセッサ[8] [8] H. Genc et. al., “Gemmini: An Agile Systolic Array Generator Enabling Systematic Evaluations of Deep-Learning Architectures.” arXiv 2019 • 深層学習の推論向けに開発されたシストリックアレイ のアクセラレータ – Chipyardに組み込まれているアクセラレータの一つ – 専用のインターフェース(RoCCインターフェース)から制御 • UC Berkeleyで開発されているRISC-Vコア(Rocket, BOOM) でサポートされているインターフェース – ASIC化された実績あり • Chipyardの利用を前提としてメンテナンスされている – HW構成がシンプルかつソフトウェアサンプルが充実 • テンプレート的に使いやすい – Rocket SoCのNoCであるTileLinkと結合済み • アクセラレータ内でのデータ依存性の管理回路やアクセ ラレータ内外でのDMA実装をゼロから作る必要なし • 個人的にかなり助かった部分 Gemmini SoC Gemmini SoC のフロアプラン
  • 11. Gemminiからの主なベイズNNの学習向け拡張 Module Gemmini [8] BNNs Accelerator [ K.Nishida & M.Taiji ] 実行コントローラ 演算器の構成 シストリックアレイ ベクトルレーン (非RISC-V ISA) 転置回路 あり (現状)なし 乱数生成(RNG) なし あり (専用データフロー含む) 活性化関数の演算場所 実行コントローラ内 ベクター演算器内 活性化関数 Relu, Relu6 基本なんでも(多項式近似) アキュームレータ スクラッチパッド内 ベクター演算器内 (register) 演算のバーストサイズ 固定 可変 Re-Order Buffer データ依存性の管理 サイズ固定 サイズ可変 (ベクトル-スカラ演算対応)
  • 12. ChipyardによるベイズNNの学習アクセラレータ開発 RISC-V Core L2$ DRAM L1$ Scratchpad with Accum mem RF ALU Frontend Re-Order Buffer Store cntl Load cntl Execute cntl Mesh Gemmini RISC-V co-processor [8] Transposer RISC-V Core L2$ DRAM L1$ Scratchpad RF ALU Frontend Re-Order Buffer Store cntl Load cntl Execute cntl Vector Proposed Bayesian Neural Networks Training Accelerator [ K.Nishida & M.Taiji ] PEs Accum Reg Gauss Reduction Tree Elementary Functions Acc Systolic Array FPU RNG Chipyard Framework, Designing and Evaluating RISC-V full-system Hardware [7] Original expansion Major Changes 開発中…
  • 13. for(int epoch = 0; epoch < num_epoch; epoch++) { shuffle_array_rng(rng, index_random, train_dataset.size); for(int iter = 0; iter < num_iter; iter++) { for(int j = 0; j < batch_size; j++) { int idx = index_random[iter * batch_size + j]; for(int k = 0; k < N_IN; k++) { batch[j][k] = train_dataset.data[idx*N_IN+k]; } for(int k = 0; k < N_OUT; k++) { t[j][k] = train_dataset.target[idx*N_OUT+k]; } } for(int s = 0; s < num_sample; s++){ sampling_layers(true); forward_propagation((elem_t *)batch); backward_propagation((elem_t *)t, (elem_t *)batch); } update_all_layers(lr); init_grad(); validation(epoch, iter, 1, (elem_t *)batch, (elem_t *)t, batch_size, N_IN, N_OUT, batch_size); } validation(epoch, -1, 0, test_dataset.data, test_dataset.target, test_dataset.size, N_IN, N_OUT, batch_size); } カスタムSoCにおけるBbB法の実行割り当て • 基本的にC言語で書いていけばRISC-V SoCは動かせる – アクセラレータでの動作はイントリンシック (RISC-Vカスタム命令)で記述 • 学習時に行うデータセットのシャッフ ル以外は基本的にアクセラレータ内 で実行 • elem_t 型 – アクセラレータへ渡すデータの型 • Gemminiで採用されている方法 – RISC-Vコアはint型でデータ幅のみ認識 – アクセラレータ内では実装されている データ型(float32 or bfloat)で計算される RISC-Vコア アクセラレータ
  • 14. Chipyardを使ってみて良かった点 • とにかく動くサンプルがたくさんある – とりあえず実装の方法に困ったらいろんなプロジェクトを参考にできる • プロジェクトの一つをテンプレート的に使ってハードウェアが動く状態のまま 独自拡張しながら開発できる – Cで実行を確認しながらアクセラレータを徐々に開発できるのは楽 • アルゴリズムの検討からアクセラレータの設計、ソフトウェアの実装まで一人 で全体像を見渡すことが(頑張ればプロトタイプ程度の開発なら)できる • Chipyardでツール群の依存関係が管理されていて変な苦労が無い – Chipyardが出るまでは依存関係に苦しんで何度も環境構築で挫折… – バージョンが上がるときに若干の依存関係の管理が抜けてたりするが、issueに直ぐ上 がっているのでそこまで問題は無さそう(今のところ)
  • 15. Chipyardを使ってみて不満な点 • 実のところそこまでない – RISC-Vエコシステムの構築がChipyardがリリースされるまであまりに辛過ぎて、 それと比べると多少の環境構築時のエラーは許容範囲 – 他にChipyardみたいなツールを使ったことが無いので感覚がわからないだけ? • 不満があるとすればChipyardというより各ツールのバグや使い勝手 – これから改善されてくるはず RISC-Vコミュニティによる継続的な開発が進むことで かなり使いやすいフレームワークになる予感
  • 16. まとめ • ニューラルネットをベイズ化すると訓練データの特徴から離れたデータを 入力されてもある程度はロバストに動く – ただし、学習に時間がかかる • ベイズNN(BbB法)の学習の高速化には大量の乱数の生成と専用のデー タフローに加えて確率分布計算の高速化が必須で専用ハードウェア化 • ベイズNNの学習を行うハードウェアをゼロから作成するのは大変なので OSSのRISC-V SoC開発ツールChipyardを採用した – Gemminiアクセラレータがテンプレート的に使うのに便利な感じ • Chipyardの枠組みを利用して、ソフトウェア、アルゴリズム、ハードウェアの 検討および実装を進めている