目前人工智能非?;穑蠹宜熘娜四樧R(shí)別、智能安防、自動(dòng)駕駛等領(lǐng)域都在應(yīng)用人工智能技術(shù)。但在自動(dòng)駕駛這個(gè)行業(yè)中我們能用Go語言做什么事情?今天分享的主要是人工智能數(shù)據(jù)流的流轉(zhuǎn)方式,也是Golang在Momenta大數(shù)據(jù)平臺(tái)當(dāng)中的應(yīng)用。
Momenta 大數(shù)據(jù)平臺(tái)
Momenta的目標(biāo)是打造自動(dòng)駕駛大腦,基于深度學(xué)習(xí)和海量數(shù)據(jù),Momenta已經(jīng)形成服務(wù)多個(gè)場景的自動(dòng)駕駛解決方案,解決了逆光、橋、隧道、雨天、夜間、匝道等復(fù)雜道路場景。
在實(shí)現(xiàn)自動(dòng)駕駛的過程中,深度學(xué)習(xí)的算法在訓(xùn)練模型時(shí)得有基礎(chǔ)數(shù)據(jù)作支撐,需要大量的圖像數(shù)據(jù)。借助團(tuán)隊(duì)極強(qiáng)的研究能力與工程能力,Momenta已經(jīng)建立起大數(shù)據(jù)平臺(tái)、大計(jì)算平臺(tái)、大測試平臺(tái)三大基礎(chǔ)平臺(tái),從而實(shí)現(xiàn)大數(shù)據(jù)與AI算法的反饋閉環(huán)——以強(qiáng)大的計(jì)算資源處理豐富的海量數(shù)據(jù),得到更精準(zhǔn)、更可靠的算法模型。
其中,大數(shù)據(jù)平臺(tái)能夠完美處理自動(dòng)駕駛領(lǐng)域的數(shù)據(jù)流,具體而言,便是處理收集數(shù)據(jù)、篩選數(shù)據(jù)、數(shù)據(jù)標(biāo)注、訓(xùn)練模型、模型測試、封裝發(fā)布的整個(gè)過程。
人工智能數(shù)據(jù)流
數(shù)據(jù)篩選
上圖是車輛識(shí)別的一個(gè)典型,富有中國特色和北京特色——電動(dòng)車,Momenta目前對電動(dòng)車、自行車、人力三輪車、三輪電動(dòng)車等,都能進(jìn)行識(shí)別,并且達(dá)到很高的準(zhǔn)確度。在人工智能數(shù)據(jù)流中,數(shù)據(jù)篩選這一步驟主要有以下作用:
降低成本:無需重復(fù)標(biāo)注已經(jīng)可以很好識(shí)別的素材,降低標(biāo)注成本,模型運(yùn)行結(jié)果可用于輔助標(biāo)注;
提高模型訓(xùn)練效率:去除無效素材,提取包含識(shí)別目標(biāo)的素材,提高訓(xùn)練效率;
提高模型訓(xùn)練邊際效用:通過對極端情況(corner case)的數(shù)據(jù)進(jìn)行針對性訓(xùn)練,可以有效的提高模型性能。
數(shù)據(jù)標(biāo)注
經(jīng)過篩選之后,會(huì)有部分圖片需要人工標(biāo)注?;跇O強(qiáng)的工程能力,Momenta開發(fā)了在線遠(yuǎn)程眾包數(shù)據(jù)標(biāo)注系統(tǒng),實(shí)習(xí)可視化操作,即便標(biāo)注人員不懂代碼也能遠(yuǎn)程完成各類標(biāo)注任務(wù)。數(shù)據(jù)標(biāo)注的作用主要是提高模型訓(xùn)練精度, 獲得更多標(biāo)注圖片,提取包含識(shí)別目標(biāo)的素材,提高訓(xùn)練精度。
模型訓(xùn)練
上圖是模型訓(xùn)練的流程圖,其中,在數(shù)據(jù)導(dǎo)入、模型訓(xùn)練和模型驗(yàn)證Momenta都做出了極大的創(chuàng)新。
數(shù)據(jù)導(dǎo)入:支持多種數(shù)據(jù)類型,支持多批次數(shù)據(jù)合并,支持多種組合規(guī)則;
模型訓(xùn)練:多機(jī)多卡并發(fā)訓(xùn)練,共享式集群、支持多人多任務(wù)同時(shí)進(jìn)行,支持多種主流訓(xùn)練框架,所有任務(wù)由 Kubernetes 自動(dòng)調(diào)度完成;
模型驗(yàn)證:訓(xùn)練所得模型自動(dòng)在驗(yàn)證集上進(jìn)行驗(yàn)證,通過驗(yàn)證的模型將進(jìn)入模型倉庫供后續(xù)流程使用。
與傳統(tǒng)方式相比,Momenta采用的共享集群調(diào)度讓用戶(內(nèi)部的算法研發(fā)人員)可以編寫任務(wù)描述和訓(xùn)練腳本,而管理員通過網(wǎng)頁界面進(jìn)行集群管理和工作調(diào)度。極大地節(jié)省人工成本,提高資源利用率,實(shí)現(xiàn)集中性管理,提高安全性。
Golang 在人工智能數(shù)據(jù)流中的應(yīng)用
Golang在人工智能數(shù)據(jù)流中主要應(yīng)用在篩選系統(tǒng)、標(biāo)注系統(tǒng)和訓(xùn)練系統(tǒng)。
篩選 系統(tǒng)
Momenta每天可能需要處理幾千萬張圖片,數(shù)據(jù)量巨大,如果逐一進(jìn)行標(biāo)注將給存儲(chǔ)帶來很大的挑戰(zhàn)。解決這個(gè)問題的方法就是篩選系統(tǒng),通過篩選系統(tǒng),我們將大的數(shù)據(jù)集拆分為小的單元,每個(gè)單元中包含小的任務(wù),而每個(gè)單元對應(yīng)一個(gè) GPU,使用 GPU進(jìn)行智能篩選。最終只有約10%的圖片時(shí)需要進(jìn)行標(biāo)注的,大大減少了數(shù)據(jù)標(biāo)注的成本。
標(biāo)注系統(tǒng)
Momenta為內(nèi)部算法研發(fā)人員服務(wù)的標(biāo)注系統(tǒng),可以實(shí)現(xiàn)用戶管理、任務(wù)分發(fā)、計(jì)費(fèi)、結(jié)算和自動(dòng)審核。自動(dòng)審核是比較特殊的,在一般場景和服務(wù)中用得比較少,自動(dòng)審核是指用Momenta的模型來證實(shí)用戶(在平臺(tái)上兼職標(biāo)注的人員)的標(biāo)注結(jié)果是否符合需求或預(yù)期,主要是應(yīng)付較大的用戶訪問,特別是節(jié)假日的時(shí)候。(節(jié)假日期間平臺(tái)的用戶比較閑,會(huì)希望在平臺(tái)上賺點(diǎn)零花錢。)
訓(xùn)練系統(tǒng)
訓(xùn)練系統(tǒng)是基于K8S搭建使用的,能夠?qū)崿F(xiàn)自己的調(diào)度。K8S作為容器的調(diào)度平臺(tái),默認(rèn)是調(diào)度一個(gè)pod在不同的機(jī)器上面運(yùn)行的,但是做多機(jī)訓(xùn)練可能需要同時(shí)使用多個(gè)Pod,每個(gè)機(jī)器上面一個(gè)Pod。這樣就需要相應(yīng)的管理以及生命周期的維護(hù),我們這套系統(tǒng)是基于K8S做的開發(fā),承擔(dān)這樣的工作。
機(jī)器學(xué)習(xí)場景下Golang的發(fā)展
如果此前沒有接觸過機(jī)器學(xué)習(xí)?如何能夠加入人工智能的浪潮中,學(xué)習(xí)并進(jìn)入機(jī)器學(xué)習(xí)領(lǐng)域呢? Go Notebooks、Caffe和Caffe2,TensorFlow-Go幾個(gè)工具都是很好的工具。接下來將演示如何用TensorFlow的Golang binding做一個(gè)簡單工具。
基于已有模型(他人訓(xùn)練的模型),對圖片進(jìn)行加載,隨后可輸出帶有標(biāo)記框的圖片,也是模型識(shí)別的效果。
所用的代碼參考如下:
建議可嘗試用 自己的模型或是TensorFlow官方模型形成小的應(yīng)用,例如人臉識(shí)別。但官方公布的模型精度都不高,原因是數(shù)據(jù)集較小,Momenta擁有的大數(shù)據(jù)平臺(tái)能有效降低人工標(biāo)注的成本,但大數(shù)據(jù)的訓(xùn)練往往涉及到多機(jī)訓(xùn)練。多機(jī)訓(xùn)練已經(jīng)經(jīng)歷了三個(gè)重要時(shí)期,我們定義為:史前時(shí)代、石器時(shí)代和現(xiàn)代文明。
史前時(shí)代
多機(jī)訓(xùn)練最原始的階段是直接登錄到某幾臺(tái)機(jī)器,安裝各類訓(xùn)練框架、驅(qū)動(dòng)和網(wǎng)絡(luò)配置等,在每臺(tái)機(jī)器上跑訓(xùn)練任務(wù),很難進(jìn)行優(yōu)化。容器出現(xiàn)后,可被用來避免某些重復(fù)的配置,讓多機(jī)訓(xùn)練進(jìn)入了下一個(gè)時(shí)代——石器時(shí)代。
石器時(shí)代
借助D ocker 將智能框架進(jìn)行封裝,在每臺(tái)機(jī)器上面運(yùn)行命令。
現(xiàn)代文明
在現(xiàn)代文明階段,所有調(diào)度和管理工作都通過容器進(jìn)行,可以同時(shí)管理幾百臺(tái)機(jī)器。能夠進(jìn)入這個(gè)階段主要是靠眾多開源社區(qū)的努力和合作,比如 TensorFlow和Kubernetes的強(qiáng)強(qiáng)聯(lián)合便誕生了Kubeflow。
KubeFlow其實(shí)是一些工具的集成或是一些框架,它有官方的自定義資源以及Caffe2的資源。通過KubeFlow,用戶只需要敲幾行命令便可進(jìn)行多機(jī)的訓(xùn)練,也可以實(shí)現(xiàn)簡單的模型訓(xùn)練。
評論
查看更多