如何選擇AI晶片?

半導體行業觀察發表於2020-06-28
AI 應用有多種可能,主要的挑戰是為正確的目的選擇合適的解決方案,並認識到,僅因為 AI 可以應用於特定的流程或問題,並不意味著應該這樣做。儘管 AI 被認為是解決幾乎所有問題的理想解決方案,但成功應用有三個主要要求。

首先,需要有足夠數量的優質資料。僅僅因為有資料並不意味著那些資料可以解決關注的問題。實際上,即使使用最好的工具,太多不相關的資料會增加資料處理的難度與成本。假設有可用資料,問題就變成了需要花費多少努力來清理資料,並應用它。

這比看起來要難得多,因為設計 AI 應用時,基本上是在處理移動中的目標。在軟體開發,這是正常的,因為在多數情況下可以對軟體進行更新和打補丁。對於硬體工程師,這需要了解軟硬分工的界線,因為在硬體出現故障的地方,軟體需要進行更正。在軟體和硬體相互依賴程度更高的設計中,它會影響所有方面,從效能和功耗、到整體可靠性。

第二個要求是問題本身必須能夠從 AI 中受益。如果基於 AI 模型開發演算法或測試平臺的時間過長,則不一定會使設計受益。更糟糕的是,如果 AI 模型存在缺陷,則很難回溯並找出問題所在,因為 AI 在很大程度上是不透明的。AI的思維是持續自適應和最佳化,會創造一個不可預測結果的變數。

與更傳統的方法相比,使用 AI 必須有明顯的好處。但是瞭解 AI 可以帶來什麼好處,以及要實現這些好處將需要多少工作,並不單純。它具有許多經濟變數,可能隨專案、公司以及工程團隊的專業知識而變化。

第三個要求是結果必須是可重複的、有結論的,這意味著它們需要以沒有 AI 的結果為比較基準。這可能是一個漫長的過程。隨著晶片變得越來越複雜,從佈局到驗證和除錯。AI 對於查詢和理解大量資料中的模式非常有用,尤其是在不同團隊協作的情形。但是要了解 AI 的真正價值需要花費時間,在半定製的晶片中 -- 銷售量在數十萬或數百萬 -- 市場機會不一定允許這個選擇。

構建一種晶片,將其整合到 10 億部智慧手機中,甚至跨平臺的晶片,是一回事。將 AI 整合到一個少量生產的特定應用晶片中是另一回事。證明 AI 及其迭代的價值不成問題,關鍵在各種 AI 在特定設計中的應用。面臨的挑戰是:知道何時何地應用它,到目前為止,這更像是一門藝術。

有數百個(甚至數千個)AI 晶片初創公司,以及成熟半導體公司中的數十個專案,正在建立 AI 晶片或將 AI 技術嵌入產品線中。這些晶片中大多數都在設計中,尚未批次生產,有些會失敗。在過去的 12 到 18 個月中,訓練演算法持續發展變化,如何選擇最佳的晶片架構以適用多個終端市場和用例,是一大挑戰。這使任何單一晶片架構很難在很長一段時間內佔據主導地位。

機器學習可以在不同處理器上執行,選擇取決於關注的指標。現存的 CPU 就可執行輕量的機器學習。資料中心的訓練晶片對速度要求極高,技術與製程門檻高。與多元化應用結合的推理晶片百花齊放,在邊緣進行更多的推理,可降低延遲與提高資料安全,與資料中心伺服器或大型 GPU 相比,邊緣推理所需的功耗需要低幾個數量級。即使談論邊緣,可能涵蓋從底層物聯網 (IoT) 到邊緣資料中心,需求差異很大,工業 IoT 與消費市場的 IoT 也不同,後者例如 AR/VR 與可穿戴裝置,通常能耗越低越好 。

不同 AI 應用的工作負載差異決定晶片架構的選擇。例如,許多以音訊為重點的機器學習網路都用繁重的標量 (Scalar),而矩陣 (Matrix) 相對較輕,而物件檢測 (Object Detection) 演算法多有繁重的矩陣,但在標量需求相當輕。演算法不同,同為線性代數矩陣仍有不同密度,使用密集矩陣的深度學習,例如醫療影像處理辨識,其最適處理器架構作為稀疏矩陣計算則非最佳化。另外,應用的規模也是一個考慮因素。

架構沒有一體適用。設計考量包括功耗,效能,面積和資料頻寬的特別要求,必需評估有形與無形的完整成本,選擇 AI 晶片要考慮的,除了晶片本身的成本,還包括以下與總擁有成本 (Total Cost of Ownership) 相關之因素。
  • 效能表現:晶片的規格,這是基本;

  • 微處理器的指令集架構:對於軟體與軟體的整合程度與特別運算至關重要; 實際影響,例如,較低位解析度的處理對於AI很有用,它可以提高效率,而不會顯著降低準確性;另外,邊緣計算的特別需求,例如:支援網路連線與異構計算的負載平衡;

  • 是否有基準 (Benchmark) 的 AI 效能資料:例如 MLPerf,如果沒有則需自己實驗比較;

  • AI 用例適配:如前述,根據應用需求而異,主要分為訓練、推理、與實時持續學習 (RealTime Learning) 的情形;

  • 軟體堆疊的成熟度:它必須提供對多種開發語言的支援。傳統上,晶片嵌入式應用程式支援 C / C ++,但 AI 應用程式需要支援的主要是 Python,將來 Julia 的地位會提高; 需有系列開發工具,供程式設計師編寫程式碼,建模,模擬,測試,對目標晶片上應用程式作除錯; 另外,該晶片與生態系統與工具集整合的程度 -- 對 AI 流行框架/庫的支援,例如:TensorFlowMXNet 等 -- 這意味著應用開發人員無需學習新知識; 能支援異構計算方法 -- 應用程式可以在多個微處理器執行,以利用不同優勢,有開發環境無縫支援這些不同型別的處理器;

  • 功耗 (Power) 要求:除了邊緣 AI 的應用需要極低能耗,資料中心的訓練晶片能耗也是重要成本因子;

  • 記憶體效率:資料儲存單元與計算單元之間的傳輸效率已成 AI 計算的瓶頸,許多新的架構提出,以求降低這個傳輸時間,例如:Processor-in-Memory (PIM);

  • 晶片連線:片上連線決定資料流動速度,稱為片上網路(NoC)的新型Bus 受關注。片外通訊在系統級別發揮作用,是 AI 晶片組的關鍵規格標準。DDR5 或 HBM 是流行的儲存器介面。與 CPU 溝通經常使用 PCI Express。OpenCAPI 則是 CPU 和加速器晶片之間的溝通。

  • 演算法變更週期速度:硬連線的演算法部分越多,做改變要花費的時間就越長。改版需要不僅來自糾錯,也可能來自市場與環境變化,所以演算法需更新。所以這是一個重要因子。

  • 晶片安全:安全已成為晶片使用中考慮因素中越來越重要的一部分。晶片需要至少與安全鏈的其他部分一樣強大。這可能涉及將安全憑證嵌入硬體。

相關文章