使用多個推理晶片進行設計的優勢與挑戰

作者 : Geoff Tate,Flex Logix執行長

過去兩年是推理晶片產業最繁忙的兩年。甚至有段時間,每隔一周都會有新公司推出新的最佳化方案。儘管這些創新都是偉大的,但問題在於大多數公司都不知道如何使用各種解決方案,因為他們無法確定哪個解決方案的性能優於另一個解決方案。

過去兩年是推理晶片產業最繁忙的兩年。甚至有段時間,每隔一周都會有新公司推出新的最佳化方案。儘管這些創新都是偉大的,但問題在於大多數公司都不知道如何使用各種解決方案,因為他們無法確定哪個解決方案的性能優於另一個解決方案。在這個新市場上,由於沒有一套既定的基準,各家公司不是必須儘快熟知推理晶片,就是必須相信各個供應商提供的性能資料。

大多數供應商提供的某些性能指標通常都是有利於其晶片表現的基準。一些供應商在討論TOPS和TOPS/Watt時沒有指定模型、批量大小或製程/電壓/溫度條件。其他供應商使用ResNet-50基準,這一模型相當簡單,遠低於人們的需求,因此它在評估推理選項方面的價值令人懷疑。

我們在這條漫長道路上探索了很久。眾多公司逐漸發現,在評測推理晶片性能時,最關鍵的是(1)高MAC利用率、(2)低功耗、(3)保持小尺寸。

知道如何評測——接下來呢?

在我們熟知推理晶片之間的性能評測比對方法之後,公司們開始提出在同一設計中同時使用多個推理晶片的優點(或缺點)的問題。簡而答之,只要推理晶片設計正確,使用多個推理晶片可以實現性能的線性提高,當考慮使用多個推理晶片時,可以拿高速公路打比方,你想要一條單行道公路還是一條四線道公路?

顯然,每家公司都想要一條四線道的高速公路,所以現在的問題變成了「如何在不造成交通堵塞的情況下成功打造這條四線道高速公路?」答案在於選擇正確的推理晶片。為解釋這一點,讓我們先瞭解神經網路模型。

神經網路被分解成多層,像ResNet-50有50層,YOLOv3有100多層,並且每層都會跟進上一層的啟動。因此,在第N層中,其輸出是進入N+1層的啟動值。它等待該層的進入,運算完成後,輸出是進入n+2層的啟動值,這會一直持續到最後一層,直到算出結果為止。請記住,此示例的初始輸入是影像或模型正在處理的任何資料集。

多個晶片何時發揮作用?

事實是,即便晶片具有一定的性能水準,總會有客戶希望獲得兩倍或四倍的性能。但在某些情況下,如果分析神經網路模型,這是有可能實現的,你只需要關注如何將模型分成兩個晶片或四個晶片。

多年來,這一直是平行處理面臨的問題,因為對於正在進行的處理,人們很難找出劃分方式並確保所有處理都會疊加,而不是造成性能縮減。

與平行處理和通用運算不同,使用推理晶片的好處在於,客戶通常提前知道他們是否需要使用兩個晶片,這樣編譯器就不必在運作中做出決定,它是在編譯時完成的。有了神經網路模型,一切都是完全可預測,因此可以分析並找出如何準確地拆分模型,以及它是否能在兩個晶片上良好地運行。

為了確保該模型可以在兩個或更多晶片上執行,必須逐層查看MAC的啟動值大小和數量。通常情況下,最大的啟動值出現在第一層,這意味著啟動值大小隨著層數的遞增而緩慢下降。

查看MAC的數量,以及每週期MAC完成數量也很重要。在大多數模型中,每個週期中完成的MAC數量通常與啟動值大小相關。這很重要,因為如果有兩個晶片,並且希望以最大頻率運作,則需要為每個晶片分配相同的工作負載。如果一個晶片完成了模型的大部分工作,而另一個晶片只完成了模型的一小部分工作,那麼將受到第一個晶片的傳輸量的限制。

如何在兩個晶片之間分割模型也很重要。這需要查看MAC的數量,因為這決定了工作負載的分配,還必須查看晶片之間傳遞的資訊。在某些情況下,需要分割模型,並使其能夠傳遞最小啟動值,以使所需通訊頻寬量和傳輸延遲最小化。若分割的模型導致啟動值非常大,則啟動值的傳輸會成為瓶頸,並限制雙晶片方案的性能。

圖1顯示了YOLOv3/Winograd/2 Megapixel影像的啟動輸出大小和累積的MAC逐層操作(繪製出卷積層)。為了平衡兩個晶片之間的工作量,該模型將削減約50%的累積MAC操作——此時,從一個晶片到另一個晶片的啟動值是1MB或2MB。在4個晶片之間分割,削減量大約為25%、50%和75%;注意,啟動值在開始時最大,所以在25%的削減點時,有4或8MB的啟動要傳輸。

20200121NT31P1
圖1 YOLOv3/Winograd/2Mpixel影像的啟動輸出值(藍條)和MAC操作累積(紅線),顯示了如何在多個晶片之間分配工作負載。(資料來源:Flex Logix)

性能工具

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

如果需要處理4個晶片,則將需更大的頻寬,因為模型第一個1/4部分的啟動值遠大於後面部分的啟動值。因此,可以借助投入的通訊資源將大量晶片連接在一起,但所有晶片,包括獨立晶片在內,也會因此承擔間接成本。

結論

使用多個推理晶片可以顯著提高性能,但前提是必須按照上述方法正確設計神經網路。回顧一下高速公路的比喻,就會發現,使用錯誤的晶片和神經網路模型很有可能會增加通訊量;如果一開始就使用正確的晶片,那你就步入正軌了。請謹記,最重要的是傳輸量,而不是TOPS或Res-Net50基準。一旦選擇了正確的推理晶片,就可以設計一個同樣強大的神經網路模型,為你的應用需求提供最佳的性能。

(參考原文: Advantages and Challenges of Designing with Multiple Inferencing Chips,by Geoff Tate)

本文同步刊登於EE Times Taiwan 2020年1月號雜誌

發表評論