丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給奕欣
發(fā)送

0

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

本文作者: 奕欣 2017-05-25 10:47 專題:雷峰網(wǎng)公開課
導(dǎo)語:神經(jīng)網(wǎng)絡(luò)的廣泛應(yīng)用離不開核心計算芯片,雷鋒網(wǎng)本期公開課特邀請到清華大學(xué)微納電子系四年級博士生涂鋒斌,為我們分享神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)的設(shè)計經(jīng)驗。

基于神經(jīng)網(wǎng)絡(luò)的人工智能近年取得了突破性進(jìn)展,正在深刻改變?nèi)祟惖纳a(chǎn)和生活方式,是世界各國爭相發(fā)展的戰(zhàn)略制高點。

神經(jīng)網(wǎng)絡(luò)作為實現(xiàn)人工智能任務(wù)的有效算法之一,已經(jīng)在各種應(yīng)用場景獲得廣泛的應(yīng)用。從云端到移動端,不同應(yīng)用場景也對神經(jīng)網(wǎng)絡(luò)的計算能力提出了不同的需求。

神經(jīng)網(wǎng)絡(luò)的廣泛應(yīng)用離不開核心計算芯片。目前的主流通用計算平臺包括CPU和GPU,存在著能效較低的問題(能效即能量效率,是性能與功耗的比值)。為了獲得更高的能效,我們需要設(shè)計一種專用的神經(jīng)網(wǎng)絡(luò)計算芯片來滿足要求。國際IT巨頭,如英特爾、谷歌、IBM,都在競相研發(fā)神經(jīng)網(wǎng)絡(luò)計算芯片。

然而,神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)多樣、數(shù)據(jù)量大、計算量大的特點,給硬件設(shè)計帶來了巨大挑戰(zhàn)。因此,在設(shè)計面向神經(jīng)網(wǎng)絡(luò)的高性能、高能效硬件架構(gòu)時,我們需要思考清楚以下三個問題:

  • 好的計算模式應(yīng)該是怎樣的?

  • 為了支持這樣的計算模式,架構(gòu)應(yīng)該怎樣設(shè)計?

  • 已經(jīng)實現(xiàn)的硬件架構(gòu),針對具體算法和應(yīng)用需求,如何配置成最優(yōu)的計算模式?

雷鋒網(wǎng)本期公開課特邀請到清華大學(xué)微納電子系四年級博士生涂鋒斌,為我們分享神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)的設(shè)計經(jīng)驗。他將通過介紹其設(shè)計的可重構(gòu)神經(jīng)網(wǎng)絡(luò)計算架構(gòu) DNA (Deep Neural Architecture),與大家分享在設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時需要思考的問題。他在完成設(shè)計的同時,解決了這些問題,并對現(xiàn)有的硬件優(yōu)化技術(shù)做出了總結(jié)。

本文根據(jù)雷鋒網(wǎng)硬創(chuàng)公開課演講原文整理,并邀請了涂鋒斌進(jìn)行確認(rèn),在此感謝。由于全文篇幅過長,分(上)(下)兩部分,敬請期待。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

公開課視頻:

各位觀眾晚上好,我是來自清華大學(xué)的涂鋒斌,今天非常榮幸收到雷鋒網(wǎng) AI 科技評論的邀請,在此給大家做一節(jié)硬創(chuàng)公開課,主題是《設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考什么?》

首先做一個自我介紹。我是清華大學(xué)微納電子系的博士生涂鋒斌,今年直博四年級,我的導(dǎo)師是魏少軍教授和尹首一副教授,博士課題是高能效神經(jīng)網(wǎng)絡(luò)加速芯片設(shè)計,研究興趣包括深度學(xué)習(xí),計算機體結(jié)構(gòu)及集成電路設(shè)計。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

我作為核心架構(gòu)設(shè)計者,完成了可重構(gòu)神經(jīng)計算芯片 Thinker 的設(shè)計。該芯片作為清華大學(xué)代表性成果,參加了 2016 年全國雙創(chuàng)成果展,獲得李克強總理的高度贊許。相關(guān)研究成果已經(jīng)發(fā)表數(shù)篇國際頂級會議和權(quán)威期刊論文。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

本次公開課將從以下五個方面展開。

  • 研究背景

    我將介紹神經(jīng)網(wǎng)絡(luò)的一些背景知識及特點,它們給硬件設(shè)計帶來哪些挑戰(zhàn)?

  • 計算模式

    從算法和調(diào)度的角度分析神經(jīng)網(wǎng)絡(luò)需要怎樣的計算模式;而基于優(yōu)化的計算模式,我們需要怎樣的架構(gòu)支持神經(jīng)網(wǎng)絡(luò)的計算?

  • 架構(gòu)設(shè)計

    針對計算模式的需求,如何設(shè)計高性能、高能效的神經(jīng)網(wǎng)絡(luò)計算架構(gòu)?可重構(gòu)神經(jīng)網(wǎng)絡(luò)計算架構(gòu) DNA(Deep Neural Architecture)具有哪些特點?

  • 實驗結(jié)果

    DNA 的性能與能效表現(xiàn)如何?與頂尖工作相比的情況如何?

  • 總結(jié)思考

    針對神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)的設(shè)計展開一些思考和討論。

在經(jīng)過前面的學(xué)術(shù)風(fēng)暴后,我將打開攝像頭與大家互動,進(jìn)入提問環(huán)節(jié)。

一、研究背景

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

無處不在的神經(jīng)網(wǎng)絡(luò)

隨著人工智能時代的到來,圖像識別、語音識別、自然語言處理等智能任務(wù)在生活中無處不在。而神經(jīng)網(wǎng)絡(luò)作為當(dāng)前實現(xiàn)這類智能任務(wù)最有效的算法之一,已經(jīng)獲得廣泛的應(yīng)用。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

比方說:

  • 百度圖片搜索;

  • 微軟語音識別;

  • 谷歌在線翻譯;

  • ……

可以說,神經(jīng)網(wǎng)絡(luò)在我們的生活中真是無處不在。

那么什么是神經(jīng)網(wǎng)絡(luò)?我們不妨從神經(jīng)元開始理解。如圖所示,這是一個生物上的神經(jīng)元。它由樹突、細(xì)胞體、軸突和神經(jīng)末梢這四個部分構(gòu)成。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

  • 1. 通過樹突接受輸入信號;

  • 2. 在細(xì)胞體內(nèi)進(jìn)行信號處理;

  • 3. 通過軸突和神經(jīng)末梢把輸出信號傳至其它神經(jīng)元;

  • 4. 而大量的神經(jīng)元就構(gòu)成了我們的神經(jīng)系統(tǒng)。

而這就啟發(fā)了人工神經(jīng)元模型的誕生。我們可以看到,它的示意圖其實與神經(jīng)元是十分相似的。它仍然由左邊的多個輸入,經(jīng)過加權(quán)求和與非線性運算得到輸出。

一個簡單的神經(jīng)元能做些什么?

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

舉個簡單的例子。在空間中有紅色和藍(lán)色兩類點。用簡單的神經(jīng)元,我們可以在空間中做一套曲面,將這兩類點分開。這就是一個非常簡單的分類問題。神經(jīng)網(wǎng)絡(luò)/神經(jīng)元非常擅長用于做分類問題。

那么,當(dāng)我們有很多神經(jīng)元后,我們可以得到一個神經(jīng)網(wǎng)絡(luò),它又能用來做什么?

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這幅圖給出了一個非常簡單的典型單層神經(jīng)網(wǎng)絡(luò)。其中的每一個圓圈代表一個神經(jīng)元,它們相互連接,就構(gòu)成了一個神經(jīng)網(wǎng)絡(luò)。一個相對復(fù)雜的結(jié)構(gòu)可以做些什么?

如圖所示,空間中仍然有紅藍(lán)兩種顏色的點,我們采用了相對復(fù)雜的神經(jīng)網(wǎng)絡(luò),可以在空間中畫一條分類的曲面,我們可以看到,問題比剛才的問題難度更大,圖中的這條粉色線勾勒出的這條曲面,才能對復(fù)雜問題進(jìn)行分類。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

在 2012 年,神經(jīng)網(wǎng)絡(luò) AlexNet 在 ImageNet 圖像分類競賽上取得突破,獲得了 85% 的準(zhǔn)確率,相較于之前最好的識別率提升了 10% 以上。這是一個非常大的突破,在當(dāng)時引起了非常廣泛的關(guān)注。而現(xiàn)在,每年舉辦的 ImageNet 的識別精確度已經(jīng)超過了 95%,已經(jīng)超過人類識別圖片的能力。這是一個非常驚人的結(jié)果。直至今年,每年拔得頭籌的團(tuán)隊都是采用神經(jīng)網(wǎng)絡(luò)。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

AlexNet 是一個非常典型的、被大家廣泛研究的神經(jīng)網(wǎng)絡(luò),因為它的層次很深,共有 8 個層次,人們也稱之為深度神經(jīng)網(wǎng)絡(luò),而基于深度神經(jīng)網(wǎng)絡(luò)的機器學(xué)習(xí)算法,我們也給它取了一個非常好聽的名字叫「深度學(xué)習(xí)」。大家經(jīng)常會在媒體上聽到詞,其實它的本質(zhì)依然是神經(jīng)網(wǎng)絡(luò)。

各種應(yīng)用場景對神經(jīng)網(wǎng)絡(luò)的需求

而正是因為神經(jīng)網(wǎng)絡(luò)如此強大的能力,目前廣泛地應(yīng)用于各種應(yīng)用場景,例如:

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

  • 云端:公司會架設(shè)一些服務(wù)器來提供人工智能的服務(wù);

  • 移動端:無論是智能手機、智能汽車、無人機或是機器人,都會運用神經(jīng)網(wǎng)絡(luò)實現(xiàn)圖像識別、物體跟蹤和語音識別的智能任務(wù)。

而不同應(yīng)用場景對神經(jīng)網(wǎng)絡(luò)也提出了不一樣的計算需求,比如:

  • 在數(shù)據(jù)中心,大家非常關(guān)注計算的性能和并行度,對功耗的需求并不大,當(dāng)然,功耗自然是越低越好;

  • 而在無人機的應(yīng)用場景下,大家會關(guān)注在滿足最基本的識別或智能需求,保證性能的前提下,盡可能地降低功耗。因為在移動端,電池容量非常有限,對低功耗自然有著很強的需求。

現(xiàn)有通用計算平臺的不足

然而,現(xiàn)有通用計算平臺(CPU、GPU)具有一些不足。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

以 CPU 為例,它的性能差,能效低。能效是能量效率的簡稱,是性能與功耗的比值。我們通常用 GOPS/W (千兆操作數(shù)每秒每瓦) 的單位來描述能效,它是一個非常好地衡量計算效率的指標(biāo)。

我們這里討論的能效是考慮了片外存儲的系統(tǒng)級能效。后面提及的能效也是指的同一概念。

我們在服務(wù)器上做了一個實驗,在 CPU 上計算 AlexNet 需要 254.5 ms,相當(dāng)于處理 4-5 張圖片,而功耗需要 80 W,總能效為 0.2 GOPS/W。而同樣的情況在 GPU 上計算,總能效為 1.7 GOPS/W,我們希望能效能達(dá)到 100 GOPS/W 甚至更高。

神經(jīng)網(wǎng)絡(luò)的三大特點

但是,神經(jīng)網(wǎng)絡(luò)的三大特點給硬件加速帶來巨大挑戰(zhàn)。

  • 挑戰(zhàn)一:不同網(wǎng)絡(luò)的層次不同

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

我們列舉了四個非常經(jīng)典的神經(jīng)網(wǎng)絡(luò),分別是 AlexNet(11 層)、VGG(19 層)、GoogLeNet(22 層)與 ResNet(152 層),我們可以看到,因為識別精度的不同,我們往往會設(shè)計更深更復(fù)雜的神經(jīng)網(wǎng)絡(luò),會導(dǎo)致網(wǎng)絡(luò)層次變多,給硬件加速帶來很大挑戰(zhàn)。

  • 挑戰(zhàn)二:不同層的類型不同

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

同樣以 AlexNet 為例子,神經(jīng)網(wǎng)絡(luò)由三種主要層類型組成,包括卷積層(CONV)、池化層(POOL)與全連接層(FC)。圖中紅框部分即為卷積層,而藍(lán)框部分屬于池化層,綠框部分為全連接層。每一層的計算都有些許不同。

  • 挑戰(zhàn)三:不同層的參數(shù)多樣,數(shù)據(jù)量、計算量大

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

以 AlexNet 為例,最左列呈現(xiàn)了所有層的類型和名字,后面的一系列參數(shù)表示它的核尺寸、步長、輸入輸出圖尺寸等。因為參數(shù)不同,它們的數(shù)據(jù)量與計算量都不同,且非常大。

在卷積層上,它的計算量非常大;而全連接層中,計算量相比卷積層稍小,但數(shù)據(jù)量尤其是權(quán)重量則非常大。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這三大特點仍然使硬件加速的實現(xiàn)帶來一些挑戰(zhàn)。

  • 1. 不同網(wǎng)絡(luò)的層數(shù)、參數(shù)不同——計算的靈活性比較高

  • 2. 不同層的類型不同,參數(shù)多樣——計算復(fù)雜度高---降低硬件的性能

  • 3. 數(shù)據(jù)量、計算量大——提高功耗

總體而言,我們需要一個靈活高效的硬件架構(gòu)支持我們的神經(jīng)網(wǎng)絡(luò)。

我們的設(shè)計目標(biāo)和實現(xiàn)

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這樣一來,我們的設(shè)計目標(biāo)就確定了,即設(shè)計一個面向神經(jīng)網(wǎng)絡(luò)的高能效計算架構(gòu),它需要具備以下三個特點:

  • 首先它要靈活支持不同網(wǎng)絡(luò);

  • 其次要兼顧性能與能效;

  • 再者,在針對不同的應(yīng)用場景,我們得以進(jìn)一步優(yōu)化性能或能效,即選擇進(jìn)一步偏向性能優(yōu)先的實現(xiàn),或是偏向能效優(yōu)先的實現(xiàn)。

在本次公開課里面,我們會以我實現(xiàn)的一個計算架構(gòu)為設(shè)計實例,展開我的一些討論和思考。

設(shè)計實例是一款面向卷積神經(jīng)網(wǎng)絡(luò)(CNN)的計算架構(gòu),架構(gòu)的代號叫做「DNA」,它主要具有三大特點:

  • 特點一:可重復(fù)的數(shù)據(jù)傳輸通路

    可以支持混合的數(shù)據(jù)服務(wù)模式來提高能效。

  • 特點二:可重構(gòu)計算引擎

    可以支持高效的映射方法,同時兼顧靈活性和性能。

  • 特點三:具有調(diào)度框架

    可以重復(fù) DNA 的架構(gòu)的計算資源來優(yōu)化性能,或者能效,或者說二者同時優(yōu)化。

這就是這款架構(gòu)的三大特點。

我們設(shè)計時思考的問題

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

在展開我們的討論之前,也是我們在設(shè)計這款架構(gòu)之前一直在思考的三個問題。要設(shè)計好一個架構(gòu)必須解決這三大問題:

  • 問題一:對于神經(jīng)網(wǎng)絡(luò)來說,一個好的計算模式究竟是怎么樣的?

  • 問題二:為了支持的一個計算模式,我們的硬件架構(gòu)需要怎樣去設(shè)計?

  • 問題三:當(dāng)我們已經(jīng)實現(xiàn)了一款硬件架構(gòu),在針對具體的算法應(yīng)用的需求時,我們?nèi)绾螌軜?gòu)進(jìn)行配置,使其配置成一個最優(yōu)的計算模式,滿足我們的計算需求?

我們總結(jié)的設(shè)計理念,也是我們在一直貫徹于設(shè)計過程當(dāng)中的一個理念:我們認(rèn)為計算模式與架構(gòu)的設(shè)計是相輔相成的;在設(shè)計計算模式的過程中,實際上也是在設(shè)計硬件架構(gòu),二者是不能完全分開的。

剛剛講完了研究的一些背景,還有我們一些基礎(chǔ)的思考,那么現(xiàn)在,我們會從算法和調(diào)度的角度,從算法的硬件用計算模式的角度來進(jìn)行分析和優(yōu)化,來看看怎樣才是一個好的計算模式。

二、計算模式

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

研究對象

首先我們要先明確一下我們的研究對象。

在本次公開課里面,我們主要以卷積層的計算為主要的研究對象。有兩大原因:

  • 卷積層的計算占到總計算量的 90% 以上,因此優(yōu)化卷積層本身是很有必要的。

  • 其他層的計算剛剛提到的池化層和全連接層,它們的計算模式與卷積層是非常類似的,因此我們對卷積層的優(yōu)化方可以很容易地遷移到其它層的計算上。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

我們詳細(xì)地來看看卷積層計算。如圖所示,是一個卷積層的計算示意圖,它的輸入是一個 3D 的特征圖(Input Map),經(jīng)過一個 3D 的卷積核(kernel)的掃描,在對應(yīng)點做一些運算后,就會得到一張輸出的 Output Map。我們可以看到,3D 的輸入特征圖,它總共有 N 個 channel,也就是 N 張?zhí)卣鲌D。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

我們總共有 M 個 kernel,經(jīng)過輸入特征圖進(jìn)行計算之后就可以得到 M 張,或者說有 M 個 channel 的 Output Map,就是卷積層的計算。

卷積運算

我們再進(jìn)一步看下卷積運算又是怎么一回事。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

剛剛講到的卷積核(kernel)會在左邊 5×5 的 Input Map 上進(jìn)行掃描,黃色的方框是一個 3×3 的卷積核。我們可以看到,每一個黃色小框的右下角會有一個權(quán)重分析,也就是具體的權(quán)重值。卷積核進(jìn)行掃描的每個位置都會進(jìn)行神經(jīng)元的計算,并得到右邊 3×3 的 Output Map 上的每一個點。可以看到,隨著卷積核在 Input Map 的掃描,就可以得到 Output Map 上的每一個點,而具體的神經(jīng)元計算其實和我們之前提及的人工神經(jīng)元模型計算是完全一致的,這就是一個卷積運算的過程。

架構(gòu)模型

在講完研究對象之后,我們還要再講一下架構(gòu)模型。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

如圖所示,這是我們歸納出來的一個神經(jīng)網(wǎng)絡(luò)的硬件架構(gòu)模型,它主要由片上和片外兩部分構(gòu)成。

左邊的大矩形就是我們要設(shè)計的神經(jīng)網(wǎng)絡(luò)硬件架構(gòu),而右邊架構(gòu)的外部有一個主處理器和一個片外存儲叫做 Off-Chip DRAM,這兩個東西是掛載在芯片外部的,而我們主要設(shè)計的,就是左邊大矩形內(nèi)部的結(jié)構(gòu)。

在架構(gòu)里面有一個核心控制器 controller,然后片上通常會有三塊 buffer,即 Input Buffer、Output Buffer 及 Weight Buffer,分別存儲神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)、輸出數(shù)據(jù)和權(quán)重。而中間的黃色部分為 Computing Core 也就是計算核心。

在核心的內(nèi)部會有一些計算器,比如 Input REGs 與 Output REGs(輸入輸出寄存器),而最最核心的計算單元就是這里的「CE」它的全稱叫做 convolution engine,即卷積引擎或者說計算引擎。輸入的數(shù)據(jù)會經(jīng)過局部的計算器傳輸?shù)接嬎阋嫔?,而計算機內(nèi)部再繼續(xù)剖開,就是一個一個的計算單元,我們稱之為 PE,英文叫做 processing element(處理單元),做的是最基本的運算。

神經(jīng)網(wǎng)絡(luò)內(nèi)部最基本的運算是乘加運算,這就是我們最基礎(chǔ)的一個硬件架構(gòu)模型,后面我們的所有討論都會基于的一個模型來展開。

優(yōu)化目標(biāo)

在講完了我們的硬件架構(gòu)模型以及研究對象以后,我們還要再講一講優(yōu)化目標(biāo)。剛剛也提到了兩個優(yōu)化目標(biāo),一個是能效(energy efficiency),另一個是性能。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

優(yōu)化目標(biāo) 1:能效

剛剛我們也提過,能效的單位是 GOPS/W,表示的是每單位的功耗可以獲得怎樣的性能,它表征的是一個計算效率的問題。

在公開課里面,我會盡量少用公式做過多的討論,為了方便大家理解,我經(jīng)常會用一些例子來解釋,但是因為這兩個公式非常重要,后面的討論都是基于它們,所以我必須花一點篇幅來解釋。

首先,energy efficiency 是性能與功耗的比值,而性能我們通常用每秒做多少操作數(shù)來衡量,即 Operation/T(操作數(shù)除以計算的總時間),而 Power 是 Energy/T (總能耗除以時間) 的一個結(jié)果,我們可以看到 T 就被約掉了。

而另外我們注意到的一點是,對于神經(jīng)網(wǎng)絡(luò)固定的一個算法來說,它的總操作數(shù)也是一個固定的值,所以我們首先得到一個結(jié)論:能效值與能耗值是成反比的。那么如果要優(yōu)化能效,其實我們只需要優(yōu)化能耗就好了。我們的能耗越低,那能效也會越高。因此,我們把問題轉(zhuǎn)化成了能耗問題。

我們繼續(xù)分析能耗。能耗主要由兩部分構(gòu)成。

  • 一個是訪問存儲器的能耗,簡稱訪存能耗,用 EnergyMA 來表示。

  • 另一部分即計算能耗,用  EnergyCompute 來表示。

那么它們分別可以用怎樣的形式來建模?我們也分別對這兩個式子做一個細(xì)致的分析。

訪存能耗有片上的存儲也有片外的存儲,另外就是 MADRAM,也就是 DRAM 的訪問次數(shù), 而 EDRAM 則是單位 DRAM 的訪問能耗。二者相乘就得到了 DRAM 的總訪問能耗,另外一部分就是訪問 buffer 的能耗。

這里的表達(dá)式與 DRAM 是類似的,也是由訪問次數(shù)乘以單位訪問能耗構(gòu)成的,而對于計算的能耗,它是由兩個因子來相乘得到的,一個是總的計算操作數(shù) Operation,另外一個就是單位操作能耗 Eoperation,

對于一個給定的 CNN 模型,它的總操作數(shù)是固定的,那么我們可以認(rèn)為總的計算能耗,在單位操作能耗不變的情況下,它也可以認(rèn)為是一個固定的值,因此,影響能耗的關(guān)鍵因素,就是說對 DRAM 的訪問次數(shù)以及 buffer 的訪問次數(shù)。

我們可以看到,能效的優(yōu)化問題,其實最后就轉(zhuǎn)化為對 DRAM 以及 buffer(注意 buffer 就是片上緩存)的訪問次數(shù)的優(yōu)化。如果我們的訪問次數(shù)很少的話,那么它的能耗就會比較低,能效就會比較高,此后我們就集中對這兩個關(guān)鍵因素進(jìn)行討論就可以了。

優(yōu)化目標(biāo) 2:性能

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

第二個優(yōu)化目標(biāo)是性能。我仍然要具體介紹一個公式。

前面我們提及性能(Performance)的單位是 GOPS,即每秒的操作數(shù),而我們定義了 Performance 的一個公式,由幾個因子相乘。

  • 第一項是硬件乘加單元數(shù) MAC,我們這里定義為就是硬件上的總的乘加單元的個數(shù)或者說基本計算單元的個數(shù)。硬件有一個總的計算單元的個數(shù),相當(dāng)于是一個常量。

  • 第二項是計算單元的利用率,簡稱 PE Utilization,指的是在整個計算的過程當(dāng)中,硬件計算單元的實際利用率是多高;

  • 第三項是計算核心的頻率(Frequency),硬件在工作的時候會有一個計算的頻率,頻率的高低會直接影響到總的性能高低。如果硬件乘加單元數(shù)越高,利用率高,計算核心頻率高,那么我的總性能肯定是越好的;而對于一個給定的一個硬件架構(gòu),影響它的性能的關(guān)鍵因素就是計算單元,在整體的計算工作過程當(dāng)中,它的利用率是高還是低,PE 越高,它的性能就會越高,這是我們的一個觀點。

由此,我們也同樣把性能關(guān)鍵的優(yōu)化目標(biāo)轉(zhuǎn)換成能夠具體分析甚至可以優(yōu)化的一個對象,叫做 PE Utilization,也就是我們計算資源的利用率。

我們簡單總結(jié)一下,剛剛分別討論了兩個重要的優(yōu)化目標(biāo),分別是能效和性能。通過對能效和性能的表達(dá)式的分析,我們將分別從訪存次數(shù) MA 以及計算單元的利用率 PE Utilization 這兩個角度,對計算模式進(jìn)行優(yōu)化。

到此為止,我們對研究對象、目標(biāo)的架構(gòu)以及優(yōu)化目標(biāo)都做了非常細(xì)致的分析,那我們就可以展開討論了。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

在設(shè)計里面,我們采用一種逐層加速的策略來針對層數(shù)不同的神經(jīng)網(wǎng)絡(luò),因為剛剛也提到,神經(jīng)網(wǎng)絡(luò)本身的計算量非常大,特別是在現(xiàn)在網(wǎng)絡(luò)層次越來越深的情況下,基本上不太可能在硬件上直接把一個神經(jīng)網(wǎng)絡(luò)直接映射到一個硬件上去做計算,所以我們采用一種大家現(xiàn)在慣常使用的計算方法,叫做逐層加速,即一層一層的來計算神經(jīng)網(wǎng)絡(luò),最終得到輸出結(jié)果。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

我們的核心方法是使用循環(huán)變換的方法來優(yōu)化其計算模式,圖中的代碼其實表示的就是一個卷積層的計算,它是由四層循環(huán)來表示的,其中 R、C、M、N 還有 K,這些參量都是和之前提到的基本卷積層計算參量是一一對應(yīng)的。

我們通過對循環(huán)進(jìn)行優(yōu)化,實際上就可以把它轉(zhuǎn)換成對神經(jīng)網(wǎng)絡(luò)特別是卷積層的計算模式優(yōu)化,并采用循環(huán)變換一個很好的方法,對計算模式進(jìn)行優(yōu)化。

那么什么叫做計算模式?我們?nèi)匀皇墙Y(jié)合之前的架構(gòu)圖來介紹。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

計算模式主要由兩部分來構(gòu)成。

  • 一部分我們稱為數(shù)據(jù)復(fù)用模式(藍(lán)色箭頭)。數(shù)據(jù)復(fù)用模式指的是,我們存儲在存儲器當(dāng)中的數(shù)據(jù)以及權(quán)重,無論是存在片外還是片內(nèi),它如何進(jìn)行數(shù)據(jù)的交互,如何進(jìn)行數(shù)據(jù)的傳輸數(shù)據(jù)。也就是說,數(shù)據(jù)服務(wù)模式主要描述的是數(shù)據(jù)傳遞的傳輸方式。

  • 而第二個部分就是我們稱之為卷積映射方法(紅框),對于最核心的計算核心來說,數(shù)據(jù)傳遞到了計算核心內(nèi)部之后,如何進(jìn)行具體的計算映射。

二者構(gòu)成的就是數(shù)據(jù)傳輸及計算映射,或者構(gòu)成了一個整體,也就是計算模式,而我們的分析都會針對這兩個部分分別展開。

我們在這里主要采用兩類循環(huán)變換方法。

  • 一類叫做循環(huán)交換(Loop Interchange):

    主要優(yōu)化的是數(shù)據(jù)的復(fù)用模式減少訪存次數(shù)。

  • 第二個循環(huán)變換方法叫做循環(huán)分塊(Loop Tiling):

    主要優(yōu)化的是卷積映射方法,提高計算資源的利用率。

值得注意的是,訪問次數(shù)以及計算資源利用率,就是我們剛剛提煉出來的、需要主動優(yōu)化的兩類主要參量,它們會直接對應(yīng)到性能和能耗這兩個優(yōu)化目標(biāo)。

數(shù)據(jù)復(fù)用模式

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

首先我們來講講數(shù)數(shù)據(jù)的復(fù)用模式。

在我們的工作當(dāng)中,我們提出了三類基本的數(shù)據(jù)的復(fù)用模式,分別是:輸入復(fù)用(Input Reuse,IR)、輸出復(fù)用(Output Reuse,OR)、權(quán)重復(fù)用(Weight Reuse,WR),他們分別充分地利用了輸入數(shù)據(jù)、輸出數(shù)據(jù)及權(quán)重的復(fù)用性,我們給出了三種基本復(fù)用模式的示意圖以及對應(yīng)的偽代碼,這里就不做特別細(xì)致地展開了。

需要值得一提的是,在我們領(lǐng)域的兩個頂級會議上,即 ISCA 16 以及 ISSCC 17 的 Tutorial 上均指出之前的工作都只采用一種固定的數(shù)據(jù)復(fù)用模式。我們在后面的分析會告訴大家,采用固定的服務(wù)模式并不是一種特別好的策略。

在我們的方法里面,我們將多種數(shù)據(jù)復(fù)用模式組合在一起,按照具體的計算以及算法的需求來進(jìn)行調(diào)度,這是我們的一個核心想法。


這里會結(jié)合輸入復(fù)用(Input Reuse)來做稍微細(xì)致一點的分享,但不會涉及到過多的數(shù)學(xué)或者說特別細(xì)致的代碼講解。

對于輸入復(fù)用來說,我們這里有一個簡單的示意圖,中間還是一個計算核心,而圍繞在旁邊的還是片上的 buffer,所謂的輸入復(fù)用表示的是,,我們讀取一部分存儲在 Input Buffer 里面的數(shù)據(jù),放到計算核心內(nèi)部,再對這些輸入的數(shù)據(jù)進(jìn)行充分的復(fù)用。具體來說,我們會讀入 TN 個小的 map,在核心內(nèi)部會做充分的計算,將這一層對應(yīng)的 M 個 map,即所有和它相關(guān)的輸出數(shù)據(jù)都遍歷一遍,把對應(yīng)的計算都完成。在這個過程中計算核心需要與片上的 Output Buffer 進(jìn)行頻繁的交互,與此同時,權(quán)重 Buffer 也需要有頻繁的訪問。但是因為在過程中我對輸入數(shù)據(jù)進(jìn)行了充分的復(fù)用,所以我們在這種模式下面對于輸入數(shù)據(jù),它僅僅需要從 Input Buffer 里面導(dǎo)入一次,導(dǎo)入到 Core 內(nèi)部就好了。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這個過程叫做輸入復(fù)用,所對應(yīng)的循環(huán)表達(dá)就是下面一個式子,不做具體的展開。我們可以看到,紅色虛線框的這部分就是核心內(nèi)部完成的計算,而輸入復(fù)用對應(yīng)的一種循環(huán)表達(dá),其實是對外部的四層循環(huán)做一個次序的調(diào)整,就是我之前提到的循環(huán)次序調(diào)換,而其中涉及到的 Tm、Tn、Tr、Tc,分別對應(yīng)的是之前提到的 M、N、R、C。我們這里稱為 Tiling 參數(shù),因為核心內(nèi)部的局部存儲非常有限,所以我們將 Input Buffer 內(nèi)部的這些數(shù)據(jù)和權(quán)重導(dǎo)入到核心內(nèi)部的時候就要做一個分塊,也就是說我計算任務(wù)是一部分一部分來完成的,采用這樣一種方式完成整個的計算任務(wù)。而剛提到的 Output Reuse 與 Weight Reuse,它其實所改變的就是外部存儲循環(huán)的計算次序,也就是 Loop Interchange。

針對這樣的數(shù)據(jù)復(fù)用方式,我們會展開一些分析。

訪存分析模型

我們之前有提到,我們需要分析的是它的訪存的總能耗是怎么樣的,其中的一個關(guān)鍵因素就是訪問次數(shù)(Memory Access)如何,簡稱 MA,是由這樣一個公式來得到的。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

至于公式 TI、TO、TW 只是當(dāng)前層的輸入、輸出和權(quán)重的總量,TPO 表示的是當(dāng)前層的最終輸出數(shù)據(jù)總量,它是一個常數(shù);αi、αo、αw對應(yīng)的就是輸入輸出權(quán)重的復(fù)用因子,我就不過多解釋了。

這里我們直接上結(jié)論,對于片上 buffer 的訪問來說,因為是輸出復(fù)用,所以 αi 是 1,但是輸出和權(quán)重需要多次的訪問,所以它們會乘上一個大于 1 的一個因子,是由 Tiling 參數(shù)和計算參數(shù)決定的;而對于低端的訪問,它是一個相對復(fù)雜一點的公式,主要體現(xiàn)在 αo 和 αw 上,它是一個與片上緩存容量相關(guān)的一個表達(dá)形式,但因為是輸入復(fù)用,所以其復(fù)用次數(shù)仍然是 1(用紅色表示)。對于輸入復(fù)用來說,訪問是 1,我們可以很容易地推測出來。

對于輸出數(shù)據(jù)還有權(quán)重來說,它的訪問次數(shù)也應(yīng)該是最小的,這里我就不做過多的展開了。

能耗分析模型

那我們有了一個能效訪問次數(shù)的分析模型之后,就能以此做一個能耗的分析模型,公式也很簡單,我們之前已經(jīng)詳細(xì)的討論過了。而我們也提到,計算能耗是一個固定的值,因此會著重對訪存能耗進(jìn)行分析,而用剛剛的訪存分析模型,我們已經(jīng)得到了最低端訪問次數(shù)的模型(紅色部分)和 buffer 的訪問次數(shù)模型,那么單位的 DRAM 的訪存和 buffer 的訪存分別是怎樣一個值?其實這和具體的設(shè)計有關(guān),我們也會做一些實驗。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

在我們的設(shè)計中,對于 DDR3 的,因為每個 Dram 的單位訪存能耗是 70pj/bit,而片上 buffer 的單位訪存能耗是 0.42pj/bit。我們其實對訪存能耗式子中的每一個項都做了非常精確的一個刻畫,那么,我們通過一個能效的分析模型就可以評估出不同的計算模式,在不同的參數(shù)上面它的能耗是多大,這樣就能我們的優(yōu)化目標(biāo)掛鉤了。

AlexNet CONV3 的訪存分析

我們這里做一個簡單的分析,用 AlexNet 的 CONV3 做一個訪存次數(shù)的分析。我直接給了一個分析的圖,這里簡單解釋一下,橫坐標(biāo)是 Tiling 的參數(shù),左邊縱坐標(biāo)是片上 buffer 的總次數(shù),而三個顏色的柱子分別對應(yīng)的是 IR、OR 與 WR,表示它們在不同的 Tiling 參數(shù)的訪存次數(shù),為了方便我們直接來看比較結(jié)果。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這三種基本的計算模式,它們兩兩作比得到的比值如圖。這里紅色的曲線表示是已知唯一的一個基準(zhǔn)線,

首先,對于不同的數(shù)據(jù)復(fù)用模式以及不同的 Tiling 參數(shù)來說,訪存次數(shù)是有差異的,而在不同的情況下,最好的數(shù)據(jù)復(fù)用模式也會有所不同。

其次,傳統(tǒng)的或者是當(dāng)下的工作通常采用一種相對固定的數(shù)據(jù)復(fù)用模式,

而在我們的工作里,我們將三種基本的數(shù)據(jù)復(fù)用模式結(jié)合起來,構(gòu)成一種混合的數(shù)據(jù)復(fù)用模式,根據(jù)具體情況來選擇最優(yōu)的一種模式。

剛剛講完的數(shù)據(jù)復(fù)用模式,是計算模式很重要的一個部分,那么現(xiàn)在我們來簡單講講卷積映射方法。我們?nèi)匀灰砸粋€實際例子來簡明地給大家解釋一下。

卷積映射方法

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這是卷積計算的一個示意圖,有一個 3×3 的一個 Input Map,kernel 的大小是 2×2,然而卷積的步長是 1,那么就經(jīng)過一個卷積之后得到結(jié)果它是一個 2×

2 的 Output Map,而這里彩色的箭頭表示就是說對于每一個 Output Map 上的點,它所對應(yīng)的輸入數(shù)據(jù)來自哪一個區(qū)域,具體來說就是說對于 Output Map 的 O0 點,它所需要的數(shù)據(jù)是 I0、I1、I3 和 I4,而對于 O1 點來說,他的數(shù)據(jù)是 I1、I2、I4 和 I5 這四個點。

我們可以看到,這四個輸出點,它們所對應(yīng)的輸入數(shù)據(jù)的范圍是相互覆蓋的,我們看到是 I1、I3、I4、I5 和 I7 這五個點,它們是處于重疊部分的一個區(qū)域。就是說,實際上這些點在計算的過程中是存在數(shù)據(jù)復(fù)用的。數(shù)據(jù)復(fù)用就是說數(shù)據(jù)可以重復(fù)利用。比如說,用于 O0 點的計算的數(shù)據(jù)是可以給到 O1 點進(jìn)行計算的,即 I1 和 I4,其他的也是類似原理,也就是它存在數(shù)據(jù)復(fù)用的一個機會。

這里我們就給出大家經(jīng)常使用的一種卷積映射方法,仍然以剛剛卷積的例子為例,但我們會結(jié)合具體的一個硬件結(jié)構(gòu),CE(計算引擎)的尺寸是 2×2,意味著它內(nèi)部有 2×2 總共四個 PE(最基本的計算單元)構(gòu)成,而這幅圖給出來的是一個卷積映射方法的具體過程。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

首先,對于 Output Map 上的四個點,計算任務(wù)與 PE 2×2 的陣列是對應(yīng)的,我們這里就是你看就是 O0 點的計算任務(wù)會映射到 PE0 的計算單元上,其他三個點也以此類推,意味著對于某一個 PE 來說,所需要承擔(dān)的計算就是對應(yīng)點所需要進(jìn)行的計算。特別強調(diào)一點,所謂的計算任務(wù)(乘加計算過程)也就是在上面完成。

第二個要點,輸入輸入數(shù)據(jù)會按照如圖所示的一個軌跡(一個 S 形的折線軌跡)進(jìn)行掃描,最開始輸入的是左上角的四個點(I0、I1、I3 和 I4),通過掃描 PE0 上的數(shù)據(jù),比如 I1 和 I4,會傳遞到 PE1 上,然后通過掃描將外部數(shù)據(jù)送入到 PE 內(nèi)部,數(shù)據(jù)兩兩之間又會進(jìn)行一個數(shù)據(jù)傳遞,就用到了我們剛剛所提到的數(shù)據(jù)復(fù)用的機會。

第三點,對于權(quán)重來說,它緊跟著輸入數(shù)據(jù)的節(jié)拍,先后輸入陣列,整體的過程就是卷積映射的方法,這個方法是一個非常經(jīng)典的、大家通常會使用的方法。在現(xiàn)有很多的當(dāng)前的工作中都采用類似的一些方法,比方說像一些利用陣列形式計算的硬件架構(gòu)都會通常采取類似的方法,當(dāng)然在細(xì)節(jié)上會稍許的不同,不過基本上的原理是類似的。

但剛剛講的映射方法仍然存在一些問題,主要是因為計算參數(shù)的多樣性會導(dǎo)致計算資源利用率的問題。我剛才提到,利用計算資源利用率和性能會直接掛鉤,具體來說它主要有兩方面因素的影響,

  • 一方面就是卷積的步長大于 1,

  • 另外一方面就是計算資源的形態(tài),或者說它的結(jié)構(gòu)不匹配。

具體來說,仍然以實例講解一下。卷積步長如果大于 1,這里以卷積步長為 2 作為例子,PE 的陣列規(guī)模是 8×8,要計算的是 4×4 的一個 Output Map。再用剛剛的方式進(jìn)行計算,實際發(fā)揮有效計算的 PE 其實是 1357 這些點(紅色區(qū)域)。也就是說,間隔的點會做一些有效計算,而灰色的點雖然實際也在工作,但是它并沒有做有效的計算,所計算出來的數(shù)據(jù)并不是我們所需要的。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

在這個例子里,PE 的利用率僅僅只有 25%,這是比較低的一個數(shù)字。

第二點,從我們計算的圖的尺寸,特別是 Output Map 的尺寸,它會與計算資源的規(guī)模以及形態(tài)會不匹配,具體來說,如果要計算一個 6×6 的一個圖,但是我的陣列大小是 8×8。顯而易見的,只有 6×6 部分他做了有效的計算,而其余的邊緣部分并沒有做有效的階段,甚至直接沒有用。這樣的話,我們計算出來的利用率僅僅只有 56.25,將近一半的計算資源沒有用上,實在太可惜了。

因此我們希望在計算過程當(dāng)中,計算資源可以一直工作,或者說它的利用率盡可能接近百分之百,就能達(dá)到很高的一個利用率以及性能,這是我們希望看到的。

并行卷積計算方法

我們提出一種叫做「并行卷積計算方法」的一種映射方式,大家看這個圖就很容易明白。因為這個方法本身的概念上其實很容易理解。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

左邊是剛剛講的例子,采用我們方法后,我們試圖在陣列上面同時計算四張 Map,利用率能從 25% 提升到將近 100%,這是一個很好的計算結(jié)果,它的并行度能提升四倍,那主要是因為我們同時計算四個 Output Map。值得一提的是 Output Map 所需要用到的輸入數(shù)據(jù)其實是一樣的,或者說它們的數(shù)據(jù)是共享的,這也就直接指導(dǎo)了我們后面的硬件架構(gòu)設(shè)計。

第二個例子,我們?nèi)匀皇褂貌⑿芯矸e映射的方法,雖然處理方式有所不同,但是概念上還是非常接近的,為了解釋方便,我們這里換了一種表達(dá)的形式。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

這里我們給出時間軸上的一個展開圖,左邊是傳統(tǒng)的情況,右邊就是用我們的方法之后的一種情況,簡單來說,傳統(tǒng)方法是在 8×8 的陣列上計算 6×6 的輸出圖,如果要計算 16 張不同的 Map(用不同顏色表示),那我們總共需要 16 次迭代,我們可以認(rèn)為一次迭代代表一次時鐘周期,那么 PE 的利用率只有 56.25%。

我們采取了另一個操作,對每一個 map 做一個更深層次的一個 Tiling,分塊地將一個 6×6 的塊分割成一個一個 2×2 的小塊,把 16 張 Map 的 2×2 小塊映射到陣列上面。也就是說,我們同時在一個陣列上計算 16 個運行的 Map,但是每個 Map 尺寸更小,那么我計算完一張 map 的迭代次數(shù)只有 9 次,原來是 6×6,現(xiàn)在是 2×2,我只要 9 次迭代就可以完成,但是因為其他的 map 都是并行計算,所以其他的計算也可以同時完成。這樣的一種方式將原來的計算的 16 次迭代就縮短為 9 次迭代,PE 利用率接近 100%。

另外值得一提的是,這些不同的 Map 所需要的數(shù)據(jù)仍然是共享形式,這一點之后我們會提到。

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

我們提出一種并行卷積映射方法,這個公式與傳統(tǒng)卷積映射方法公式有些許的改變,主要體現(xiàn)在引入了一個更深層次的 Tiling 參數(shù) Trr 和 Tcc,在分子上面引入了一個并行的因子 P。

主要的核心思想就是通過并行地計算更多的輸出圖,以獲得更高的計算資源應(yīng)用率。在核心內(nèi)部的計算過程,我們另外引入兩層 Tiling 來實現(xiàn)并行操作。

以上為硬創(chuàng)公開課上集,下集敬請期待。

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

清華大學(xué)博士生涂鋒斌:設(shè)計神經(jīng)網(wǎng)絡(luò)硬件架構(gòu)時,我們在思考些什么?(上) | 雷鋒網(wǎng)公開課總結(jié)

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說