tft每日頭條

 > 生活

 > 機器學習對内存有要求嗎

機器學習對内存有要求嗎

生活 更新时间:2024-07-30 15:22:01

機器之心專欄

作者:李飛

随着深度學習的不斷發展,計算能力得到了深度學習社區越來越多的注意。任何深度學習模型,歸根到底都是需要跑在設備上的,而模型對設備性能的要求越低,則能得到越多的運用——千萬不能讓硬件成為了模型普及的瓶頸!

說到模型對于硬件的要求,大家第一個想到的就是計算量,即一個深度學習模型需要多少次計算才能完成一次前饋。然而,除了運算量之外,模型對于内存帶寬的需求也是影響實際計算所需要時間的重要參數。我們下面會看到,在内存帶寬有限的情況下,僅僅縮小計算量并不能讓計算時間等比例下降!

機器學習對内存有要求嗎(内存帶寬與計算能力)1

内存帶寬對于硬件系統的性能影響如上圖所示。如果把内存比做瓶子,運算單元比作杯子,那麼數據就是瓶子裡的各色顆粒,而内存接口就是瓶口,通過瓶口數據才能進入杯子被消費(處理)掉。而内存帶寬就是瓶口的寬度了。瓶口寬度越窄,則數據需要越多時間才能進入杯子(處理單元)。正所謂「巧婦難為無米之炊」,如果帶寬有限,那麼即使處理單元無限快,在大多數時候也是處理單元在空等數據,造成了計算力的浪費。

顯然,一個計算系統的内存帶寬如果很寬,則算法不需要運算強度很大也能輕易碰到計算能力上限決定的「屋頂」。在下圖中,計算能力不變,而随着内存帶寬的上升,達到計算力屋頂所需的運算強度也越低。

機器學習對内存有要求嗎(内存帶寬與計算能力)2

Roofline 模型在算法-硬件協同設計中非常有用,可以确定算法和硬件優化的方向:到底應該增加内存帶寬/減小内存帶寬需求,還是提升計算能力/降低計算量?如果算法在 roofline 曲線的上升區,那麼我們應該增加内存帶寬/減小内存帶寬需求,提升計算能力/降低計算量對于這類情況并沒有幫助。反之亦然。

我們來看一個實際的例子,比較一下各種機器學習算法在 roofline 模型上所處的位置。下圖取自 Google 的 TPU 論文《In-Datacenter Performance Analysis of a Tensor Processing Unit》。由圖中可見,LSTM 算法的運算強度最低,所以被卡在了 roofline 模型的上升區中間的地方,即 TPU 在執行 LSTM 算法的時候,由于内存帶寬限制所以性能隻有 3TOPS 左右,僅為峰值性能(90TOPS)的三十分之一。經典全聯接神經網絡(multi-layer perceptrons, MLP)的運算強度略好于 LSTM,也被卡在 roofline 曲線的上升區,實際執行性能大約在 10TOPS 左右。而卷積神經網絡模型,尤其是 CNN0,由于卷積神經網絡中能實現卷積核複用,因此運算強度非常高,于是可以非常接近 TPU roofline 曲線的屋頂(86 TOPS)。CNN1 模型雖然運算強度也很高,但是由于種種其他原因(論文中表示是由于 CNN1 模型的特征深度較淺無法完全利用 TPU 的計算單元)無法到達屋頂。這個例子又讓我們看到了硬件-算法協同設計時的另一個要點:除了内存帶寬之外還有「其他原因」可能讓算法無法到達屋頂,我們要盡量減小這些「其他因素」!

機器學習對内存有要求嗎(内存帶寬與計算能力)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved