人工智慧大數據平台中Golang的應用實踐

人工智慧大數據平台中Golang的應用實踐

來自專欄 Paper Reading6 人贊了文章

分享人:

薛磊,Momenta資深研發工程師,前Sun中國工程研究院工程師,專註於分散式系統、存儲系統、容器等技術,目前從事深度學習訓練平台的基礎架構研發。熱愛開源和分享,目前是Kubeflow member及多個開源項目contributor。

Momenta成立於2016年,是世界頂尖的自動駕駛公司。其核心技術是基於深度學習的環境感知、高精度地圖、駕駛決策演算法。在產品方面,Momenta已經形成服務多個場景的自動駕駛解決方案,包括高速環路、城市道路以及泊車場景的高度自動駕駛,目前正圍繞不同級別自動駕駛方案與車企和一級供應商展開合作。

前言

目前人工智慧非常火,大家所熟知的人臉識別、智能安防、自動駕駛等領域都在應用人工智慧技術。但在自動駕駛這個行業中我們能用Go語言做什麼事情?今天分享的主要是人工智慧數據流的流轉方式,也是Golang在Momenta大數據平台當中的應用。

Momenta大數據平台

Momenta的目標是打造自動駕駛大腦,基於深度學習和海量數據,Momenta已經形成服務多個場景的自動駕駛解決方案,解決了逆光、橋、隧道、雨天、夜間、匝道等複雜道路場景。

在實現自動駕駛的過程中,深度學習的演算法在訓練模型時得有基礎數據作支撐,需要大量的圖像數據。

藉助團隊極強的研究能力與工程能力,Momenta已經建立起大數據平台、大計算平台、大測試平台三大基礎平台,從而實現大數據與AI演算法的反饋閉環——以強大的計算資源處理豐富的海量數據,得到更精準、更可靠的演算法模型

其中,大數據平台能夠完美處理自動駕駛領域的數據流,具體而言,便是處理收集數據、篩選數據、數據標註、訓練模型、模型測試、封裝發布的整個過程。

人工智慧數據流

數據篩選

上圖是車輛識別的一個典型,富有中國特色和北京特色——電動車,Momenta目前對電動車、自行車、人力三輪車、三輪電動車等,都能進行識別,並且達到很高的準確度。在人工智慧數據流中,數據篩選這一步驟主要有以下作用:

  • 降低成本:無需重複標註已經可以很好識別的素材,降低標註成本,模型運行結果可用於輔助標註;
  • 提高模型訓練效率:去除無效素材,提取包含識別目標的素材,提高訓練效率;
  • 提高模型訓練邊際效用:通過對極端情況(corner case)的數據進行針對性訓練,可以有效的提高模型性能。

數據標註

經過篩選之後,會有部分圖片需要人工標註。基於極強的工程能力,Momenta開發了在線遠程眾包數據標註系統,實現可視化操作,即便標註人員不懂代碼也能遠程完成各類標註任務。數據標註的作用主要是提高模型訓練精度, 獲得更多標註圖片,提取包含識別目標的素材,提高訓練精度。

模型訓練

上圖是模型訓練的流程圖,其中,在數據導入、模型訓練和模型驗證Momenta都做出了極大的創新。

  • 數據導入:支持多種數據類型,支持多批次數據合併,支持多種組合規則;
  • 模型訓練:多機多卡並發訓練,共享式集群、支持多人多任務同時進行,支持多種主流訓練框架,所有任務由 Kubernetes 自動調度完成;
  • 模型驗證:訓練所得模型自動在驗證集上進行驗證,通過驗證的模型將進入模型倉庫供後續流程使用。

與傳統方式相比,Momenta採用的共享集群調度讓用戶(內部的演算法研發人員)可以編寫任務描述和訓練腳本,而管理員通過網頁界面進行集群管理和工作調度。極大地節省人工成本,提高資源利用率,實現集中性管理,提高安全性。

Golang 在人工智慧數據流中的應用

Golang在人工智慧數據流中主要應用在篩選系統、標註系統和訓練系統。

篩選系統

Momenta每天可能需要處理幾千萬張圖片,數據量巨大,如果逐一進行標註將給存儲帶來很大的挑戰。

解決這個問題的方法就是篩選系統,通過篩選系統,我們將大的數據集拆分為小的單元,每個單元中包含小的任務,而每個單元對應一個 GPU,使用 GPU進行智能篩選。最終只有約10%的圖片是需要進行標註的,大大減少了數據標註的成本。

標註系統

Momenta為內部演算法研發人員服務的標註系統,可以實現用戶管理、任務分發、計費、結算和自動審核。自動審核是比較特殊的,在一般場景和服務中用得比較少,自動審核是指用Momenta的模型來證實用戶(在平台上兼職標註的人員)的標註結果是否符合需求或預期,主要是應付較大的用戶訪問,特別是節假日的時候。(節假日期間平台的用戶比較閑,會希望在平台上賺點零花錢。)

數據篩選

訓練系統是基於K8S搭建使用的,能夠實現自己的調度。K8S作為容器的調度平台,默認是調度一個pod在不同的機器上面運行的,但是做多機訓練可能需要同時使用多個Pod,每個機器上面一個Pod。這樣就需要相應的管理以及生命周期的維護,我們這套系統是基於K8S做的開發,承擔這樣的工作。

機器學習場景下Golang的發展

如果此前沒有接觸過機器學習,如何能夠加入人工智慧的浪潮中,學習並進入機器學習領域呢?

Go Notebooks、Caffe和Caffe2,TensorFlow-Go幾個工具都是很好的工具。接下來將演示如何用TensorFlow的Golang binding做一個簡單工具。

基於已有模型(他人訓練的模型),對圖片進行載入,隨後可輸出帶有標記框的圖片,也是模型識別的效果。

所用的代碼參考如下:

建議可嘗試用自己的模型或是TensorFlow官方模型形成小的應用,例如人臉識別。但官方公布的模型精度都不高,原因是數據集較小,Momenta擁有的大數據平台能有效降低人工標註的成本,但大數據的訓練往往涉及到多機訓練。多機訓練已經經歷了三個重要時期,我們定義為:史前時代、石器時代和現代文明

史前時代

多機訓練最原始的階段是直接登錄到某幾台機器,安裝各類訓練框架、驅動和網路配置等,在每台機器上跑訓練任務,很難進行優化。容器出現後,可被用來避免某些重複的配置,讓多機訓練進入了下一個時代——石器時代。

石器時代

藉助Docker 將智能框架進行封裝,在每台機器上面運行命令。

現代文明

在現代文明階段,所有調度和管理工作都通過容器進行,可以同時管理幾百台機器。能夠進入這個階段主要是靠眾多開源社區的努力和合作,比如 TensorFlow和Kubernetes的強強聯合便誕生了Kubeflow。

KubeFlow其實是一些工具的集成或是一些框架,它有官方的自定義資源以及Caffe2的資源。通過KubeFlow,用戶只需要敲幾行命令便可進行多機的訓練,也可以實現簡單的模型訓練。

【自動駕駛公司Momenta2019校園招聘正式啟動!點擊查看詳情】

與我們一同打造更好的人工智慧,創造更好的生活,成就更好的你!

成就下一個偉大 | 自動駕駛公司Momenta校園招聘正式啟動?

mp.weixin.qq.com圖標

知乎機構號:Momenta,打造自動駕駛大腦。 基於深度學習的環境感知、高精度地圖、駕駛決策技術,讓無人駕駛成為可能。

Momenta?

www.zhihu.com圖標

知乎專欄:Paper Reading,集聚自動駕駛知名大咖的前沿知識分享平台,歡迎申請加入或直接投稿。

Paper Reading?

zhuanlan.zhihu.com圖標
推薦閱讀:

有了這個AI你也能跳出來,人均舞王指日可待。
AI 正在學習讀懂你的情感,未來可幫助管理負面情緒
精神·自我與人工智慧
中歐人工智慧合作邁新高 深蘭科技領軍中國智造
從線性模型到神經網路

TAG:人工智慧 | 大數據 | 自動駕駛 |