自動駕駛的演算法工程師是爽缺嗎?
這週有兩件事情剛好碰在一起了。首先是我回清大拜訪了學校教授,給學弟妹做了一些簡單的分享。另一件事是以前在阿里認識的 Adrian Hsu 分享給我《給學弟妹的矽谷 AI/Software 指南》,目標是希望分享給台灣學弟妹一些專業領域內的白話科普。
我覺得台灣一直有一個很好的環境,能夠把前人的力量傳遞給後進的新人與學生,也很開心自己有機會成為這個環境的一部份。雖然我的工作途經了電腦視覺、深度學習、人工智能、自動駕駛、軟體工程等專業,但現在的工作正好是 NVIDIA 的自動駕駛,因此這篇文章就用自動駕駛為題,跟學弟妹分享一下成為自動駕駛軟體架構現狀,以及成為自動駕駛工程師所需要的技能。
自動駕駛軟體架構
在 2025 年的今天,自動駕駛架構已經可以被粗分為兩塊:傳統架構 Classical Driving 與 端到端架構 End-to-End Driving。
傳統架構 Classical Driving
傳統架構中,最有名且應用最廣的開源框架是百度的 Apollo。許多自動駕駛公司的架構都是從 Apollo 中的某個版本 fork 出來的,再根據自身公司業務需要演變成自己的內部架構。
傳統自動駕駛架構中,從原始的傳感器,包括但不限於 攝影機 Camera、雷達 Radar、光達 Lidar,會經過各種不同的軟體組件變成最終的電機控制信號:
- Perception 感知。把原始傳感器轉換成電腦可理解的 3D 世界,包含3D 障礙物檢測 (3D Obstacle Detection)、交通號誌檢測 (Traffic Sign Detection)、道路線檢測 (Lane Detection) 等等。
- Prediction 預測。根據歷史的 3D 世界訊號,推測動態障礙物的未來行徑方向。代表論文有 2020 的 VectorNet 與 2022 Waymo 的 WayFormer。
- Planning 規劃。根據 Prediction 預測結果規劃自車駕駛路徑。在考慮他車未來軌跡、舒適度、自車目標、環境速限等情況下,如何規劃一條最理想的自車駕駛軌跡。最經典的方法之一是 A* Algorithm。
- Control 控制。根據 Planning 把自車規劃軌跡轉換為控制信號。一般機器人的控制理論會應用在這裡,例如 PID (Proportional–Integral–Derivative) Controller 與 MPC (Model Predictive Control)。
- HDMap and Localization 高精度地圖與定位。利用高精度地圖的道路線計算自車的定位,傳給 Perception, Prediciton, Planning 等組件做先驗的輸入訊號。相關的知識可以參考文章《為什麼自動駕駛需要高精度地圖》。
在這個經典架構裡,Prediciton 是個比較特殊的組件。它在某些公司的組織架構裡會被併入 Perception 組,在輸出障礙物位置的同時輸出障礙物的預測軌跡。在某些組織架構裡則會併入 Planning 組,把 Prediction 與 Planning 作為一個聯合問題同時求解。
端到端架構 End-To-End Driving
在深度學習中,端到端指的是一個問題從輸入到輸出可以用一個深度學習模型解決;自動駕駛端到端的定義指的是從「傳感器輸入」到「輸出控制訊號」可以用一個大模型表示。下面附上 ChatGPT 的回答給大家參考:
End-to-end autonomous driving refers to a holistic approach where a single, unified model processes raw sensor inputs — such as camera images, LiDAR data, or radar signals — and directly outputs driving actions like steering, acceleration, and braking.
隨著 LLM 大模型的盛行,端到端架構在 2023 年以後逐漸開始流行,但是還沒有統一的架構。主要可以分為 3 個分支:Imitation Learning (IL), Reinforcement Learning (RL), Large-Language-Model (LLM)。
Imitation Learning 模仿學習
Imitation Learning (IL) 就是讓機器學習人類司機的經驗,等於用人類司機的駕駛紀錄做監督學習 (supervised learning)。模仿學習的缺點是通用性不足,如果自駕車處於沒有人類司機體驗過的環境,模型很容易失效。2023 年的論文 UniAD 取得了 CVPR 2023 Best Paper,而近期 NVIDIA 的論文 Hydra-MDP 研究如何透過 replay + simulation 的方式,克服 IL 通用性不足的問題,並拿到了 End-to-end Driving at Scale 競賽的第一名。
Reinforcement Learning 強化學習
強化學習是大眾媒體比較常聽到的學習方式,具體的定義是透過虛擬環境的模擬,定義人工的獎賞 reward 來訓練 agent。強化學習的問題是獎賞分佈通常非常稀疏,所以後來大部分會使用 Inverse Reinforcement Learning, IRL 作為主要學習方式。
強化學習被廣泛應用在電玩與遊戲等可以被輕易模擬的問題,例如打敗世界冠軍李世石的 DeepMind 圍棋 AI Alpha Go 就是強化學習最著名的應用之一。
因為自動駕駛模擬難度較高,所以 RL 在自動駕駛業界的成功應用不多。網傳 Tesla FSD 使用的是強化學習,但這可能只是媒體臆測。因為特斯拉有大量的量產車在路上,因此使用高品質人類司機監督的模仿學習是最適合特斯拉的學習模式。
Large-Language Model 大語言模型
在 2022 年底 ChatGPT 火爆之後,Large-Language Model 變成一種大家感興趣的研究路線。雖然語言模型與自動駕駛屬於不同維度的問題,但是 LLM 具有的泛化能力還是可以被應用於自動駕駛的研究與實驗之中。
Google 旗下自動駕駛公司 Waymo 的論文 《EMMA: End-to-End Multimodal Model for Autonomous Driving》就是應用 LLM chain-of-thought (COT) 技術到自動駕駛的一個典範,並且在 benchmark 取得了不錯的成績。不過論文中也提到,EMMA 消耗大量的記憶體與計算時間。如何處理長時間記憶,以及如何在車上部署 real-time 模型是一個仍必須攻克的問題。
自動駕駛產業現狀
自動駕駛目前是屬於美國與中國強主導的狀態,台灣在自動駕駛中的角色地位較小。因為我對台灣自動駕駛的產業不太了解,所以主要就中美的產業環境簡單描述一下。
中國
以技術成熟度來說,中國自動駕駛技術其實是領先世界的級別,例如上述的端到端論文 UniAD 其實就是上海 AI Lab、武漢大學、商湯科技聯合出品的論文。中國基於成熟的電動車市場與產業密集優勢,不斷推出更成熟、更廉價的自動駕駛軟體與汽車。
在中國,自動駕駛的發展以量產競爭為導向,因此除了端到端的技術競爭之外,傳統架構的職缺也比較多。
美國
美國的創業環境比較友善,出名的 RobotTaxi 公司 Waymo 以及自動駕駛電動車 Tesla 都是美國公司。在美國求職的特點是你除了可以找到美國自動駕駛公司外,你也可以投遞中國的自動駕駛公司,因為大部分的中國自動駕駛公司都目標在美國上市,也會在美國有測試車輛與研究基地。
台灣
台灣的就業環境我不太清楚,但是聽說台灣的學生一般很少能有自動駕駛的實習機會。如果台灣的畢業生到美國或中國找工作,很可能會在實習經驗上吃虧,因為中美的學生這方面的實習機會相對多很多。
自動駕駛工程師面試重點
因為自動駕駛是結合自動化控制、程式設計、深度學習的領域,因此面試的領域會比較發散,要根據具體的面試職位而定,但主要不會脫離以下幾點。
Coding 能力或實作能力
自動駕駛開發通常以 C++ 為主,如果是數據處理或是模型訓練則會用到 Python。面試的題目類型可能會包括 LeetCode 類型的題目,難度根據不同公司而定,大約是 medium 等級。有些面試官可能會考察跟實際相關的面試題目,例如座標轉換、最佳化問題求解、手刻深度學習模型算子等等。
在做 Coding 的時候,最忌諱的就是低頭一直寫。Coding 面試的目的之一是模擬你在實際工作中解決問題的情景,所以最好著重在溝通。寫題前告訴面試官你打算用什麼樣的方式解決,寫題時告訴面試官你這一句要做什麼、並且注意好的命名與格式,寫完時告訴面試官你的程式目前的時間複雜度與空間複雜度、檢查並修復原本留下的 bug、最好還能加上測試程式碼。
演算法能力
每個面試官對於演算法的考察點不同。一般而言會有以下幾種的考察方向:
- 專業關聯性。求職者做過的研究題目與這個職位需要解決的問題是否匹配。如果你以前做的是 Computer Vision 的題目,則你在面試 Planning 工程師的時候就會非常吃虧。
- 基礎知識。考察求職者對於自己做過的題目了解多少基礎知識。舉例來說,如果你面試的是需要深度學習知識的職位,Transformer 的時間複雜度、Self-Attention 的公式、Loss function 的設計原理都會是考察點。
- 專業深度。如果你的題目與職位所需完全一致,則面試官極大可能會往最深處去考察,直到你無法回答為止。這麼問的用意有兩個,一個是探索你的知識邊界與能力邊界,另一個用意是驗證你宣稱做過的題目裡面,有多少東西是你親自完成的。
- 設計問題。面試官可能出一個比較寬泛的設計題目,請求職者給出一個簡單的設計方案。例如我在面試 Meta 的時候,面試官要求我設計一個臉書的內容推薦系統。如果這個題目你以前做過,切記避免直接照搬答案,而要仔細確認面試官對於這個題目是否有任何限制與要求。
雖然考察方向有很多,但其實面試官關注的重點只有一個:你能不能解決這個職位會碰到的實際問題?只要你能夠向面試官證明你能夠解決實際問題,你就算是合格的求職者。
溝通能力
這不僅限於自動駕駛工程師的面試。溝通能力的考察會遍布在每一個面試環節。如果跟面試官產生的溝通不良的情況,很可能暗示著你入職之後也會產生溝通不良的問題。溝通能力需要在日常生活中培養,但是也有幾個技巧是你可以直接應用在面試中的:
- 用反問確認問題。每次面試官的題目問完之後,你可以用你自己的話來重複面試官的題目,確保你準備回答的內容與面試官期待方向與內容是一致的。如果不這麼做,可能就會出現雞同鴨講的狀況。
- 結構化的回答。對於大部分的技術問題,你都可以用條列式的方式回答。用「這個問題有 x 種可能的原因」、「第一是 A,因為…」、「總體來說,這個問題答案可能是 ⋯」。如果你經常使用 ChatGPT ,你會發現它幾乎都是這麼回答的。
- 控制時間。單點的問題不需要回答太久,但也不要回答太短。回答太久可能會被面試官認為你無法掌握問題重點或是思路過於發散;回答太短則可能被面試官認為你的理解過淺。比較好用的回答公式是給一個直接簡單的回答,再給一些補充的知識或實例,並且控制回答時間在 2–3 分鐘內。
- 減少贅字。贅字使用的越少,你所表現的自信就會越強。有些人如機關槍般滔滔不絕但是夾帶一堆冗言贅字,實際上可能會增加聽者的負荷。放慢語速,經思考後不帶贅字的講出答案,反而是最能表現自信心的方式。
- 強調團隊。如果提到你與其他團隊成員的合作經驗,不仿大方說這是你與別人合作的成果,並且強調你在其中的貢獻。有些人會嘗試把所有人的成果都包裝成自己的成果去面試,這可能會被一些經驗老道的面試官抓包,並且在演算法面試裡面露餡。主動強調團隊合作,在大部分的 Behavioral Interview 裡面都能加分。
自動駕駛工程師的職涯發展
這其實是兩個命題。首先是職涯發展,其次才是自動駕駛工程師的職涯發展。如果你不能知道你的終點為何,你就沒有辦法選擇正確的路徑或方向。
對職涯發展而言,你首先要知道你想達到的目標是什麼?賺大錢並不是一個好的職涯目標,因為你為了賺大錢可能必須犧牲很多東西:婚姻、健康、社交、喜歡的居住城市。如果你不了解你的目標是什麼,不如反問自己的底線是什麼?什麼是你絕對不能放棄的東西?
關於如何探索自己的目標以及尋找最佳的路徑,我推薦這一本書給大家:《Designing Your Life》。裡面介紹了各種可以練習並創造可能性的方法。作者是 Stanford 的教授,也有上過 TED 做分享。下面附上他的 TED 分享影片給大家參考。
再來是自動駕駛工程師的發展,我可以分享一些目前在這個領域裡的困境與機會。
困境
- 自動駕駛技術日趨成熟並逐漸轉向端到端自動駕駛架構,特別是在 OpenAI 帶起的 Scaling Laws 哲學下,傳統架構的工程師重要性以及不可取代性正在降低。
- 端到端的自動駕駛架構目前還需要專業的 AI 工程師來調整,但是如果有一天出現了成熟開源的端到端框架——例如 LLM 領域的 LLAMA,很可能會變成只需要餵數據就能完成的技術,並且模型效果會與數據的質與量成正比。
- 今天的自動駕駛產業正在衰退期,許多新進的電動車公司與智駕公司正在退場。這個衰退是全球性的,並不局限於中國或美國。如果離開了現在的工作,很可能必須降薪求職。
- 傳統架構下的自動駕駛工程師出路受限。除了正在衰退的自動駕駛領域,最可能的出路是還沒有進入爆炸發展期的機器人產業。
機會
- 端到端的自動駕駛技術有比較大的跨領域機會。有端到端經驗的人,比較有機會切入以大模型為主的研究領域或產業,不限於自動駕駛與機器人。
- 機器人有可能是下一個享受 AI 紅利的產業。自動駕駛工程師轉往機器人領域相對容易。
- 等到自動駕駛的衰退期結束,會由少量的市場競爭者迎接技術成熟以及市場成長的果實。如果你在兩三年內加入自動駕駛產業並且公司順利存活,很可能在那時順風而起。
- 今天的自動駕駛是一個比較難進入的領域,因為大部分的專業人才都可以在市場中找到。這對尚未進入這個領域的學生是一個挑戰,但是對於已經在這個領域的人才則是一個相對優勢。
如果還有問題的,歡迎在留言區留言討論。