滴滴自動駕駛 | 無人之競 仿真先行

桔妹導讀:計算機軟硬件系統的研發離不開嚴格的測試。作爲人工智能領域集大成者的自動駕駛系統,更是對測試和驗證的環節提出了極高的要求。然而,道路測試面臨着安全、成本、時效、規模等諸多方面的挑戰。依靠道路測試來收集自動駕駛場景中的“長尾”問題,需要上億公里級別的駕駛里程。利用仿真系統,研發人員能以極低的成本重演大量的歷史駕駛場景,快速測試算法。另一方面,通過創建完全虛擬的場景,我們無需上路就能檢驗自動駕駛系統在極端情景中的表現。本文將從模擬器技術、大規模雲計算、數據分析/管理三個方面,來闡述仿真系統在自動駕駛研發中的核心作用。



1. 
滴滴自動駕駛仿真系統簡介

滴滴自動駕駛團隊成立於2016年,目前已在中美多地建立了研發、測試、以及用戶體驗中心。團隊自組建以來,在整車系統工程、傳感器硬件、自動駕駛算法等方面都取得了長足的發展。如果說傳感器硬件是汽車的眼睛和耳朵,那麼運行在車載系統中的自動駕駛算法,就是汽車感知周圍環境並做出駕駛決策的大腦中樞。

 

一名合格的人類司機需要積累大量的駕駛經驗。同樣,在滴滴自動駕駛團隊,我們也投入了大量的資源來“訓練”這個“大腦中樞”。對於自動駕駛,最真實的“訓練場”莫過於現實中的道路環境。然而,道路測試面臨着安全、成本、時效、規模等諸多方面的巨大挑戰。


因此,我們開發了仿真測試系統——在虛擬的三維環境中,輸入預定義的交通場景,通過軟件的方式來模擬自動駕駛汽車的行爲以及和周圍環境的互動,並且自動評估其表現、性能,以發現問題,指導研發。


利用仿真系統,工程師在研發階段
發現了規劃的路徑與隔離帶距離過近的問題


通過創建完全虛擬的場景
工程師測試了自動駕駛汽車針對摩托車逆行的反應


在軟件仿真的幫助下,研發工程師可以回放道路測試中暴露的問題;無需上路,就可以反覆迭代算法。此外,工程師還能創建任意的虛擬場景,以測試自動駕駛程序在特定環境下的表現。同時,仿真測試也成爲了軟件版本準出流程中不可或缺的一環。


 自動駕駛研發的工作流程


在滴滴自動駕駛仿真團隊,我們的目標是打造一套高性能、可靠、易用的仿真系統,將其融入到研發工具鏈中,提高算法工程師的工作效率,並在自動駕駛軟件上路前及時發現其中的潛在隱患。


我們將這個系統拆解成了三個有機結合的部分:
  • 模擬器:負責在單個場景中模擬自車和周圍環境的互動,並對自車的行爲進行評估。

  • 雲平臺:支持大規模併發式地同時驗證成千上萬不同的駕駛場景。

  • 數據系統:管理仿真所需的和產生的數據,並進行自動化分析和可視化展示。


 仿真系統的三個核心模塊


以下,我們在這三個部分中選取部分核心問題進行詳細闡述。



2. 
模擬器:確保仿真結果的高可信度
模擬器是整個仿真系統的基石,其開發存在諸多的挑戰。其中要解決的問題之一,是確保自動駕駛汽車的行爲以及與交通環境的交互達到與現實世界的高度一致。 確保這樣一種高可信度是能夠有效發現問題、指導研發的基礎。

自動駕駛算法在車上運行時,針對車載服務器的硬件配置作了專門的資源分配與優化,並且各個模塊以特定的頻率並行運行。與之相比,模擬器運行的典型環境是開發機器或雲計算平臺中的容器,與車載環境有顯著的差異,例如CPU核數少、GPU較弱或者沒有GPU,等等。如果仿真時軟件完全按照車端的模式運行,各個模塊就不能進行有效的同步與協作。

爲了解決這個問題,我們在模擬器中應用了虛擬時鐘的概念去控制時間的流逝,並且引入了“時序仿真”(Timing simulation)的概念,將實際路測中收集到的時序信息應用於仿真中。一方面,單次路測收集到的時間信息可以用於精確重現當時車上系統的事件時序,重建車上系統的狀態,用於診斷該次路測中出現的問題。另一方面,大量路測中收集到的時間信息可以用於對時延分佈狀況的建模,使得模擬中的時間流逝總體上更加符合實際情況。

上述的方法可以在異質化的運行環境中比較精確地重現自駕車算法的運行結果,但是這種方式無法得到性能方面的評估結果。 爲此,模擬器也能運行在車載服務器硬件上,直接以車端運行模式進行仿真,從而得到準確的性能數據。

在交通場景方面,真實路測場景的回放可以精確地重現歷史場景,並且具備真實的傳感器數據,因此具備良好的可信度,但也存在交通對象互動性弱、場覆蓋度受限等不足。另一方面,虛擬場景具備良好的靈活性,隨着對長尾與邊界問題的仿真測試不斷深入,虛擬場景的作用也日益提高。同時,虛擬場景也必須植根於現實,從宏觀的整體交通流模式,到微觀的交通對象的行爲特點,都需要在統計意義上與現實世界中的相應實體的行爲相一致。


3. 
雲平臺:提供大規模仿真所需的算力
模擬器負責處理單個駕駛場景的仿真。然而,驗證自動駕駛系統需要成千上萬的駕駛場景,靠單機運行顯然不能滿足研發工作的需要。所幸的是,不同的駕駛場景天生具有數據併發的特性(data-parallelism),每一個場景都可以獨立運行。同時,模擬仿真中採用了虛擬時鐘的概念,對運算的實時性沒有任何要求,可以適應大多數的硬件環境和進行排隊處理。因此,雲仿真平臺應運而生。 我們把對單個場景的仿真封裝到一個個獨立的任務中,通過雲計算平臺爲這些任務調度所需的算力、存儲、帶寬等資源,實現了分佈式的大規模仿真運算。

與大多數傳統的方案一樣,我們構建的雲仿真平臺具有良好的擴展性和伸縮性——其仿真計算能力的總吞吐量與加入其中的工作節點的數量呈正比。同時,優化單個節點的運算性能也能直接提升平臺的總吞吐量。



1.  增加工作節點數量

在傳統的雲計算平臺的實現中,工作節點以虛擬機或者容器的形式部署在物理機器集羣上(宿主機)。由於對業務方運行的任務無法預知,雲平臺方必須非常保守地做好工作節點之間的資源隔離,避免不同用戶的業務在共享的宿主機上出現資源搶佔的衝突。

滴滴作爲一家大型互聯網公司,已經擁有大量的服務器資源。這些硬件資源必須滿足主營業務高峯期的峯值需求。從時間上來看,主營的網約車等業務具有早晚高峯的“潮汐”特點。在低峯期,我們將雲仿真平臺的工作節點部署到網約車業務所在的宿主機上,從而利用了本來閒置的算力資源來運行仿真任務。在高峯期,工作節點關閉,確保主營業務不受影響,直到高峯期結束下一個低峯期的到來。如此週而復始如同潮起潮落。

從空間上來看,一部分服務器作爲大數據存儲節點,CPU利用率不高;一部分服務器作爲備用機器,長期處於閒置狀態。而自動駕駛仿真卻具有CPU運算密集但I/O壓力相對較小的特點。因此,我們將運行仿真任務的工作節點長期部署到這些服務器上,充分混合了不同業務的資源需求,讓現有的服務器能力得到最大程度的發揮。

從成本上來看,我們在已有的硬件資源上,通過這種“混合部署”的方式額外提供了大量工作節點,大大降低了仿真運算的單位成本。換句話說, 在固定預算支出的限制下,我們大大 提升了 雲仿真平臺的總吞吐量,爲更快更高效地迭代自動駕駛技術提供了堅實的基礎。 


2.  優化單節點運算性能


衆所周知,自動駕駛算法依賴於深度神經網絡模型。這些模型非常複雜,即使在推理過程中,也會消耗大量的計算能力。由於成本的限制,雲仿真平臺中大部分的工作節點都沒有配置GPU。

 

結合仿真應用的特點,即回放路測數據,我們知道,模型的輸入往往是重複的。如果模型本身保持不變,推理的輸出結果也是可重複的。因此,我們開發了神經網絡緩存(neural net cache)技術,對推理結果進行緩存。每次推理的時候,我們根據模型自身的屬性和輸入向量值計算出一個哈希值,向後臺KV存儲系統查詢。如果緩存命中,就無需在本地用CPU進行推理。可以想象,當反覆仿真同一批駕駛場景時,緩存的命中率是非常可觀的。

 

我們的實驗發現,當緩存完全命中時,模擬器的性能比本地有GPU加速還快了好幾倍。隨着深度神經網絡模型在未來變得更加複雜,神經網絡緩存的提速收益也將越來越大。



4. 
數據平臺:來自海量數據的挑戰
雲仿真系統解決了自動駕駛研發中大規模仿真所需的算力、帶寬等資源。然而,大規模仿真勢必產生大量的結果。顯然,靠人工來審閱成千上萬的場景結果是不現實的。我們構建了一套數據系統來管理仿真所需的大量數據,並對仿真產生的大量結果進行自動化的分析、過濾、和可視化。

首先,我們建立了一個場景庫系統來描述和管理衆多的仿真場景,包括他們的特徵、屬性、相應的安全級別等。場景資源是仿真系統的核心資產。我們採用了靈活的樹狀結構標籤對場景進行分類管理,讓場景標識變得清晰規範,可以很容易地被不同的使用方理解和使用。

其次,爲了保證場景資源的質量,我們創建了對路測數據的索引、檢索、分析的工具鏈,以便高效地獲取仿真所需的輸入數據。這套工具鏈能半自動化地從海量的數據源中找到工程師感興趣的數據片段、以及符合某些特徵的數據點,使仿真能更有針對性地去驗證自動駕駛的算法迭代。

另外,對於仿真後產生的大量數據,我們能對仿真結果進行自動化的打分和評估。我們也支持在仿真中產生自定義的統計數據和日誌事件,對這些數據進行聚合(同一算法在不同場景下表現的綜合)和對比(算法迭代前後的A/B測試),並以可視化的圖表方式把結果呈現給工程師。



5. 
總結
隨着自動駕駛技術的不斷完善進步,仿真系統的整體效率對於技術迭代的速度也起到日益重要的作用。當MPI(Mileage Per Intervention, 即發現問題的平均里程數)提升10倍時,如果不加選擇地進行隨機測試,那麼發現問題的效率也會相應地下降爲原來的1/10。相對於有安全駕駛員參與的有限路測,實現大規模無人化的安全運營要求MPI有多個數量級的提升。這就對仿真系統的能力提出了極高的要求:

  • 在功能上,仿真系統必須能夠高可信地支持各個軟/硬件模塊以及端到端系統的測試。

  • 在仿真場景上,需要建設結構化的、對ODD(Operational Design Domain)有良好覆蓋度的場景庫;並且利用滴滴的數據優勢,大量、持續地挖掘高價值的現實場景,作爲場景庫的重要數據來源。 

  • 在仿真結果評價上,需要能夠更全面、準確地量化自駕車整體及各個部分的表現。

  • 在運算效率上,需要進一步擴大雲平臺的資源優勢,提高效益成本的比率。


能否有效發揮仿真系統的“加速器”與“放大器”的能力,或許將是自動駕駛技術能否最終獲得廣泛應用的決定因素之一。



‍‍‍‍‍‍‍團隊招聘


滴滴致力於打造世界領先的L4級及以上自動駕駛技術,希望通過科技讓出行更安全、更高效。2019年8月,滴滴宣佈將自動駕駛部門升級爲獨立公司, 專注於自動駕駛研發、產品應用及相關業務拓展。


滴滴自動駕駛長期招聘計算機視覺、規劃與控制、行爲預測、高精地圖、仿真、基礎架構、車輛硬件、測試開發等職位,歡迎投遞至[email protected]


掃碼瞭解滴滴自動駕駛

‍‍‍‍‍‍‍


閱讀更多
團隊技術文章

1. 滴滴自動駕駛:充滿“不確定性”環境下的決策和控制
2. 不確定性世界中的行爲預測

3. 解讀自動駕駛的2020:從硬件角度看,無人車商業化落地難在哪?

4. 自動駕駛在挑戰中進化的感知能力

5. 滴滴自動駕駛 | 基礎架構如何以終爲始,穩定先行?

6. 滴滴自動駕駛工程師們的「簡單」夢想

7. 即將出發!朱廣權帶您體驗滴滴自動駕駛網約車

8. 斬獲CVPR2019挑戰賽獎項 滴滴與學界廣泛合作加速自動駕駛研發

9. 滴滴X BDD啓動CVPR 2019 WAD挑戰賽,邀您解決自動駕駛領域重點難題

10.「無人」之競 :滴滴自動駕駛的成長之路



本文作者



延伸閱讀


內容編輯 | Teeo

聯繫我們 | [email protected]


本文分享自微信公衆號 - 滴滴技術(didi_tech)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章