一位互聯(lián)網(wǎng)9年AI開發(fā)者的ModelArts開發(fā)實(shí)踐
前言
不論AI是真風(fēng)口還是大泡沫,在擁有九年互聯(lián)網(wǎng)AI開發(fā)從業(yè)經(jīng)驗(yàn)的筆者看來,AI技術(shù)一定要在我們的技術(shù)棧中占據(jù)一席之地,這已經(jīng)是不可逆的歷史大勢(shì)。筆者多年來一直關(guān)注人工智能領(lǐng)域的前沿研究和***實(shí)踐,久聞華為云推出的一站式AI開發(fā)平臺(tái)ModelArts在斯坦福DAWNBench的Image Classification on ImageNet中多次登頂TOP2,便想體驗(yàn)體驗(yàn)。
此次得到華為云布道師、ASF Member陳亮之邀,我對(duì)ModelArts進(jìn)行了一番深度體驗(yàn)與實(shí)踐。
ModelArts介紹
ModelArts是面向 AI 開發(fā)者的一站式開發(fā)平臺(tái),其開發(fā)平臺(tái)如圖1-1所示;ModelArts平臺(tái)向開發(fā)者提供了全套AI開發(fā)環(huán)境:分布式計(jì)算工具(TensorFlow/PyTorch)、分布式文件系統(tǒng)OBS(Ceph)、AI開發(fā)工具,該環(huán)境以Docker的方式集成,方便快速部署和擴(kuò)展,對(duì)于開發(fā)者只需要選擇所需要的Docker即可,避免了每個(gè)開發(fā)者進(jìn)行繁瑣的開發(fā)環(huán)境準(zhǔn)備工作;對(duì)于開發(fā)者,只需要關(guān)注模型生產(chǎn)部分的工作,包括數(shù)據(jù)的上傳、數(shù)據(jù)的標(biāo)注、模型選擇和開發(fā)、模型訓(xùn)練、模型部署等工作;對(duì)于上層應(yīng)用,開發(fā)者可以基于自己的模型進(jìn)行業(yè)務(wù)實(shí)現(xiàn),比如:圖像識(shí)別、分類預(yù)測(cè)、個(gè)性推薦等實(shí)際業(yè)務(wù)場(chǎng)景。
圖1-1 ModelArts平臺(tái)
其中ModelArts為了提升開發(fā)者的效率,還提供了海量數(shù)據(jù)預(yù)處理及半自動(dòng)化標(biāo)注提高數(shù)據(jù)標(biāo)注效率,大規(guī)模分布式訓(xùn)練減少模型訓(xùn)練耗時(shí),自動(dòng)化模型生成和模型部署能力幫助開發(fā)者快速創(chuàng)建和部署模型。對(duì)于開發(fā)者,基于ModelArts平臺(tái)的開發(fā)流程如圖1-2所示;首先進(jìn)行數(shù)據(jù)上傳,將數(shù)據(jù)上傳至OBS中;其次再對(duì)數(shù)據(jù)進(jìn)行樣本準(zhǔn)備,如果是需要標(biāo)注的數(shù)據(jù),采用平臺(tái)提供的半自動(dòng)化標(biāo)注工具可以快速進(jìn)行標(biāo)注,標(biāo)注完成后,則自動(dòng)生成樣本文件;再次根據(jù)業(yè)務(wù)需求進(jìn)行算法開發(fā),包括模型選擇、參照模型集市已有成熟模型、模型算法開發(fā)(基于Notebook進(jìn)行模型調(diào)試);然后對(duì)模型進(jìn)行訓(xùn)練,包括模型參數(shù)調(diào)優(yōu)、效果指標(biāo)分析等;***對(duì)模型進(jìn)行快速部署,包括模型管理、模型發(fā)布、在線預(yù)測(cè)、批量預(yù)測(cè)、AB分流等。
圖1-2 ModelArts 開發(fā)流程
2、環(huán)境準(zhǔn)備
步驟1:在華為云首頁點(diǎn)擊右上角的【控制臺(tái)】,如圖2-1所示。
圖2-1 進(jìn)入控制臺(tái)
步驟2:在控制臺(tái)首頁點(diǎn)擊右上角個(gè)人賬號(hào)選擇【我和憑證】,如圖2-2所示。
圖2-2 進(jìn)入我的憑證
步驟3:在首頁點(diǎn)擊【管理訪問密鑰】,然后點(diǎn)擊下方【新增訪問密鑰】,如圖2-3所示。
圖2-3 新增訪問密鑰
申請(qǐng)完后會(huì)自動(dòng)下載密鑰文件,如圖2-4所示
圖2-4 密鑰文件
其中密鑰文件主要包括以下內(nèi)容:
- Access Key:是開發(fā)者擁有的項(xiàng)目身份識(shí)別ID,用以身份認(rèn)證,類似于用戶名。
- Secret Key:是開發(fā)者擁有的項(xiàng)目身份密鑰,類似于密碼。
其中密鑰文件主要應(yīng)用在OBS文件和Notebook中,***使用上述功能需要輸入Access Key和Secret Key。
3、數(shù)據(jù)上傳
步驟1:華為云首頁在菜單欄點(diǎn)擊【產(chǎn)品】選擇【對(duì)象存儲(chǔ)服務(wù) OBS】,如圖3-1所示。
圖3-1 進(jìn)入OBS
步驟2:進(jìn)行后點(diǎn)擊【管理控制臺(tái)】,如圖3-2所示,***使用需要輸入開發(fā)者的Access Key和Secret Key。
圖3-2 進(jìn)入OBS控制臺(tái)
步驟3:進(jìn)入管理控制臺(tái)后點(diǎn)擊右上角【創(chuàng)建桶】,如圖3-3所示。
圖3-3 OBS創(chuàng)建桶
其中OBS的2個(gè)基本概念:
- Bucket:存儲(chǔ)桶是S3中用于存儲(chǔ)數(shù)據(jù)的容器,每個(gè)對(duì)象都存儲(chǔ)在一個(gè)存儲(chǔ)桶中。
- Object:對(duì)象是 S3中存儲(chǔ)的具體文件,是存儲(chǔ)的基本實(shí)體。
步驟4:點(diǎn)擊桶名稱,進(jìn)入數(shù)據(jù)集,如圖3-4所示。
圖3-4 OBS數(shù)據(jù)集
步驟5:上傳數(shù)據(jù),首先可以先【新建文件夾】,然后進(jìn)入文件夾后,點(diǎn)擊【上傳對(duì)象】,如圖3-5所示。
圖3-5 OBS上傳數(shù)據(jù)
除了上述直接在網(wǎng)頁上上傳數(shù)據(jù),開發(fā)者還可以通過OBS Browser客戶端上傳數(shù)據(jù),這里需要開發(fā)者對(duì)應(yīng)的客戶端,如圖3-6所示。
圖3-6 OBS客戶端
4、數(shù)據(jù)集管理
步驟1:進(jìn)入數(shù)據(jù)標(biāo)注首頁,如圖4-1所示。
圖4-1 進(jìn)入數(shù)據(jù)標(biāo)注
步驟2:在首頁點(diǎn)擊【創(chuàng)建數(shù)據(jù)集】,開始創(chuàng)建數(shù)據(jù)標(biāo)注任務(wù),如圖4-2所示。
圖4-2 創(chuàng)建數(shù)據(jù)標(biāo)注任務(wù)
其中數(shù)據(jù)集輸入位置就是上傳至OBS中數(shù)據(jù)集的路徑,這里還需要設(shè)定數(shù)據(jù)集的輸出位置,也就是輸出路徑,需要提前在OBS中建立輸出文件目錄。
步驟3:在創(chuàng)建的數(shù)據(jù)集上雙擊鼠標(biāo),就可以開始標(biāo)注數(shù)據(jù),如圖4-3所示。
圖4-3 開始標(biāo)注任務(wù)
其中標(biāo)注任務(wù)如圖4-4所示,通過鼠標(biāo)勾選圖片,然后在右邊對(duì)所勾選的圖片進(jìn)行打標(biāo)簽。
步驟4:查看標(biāo)注完成數(shù)據(jù)集,如圖4-5所示,可以對(duì)完成數(shù)據(jù)集進(jìn)行版本發(fā)布,并且查看數(shù)據(jù)集的文件路徑,如圖4-6和圖4-7所示。
圖4-5 標(biāo)注完成頁
圖4-6 數(shù)據(jù)集版本發(fā)布
圖4-7 數(shù)據(jù)集路徑查看
除了上述通過半自動(dòng)標(biāo)注數(shù)據(jù)進(jìn)行數(shù)據(jù)生成外,開發(fā)者還可以直接上傳已生成好的樣本文件進(jìn)行數(shù)據(jù)生成,有了數(shù)據(jù)后,需要進(jìn)行數(shù)據(jù)集發(fā)布,其中數(shù)據(jù)集的發(fā)布的步驟如下所示。
步驟1:在【數(shù)據(jù)管理】菜單中點(diǎn)擊【數(shù)據(jù)集】,進(jìn)入數(shù)據(jù)集首頁,在這里可以查看已有數(shù)據(jù)集,并且可以創(chuàng)建數(shù)據(jù)集。如圖4-8所示。
圖4-8 數(shù)據(jù)集
步驟2:點(diǎn)擊在【創(chuàng)建】按鈕,進(jìn)入創(chuàng)建數(shù)據(jù)集配置頁,如圖4-9所示。
圖4-9 創(chuàng)建數(shù)據(jù)集
其中數(shù)據(jù)集存儲(chǔ)路徑就是數(shù)據(jù)集的OBS文件路徑(數(shù)據(jù)標(biāo)注生成的路徑或者開發(fā)者上傳數(shù)據(jù)路徑)。
5、Notebook實(shí)踐
步驟1:進(jìn)入【開發(fā)環(huán)境】,點(diǎn)擊【Notebook】,如圖5-1所示,***使用需要輸入開發(fā)者的Access Key和Secret Key。
圖5-1 開發(fā)環(huán)境
步驟2:創(chuàng)建Notebook,如圖5-2所示,開發(fā)者需要根據(jù)自己所需要的開發(fā)環(huán)境選擇相應(yīng)的Docker鏡像,并且選擇合適的計(jì)算資源,其中Notebook文件的存儲(chǔ)路徑也需要開發(fā)者設(shè)置OBS路徑。
圖5-2 創(chuàng)建Notebook
步驟3:啟動(dòng)Notebook,如圖5-3所示,點(diǎn)擊打開,就可以啟動(dòng)。
圖5-3 啟動(dòng)Notebook
步驟4:Notebook編程,Notebook首頁如圖5-4所示,開發(fā)者可以新建一個(gè)Notebook。
圖5-3 Notebook首頁
步驟:Notebook編程調(diào)試,開發(fā)者可以在一個(gè)Notebook進(jìn)行編程和調(diào)試,如下案例所示。
圖5-4 環(huán)境準(zhǔn)備
圖5-5 數(shù)據(jù)準(zhǔn)備
圖5-6 數(shù)據(jù)調(diào)試
圖5-7 模型開發(fā)
圖5-8 模型調(diào)試
6、訓(xùn)練作業(yè)
步驟1:點(diǎn)擊【訓(xùn)練作業(yè)】菜單,進(jìn)入創(chuàng)建訓(xùn)練作業(yè)首頁,如圖6-1所示。
圖6-1 訓(xùn)練作業(yè)首頁
步驟2:在首頁點(diǎn)擊【創(chuàng)建】,創(chuàng)建訓(xùn)練作業(yè),如圖6-2所示。
圖6-2 創(chuàng)建訓(xùn)練作業(yè)
其中【數(shù)據(jù)來源】就是選擇已發(fā)布的數(shù)據(jù)集數(shù)據(jù),【算法來源】可以選擇預(yù)置算法、常用框架、自定義實(shí)現(xiàn)算法等,【運(yùn)行參數(shù)】就是算法訓(xùn)練所需要的參數(shù),【訓(xùn)練輸出位置】就是模型生成的OBS路徑。參數(shù)設(shè)置完成后,點(diǎn)擊【下一步】進(jìn)行確認(rèn)頁,如圖6-3所示。
圖6-3 訓(xùn)練配置確認(rèn)
點(diǎn)擊【立即創(chuàng)建】后,該訓(xùn)練任務(wù)已經(jīng)成功創(chuàng)建,可以查看任務(wù)的狀態(tài),如圖6-4所示,訓(xùn)練中,可以查看模型信息、日志、資源使用等,如圖6-5所示,訓(xùn)練完成后還可以查看模型評(píng)估指標(biāo),如圖6-6所示。
圖6-4 訓(xùn)練狀態(tài)
圖6-5 訓(xùn)練信息
圖6-6 訓(xùn)練評(píng)估指標(biāo)
7、模型管理
步驟1:點(diǎn)擊【模型管理】菜單,進(jìn)入模型管理首頁,如圖7-1所示。
圖7-1 模型管理首頁
步驟2:在首頁點(diǎn)擊【導(dǎo)入】,進(jìn)行模型導(dǎo)入配置,如圖7-2所示。
圖7-2 模型導(dǎo)入配置
其中【模型來源】可以來自訓(xùn)練任務(wù)、OBS文件中、鏡像中。
步驟3:在模型管理首頁可以進(jìn)行模型管理,包括:模型部署、在市場(chǎng)進(jìn)行模型發(fā)布,如圖7-3所示。
圖7-3 模型管理
8、模型上線
在線服務(wù)首頁:在【部署上線】菜單,點(diǎn)擊【在線服務(wù)】進(jìn)入在線服務(wù)首頁,如圖8-1所示。
圖8-1 在線服務(wù)首頁
在線服務(wù)部署配置:在首頁點(diǎn)擊【部署】,進(jìn)入部署配置頁,如圖8-2所示。
圖8-2 模型部署配置頁
在線服務(wù)狀態(tài)監(jiān)控:部署完成后,可以進(jìn)行狀態(tài)監(jiān)控和預(yù)測(cè)服務(wù)等,如圖8-3所示。
圖8-3 模型服務(wù)
在線服務(wù)預(yù)測(cè):點(diǎn)擊【預(yù)測(cè)】,可以進(jìn)入預(yù)測(cè)頁面,如圖8-4所示。
圖8-4 預(yù)測(cè)服務(wù)
批量服務(wù)首頁:在【部署上線】菜單,點(diǎn)擊【批量服務(wù)】進(jìn)入批量服務(wù)首頁,如圖8-5所示。
圖8-5 批量服務(wù)首頁
批量服務(wù)部署配置:在首頁點(diǎn)擊【部署】,進(jìn)入部署配置頁,如圖8-6所示。
圖8-6 模型部署配置頁
其中批量服務(wù)部署配置需要配置模型版本,批量預(yù)測(cè)樣本的路徑,以及預(yù)測(cè)結(jié)果路徑。
批量服務(wù)狀態(tài)監(jiān)控:在首頁可以監(jiān)控批量預(yù)測(cè)服務(wù)的狀態(tài),進(jìn)入部署配置頁,如圖8-7所示,點(diǎn)擊啟動(dòng)后,可以查看任務(wù)信息,如圖8-8所示,根據(jù)輸出目錄,可以查看輸出文件,如圖8-9所示,其中每一條的預(yù)測(cè)結(jié)果用json格式保存,例如:{"predicted_label":"dog","scores":[["dog",0.61349],["cat",0.38650]]}。
圖8-7批量預(yù)測(cè)服務(wù)的狀態(tài)
圖8-8預(yù)測(cè)信息
圖8-9預(yù)測(cè)結(jié)果
9、ModelArts總結(jié)
9.1 平臺(tái)優(yōu)點(diǎn)
- 1、Docker化,易用性高,開發(fā)者不用關(guān)心開發(fā)環(huán)境,省去繁瑣的開發(fā)環(huán)境準(zhǔn)備工作。
- 2、一站式機(jī)器學(xué)習(xí)平臺(tái),從數(shù)據(jù)、模型生產(chǎn)、模型部署、模型上線一站式管理。
- 3、樣本準(zhǔn)備高效,半自動(dòng)幫助開發(fā)者進(jìn)行樣本標(biāo)注,并且自動(dòng)生成模型可讀的樣本文件。
- 4、可視化流程管理,訓(xùn)練過程、日志文件、評(píng)估結(jié)果查詢方便。
- 5、版本管理,支持?jǐn)?shù)據(jù)、訓(xùn)練、模型的版本管理。
- 6、快速上線,支持一鍵式上線管理,也支持快速批量預(yù)測(cè),還支持線上AB測(cè)試。
- 7、模型共享,可以方便查詢集市上相關(guān)的模型,并且可以直接進(jìn)行訓(xùn)練。
9.2 平臺(tái)建議
平臺(tái)建議1—增加特征分析組件
- 1、支持CSV、libSVM等格式樣本集的特征分析和數(shù)據(jù)分析。
- 2、特征分析指標(biāo)包括:特征覆蓋率、特征IV值、特征信息熵、特征缺失率等。
- 3、數(shù)據(jù)分析分析包括:樣本整體Label分布比例;
連續(xù)特征的***、最小、平均、分位數(shù)等指標(biāo);
離散特征的:枚舉個(gè)數(shù)、枚舉TopK的分布等。
平臺(tái)建議2—模型評(píng)估指標(biāo)增加特征重要性排序
- 1、增加特征重要性排序指標(biāo),比如輸出TopK個(gè)特征
- 2、可視化輸出TopK個(gè)卷積核的圖像
平臺(tái)建議3—增加模型可解釋組件
- 1、集成類似:LIME組件
平臺(tái)建議4—增加共享Notebook功能
- 1、對(duì)于開發(fā)者之間進(jìn)行交流,最方便的是用Notebook,比如:開發(fā)者A,可以將他的Notebook地址發(fā)給開發(fā)者群或者開發(fā)者B,通過權(quán)限控制,開發(fā)者群或者開發(fā)者B可以擁有該Notebook的訪問、編輯、調(diào)試權(quán)限,大家可以這樣相互交流代碼和問題
- 2、類似功能可以參考:共享文檔思路,類似產(chǎn)品有:騰訊文檔
平臺(tái)建議5—技術(shù)路線梳理
- 1、平臺(tái)可以增加技術(shù)路線引導(dǎo),幫助開發(fā)者快速找到所需的技術(shù),或者幫助開發(fā)者提升技術(shù)實(shí)力。
- 2、例如NLP的簡(jiǎn)單技術(shù)路線如圖9-1所示。
圖9-1NLP技術(shù)路線