特斯拉是一家很開放的車企。
所謂開放,指的是馬斯克年初那一句「特斯拉愿意開放并共享自己的所有專利」,還有在 GitHub 上公開了自家車機操作系統的底層代碼,以及在全球最大的軟件 BUG 討論社區 Bugcrowd 里面發下英雄帖,廣邀全球黑客黑自家系統。
我們將這次演講的精華部分摘錄下來,并以盡量簡練的語言解釋,于是就有了今天的文章。
什么是 PyTorch?
電動星球注:BSD License 最早在1988 年由加州大學伯克利分校起草,是目前給予使用者最高自由的開源協議,使用者基本上可以「為所欲為」地修改源代碼,并且將代碼打包成專有軟件。
至于 PyTorch,則是 Torch 使用 Python 語言編寫的版本。
Torch 的底層是由 C 語言和 Lua 語言編寫的,C 語言作為底層,而 Lua 語言作為深度學習庫,兩種語言都非常優秀,實際上目前仍然有很多大型企業采用 Torch 進行深度學習,比如上文提到的幾家。
2017 年 1 月, PyTorch 正式在 GitHub 上發布,號稱擁有更高的編譯和運行效率,而實際上它也做到了——靠的就是 Python 語言。
特斯拉如何利用 PyTorch?
Andrej Karpathy 在演講的開場這樣說:「由于我們沒有采用激光雷達,也沒有采用高精度地圖,所以 Autopilot 的一切功能,都依賴于來自車身四周 8 個攝像頭提供原始圖像之后,再進行的計算機視覺運算。」
他隨后給出了一張流程圖,里面是 Autopilot 工作的所有流程,有趣的是,Andrej Karpathy將這一套流程稱為「Operation Vacation(操作假期)」,他說「因為現階段我的團隊已經可以在椅子上葛優癱,然后數據就會從特斯拉的車子上傳過來,在神經網絡模型上自己不斷循環運行」:
特斯拉AI部門令人艷羨的「假期」里面,「PyTorch Distributed Training」占了單獨的一個部分——但憑什么呢?
為了有效處理將近 100 個并行任務,特斯拉采用了「類 ResNet-50」的骨干網絡。那什么是 ResNet-50?
隨著深度學習研究的不斷發展,深度學習神經網絡也在不斷加深,而隨著網絡深度的上升,訓練準確度也會隨之下降,ResNet 就是因此而生,它的中文名叫做深度殘差網絡。ResNet 有多個不同版本,包括 ResNet30/50/101 等,主要區分度在于 Layer 卷積層和 Block 區塊數量上,這里就不展開了(畢竟是個汽車公眾號…)。
還有 Smart Summon 模式下道路邊緣的識別與確定:
Recurrent Tasks 是來自于 RNN 的運算任務,中文名有兩個,有的翻譯成循環神經網絡,更主流的譯法是遞歸神經網絡,因為 RNN 有兩個算法變體——一種是時間遞歸神經網絡(recurrent neural network),另一種是結構遞歸神經網絡(recursive neural network),兩者的縮寫都是 RNN。
Andrej Karpathy 舉了以上的場景做例子,解釋 Recurrent Tasks 提升效率之后,對 Road Layout Prediction(道路層預測)的重要性:
「我們給每臺攝像頭都配備了相應的 Hydra Nets,但很多時候你需要同時采集多個攝像頭的數據,然后再進行運算。比如說在過一個三岔路口的時候,我們有三個攝像頭同時為這個場景的深度學習運算輸入圖像數據。此時的神經網絡預測就不再只是單純的圖像識別,而是基于總-分結構的復合運算?!?/p>
談到這個場景的時候,Andrej Karpathy 順便以此為例子,對Hydra Nets給出了進一步的解釋:
「我們為所有的計算任務準備了 8 個 HydraNets,當然所有 Hydra Nets 的運算任務都可以進一步進入 RNN 做遞歸運算。然后我們可以按照這樣的總-分結構做輸出。也就是說,Autopilot 軟件里面有一個大型的單一計算網絡,然后每一個任務都可以分采樣這個計算網絡(接收到的圖像)的一小部分,然后訓練那一小部分的神經網絡?!?/p>
「比如說,我們可以單獨訓練攝像頭的障礙物探測功能,或者是色彩深度網絡,又或者是道路布局網絡。所有單一任務都分采樣了圖像數據的一小部分,然后單獨訓練那一部分(的神經網絡)」。
乍眼一看,這張圖里面只有兩個數字是可以望文生義的:代表原因的8個攝像頭和代表結果的 4096 幅圖像。而其中的過程則相當復雜。
Time steps 和 Batch size 需要一起講,沒有寫中文是因為現在的深度學習界依然沒有給它們一個比較信達雅的官方翻譯。其中 Batch size 代表了在深度學習網絡中單一批次的數據數量,比如我們往一個 RNN 里面輸入 100 條數據,分成 10 個 Batch,那 Batch size 就是 10。
至于 Time steps 則是預測最終值需要的最大「步數」,比如說 Autopilot 軟件的 Time steps 是 16,也就是說每次會生成 x0-x15,一共 16 組數據,最終預測結果——每次,指的就是圖中每一個「Forward pass」。
目前深度學習最熱門的硬件是 GPU,Andrej Karpathy 則用了一張圖來描述 Autopilot 神經網絡對于 GPU 運算的要求有多高:
在圖中顯示的 70000 GPU Hours,表示Autopilot深度計算網絡如果用單一GPU運算需要用到 7 萬小時——Andrej Karpathy 的原話是「如果你用一組 8 個 GPU 去訓練 Autopilot 的深度運算網絡,你得花一年」——當然他沒說用作對比的是什么 GPU。
結語
今天 Andrej Karpathy 的演講,雖然不太準確,但我們可以嘗試用一句話概括——特斯拉很希望把你的車變成一個人。
今年 4 月份 FSD 芯片發布的時候,Andrej Karpathy 說過一句話,宣布了特斯拉與激光雷達徹底絕緣:「你會開車是因為你的眼睛看到了路況,而不是你的眼睛發射出激光」。今天,Andrej Karpathy 也說了「我們不用高精度地圖」。
于是,一輛逐步走向自動駕駛的特斯拉,在行為模式上會變得越來越像人——用眼睛收集圖像數據,然后用大腦判斷自身所處環境,指揮四肢做出行動。
特斯拉的邏輯似乎更接近人類本能,但卻是汽車界實打實的少數派。傳統汽車界,包括造車新勢力,都對激光雷達和高精度地圖抱有更高的信心。
蟹老板上周體驗小鵬 P7的時候說過這么一段話:
「超視距+實時在線,這是我們認為小鵬 P7 在自動駕駛方案上與特斯拉最大的不同。某種程度上,你可以將特斯拉看成桌面端或者單機的,將小鵬 P7 看成是移動端或者聯網的?!?/p>
來源:第一電動網
作者:電動星球News蟹老板
本文地址:http://www.155ck.com/kol/103446
文中圖片源自互聯網,如有侵權請聯系admin#d1ev.com(#替換成@)刪除。