人隻不過是一根葦草,是自然界最脆弱的東西;但他是一根能思想的葦草. --- 帕斯卡
人類一思考,上帝就發笑 --- 米蘭昆德拉
GTC是Nvidia組織的關于GPU技術的大會,随着深度學習的蓬勃發展,3D技術的演進及并行計算等已經慢慢地成為了較成熟的技術而較少地展示;更多的是AI及深度學習在各個領域,各個層面的布局、應用及展示。GTC的舉辦地從最開始的美國矽谷一個地方發展到現在的包括中國,歐洲,日本等7個地方。這次中國的GTC(11/20~11/22)從以往的舉辦地北京移師到蘇州金雞湖,參會人數破紀錄的超過了5000人。帶着一個并行計算演講的任務,比較全情投入地參加了3天的大會,在此,做一些記錄及思考,偏主觀個人經驗及感受,但也希望能給大家帶來一點了解及思考。
1 自動駕駛的workshop
汽車是一個巨大的工業化産業,技術含量及附加值較高,覆寫的産業長,使用者規模大且使用頻繁,是很多大城市及國家的重點産業。同時,全世界每年都會有上百萬人(WHO2015年報告為125萬)因為車禍而死亡,相應的财産損失更是萬億級别(用汽車保費*車輛數等進行簡單估計:))。是以,汽車自動駕駛可以算是目前人工智能領域最大的一個商業研發場景。在11/20的workshop中,Nvidia邀請了中國幾十家自動駕駛相關廠商的上百人,包括上汽,吉利,小鵬等參加了這個"高端産品推介會”。在晶片領域,譬如早期顯示卡的筆記本市場,赢得的一個筆記本産品叫一個design win,在汽車自動駕駛領域,雖然更加複雜,Nvidia也正通過優秀的産品參考設計,舉辦類似的workshop等等,慢慢地在争取越來越多的汽車企業及方案提供商采樣Nvidia的晶片及系統,下圖是目前Nvidia公布的一些合作夥伴。

1.1 超強計算力的底層硬體
AI需要比較強大的計算能力,自動駕駛根據自動程度劃分為L1到L5(完全不需要人的操作)5個等級,Nvidia提供的最新的AI平台着力于L2到L4的計算能力支援。根據不同的需求,它分為Xavier-S, Xavier和Pegasus 3個計算平台,具體的一些性能參數如下:
從上述性能可以看出,Pegasus平台比史上最強核彈V100的AI計算能力還要強悍1倍以上(因為op不是fp16等了)。
1.2 強大豐富的軟體生态
硬體和軟體是互相依存的,沒有強大的軟體,硬體的性能發揮不出來;沒有豐富的軟體生态,硬體也沒有太多的發揮空間。在汽車自動駕駛領域更是如此。Nvidia是一家晶片公司,計算公司,但随着和汽車領域的互相合作(差不多3,4年左右的樣子),對自動駕駛有了越來越深的了解。它把整個軟體棧分為 Drive OS,DriveWorks和Driving Application3個層次,具體如下:
- Drive OS :最底層,也是通用Nvidia GPU的支援,包括driver,cuda,及TensorRT等,是必不可少的部分。
- DriveWorks :中間層,是對汽車這個特别場景設計的硬體适配層,汽車自動駕駛涉及的感覺器件包括Radar, Lidar, IMU, GPS和CAN等,這一層有對于這些典型硬體的參考使用設計。這層使用者可以使用自己的初始化程式及算法等;對于參考設計不支援的感覺器件,也需要使用者在這一層做針對性的設計。
- Driving Applicatio n:上層,主要是Drive AV和Drive IX。Drive AV負責感覺車外的世界,譬如說周圍的汽車,可行駛的路線及交通信号燈等;Drive IX負責感覺車内的情況,主要是駕駛員的指令及狀态等。這一層使用者可以有更加個性化多樣化的設計。
1.3 更貼切的設計理念
Nvidia根據在汽車自動駕駛上經驗的不停積累,在解決具體的問題時,設計理念,思路等也有了一些轉變:
- 最重要的是安全 :早期的自動駕駛側重在提供端到端的解決方案,就是根據汽車周圍的各種環境情況,直接給出汽車的駕駛決策。現在發現,即使這種端到端的方案性能有可能是最好的,但肯定不是最合适的。自動駕駛是這麼一個人命關天的大事情,而機器學習很多時候又有很多的不可解釋性。是以,整體的解決方案,一定要做到可控并且讓乘客可了解。是以,AI的結果,需要具體到周圍(至少180度)的車輛,接下來要運作的path,前方的sign等等,需要給出具體的識别并且顯示出來,讓人也能了解它是怎麼想怎麼開的。
- 不僅僅關注外部 :原則上自動駕駛隻需要關注外部的環境就好,但在目前L2~L4階段,也需要對車輛内部的資訊進行響應,監控及回報。譬如需要對司機的各種語音手勢等指令做出恰當的反應,同時也需要對司機的狀态進行監控及回報,特别的司機是不是處在疲勞狀态,眼睛是否在有效的檢視行駛狀态等等。
- 通過遊戲等進行極限測試 :現實中比較難以得到各種極端情況來測試自動駕駛系統的表現,可以通過遊戲等場景來進行模拟測試,也測試為主,訓練為輔(用遊戲的場景來大規模訓練不利于真實的場景)。遊戲仿真包括SIL(software in loop)和HIL(Hardware in loop)兩種。海量訓練的資料基本還是用真實的資料,然後可以分階段,早期有監督的還是需要采用大量的人(1000+)進行标注,到中後期以check及關注感興趣區域為主,這時候可以用一些算法做輔助。
此外硬體安全也是特别重要的,Nvidia專門開發了IST軟體不間斷的對硬體進行safety測試。
1.4 用深度學習加強備援設計
因為安全是至關重要的,很有必要進行多元度的備援設計。在汽車駕駛過程中,最重要的2個點是:距離前方汽車的距離,及前方汽車和目前汽車的相對速度。普通的會用Radar,Lidar等進行測距,較常見的也會通過2個攝像頭通過3維重建等計算距離,計算相對速度等。
但在現實情況中,有可能攝像頭會有微小的上下左右的移動或者換動,一方面需要對這些硬體進行不定期的軟體矯正等。另外一方面Nvidia給出了一些其它嘗試,直接用深度學習網絡識别得到距離和相對速度,從他們給出的結果來看,較近距離(<~60m)時網絡識别還是比較準的。是以,在實際情況中,可以用多種方法進行投票,然後找一個相對合理又偏保守一點的結果。
2 GTC Keynote
黃教主的演講曆來是GTC的重頭戲,在開場前30分鐘,排隊已經排成下圖這個樣子了,信仰:)。最終整個3000人的演講廳無意外的座無虛席。然後Jensen的着裝及演講風格還是一如既往的(
優酷的視訊連結,從學口語及演講角度也可以感受下),然後我個人的3點特别感受是:
2.1 AI在GPU上的應用
平時大家都是用GPU在其它的應用場景上做AI的應用,這一次,Nvidia在自己GPU渲染上也終于使用上了AI,并且效果還很不錯(如上圖)。這個技術叫做深度學習超級采樣(DLSS)技術。基于 Turing 架構的 DLSS 由兩個模型組成,其中一個模型經過訓練後可根據原始圖像生成超高畫質圖像,另一個經過訓練後可實作超分辨率并以此作為輸出。經由Tensor Core 的計算,RTX 系列顯示卡可以同時實作高畫質和高分辨率。
AI做為一種基礎的設施及能力(将來是要和最厲害的人在除了想象思考力之外的所有能力上比肩的),應該是可以在各個領域各個角落發揮出重要作用的!隻要有價值。
2.2 CUDA平台
越來越多的人也意識到(Jensen印象中也提到過類似的),Nvidia之是以會在高性能并行計算,深度學習等領域取得如此巨大的成功,如果非要找最關鍵的一個點,那就是CUDA,它是和C/C++,python等一樣可以為成千上萬的人簡單學習後就可以使用的一種并行程式設計語言及架構。特别的,它比較好的平衡了上層語音,底層硬體指令集及不同的架構等之間的關系而定義了ptx這一層,可以比較好的向前相容,又能不錯的向後擴充。
在這次GTC上,Jensen回顧了下CUDA的發展過程,差不多有12年的曆史,從一開始的寥寥無幾的下載下傳到過去一年cuda的下載下傳量達到了600萬。一個小插曲:回憶Fermi/Kepler等架構時發覺聽衆沒有反應,Jensen即興用中文調侃了下,并且期待下一年的時候可以是“講的是英文,聽衆聽到的是中文”。現在機器翻譯及NLP發展這麼迅猛,包括阿裡的天貓精靈,明年這時候機器自動翻譯應該還真是很有可能。
2.3 其它挺震撼挺有意思的點
:如果隻是一個數字(ResNet152 每秒識别1600多張圖檔),沒有感覺。但如果識别具體的花,然後用滿滿的螢幕(15m*6m?)來展示性能對比時,還是很震撼的。是以,選一個具體常見的場景,并且進行可視化的展示是很有必要的,畢竟人是視覺情感動物:)。
:用Nvidia自己的整套解決方案,在加州進行了全程的自動駕駛并記錄。這種富含資訊(不僅僅是自動駕駛了一段路,而是路上所有相關目标的跟蹤,規劃等等)的demo,給普通人對自動駕駛極大的信心。因為看見,是以相信。因為更具體更全方位的看見,是以更容易堅信成熟汽車自動駕駛技術的馬上到來。成本普及到普通的車?那應該還需要更長的一段時間。
:機器人可以很流暢地跳舞,虛拟的人可以和另外一個人同步跳舞,挺好的一個展示。從這有帶人工智能的機器人快要破繭而出的感覺。
3 資料中心和雲計算基礎架構分論壇
3.1 用GPU加速時序資料的分析和查詢
在這個session中我present了過去半年我們和TSDB團隊一個關于并行計算的成果。在時序場景中用GPU加速了時序資料查詢及jason解析等,效果是原來CPU版本的~30倍,在此分享了一些通用的設計思想,具體的可以在ATA
基于CUDA的應用加速方案設計方法找到。其中有一個和AI的思考點是:
- a. AI本質上是把傳統方法的60/80分提高到90/98分;
- b. 在某些領域,因為這種提升,實作了從偏人工到偏自動化,從不可用到可用,可以了解為0到1的突變;
- c. 但AI本質上還是一種提升精度/準确性等的方法,在部署到實際的應用場景中時,性能是特别重要的點,并行計算(先抛開硬體)還是特别重要的。
3.2 基于高效視訊計算架構的雲端視訊結構化分析平台
優酷的盛骁傑同學做了這個分享,優酷已經開發出了AI視訊異構計算架構,包括視訊圖檔的下載下傳,解碼,圖像的處理,及一些AI的應用等。一些AI應用包括對視訊進行自動化的分類,内容了解,對海量小視訊進行品質估計等等。
優酷有海量的視訊資料,并且也有使用者的評論資訊等,是有非常多的内容挖掘分析等的AI場景。
3.3 AI硬體基礎設施
百度研發了AI異構硬體GPU盒子X-MAN,采用了單機16卡,液冷散熱等;訓練叢集超過數萬顯示卡。華為有釋出面向資料中心的G5500異構伺服器,支援8卡V100或32塊P4,支援一鍵切換異構拓撲;面向園區等設計了G2500智能分析伺服器,存儲容器達240TB。騰訊美團科大訊飛等也有類似的基礎設施。
3.4 其它
DaoCloud緻力于用容器建構AI計算平台,使用AI有主機、虛拟機和容器3種方式,容器越來越成為主流計算架構。下圖比較通俗易懂的說明了容器的好處,需要有額外的Docker這一層但沒有了龐大的虛拟機OS那一層,可以進行秒級的新任務部署。但怎麼在一片卡上同時運作2個容器?這還是公認的技術痛點和難點。
百度已經有把AI用在汽車車損的AI協助理賠上;在用AI分析足球賽也有不錯的成果,回頭球賽的精彩資訊編輯等AI應該完全可以勝任,也簡單展示了用AI給球員的表現進行打分的邏輯等。怎麼進行AI訓練呢?結合已有的海量足球視訊,再加上搜尋技術,進行進球等的子任務訓練,然後融合等,避免或減輕了海量的視訊标注。
4 其它
計算平台的葉帆同學介紹了PAI-Blade,對模型進行剪枝、模型壓縮、算子優化及int8技術等等,對線上的inference有了顯著的性能提升。
騰訊介紹了強化學習在遊戲中的應用,包括圍棋,設計類遊戲及即時戰略類遊戲。回頭遊戲的電腦會越來越難打:)。另外,強化學習在遊戲中還是比較能夠發上力,因為不管feedback需要延遲多久但肯定還是有最終結果(可以用來建構groundTruth),在實際的業務場景中,要思考怎麼找到合适的groundTruth。
好吧,也就差不多這麼多了,耐心看完的同學,請點個贊:)。