發(fā)布于:2021-01-15 14:57:33
0
64
0
當(dāng)數(shù)據(jù)科學(xué)家和ML研究人員與DevOps會(huì)面以嘗試在生產(chǎn)和商業(yè)環(huán)境中部署,審核和維護(hù)最先進(jìn)的AI模型時(shí),會(huì)出現(xiàn)許多問題。本文討論了一種名為Studio.ML的新開源軟件工具,該工具提供了許多解決此問題的方法。
如今,機(jī)器學(xué)習(xí)(ML)和人工智能(AI)使技術(shù)滲透到大多數(shù)行業(yè)。就像早期計(jì)算機(jī)時(shí)代的軟件一樣,ML和AI不再是研究人員的玩具,而已成為企業(yè)重要的創(chuàng)收工具。與業(yè)務(wù)目標(biāo)驅(qū)動(dòng)軟件開發(fā)的方式類似,有必要使開發(fā)到生產(chǎn)ML模型的周期更短,更健壯并且更易于復(fù)制。這種需求通常會(huì)與“新奇事物”綜合癥相沖突,綜合癥是軟件工程中已知的反模式。但是對(duì)于ML / AI驅(qū)動(dòng)的企業(yè)來說,使用最新研究結(jié)果的能力通常意味著競爭優(yōu)勢(shì)和可觀的利潤。
換句話說,如果貴公司的數(shù)據(jù)科學(xué)家和平臺(tái)工程師使彼此的生活陷入困境,請(qǐng)不要驚慌-這并不罕見。實(shí)際上,這正是我們?cè)赟entient Technologies發(fā)現(xiàn)的情況。當(dāng)我們嘗試構(gòu)建一個(gè)生產(chǎn)上可靠的深度學(xué)習(xí)和分布式計(jì)算框架以與Java一起使用時(shí),我們發(fā)現(xiàn)所有新雇用的數(shù)據(jù)科學(xué)家都更喜歡使用Python構(gòu)建模型。
為了更詳細(xì)地說明問題的根源,請(qǐng)考慮圖1中的典型數(shù)據(jù)科學(xué)和DevOps管道。要清楚地說明,我們并沒有要求用這種簡化的圖片來涵蓋所有可能的用例,而僅涉及到最頻繁且最相關(guān)的情況。生產(chǎn)AI / ML模型。在數(shù)據(jù)科學(xué)世界中,如A行所示,典型過程始于收集數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行迭代并調(diào)試代碼。然后,通常可以通過手工或使用現(xiàn)代自動(dòng)方法(例如神經(jīng)進(jìn)化)來優(yōu)化超參數(shù)和神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu),從而開始進(jìn)行繁重的計(jì)算。最后,該過程已訓(xùn)練出最佳模型。之后,數(shù)據(jù)科學(xué)家通常會(huì)做一個(gè)模糊的事情,即“將模型推入生產(chǎn)階段”,這通常歸結(jié)為將最佳模型交給DevOps或工程團(tuán)隊(duì)。
同時(shí),在B行所示的DevOps世界中,該過程從一個(gè)容器開始。容器必須通過一堆單元測(cè)試和回歸測(cè)試,升級(jí)到暫存階段,通過浸泡測(cè)試,然后才能投入生產(chǎn)。然后,模型容器成為微服務(wù)體系結(jié)構(gòu)的一部分,開始與其他生產(chǎn)系統(tǒng)組件進(jìn)行交互,然后進(jìn)行自動(dòng)縮放和負(fù)載平衡。牢記這兩個(gè)世界,就可以看到事物容易掉入的裂縫。當(dāng)模型與容器的綁扎程度不夠時(shí),當(dāng)容器在波濤洶涌的海上運(yùn)輸時(shí),模型會(huì)反彈。
DevOps傾向于名義上測(cè)試容器功能-無需檢查模型是否正常運(yùn)行-而數(shù)據(jù)科學(xué)家的測(cè)試并未考慮模型將在容器中工作的事實(shí)。權(quán)重文件等的預(yù)處理功能位置可能位于不同的文件夾中。我們的經(jīng)驗(yàn)告訴我們,正是這些小事情最終被忽視了。
DevOps和數(shù)據(jù)科學(xué)的二分法促使我們創(chuàng)建了開源項(xiàng)目Studio.ML。Studio.ML旨在彌合必須不斷地追逐新事物和新事物的研究型數(shù)據(jù)科學(xué)與可以完全再現(xiàn)結(jié)果并避免“在我的機(jī)器上運(yùn)行”的良好軟件工程或DevOps實(shí)踐之間的鴻溝問題。Studio.ML還可以自動(dòng)執(zhí)行諸如超參數(shù)優(yōu)化之類的重要數(shù)據(jù)科學(xué)任務(wù),并以無縫方式利用云計(jì)算資源,而不會(huì)給數(shù)據(jù)科學(xué)家?guī)砣魏晤~外的認(rèn)知負(fù)擔(dān),以使其了解容器或?qū)嵗鼳MI。
該項(xiàng)目的核心思想是盡可能不侵入數(shù)據(jù)科學(xué)家或研究人員的代碼,集中存儲(chǔ)實(shí)驗(yàn)數(shù)據(jù),以使其具有可復(fù)制性,可共享性和可比性。實(shí)際上,Studio.ML通常無需更改任何代碼即可提供可觀的價(jià)值。唯一的要求是該代碼使用Python。自從我們使用Java構(gòu)建深度學(xué)習(xí)框架并嘗試使用Lua以來,Python便成為了機(jī)器學(xué)習(xí)社區(qū)的事實(shí)上的標(biāo)準(zhǔn)。這是由于其龐大的數(shù)據(jù)分析和深度學(xué)習(xí)庫集,因此,如果您是研究ML / AI前沿技術(shù)的研究人員,則很可能會(huì)自然滿足編寫Python代碼的要求。
從研究人員的角度來看,如果以下命令行:
python my_awesome_training_script.py arg1 arg2
訓(xùn)練模型,然后:
studio run my_awesome_training_script.py arg1 arg2
運(yùn)行培訓(xùn)并存儲(chǔ)重現(xiàn)實(shí)驗(yàn)所需的信息,例如一組帶有版本,命令行和當(dāng)前工作目錄狀態(tài)的python軟件包。實(shí)驗(yàn)的日志(即stdout和stderr流)存儲(chǔ)并顯示在簡單的UI中:
如果其他研究人員想重新運(yùn)行相同的實(shí)驗(yàn),則可以通過:
studio rerun <experiment_key>
包裝實(shí)驗(yàn)具有可重復(fù)性,這是一個(gè)非常強(qiáng)大的想法。如果可以在另一位研究人員的機(jī)器上復(fù)制實(shí)驗(yàn),那么它也可以在具有許多GPU的功能強(qiáng)大的數(shù)據(jù)中心機(jī)器上運(yùn)行,也可以在云機(jī)器上運(yùn)行。例如:
studio run --cloud=ec2 --gpus=1 my_awesome_training_script.py arg1 arg2
將使用具有一個(gè)GPU的實(shí)例在Amazon EC2中運(yùn)行我們的實(shí)驗(yàn),就好像它在本地運(yùn)行一樣。請(qǐng)注意,要獲得相同的結(jié)果,研究人員必須與DevOps工程師合作,或者了解EC2 AMI,實(shí)例和租戶類型,GPU驅(qū)動(dòng)程序安裝等。
再加上其他功能,例如超參數(shù)搜索,使用便宜的現(xiàn)貨/可搶占式云實(shí)例,與Jupyter筆記本電腦及其他產(chǎn)品的集成,Studio.ML的存在使數(shù)據(jù)科學(xué)家的工作變得更加輕松。但是障礙的另一面是:DevOps工程師?Studio.ML還具有服務(wù)功能,因此可以將構(gòu)建的模型用作單個(gè)命令行:
studio serve <experiment_key>
一方面,這允許對(duì)構(gòu)建的模型進(jìn)行簡單的容器化和部署。但是更重要的是,簡單服務(wù)可以使數(shù)據(jù)科學(xué)家自己進(jìn)行單元/回歸測(cè)試,從而消除了模型在訓(xùn)練和驗(yàn)證中表現(xiàn)良好時(shí)的頻繁故障模式。服務(wù)使用的是未經(jīng)測(cè)試的略有不同的預(yù)處理代碼。內(nèi)置的容錯(cuò)數(shù)據(jù)管道可以使DevOps工程師的工作更加輕松,它的另一個(gè)Studio.ML功能可以在GPU上以高速率進(jìn)行批量推斷,同時(shí)清除不良數(shù)據(jù)。
在后臺(tái),Studio.ML由幾個(gè)松散耦合的組件組成,例如實(shí)驗(yàn)包裝器,工作程序,排隊(duì)系統(tǒng),元數(shù)據(jù)和工件存儲(chǔ),可以將其交換為Hone Studio.ML,以滿足項(xiàng)目的個(gè)別需求,例如自定義計(jì)算場或內(nèi)部存儲(chǔ)敏感的實(shí)驗(yàn)數(shù)據(jù)。
Studio.ML仍是一個(gè)相當(dāng)早期的項(xiàng)目,它在機(jī)器學(xué)習(xí)社區(qū)中得到了很大的塑造。即使在此階段,與成熟的服務(wù)(例如Google Cloud ML或Amazon SageMaker)相比,它提供的可重現(xiàn)實(shí)驗(yàn)所產(chǎn)生的摩擦(例如代碼更改和對(duì)數(shù)據(jù)科學(xué)家的認(rèn)知負(fù)擔(dān))也要少得多。如果您對(duì)有關(guān)此數(shù)據(jù)感興趣,請(qǐng)參閱我們的博客,以使用SageMaker和Studio.ML再現(xiàn)最新的AI模型。
總之,現(xiàn)代AI / ML驅(qū)動(dòng)的企業(yè)需要結(jié)合ML模型的行業(yè)級(jí)可靠性和可重復(fù)性以及研究敏捷性,以利用并為最先進(jìn)的數(shù)據(jù)科學(xué)做出貢獻(xiàn)。Studio.ML以簡潔,非侵入性的方式滿足這些需求。在我們看來,它將通過引入越來越多的高級(jí)ML自動(dòng)化功能,繼續(xù)彌合數(shù)據(jù)科學(xué)家與DevOps工程師之間的鴻溝。
作者介紹
熱門博客推薦