我們在學習人工智能時常會遇到訓練(Training)和推理(Inference)兩個概念,這是人工智能實現的兩個環節。今天我們一起討論一下以下兩個問題。
訓練和推理的區別是什么?
1、訓練和推理的區別是什么?
訓練過程:又稱學習過程,是指通過大數據訓練出一個復雜的神經網絡模型,通過大量數據的訓練確定網絡中權重和偏置的值,使其能夠適應特定的功能。在訓練中需要調整神經網絡權重以使損失函數最小,通過反向傳播來執行訓練以更新每層中的權重。訓練過程需要較高的計算性能、需要海量的數據、訓練出的網絡具有一定通用性。
推理過程:又稱判斷過程,是指利用訓練好的模型,使用新數據推理出各種結論。推理是預測或推斷的過程,借助在訓練中已確定參數的神經網絡模型進行運算,利用輸入的新數據來一次性進行分類或輸出預測結果。
我們可以類比我們自己進行學習,并用自己學到的知識進行判斷的過程。學習的過程(訓練)是這樣的,當我們在學校開始學習一門新學科,為了掌握大量的知識,我們必須讀大量的書、專心聽老師講解,課后我們還要做大量的習題鞏固自己對知識的理解,并通過考試來驗證學習的結果,當我們考試通過后我們才算是完成了整個學習過程。每次考試,有的同學考分高,有的同學考分低,這個就是學習效果的差別了。當然,如果你不幸考試沒有通過,還要繼續重新學習,不斷提升你對知識的掌握程度,直到最終通過考試為止。而判斷的過程(推理)如下,我們應用所學的知識進行判斷,比如你從醫學專業畢業,開始了你治病救人的工作,這時候你對病人病因的判斷就是你在做“推理”的工作,你診斷100個病人,其中99個你都能準確的判斷出病因,大家都夸你是一個好醫生,學有所成、判斷準確。
綜上,人工智能的這種訓練過程和推理過程,和人類大腦學習過程和判斷的過程非常相似。通常需要花很長時間來學習(即訓練),而學會之后進行判斷(即推理)的時間只需要一剎那就行了。
2、區分人工智能訓練和推理芯片/產品需要關注哪些要點? 根據承擔任務的不同,AI芯片/產品可以分為兩類,分別是訓練AI芯片和推理AI芯片,他們的主要區別是以下幾點。
(1)部署的位置不一樣
大量的訓練芯片都在云端,即部署于數據中心內,利用海量的數據和龐大而復雜的神經網絡進行模型訓練,這類芯片都很復雜。目前,除了英偉達、超威、英特爾等芯片公司,谷歌等這些互聯網公司都有云端訓練芯片,國內華為、寒武紀還有好多初創公司也在做云端訓練芯片。
很多的推理芯片也會放置在云端,數據中心中很多服務器都會配置推理用的PCIE插卡,還有大量的推理芯片用在邊緣側(各種數據中心外的設備),如自動駕駛汽車、機器人、智能手機、無人機或物聯網設備,它們都是用訓練好的模型進行推理。布局云端推理芯片和邊緣側推理芯片的公司更多,產品種類豐富,定制化程度也會高很多。
(2)性能要求不一樣
準確度/精度要求不一樣
我們從性能角度評價一個人工智能系統的效果,可以通過準確度/精度這樣的指標,比如在100個樣本中,能預測了 85 個樣本,準確率為 85%,人工智能 算法是基于概率論和統計學的,不可能達到 100% 的預測準確率,并且實現越高的準確度需要付出越大的努力和代價越大。我們經常提到的數據精度,也會直接影響系統準確性,我們可以把數據的精度類比為照片中的像素數,像素越多則分辨率越高,同樣,精度越高,表征事物越準確。提高精度也是有代價的,它需要系統提供更多的內存,并要耗費更長的處理時間,比如有數據證明采用int4精度與int8相比具有59%的加速。
實際應用中,并不是準確度越高越好或支持的數據精度越高越好,不同的應用場景對于性能指標的要求也是不一樣的。以圖像識別應用為例,在零售店人員跟蹤中,識別經過某個過道的顧客,這種應用5% ~10%的誤差是可以接受的;但是在醫療診斷或汽車視覺的等應用中,準確度的要求就要高很多,準確度低了就無法應用。總之,不同應用對于準確度和精度的容忍度是不一樣的,需要我們進行權衡。
回到推理和訓練產品,選擇時就有很大區別,比如在邊緣側的推理產品中,由于它對準確度的要求不高,我們可能只要支持int8甚至更低的精度就可以了。但是訓練產品,比如用于高性能計算(HPC)場景中,必須有能力實現高的準確度,支持的數據精度范圍也需要更加豐富,比如需要支持FP32、FP64這樣精度的數據。10月7日美國對我國新一期的芯片限制法案中,就有一條是對我們支持FP64計算類芯片的研發和生產進行限制。
計算量要求不一樣
訓練需要密集的計算,通過神經網絡算出結果后,如果發現錯誤或未達到預期,這時這個錯誤會通過網絡層反向傳播回來(參考 機器學習中的函數(3) - “梯度下降”走捷徑,“BP算法”提效率 ),該網絡需要嘗試做出新的推測,在每一次嘗試中,它都要調整大量的參數,還必須兼顧其它屬性。再次做出推測后再次校驗,通過一次又一次循環往返,直到其得到“最優”的權重配置,達成預期的正確答案。如今,神經網絡復雜度越來越高,一個網絡的參數可以達到百萬級以上,因此每一次調整都需要進行大量的計算。曾在斯坦福大學做過研究,在谷歌和百度都任職過的吳恩達這樣舉例“訓練一個百度的漢語語音識別模型不僅需要4TB的訓練數據,而且在整個訓練周期中還需要20 exaflops(百億億次浮點運算)的算力”,訓練是一個消耗巨量算力的怪獸。 推理是利用訓練好的模型,使用新數據推理出各種結論,它是借助神經網絡模型進行運算,利用輸入的新數據“一次性”獲得正確結論的過程,他不需要和訓練一樣需要循環往復的調整參數,因此對算力的需求也會低很多。
存儲要求不一樣
訓練的時候反向調整會應用到前饋網絡計算的中間結果,所以需要很大的顯存,訓練的芯片存儲的設計和使用的方案是復雜的。訓練好的模型,需要使用大量數據,大量數據要讀入顯存,顯存帶寬要足夠大、時延要足夠低。同時,我們在神經網絡的訓練中使用梯度下降算法,顯存中除了加載模型參數,還需要保存梯度信息的中間狀態,因此訓練相比于推理,顯存需求大大增加,顯存足夠大才能運轉起來。
綜上,訓練和推理的芯片/產品部署的位置不一樣,對于性能準確度和精度的要求不一樣,對于算力能力和存儲大小的要求也不一樣,除了這些關鍵指標差異外。用于訓練場景的芯片高精度、高吞吐量,因此單芯片功耗大(甚至可以達到300W),這種芯片成本也很高;用于云端推理的芯片,更加關注算力、時延等的平衡,對功耗成本也非常敏感。參考英偉達的產品,它每一代產品并沒有開發專門的推理卡,其使用的是訓練卡的低配版本來做推理的。但邊緣測應用推理芯片,就一定要結合應用場景,做到低功耗、低成本。
3、我們如何去學習理解人工智能里的訓練和推理?
要學習理解人工智能,訓練和推理相關的知識是必須都要掌握的,如果你只學習了“訓練”中如何搭建網絡,參數調整等,那么你就無法了解結合實際應用“推理”是如何發揮作用的,接不了地氣;同樣,如果你只做過“推理”的操作,那么你也不能理解在實現推理判斷之前,需要做哪些準備工作,進行大量的計算,才能訓練出一個可用的、好的神經網絡。 審核編輯:郭婷
-
神經網絡
+關注
關注
42文章
4779瀏覽量
101032 -
人工智能
+關注
關注
1794文章
47622瀏覽量
239586
原文標題:人工智能中訓練和推理的區別是什么?
文章出處:【微信號:Hardware_10W,微信公眾號:硬件十萬個為什么】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論