隨著深度學(xué)習(xí)和人工智能領(lǐng)域取得突破性進(jìn)展,以及無人配送車、無人出租車、無人巴士等智駕場景逐步落地深入,自動駕駛行業(yè)近年來取得了越來越多的關(guān)注和進(jìn)步。然而,想要真正實(shí)現(xiàn)在道路上行駛,還需要解決眾多技術(shù)問題。
感知系統(tǒng)作為車輛路徑規(guī)劃的依據(jù)之一,需要通過“數(shù)據(jù)訓(xùn)練”夯實(shí)基礎(chǔ),以監(jiān)督學(xué)習(xí)的方式,將數(shù)十 PB 的訓(xùn)練數(shù)據(jù)提供給算法,通過其生成具有普適感知能力的模型,幫助自動駕駛車輛擁有更好地感知實(shí)際道路、車輛位置、障礙物信息等方面的能力,達(dá)到實(shí)時感知在途風(fēng)險(xiǎn),作出具體行為決策的目的。
隨著越來越多的雷達(dá)、攝像頭等傳感器被部署在車輛里,各個環(huán)節(jié)的工作量與日俱增,尤其是高性能自動駕駛汽車對數(shù)據(jù)的存儲需求更是巨大,一天生成的數(shù)據(jù)量可達(dá)到 3-8 TB 左右。因此,如何高效、穩(wěn)定地保證自動駕駛過程中收集到的大量數(shù)據(jù),并快速形成自動駕駛的計(jì)算模型,成為了各大自動駕駛企業(yè)關(guān)注的首要問題。
本篇文章,焱融科技將基于國內(nèi)某專注于研發(fā)和應(yīng)用L4級自動駕駛技術(shù),聚焦自動駕駛出行和自動駕駛同城貨運(yùn)兩大場景的自動駕駛公司實(shí)際案例,分享 YRCloudFile 在自動駕駛訓(xùn)練場景下針對 IO 模型、容器化部署、性能提升、智能分層方面的實(shí)踐經(jīng)驗(yàn)和啟發(fā),希望能給相關(guān)從業(yè)者解決類似問題時提供一些參考和幫助。
海量數(shù)據(jù),毫厘必爭
此前,國內(nèi)某 L4 級自動駕駛公司主要采取的是開源的存儲解決方案,將 GPU 計(jì)算和存儲以融合的形式進(jìn)行部署,但是隨著文件數(shù)量的上升,性能出現(xiàn)明顯下降,原有的存儲方式也逐漸開始影響訓(xùn)練的效率。因此,他們開始考慮升級現(xiàn)有的存儲解決方案。
在升級過程中,該公司重點(diǎn)關(guān)注并解決以下問題:
·在日益劇增的海量數(shù)據(jù)場景下,如何提升設(shè)備性能,加快訓(xùn)練進(jìn)度;
·開源方案雖然具備解決海量文件的能力,但是隨著數(shù)據(jù)量的增多,如何保證產(chǎn)品穩(wěn)定性,避免難以維護(hù)的問題;
·如何解決存算融合架構(gòu)下,無法根據(jù)需求單獨(dú)擴(kuò)容的問題;
·在數(shù)據(jù)經(jīng)歷收集、清洗、訓(xùn)練后,如何解決過程中所產(chǎn)生的冷數(shù)據(jù)的問題。
YRCloudFile 如何應(yīng)對?
在了解該公司駕駛訓(xùn)練場景以后,焱融科技針對其自動駕駛訓(xùn)練數(shù)據(jù)集進(jìn)行了一系列分析,并總結(jié)出其訓(xùn)練數(shù)據(jù)具備以下特征:
·浩瀚數(shù)據(jù)文件,訓(xùn)練數(shù)據(jù)集的文件數(shù)量在幾億至幾十億甚至上百億的規(guī)模;
·小文件難治理,大部分文件的大小在幾 KB 到幾 MB 之間,一些特征文件的大小更是只有幾十到幾百 Byte;
·讀多寫少,在數(shù)據(jù)寫入存儲后,根據(jù)訓(xùn)練要求會進(jìn)行多次讀取。
針對上述特征,焱融科技從元數(shù)據(jù)處理能力、目錄熱點(diǎn)、多級智能緩存、針對性調(diào)優(yōu)再到智能分層,提供了一系列高性能、高可用、高擴(kuò)展的存儲方案。
焱融 YRCloudFile 自動駕駛應(yīng)用場景下的工作流程
01
元數(shù)據(jù)處理能力,處理海量數(shù)據(jù)文件的基石
在面臨海量文件時,由于 MDS 不能及時地響應(yīng)讀寫請求,所以極易出現(xiàn)應(yīng)有性能無法發(fā)揮的情況。如果想要突破存儲的瓶頸,主要解決方案是提升元數(shù)據(jù)的處理能力。
為此,焱融科技選擇通過可水平擴(kuò)展設(shè)計(jì)的 MDS 架構(gòu),實(shí)現(xiàn) MDS 集群化。這主要考慮到以下三方面:
·第一,MDS 集群化有利于緩解 CPU,降低內(nèi)存壓力;
·第二,多個 MDS 有利于企業(yè)存儲更多元的數(shù)據(jù)信息;
·第三,在實(shí)現(xiàn)元數(shù)據(jù)處理能力水平擴(kuò)展的同時,提升海量文件并發(fā)訪問的性能。
目前,焱融 YRCloudFile 主要采用靜態(tài)子樹 + 目錄Hash兩者結(jié)合的方式搭建可水平擴(kuò)展設(shè)計(jì)的 MDS 架構(gòu),其主要包含三大要素:
·將根目錄固定在 MDS 節(jié)點(diǎn);
·每一級目錄會根據(jù) Entry name 進(jìn)行 hash,再次選擇 MDS,以此保證橫向擴(kuò)展的能力;
·在目錄下文件的元數(shù)據(jù)進(jìn)行存放過程中,不再進(jìn)行 hash,而是跟父目錄在同一個節(jié)點(diǎn),以此保證一定程度的元數(shù)據(jù)本地性。
這種架構(gòu)方式有兩種好處,首先是實(shí)現(xiàn)了元數(shù)據(jù)的分布存儲,通過擴(kuò)展元數(shù)據(jù)節(jié)點(diǎn),即可支持百億級別的文件數(shù)量;其次是在一定程度上,保證了元數(shù)據(jù)的檢索性能,減少在多個節(jié)點(diǎn)上進(jìn)行元數(shù)據(jù)檢索和操作。
02
目錄熱點(diǎn),解決熱點(diǎn)引發(fā)問題的關(guān)鍵
由于大數(shù)據(jù)集群的目錄以及文件數(shù)據(jù)數(shù)不勝數(shù),所以在自動駕駛車輛訓(xùn)練過程中,如果遇到多個計(jì)算節(jié)點(diǎn)需要同時讀取這批文件時,其所在的 MDS 節(jié)點(diǎn)就會變成一個熱點(diǎn)。整體結(jié)構(gòu)如下圖所示:

為了進(jìn)一步提升小文件篩選與治理流程,焱融科技采用了增加虛擬子目錄的方式,雖然這種方式增加了一層目錄查詢的操作,但是其具備靈活性強(qiáng)的特點(diǎn),可以將熱點(diǎn)分?jǐn)偟郊褐兴性獢?shù)據(jù)節(jié)點(diǎn)。同時,這種解決方法還可以解決另一個問題——單目錄的文件數(shù)量問題,使單目錄實(shí)現(xiàn)支撐 20 億左右的文件數(shù)量,并且可以根據(jù)虛擬子目錄的數(shù)量靈活調(diào)整。整體結(jié)構(gòu)如下圖所示:
我們可以嘗試通過訪問/dir1/dir2/file1,來查看虛擬子目錄是如何實(shí)現(xiàn)的。在這里,我們假設(shè),dir2 是開啟了 dirStripe 功能。主要訪問流程如下:
1、在 MDS1 上拿到根目錄的 inode 信息,查看沒有開啟 dirStripe
2、在 MDS1 上獲取 dir1 的 dentry 信息,找到所屬 owner(mds2)
3、在 MDS2 上拿到 dir1 的 inode 信息,查看沒有開啟 dirStripe
4、在 MDS2 上獲取 dir2 的 dentry 信息,找到所屬 owner(mds3)
5、在 MDS3 上拿到 dir2 的 inode 信息,查看開啟了 dirStripe
6、根據(jù) file1 的 filename,hash 到虛擬目錄2上
7、在 MDS3 上獲取虛擬目錄2的 dentry 信息,找到所屬 owner (mds4)
8、在 MDS4 上拿到 file1 的 inode 信息,返回給客戶端
在整個模擬測試過程中,我們模擬了多個客戶端,并發(fā)訪問同一個目錄的場景。在完成以后,我們通過對比發(fā)現(xiàn),目錄拆分后有10倍以上的性能提升。
03
多級智能緩存,提升整體性能的最佳實(shí)踐
由于自動駕駛訓(xùn)練數(shù)據(jù)有很多類型,不同數(shù)據(jù)信息存儲數(shù)據(jù)量不可估計(jì),所以普通文件緩存容易出現(xiàn)只提供內(nèi)存緩存,導(dǎo)致容量有限,通常一臺 GPU 服務(wù)器可用的內(nèi)存緩存僅數(shù)十 GB;同時,也容易出現(xiàn)內(nèi)存緩存 LRU 置換算法,epoch 緩存在每個 epoch 的命中率低的問題。
為了應(yīng)對上述問題,焱融 YRCloudFile 客戶端采用能提升整體性能的多級智能緩存特點(diǎn):
·在客戶端緩存過程中,由內(nèi)存緩存 + GPU 服務(wù)器本地 SSD 緩存組成;
·可以指定緩存大小和位置;
·訓(xùn)練程序先從客戶端內(nèi)存緩存中加載,未命中則從客戶端服務(wù)器 SSD 加載,不命中最后從文件系統(tǒng)集群中加載;
·對訓(xùn)練框架、應(yīng)用程序完全透明。
YRCloudFile 客戶端多級智能緩存工作圖
通過焱融 YRCloudFile 所提供的方案,可實(shí)現(xiàn)在整個訓(xùn)練中,數(shù)據(jù)集加載速度提升5倍的效果。
04
針對性調(diào)優(yōu),提升存儲性能的最優(yōu)解
大多數(shù)存儲廠商在產(chǎn)品規(guī)劃、產(chǎn)品穩(wěn)定性、技術(shù)服務(wù)等方面更為專業(yè)。在現(xiàn)場進(jìn)行 POC 測試的過程中,焱融 YRCloudFile 進(jìn)行了包括但不限于功能、性能、可靠性等方面的測試。從中我們發(fā)現(xiàn),集群的性能已經(jīng)超過原有存儲系統(tǒng),但是沒有達(dá)到預(yù)期的數(shù)值。因此,我們可以通過對現(xiàn)場環(huán)境的分析,提出以下幾點(diǎn)優(yōu)化措施:
1、增大節(jié)點(diǎn)上的 socks 數(shù)量,已獲得更大的連接數(shù);
2、調(diào)整線程數(shù) workers,以匹配訪問的數(shù)量;
3、調(diào)整 listeners 偵聽線程數(shù);
4、調(diào)整輪詢策略,平衡響應(yīng)速度和 CPU 資源。
經(jīng)測試,通過針對性的調(diào)整后,YRCloudFile 可以將以上存儲參數(shù)的調(diào)整性能提升了 20%-30%。
05
智能分層,數(shù)據(jù)流動最佳決策
了解數(shù)據(jù)存儲的朋友都知道,訪問頻繁的數(shù)據(jù)為熱數(shù)據(jù),訪問較少的數(shù)據(jù)為冷數(shù)據(jù)。然而,一旦冷數(shù)據(jù)過多,不僅會占用大量的存儲空間,而且存儲成本也隨之增加。
為此,焱融 YRCloudFile 專門提供了文件存儲系統(tǒng)目錄級的智能分層功能,通過高性能文件存儲+低成本對象存儲的組合,我們將有效實(shí)現(xiàn)熱數(shù)據(jù)依然為人工智能等新興業(yè)務(wù)提供高性能訪問的特性,而冷數(shù)據(jù)可以在用戶現(xiàn)有低成本的對象存儲中有效保存。目前,焱融 YRCloudFile 智能分層技術(shù)支持以下特性:
·根據(jù)不同目錄,可以定義不同的冷熱數(shù)據(jù)和數(shù)據(jù)流動策略;
·冷數(shù)據(jù)自動流動至低成本的對象存儲;
·提供標(biāo)準(zhǔn)的 POSIX 接口,數(shù)據(jù)在冷熱數(shù)據(jù)層之間流動對業(yè)務(wù)完全透明。
通過冷、熱數(shù)據(jù)智能分層的方式,可以滿足絕對大多數(shù)企業(yè)在自動駕駛訓(xùn)練過程中,對于存儲高性能和數(shù)據(jù)長期保存的需求。
自動駕駛場景 YRCloudFile 無縫對接容器存儲
當(dāng)前,為了提升自動駕駛訓(xùn)練測試效率,大多數(shù)廠商以及 AI 應(yīng)用會選擇在容器為應(yīng)用運(yùn)行載體的 Kubernetes 平臺上,運(yùn)行 AI 訓(xùn)練和推理任務(wù)。Kubernetes 在 AI 訓(xùn)練方面主要有兩個優(yōu)勢:
·首先,Kubernetes 支持 GPU 調(diào)度,可以減少協(xié)調(diào) GPU 資源所需的人力。同時,它可以實(shí)現(xiàn) GPU 資源的自動回收,做到資源的有效分配;
·其次,Kubernetes 支持多種負(fù)載的調(diào)度方式,適應(yīng)不同的業(yè)務(wù)場景,作業(yè)與訓(xùn)練任務(wù)兩者切合度非常高。
在自動駕駛訓(xùn)練過程中,存儲系統(tǒng)對接容器場景常常遇到以下問題:
·采用 in-tree 類型的存儲代碼,如 CephFS、GlusterFS、NFS 等,使得 Kubernetes 和存儲廠商的代碼緊耦合;
·更改 in-tree 類型的存儲代碼,用戶必須更新 Kubernetes 組件,成本較高;
·in-tree 存儲代碼中的 BUG 會引發(fā) Kubernetes 組件不穩(wěn)定;
·in-tree 存儲插件享有與 Kubernetes 核心組件同等的特權(quán),存在安全隱患;
·僅支持部分 AccessModes、PV 管理、故障等方面的特性。
焱融 YRCloudFile 從設(shè)計(jì)到實(shí)現(xiàn),主要場景就是解決 Kubernetes 環(huán)境中,容器化應(yīng)用對存儲的訪問需求。焱融 YRCloudFile 通過支持 CSI、FlexVolume 等插件,實(shí)現(xiàn)對 AI 場景容器持久化存儲的支持,并且根據(jù)客戶實(shí)踐應(yīng)用,針對容器化場景的功能進(jìn)行了優(yōu)化:
·海量 PV 場景下,快速定位 PV 熱點(diǎn),支持 RWO、RWX 等多種讀寫模式;
·實(shí)現(xiàn) CSI 對 PV 的智能調(diào)度;
·依賴 PV 的 Pod 跨節(jié)點(diǎn)快速重建;
·呈現(xiàn) Pod、PV、PVC 實(shí)時監(jiān)控與關(guān)聯(lián)關(guān)系。
YRCloudFile 穿透自動駕駛存儲全鏈增長
YRCloudFile 高性能分布式文件存儲架構(gòu)圖
通過焱融 YRCloudFile,該 L4 級自動駕駛公司突破了存儲性能的瓶頸,完美對接容器服務(wù),完成數(shù)據(jù)跟隨服務(wù)。另外,通過快速定位 PV 熱點(diǎn),該公司實(shí)現(xiàn)呈現(xiàn) Pod、PV、PVC 實(shí)時監(jiān)控與關(guān)聯(lián)關(guān)系等獨(dú)創(chuàng)性的管理功能,提升容器的管理效率。
當(dāng)前,該 L4 級自動駕駛公司在焱融 YRCloudFile 高性能、高可用、易擴(kuò)展的分布式存儲支撐平臺的幫助下,可以輕松應(yīng)對海量小文件性能、容量的挑戰(zhàn)。同時,滿足了未來擴(kuò)容需求。未來,該公司工作人員將極大減少在存儲系統(tǒng)管理、配置和排錯的時間,將更多的精力投入到訓(xùn)練業(yè)務(wù)中。