使用多個推理晶元需要仔細規劃

2022-02-03 20:31:32 字數 2459 閱讀 6535

使用多個推理晶元需要仔細規劃

using multiple inference chips takes careful planning

在過去的兩年裡,推斷晶元業務非常繁忙。有一段時間,似乎每隔一周又有一家公司推出了一種新的更好的解決方案。雖然所有這些創新都是偉大的,但問題是大多數公司不知道如何利用各種解決方案,因為無法分辨出哪種方案比另一種方案表現更好。在這個新的市場中,由於沒有一套成熟的基準,要麼必須非常迅速地在推理晶元上跟上速度,要麼必須相信各個**商提供的效能資料。

大多數**商都提供了某種型別的效能資料,通常是任何讓看起來不錯的基準。一些**商在談到tops和tops/watt時沒有說明型號、批量大小或工藝/電壓/溫度條件。其人使用resnet-50基準測試,這是乙個比大多數人需要的簡單得多的模型,因此在評估推理選項方面的價值是值得懷疑的。

已經從早期的日子走了很長的路。公司已經慢慢發現,衡量推理晶元效能真正重要的是1)高mac利用率,2)低功耗,3)需要保持所有東西都很小。

知道如何衡量-下一步是什麼?

既然對如何衡量乙個推理晶元相對於另乙個推理晶元的效能有了乙個相當好的想法,公司現在正在問在同乙個設計中同時使用多個推理晶元有什麼優點(或缺點)。簡單的答案是,使用多個推理晶元,當推理晶元設計正確時,可以實現效能的線性提高。當考慮使用多個推理晶元時,高速公路的模擬並不遙遠。公司想要單車道高速公路還是四車道高速公路?

顯然,每個公司都希望有一條四車道高速公路,所以現在的問題變成了「如何在不造成交通和瓶頸的情況下提供這條四車道的高速公路?」?答案取決於選擇正確的推斷晶元。為了解釋這個問題,來看看神經網路模型。

神經網路被分解成多個層次。像resnet-50這樣的層有50層,yolov3層有100多層,每層都從上一層獲得啟用。因此,在層n中,輸出是進入層n+1的啟用。等待該層進入,計算完成,輸出是進入n+2層的啟用。這會一直持續到層的長度,直到最終得到結果。請記住,此示例的初始輸入是影象或模型正在處理的任何資料集。

當多個晶元發揮作用時

實際情況是,如果有乙個具有一定效能水平的晶元,總有乙個客戶想要兩倍或四倍的效能。如果分析神經網路模型,在某些情況下是有可能實現的。只需要看看如何在兩個晶元或四個晶元之間分割模型。

多年來,這一直是並行處理的乙個問題,因為很難找出如何劃分正在進行的任何處理,並確保所有處理都累加起來,而不是在效能方面被減去。

與並行處理和通用計算不同,推理晶元的好處在於,客戶通常提前知道是否想使用兩個晶元,這樣編譯器就不必在執行時就可以知道了——這是在編譯時完成的。有了神經網路模型,一切都是完全可**的,所以可以分析和弄清楚如何分割模型,以及是否能在兩個晶元上執行良好。

為了確保該模型可以在兩個或更多的晶元上執行,必須逐層檢視mac的啟用大小和數量。通常情況下,最大的啟用發生在最早的層。這意味著啟用大小會隨著層數的增加而緩慢下降。

檢視mac的數量以及每個週期內完成的mac數量也很重要。在大多數模型中,每個週期內完成的mac的數量通常與啟用大小相關。這一點很重要,因為如果有兩個晶元,並且希望以最大頻率執行,則需要為每個晶元提供相同的工作負載。如果乙個晶元完成了模型的大部分,而另乙個晶元只完成了模型的一小部分,那麼將受到第乙個晶元的吞吐量的限制。

如何在兩個晶元之間分割模型也很重要。需要檢視mac的數量,因為這決定了工作負載的分布。還得看看籌碼之間傳遞的是什麼。在某些情況下,需要將模型切片到傳遞的啟用盡可能小的位置,以便所需的通訊頻寬量和傳輸延遲最小。如果在啟用非常大的點上對模型進行切片,啟用的傳輸可能成為限制雙晶元解決方案效能的瓶頸。

下圖顯示了yolov3、winograd、200萬畫素影象的啟用輸出大小和逐層累積的mac操作(繪製了卷積層)。為了平衡兩個晶元之間的工作負載,模型將減少大約50%的累計mac操作-此時,從乙個晶元到另乙個晶元的啟用是1mb或2mb。要在4個晶元之間分割,切割大約為25%、50%和75%;請注意,啟用大小在開始時是最大的,因此25%的切割點有4個或8mb的啟用要通過。

yolov3/winograd/2mpixel影象的啟用輸出大小(藍條)和逐層累積mac操作(紅線),顯示工作負載如何在多個晶元之間分配。

效能工具

幸運的是,現在可以使用效能工具來確保高吞吐量。事實上,模擬單個晶元效能的同一工具可以推廣到兩個晶元的效能模型。雖然任何給定層的效能都是完全相同的,但問題是資料傳輸如何影響效能。建模工具需要考慮到這一點,因為如果所需的頻寬不夠,那麼頻寬將限制吞吐量。

如果做四個晶元,需要更大的頻寬,因為模型第一季度的啟用往往比模型後期的啟用更大。因此,在通訊資源上的投資將允許使用更多的晶元,但這將是乙個開銷,所有的晶元都必須承擔,即使是獨立的晶元。

結論使用多個推斷晶元可以顯著提高效能,但前提是神經網路的設計如上所述。如果回顧一下高速公路的模擬,那麼使用錯誤的晶元和錯誤的神經網路模型,會有很多機會讓交通堵塞。如果從正確的晶元開始,就在正確的軌道上。請記住,最重要的是吞吐量,而不是tops或res-net50基準測試。一旦選擇了正確的推理晶元,就可以設計乙個同樣強大的神經網路模型,為應用程式提供最大的效能。

藍橋杯 試題 基礎練習 晶元測試(推理)

問題描述 有n 2 n 20 塊晶元,有好有壞,已知好晶元比壞晶元多。每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果 即此結果與被測試晶元實際的好壞無關 給出所有晶元的測試結果,問哪些晶元是好晶元。輸入格式...

bert 推理加速 使用tensorRt

之前對bert輕量化,視訊記憶體占用減少一半。但是推理速度仍然沒多大變化。因此 計畫通過tensorrt完成模型的推理加速。1.首先,了解一下tensortr是幹什麼的,這篇文章寫得很好。本人猜想,nvidia官方提出tensorrt的目的是為了更好的融合深度學習框架和gpu.tensorflow ...

16 常用晶元使用

adm3485的使用手冊 rs 485介面晶元採用的是adm3485。adm3485採用單一電源 3 3 v工作,半雙工通訊方式,可完成將ttl電平轉換為 rs 485電平的功能。adm34185晶元的結構和引腳都非常簡單,內部含有乙個驅動器和乙個接收器,ro和di端分別為接收器的輸出端和驅動器的輸...