AI的「訓練」與「推論」會往哪個方向發展?

作者 : 黃燁鋒,EE Times China

Graphcore理想中的「機器智慧」硬體,是能夠學習並且使用已習得的知識來構建系統的,這樣機器智慧系統才有可能提升,並且提供越來越好的結果...

筆者去年在與英國新創公司Graphcore執行長Nigel Toon的溝通中,他有數度談到AI的「訓練」(training)和推論(inference,或譯為「推理」)技術本質上沒有什麼區別;」似乎在多番探討中,Toon都有意無意地提及,訓練和推論不應做過分嚴格的區分。

當時Graphcore資深副總裁暨中國區總經理盧濤也談到:「未來的應用,是在不停地訓練和推進這個模型。有客戶之前提到online training或者streaming training的說法。一般大家講的訓練都是offline的,資料哪來,訓練好之後就不會online了。但現在,很多應用可能會轉為online training和inference。就是一邊在用,同時又有新的資料進來,一邊同時更新知識庫。」

這兩段話,是什麼意思呢?

Graphcore去年針對IPU晶片的宣傳資料中也提到了這麼一段:「使用者可以用相同IPU晶片進行推論或訓練;從架構的角度來看,這對我們非常重要,因為隨著機器學習演進,系統將能夠從經驗中學習。推論性能表現的關鍵包括低延遲、能使用小模型、小批次(small batches),以及可能會嘗試導入稀疏性(sparsity)的訓練模型;IPU可以有效地完成所有這些事情。」

「因此在一個4U主機殼中,16顆IPU共同合作協作進行訓練,每顆IPU可以執行獨立的推論任務,並由一個CPU上執行的虛擬機器來控制,最終你會得到一個可用於訓練的硬體。因此一旦模型被訓練、佈署,隨著模型演進且我們開始想要從經驗中學習時,就可以採用相同硬體。」

AI的訓練與推論

消費使用者知道AI或者「卷積神經網路」,應該是從當代手機產品上,手機SoC內可能會有個專門的AI單元——Arm和華為(Huawei)稱其為NPU,Apple則稱其為NE。通常我們說,執行神經網路任務有兩個關鍵點,分別就是神經網路模型的執行與推論。

訓練過程,就和神經網路學習的過程一樣。而訓練後的神經網路,投入使用,就是將其所學應用到具體的場景中,比如說識別圖片、語音——這個過程,就是推論的過程。有了訓練才有了推論。

在訓練神經網路的過程中,會有訓練資料首先加入到網路第一層,單個神經元基於執行的任務,為輸入分配權重。比如說在圖片識別的網路中,第一層會去找畫面物件邊緣;隨後查看邊緣構成的形狀——長方形或圓形;第三層再去發現特定的特徵,比如畫面中的眼睛、鼻子…直至最後一層,最終輸出是由所有產生的權重決定的。

比較典型的例子是貓圖片的識別:給神經網路輸入海量的訓練圖片,神經網路需要做是不是貓的判斷——訓練演算法的回應僅有「正確」和「錯誤」兩種。如果演算法告訴神經網路某判斷「錯誤」,則這個錯誤會透過神經網路層級回傳,網路就需要做其他的嘗試了。每次嘗試,都需要考慮其他屬性;並給每層檢查的屬性加權重。直到最終有了正確的權重,每次都能取得正確答案。

Graphcore執行長Nigel Toon

Graphcore執行長Nigel Toon

那麼這樣一來就有了資料結構和所有的權重,是透過「學習」的過程獲得的。整個過程的最大特點,就是算力需求非常大。

而將小批量、真實世界的資料交給神經網路,並得到非常快速的回答——這就是推論過程。在上例中,就是給一張全新的照片,讓已經訓練過的神經網路來判斷這張圖中是否有貓。但通常,推論部分在應付巨型的神經網路時,在應用中要確保速度和延遲,就需要有一些方案來對其「剪枝」,例如一部分神經網路不啟動;或者將神經網路多層級融合成單獨的運算步驟。

推論過程,通常以更為簡單、最佳化的運作性能,來獲得相近的預測精度。手機上的NPU,以及許多配備ADAS系統的汽車所採用的AI晶片,如果按照這樣的劃分來看,擔綱的角色就是做本地推論。推論也是進行高度平行運算,但算力、精度要求通常會比訓練低很多。

說推論,可能太狹隘了

Toon多年前曾經專門撰文提過,訓練和推論的問題。Graphcore的IPU同時支援訓練和推論,不過「如果你根據訓練和推論來看IPU,那麼你可能對機器學習硬體有些誤解。對於IPU是針對訓練還是推論的問題,我的回答可能會讓很多人驚訝。」

Graphcore官方比較喜歡提「機器智慧」這個詞,稱其IPU產品為機器智慧硬體,以及「我們設計IPU,幫助變革者們開發新一代機器智慧系統;」在此之前此前筆者沒能很充分地理解這個詞,基本上將之與傳統機器學習方案劃等號。或許針對這個詞,一個優解就在Graphcore對於訓練和推論的理解上。

Toon當時曾提到:「如今的機器學習系統,相對而言仍然太過簡單;」常規的方案如卷積神經網路,前文所述比如訓練一個分類系統,那麼系統就能相對精準地識別圖片、文字等物件了。整個過程需要大量標記資料,而且更為重要的是,由於訓練和推論的分開,系統並不會從新的經驗中有所學習。

而Graphcore理想中的「機器智慧」硬體,是能夠學習並且使用已習得的知識來構建系統的,這樣「機器智慧系統才有可能提升,並且提供越來越好的結果;」Toon表示:「這些系統不應當只是訓練,而應當是即便在部署之後,都仍然能夠快速進化,成為學習系統。」

「推論,是比較狹隘的一種表達方式;推論實際上可以快速發展成複雜得多的機器學習系統。”舉例來說,在自動駕駛領域,我們期望汽車能夠持續學習我們在路上遭遇的各種新狀況,如果有一輛自動駕駛汽車發現有顆球滾到了馬路上,後面還跟著個孩子,我們期望自動駕駛系統能夠學習到,在馬路上出現一顆皮球,是極有可能意味著後面跟著個孩子的。」

「而這個新知識不應當只是放在一輛車上,我們期望能夠分享這個知識,例如可能當天晚上就連接到雲端的學習系統,知識系統就獲得了更新。如此一來,第二天所有的車輛都能更新模型,獲得最新的理解。理想情況下,我們期望其他的車輛,也能在看到一輛玩具拖拉機突然出現在馬路上的時候,也能夠意識到後面可能跟著一個孩子——跟它看到一顆球的時候做出一樣的反應。」

這番描述實際上就相當清晰地表明瞭,為什麼Toon認為「推論」在機器智慧應用上,是個比較片面、狹隘的詞彙,因為在他看來部署機器智慧才是正確的方向。

 

 

機器智慧的理想硬體形態

那麼如果不談推論,而用像上面這種概念的機器智慧系統,那麼實際的硬體部署是什麼樣的呢?Toon先前同樣有給出自己的答案。在理想情況下,機器智慧運算應當是在雲端進行的,而邊緣位置則進行「智慧處理」,可以是嵌入到端側產品的,也可以是邊緣伺服器上的——針對某些特定的任務提供本地的支援。

雲端需要支援許多不同的使用者和不同的智慧任務——並且在雲端高度平行運作。在更為具體的設備部署上,算力需要具備相當的彈性——相信這應該也是現如今二代IPU,具備相當程度彈性擴展能力的重要原因。

而在邊緣和終端,為了確保即時回應,系統仍然要求「智慧處理」的硬體部署。例如自動駕駛車輛,「L5自動駕駛需要大量的本地智慧處理。透過行動網路連結到雲端是不切實際的,系統需要作出即時回應,處理一些突發狀況,比如在發生危險時快速決策。那麼車內本身就需要相當的智慧處理算力。

但如前所述,作為機器智慧系統的組成部分,本地仍然參與學習的過程,並且也能從雲端取得更多的知識。

Toon表示:「創新,還在以相當快的步伐繼續,我們很快也會有全新的硬體平台,讓機器學習領域的革新者們推進邊界。現如今訓練,並在此後推論的方式,會讓位給機器智慧系統。機器智慧系統在部署之後,能夠學習並持續進化。機器智慧將戲劇性地改變運算。」

實際上,我們現如今看到越來越多的AI系統,本身就在朝著這個方向發展,即便可能在稱呼上不叫「機器智慧」或者延續了訓練與推論的說法傳統。不過當現在回顧開頭那幾段文字,是否感覺已經十分明朗?尤其是「系統將能夠從經驗中學習」,以及同時支援訓練和推論。

 

本文同步刊登於簡體中文版《電子工程專輯》雜誌2020年12月號

 

 

 

加入我們官方帳號LINE@,最新消息一手掌握!

發表評論