其中,“發(fā)布”是一個(gè)很重要的概念。在EasyData中,數(shù)據(jù)集可以有兩個(gè)狀態(tài):已發(fā)布與未發(fā)布。數(shù)據(jù)一旦發(fā)布,其屬性將不可變,用戶(hù)不能對(duì)該版本的數(shù)據(jù)進(jìn)行增刪改操作。這一動(dòng)作可以幫助模型進(jìn)行復(fù)現(xiàn),使用同一個(gè)已發(fā)布的數(shù)據(jù)版本,總能訓(xùn)練出效果相對(duì)一致的模型。發(fā)布的版本保障了數(shù)據(jù)的穩(wěn)定性,同時(shí)也為用戶(hù)的數(shù)據(jù)回滾提供了便利。用戶(hù)也可以通過(guò)繼承發(fā)布的版本來(lái)生成新的數(shù)據(jù)集,倘若因?yàn)殄e(cuò)誤操作,誤刪了很多實(shí)例樣本,這時(shí)完全不用為刪除的實(shí)例樣本捶胸頓足,因?yàn)镋asyData依然支持從發(fā)布版本中重新導(dǎo)入數(shù)據(jù)。與發(fā)布版本對(duì)應(yīng)的是未發(fā)布版本,這一版本允許用戶(hù)對(duì)其進(jìn)行各種修改,可以靈活地處理數(shù)據(jù),進(jìn)行標(biāo)注、清洗等操作。
數(shù)據(jù)集的發(fā)布與否,用戶(hù)可以根據(jù)自己的需求自行選擇。如果用戶(hù)希望能夠固化自己的數(shù)據(jù)集,通過(guò)已經(jīng)固定的數(shù)據(jù)集獲得穩(wěn)定的訓(xùn)練模型,可以選擇將數(shù)據(jù)集進(jìn)行發(fā)布,此后不能對(duì)數(shù)據(jù)集進(jìn)行更改。而如果用戶(hù)希望能夠不斷對(duì)現(xiàn)有數(shù)據(jù)集進(jìn)行增添、刪除,或?qū)?shù)據(jù)進(jìn)行標(biāo)注、清洗等行為來(lái)達(dá)到優(yōu)化模型效果的目的,可以選擇使用未發(fā)布版本訓(xùn)練模型。已發(fā)布與未發(fā)布的數(shù)據(jù)集,也都支持直接通過(guò)【去訓(xùn)練】按鈕進(jìn)入EasyDL平臺(tái)進(jìn)行模型訓(xùn)練,也均可通過(guò)EasyDL進(jìn)行查看。
模型版本管理
在結(jié)束數(shù)據(jù)的管理之后,用戶(hù)可以通過(guò)EasyData中的“去訓(xùn)練”按鈕跳轉(zhuǎn)到EasyDL進(jìn)入模型訓(xùn)練等步驟。
在缺乏模型版本管理的開(kāi)發(fā)流程中,任何版本相關(guān)的問(wèn)題都會(huì)拖垮開(kāi)發(fā)效率:算法工程師往往難以追溯歷史模型網(wǎng)絡(luò)結(jié)構(gòu)與對(duì)應(yīng)的訓(xùn)練代碼和模型超參,陷入模型效果難以復(fù)現(xiàn)的尷尬境地;在特定版本模型與特定版本預(yù)測(cè)代碼引發(fā)模型推理失敗時(shí),原因定位和排查極為困難;此外,當(dāng)一個(gè)模型在多個(gè)系統(tǒng)和平臺(tái)流轉(zhuǎn)時(shí),難以統(tǒng)一模型版本容易導(dǎo)致冗余的模型存儲(chǔ)和嚴(yán)重的業(yè)務(wù)模塊耦合。
針對(duì)以上提到的問(wèn)題,EasyDL模型版本管理能夠做到對(duì)模型迭代流程生命周期的一站式、全覆蓋追蹤,包括模型的效果優(yōu)化、蒸餾、量化、剪枝等各類(lèi)迭代變更歷史。EasyDL對(duì)模型迭代版本統(tǒng)一管理,以可拔插的方式支持百度智能云BOS對(duì)象存儲(chǔ)、HDFS等多種存儲(chǔ)系統(tǒng);跟蹤模型生命周期的資源和元數(shù)據(jù),方便模型溯源和效果復(fù)現(xiàn);支持模型、數(shù)據(jù)、代碼的關(guān)聯(lián)關(guān)系維護(hù),并允許自定義模型元數(shù)據(jù)信息;支持自動(dòng)識(shí)別并可視化模型網(wǎng)絡(luò)結(jié)構(gòu),能夠有效降低算法開(kāi)發(fā)成本。
代碼版本管理
對(duì)于有一定深度學(xué)習(xí)基礎(chǔ),希望對(duì)模型進(jìn)行代碼級(jí)修改的用戶(hù),在缺乏代碼版本管理的開(kāi)發(fā)流程中,代碼版本相關(guān)的問(wèn)題同樣嚴(yán)重影響開(kāi)發(fā)效率:訓(xùn)練代碼需要用戶(hù)手動(dòng)從外部導(dǎo)入,或選擇平臺(tái)有限的幾份預(yù)置代碼,靈活度不夠;代碼的改動(dòng)沒(méi)有版本控制,用戶(hù)無(wú)法對(duì)代碼進(jìn)行回溯、比對(duì),從而無(wú)法記錄代碼的改動(dòng)對(duì)模型訓(xùn)練效果的影響。
EasyDL代碼版本管理支持用戶(hù)級(jí)的訓(xùn)練代碼模板的發(fā)布、獲取、篩選等操作,方便用戶(hù)快速匹配到所需的訓(xùn)練代碼并導(dǎo)入;在開(kāi)發(fā)過(guò)程中,用戶(hù)每一次的代碼提交會(huì)生成一個(gè)代碼版本,記錄了此次代碼提交所做的修改,后續(xù)能夠查詢(xún)用戶(hù)在對(duì)應(yīng)項(xiàng)目下的代碼歷史提交記錄,并可以對(duì)代碼進(jìn)行回溯、比對(duì);可以將特定版本的代碼關(guān)聯(lián)到特定版本的數(shù)據(jù)與模型,幫助開(kāi)發(fā)者提升開(kāi)發(fā)與部署效率。
EasyDL代碼版本管理的內(nèi)部存儲(chǔ)分別對(duì)接了GitHub、GitLab等主流代碼倉(cāng)庫(kù)及公司內(nèi)部的Icode,用戶(hù)無(wú)需登錄上述代碼倉(cāng)庫(kù),即可直接在平臺(tái)上對(duì)上述倉(cāng)庫(kù)中的代碼進(jìn)行操作;對(duì)于無(wú)需對(duì)接上述代碼倉(cāng)庫(kù)的用戶(hù),支持以DB的方式為用戶(hù)建立平臺(tái)內(nèi)部代碼庫(kù)存儲(chǔ),靈活度較高。
在模型開(kāi)發(fā)的全流程中,無(wú)論是數(shù)據(jù)準(zhǔn)備、模型迭代、代碼修改,用戶(hù)會(huì)從多個(gè)角度對(duì)模型進(jìn)行調(diào)整,以獲得更優(yōu)秀的模型效果。使用EasyDL平臺(tái)的開(kāi)發(fā)者可以對(duì)于不同環(huán)節(jié)中產(chǎn)生的多個(gè)數(shù)據(jù)集、模型與代碼版本,通過(guò)進(jìn)行精細(xì)化的管理,簡(jiǎn)便地進(jìn)行回溯比對(duì)與錯(cuò)誤定位。靈活高效進(jìn)行業(yè)務(wù)AI模型的定制與開(kāi)發(fā),快速解決業(yè)務(wù)問(wèn)題。
立刻嘗試EasyDL:https://ai.baidu.com/easydl/