從0到1搭建人工智能訓(xùn)練平臺(tái)要多久?
隨著人工智能技術(shù)的發(fā)展和普及,訓(xùn)練一個(gè)常規(guī)的AI模型,似乎變成了當(dāng)代大學(xué)生除了word和PPT外必備的生存技能。從入門到放棄的過程中,你大概會(huì)遇到環(huán)境配置和計(jì)算資源不足的天坑。別人用 8 卡訓(xùn)練,用 100 G 內(nèi)存去存數(shù)據(jù)集。而你把他的baseline下載下來,吭哧吭哧改了半天,才能在你的電腦上跑。此時(shí),一個(gè)簡單易用的AI訓(xùn)練平臺(tái)就顯得尤為重要。
國內(nèi)常用的平臺(tái)有華為的 ModelArts 百度的 AI Stdio 還有阿里的天池實(shí)驗(yàn)室等。作為一名研究僧,筆者這些當(dāng)然是都用過的了,他們能幫我們跳過環(huán)境配置和計(jì)算資源的問題。個(gè)人認(rèn)為,華為的 ModelArts 功能最全,用起來最順手。除了基礎(chǔ)的數(shù)據(jù)管理、算法管理和訓(xùn)練管理功能。還支持自動(dòng)標(biāo)注,自動(dòng)學(xué)習(xí)等。
對于學(xué)生而言,白嫖一些計(jì)算資源,用用這些平臺(tái)還是蠻劃算的。但是對公司而言,一小時(shí) 28 塊錢的基礎(chǔ) GPU,錢還沒賺到,就全都交了電費(fèi)了。更何況公司自己也有計(jì)算資源。所以,涉及到數(shù)據(jù)處理的公司都想搭建自己的AI訓(xùn)練平臺(tái)。那么這事到底可不可行呢?
先來看看國外是怎么做的。國外有亞馬遜的 AWS 和 Floyd 的 Floydhub 等為公眾開放的 AI 訓(xùn)練平臺(tái),其計(jì)算資源調(diào)度是通過 Kubernetes + Docker 的方式實(shí)現(xiàn)的。谷歌內(nèi)部的 Deepmind,微軟的 aether、philly 和??等訓(xùn)練平臺(tái),其實(shí)現(xiàn)原理也是以容器為核心,使用 Kubernetes 進(jìn)行調(diào)度。國內(nèi)的商湯科技、曠視科技,其內(nèi)部使用的 AI 訓(xùn)練平臺(tái)原理也大抵如此。[1]
看來做一個(gè)AI訓(xùn)練平臺(tái)技術(shù)路線還是挺清晰的。
那么從0到1搭建一個(gè)人工智能訓(xùn)練平臺(tái)要多久呢?
?
答案是 1個(gè)專業(yè)團(tuán)隊(duì) 和 一年時(shí)間。
以下內(nèi)容來自 b 站 UP 主 komlei 的分享:AI訓(xùn)練平臺(tái)TZ全盤詳細(xì)總結(jié)_嗶哩嗶哩_bilibili
本人按照視頻脈絡(luò)做出如下筆記。
?
AI訓(xùn)練平臺(tái)TZ全盤詳細(xì)總結(jié)
平臺(tái)用途:服務(wù)于公司內(nèi)部感知,決策團(tuán)隊(duì),用于深度學(xué)習(xí)模型訓(xùn)練。內(nèi)部研發(fā)平臺(tái)。
1 平臺(tái)落地回顧
1.1 前瞻期望

本頁介紹了常規(guī)的數(shù)據(jù)采集、處理、模型開發(fā)及訓(xùn)練流程,并且介紹了 AI 訓(xùn)練平臺(tái)的內(nèi)部結(jié)構(gòu)。(看樣子 UP 主應(yīng)該是自動(dòng)駕駛行業(yè)的)
內(nèi)部結(jié)構(gòu)基于云原生。使用交互式開發(fā)方式,可以在線加載數(shù)據(jù)集和訓(xùn)練。平臺(tái)支持 Pytorch、TensorFlow 和 Caffe 等多種深度學(xué)習(xí)框架,支持單機(jī)單卡、單機(jī)多卡、多機(jī)多卡訓(xùn)練。
1.2 流程復(fù)盤

1. 首先進(jìn)行需求定調(diào),明確平臺(tái)定位。是采用自研方式,還是基于 Kubeflow 等已有平臺(tái)進(jìn)行二次開發(fā)。
2. 進(jìn)行深一步的需求收集。為了考察需求方?jīng)]有考慮到的內(nèi)容,調(diào)研現(xiàn)有云計(jì)算平臺(tái)如華為云ModelArts、百度和阿里等廠商平臺(tái)作為參考。
3. 功能細(xì)化以及可行性分析
將功能細(xì)化為算法管理、訓(xùn)練管理和模型管理三個(gè)部分。
調(diào)研開源方案。
做 kubeflow 的落地可行性分析
4. 落地推進(jìn)
可落地架構(gòu)設(shè)計(jì)及技術(shù)選型:包括開發(fā)語言服務(wù)架構(gòu)等。
繼續(xù)細(xì)化平臺(tái)功能模塊。
做整體規(guī)劃和任務(wù)排期。
招募相關(guān)研發(fā)人員。
5. 開發(fā)落地。各模塊分別開發(fā)以及整體串聯(lián)。

這張涉及到的是各個(gè)模塊的開發(fā)時(shí)間規(guī)劃,可以看到整個(gè)項(xiàng)目是由 10 個(gè)人 來完成的。
開發(fā)周期從 2020 年底開始延續(xù)到2021年底。其中主要功能模塊使用7個(gè)月的時(shí)間進(jìn)行開發(fā),
剩下的時(shí)間進(jìn)行功能測試及優(yōu)化。
1.3 實(shí)施編排

2 平臺(tái)功能層面
2.1 功能框架

算法管理模塊管理代碼鏡像。
樣本配置包括數(shù)據(jù)集及其描述等。
將上述兩個(gè)部分送入訓(xùn)練管理模塊進(jìn)行訓(xùn)練。訓(xùn)練模塊要支持不同訓(xùn)練框架運(yùn)行任務(wù)實(shí)例。

整體功能模塊包括數(shù)據(jù)管理、算法管理、訓(xùn)練管理和模型管理四大部分。
數(shù)據(jù)管理:支持?jǐn)?shù)據(jù)上傳、數(shù)據(jù)瀏覽、標(biāo)注等功能。
算法管理:使用算法依賴和用戶代碼構(gòu)建算法鏡像。
訓(xùn)練管理:支持多框架訓(xùn)練和硬件資源調(diào)度。
模型管理:模型托管、模型壓縮/轉(zhuǎn)換、推理評估。
2.2 功能詳述&演示

工作空間
類似于網(wǎng)盤功能。用于管理數(shù)據(jù)集和代碼等。

交互編碼
用于創(chuàng)建和管理支持多種訓(xùn)練框架的 notebook 環(huán)境。提供 notebook 代碼編寫頁面入口。


算法管理
算法打包成鏡像。

新增算法。

鏡像管理
官方基礎(chǔ)鏡像。
平臺(tái)構(gòu)建鏡像:算法管理構(gòu)建出的鏡像。
用戶自定義鏡像:用戶本地構(gòu)建的鏡像。

訓(xùn)練管理
創(chuàng)建任務(wù):任務(wù)名稱、算法來源、數(shù)據(jù)集、模型權(quán)重文件、模型定義文件、訓(xùn)練方式定義。
每次訓(xùn)練生成一個(gè)版本。
版本中查看配置信息、日志和資源情況。
任務(wù)可視化:打開 TensorBoard。

模型管理
模型管理
壓縮轉(zhuǎn)換
推理評估

資源看板
GPU、內(nèi)存、CPU資源查看。
用戶作業(yè)隊(duì)列查看。

系統(tǒng)配置
AI系統(tǒng)配置:配置代碼黑名單、定義不同后綴文件對應(yīng)的文件類型。
AI訓(xùn)練配置:固定一些模板。

3 平臺(tái)技術(shù)實(shí)現(xiàn)
3.1 整體架構(gòu)

資源調(diào)度層面采用 K8S
日志采集通過 filebeat 采集到 Kafka
指標(biāo)監(jiān)控采用 Prometheus
將數(shù)據(jù)匯存到 TIDB
存儲(chǔ)涉及 SFS 和 OBS (對象存儲(chǔ))
Harbor 鏡像倉庫
上層服務(wù)治理采用 istio
借鑒 kubeflow 組件
3.2 庫 & 表結(jié)構(gòu)
公司內(nèi)部的庫表結(jié)構(gòu)就不說了。

3.3 服務(wù)部署
邏輯隔離,分為四塊。
training-zoo:業(yè)務(wù)服務(wù)。
training-job:用戶提交上來的 job。
training-task:提交到后臺(tái)的頁面服務(wù):tensorboard、notebook 和模型可視化服務(wù)。
training-Common:公共組件。如 grafana、prometheus。

展望未來next





參考資料:
[1]劉宇博. 基于云計(jì)算的人工智能訓(xùn)練平臺(tái)的研究與設(shè)計(jì)[D].北京郵電大學(xué),2019.
[2]komlei. AI訓(xùn)練平臺(tái)TZ全盤詳細(xì)總結(jié) AI訓(xùn)練平臺(tái)TZ全盤詳細(xì)總結(jié)_嗶哩嗶哩_bilibili