如何將AI/ML與對(duì)象存儲(chǔ)結(jié)合使用
隨著企業(yè)的不斷發(fā)展,機(jī)器學(xué)習(xí)和人工智能已成為董事會(huì)層面的舉措。隨著AI/ML融入到每一個(gè)軟件堆棧和架構(gòu)中,幾年前似乎近乎神話般的功能現(xiàn)在被視為理所當(dāng)然。這被稱為AI優(yōu)先架構(gòu)。
在AI/ML的世界里,重點(diǎn)是找到能夠準(zhǔn)確捕捉數(shù)據(jù)中復(fù)雜關(guān)系的模型,并使用這些模型通過準(zhǔn)確的預(yù)測(cè)創(chuàng)造商業(yè)價(jià)值。
現(xiàn)實(shí)是,在實(shí)現(xiàn)這一崇高目標(biāo)之前,需要大量的數(shù)據(jù)挖掘。盡管AI/ML的宣傳和關(guān)注點(diǎn)在于使用最新、最酷的建模技術(shù),但已經(jīng)反復(fù)證明,通過適當(dāng)?shù)臄?shù)據(jù)整理和找到向模型展示數(shù)據(jù)的方法,可以實(shí)現(xiàn)對(duì)復(fù)雜關(guān)系建模能力的最大提升,從而使模型在訓(xùn)練時(shí)了解細(xì)微差別。
簡(jiǎn)而言之,這主要是關(guān)于數(shù)據(jù),而不是模型。
在構(gòu)建AI優(yōu)先架構(gòu)時(shí),會(huì)出現(xiàn)幾個(gè)關(guān)鍵需求,尤其是與存儲(chǔ)相關(guān)的需求。在本文中,我們將概述需要考慮的內(nèi)容和原因。
可伸縮性
在設(shè)計(jì)AI/ML架構(gòu)時(shí),首要考慮的是可伸縮性。雖然可伸縮性有多個(gè)方面,但我們關(guān)注的是數(shù)據(jù)基礎(chǔ)設(shè)施的可伸縮性。一些非常有趣的工作正在有限的環(huán)境中進(jìn)行,那里沒有太多可用的培訓(xùn)數(shù)據(jù),但最好的結(jié)果仍然來自于在涉及大規(guī)模培訓(xùn)的用例中進(jìn)行的工作。
大規(guī)模的訓(xùn)練不是幾百T——通常是幾十到幾百P。從管理和性能角度來看,這個(gè)容量超過了傳統(tǒng)SAN/NAS架構(gòu)的能力。
一旦過了幾個(gè)PBs,你就會(huì)看到對(duì)象存儲(chǔ)。對(duì)象存儲(chǔ)對(duì)于這種規(guī)模的問題來說是獨(dú)一無二的,因?yàn)樗梢詿o限擴(kuò)展,跨網(wǎng)絡(luò)擴(kuò)展,并隨著增長(zhǎng)提供線性性能。
此外,對(duì)象存儲(chǔ)天生適合不同類型的數(shù)據(jù)——半結(jié)構(gòu)化、非結(jié)構(gòu)化和結(jié)構(gòu)化。隨著訪問數(shù)據(jù)的AI/ML框架尋求創(chuàng)建功能,更多不同類型的數(shù)據(jù)變得重要,在一個(gè)地方存儲(chǔ)、版本和管理所有數(shù)據(jù)的能力變得非常重要。
此外,隨著這些不同類型的數(shù)據(jù)擴(kuò)展到許多PB領(lǐng)域,為不同類型的數(shù)據(jù)建立和維護(hù)不同的存儲(chǔ)解決方案變得非常昂貴。將持久性整合到對(duì)象存儲(chǔ)中可以節(jié)省基礎(chǔ)設(shè)施成本。
RESTful API/S3
由于上述關(guān)于可伸縮性的要求,幾乎每個(gè)AI/ML平臺(tái)都支持對(duì)象存儲(chǔ)。對(duì)象存儲(chǔ)為所有類型的訓(xùn)練數(shù)據(jù)提供了一個(gè)單一的存儲(chǔ)庫(kù),并且?guī)缀蹩梢詿o限擴(kuò)展。使用單一存儲(chǔ)架構(gòu)可以簡(jiǎn)化部署并降低運(yùn)營(yíng)成本。
S3 API是對(duì)象存儲(chǔ)的事實(shí)標(biāo)準(zhǔn),因此,它是AI/ML數(shù)據(jù)架構(gòu)領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。事實(shí)上,大多數(shù)現(xiàn)代AI/ML平臺(tái)都是為S3 API構(gòu)建的,后來通常由社區(qū)進(jìn)行擴(kuò)展,以支持傳統(tǒng)的SAN/NAS解決方案。
理由很簡(jiǎn)單:RESTful API是設(shè)計(jì)分布式軟件系統(tǒng)和對(duì)象持久性的現(xiàn)代方法,S3正好符合定義。此外,部署在AWS上并使用S3構(gòu)建的AI/ML項(xiàng)目非常普遍,很明顯,S3 API,即對(duì)象存儲(chǔ),實(shí)際上是大規(guī)模AI/ML項(xiàng)目的一個(gè)需求。
你能用POSIX(便攜式操作系統(tǒng)接口)做小規(guī)模的工作嗎?是的,但這是更多的沙箱工作。對(duì)于大規(guī)模的真正AI/ML,S3將是數(shù)據(jù)基礎(chǔ)設(shè)施的API。
對(duì)象鎖定
在金融服務(wù)、醫(yī)療保健和政府等受監(jiān)管的環(huán)境中,對(duì)象鎖定是一個(gè)重要的問題。盡管如此,并不是所有的對(duì)象存儲(chǔ)都支持對(duì)象鎖定,并且很少有對(duì)象存儲(chǔ)針對(duì)操作部署進(jìn)行了優(yōu)化。
其核心功能是確保在設(shè)定的時(shí)間段內(nèi)不能刪除或覆蓋對(duì)象。需要適應(yīng)不同的模式,但總體目標(biāo)是確保源上不會(huì)發(fā)生篡改。版本控制很容易。
這對(duì)于AI/ML模型和訓(xùn)練文件來說尤其重要,因?yàn)樗鼈兊哪繕?biāo)是一個(gè)可操作的科學(xué)試驗(yàn)。確保訓(xùn)練數(shù)據(jù)的有效性與驗(yàn)證模型本身同樣重要。
對(duì)象生命周期管理
在現(xiàn)代企業(yè)中,模型不是一成不變的。隨著時(shí)間的推移,越來越多不同的數(shù)據(jù)可用,模型需要相應(yīng)地更新。這不應(yīng)該是一個(gè)手動(dòng)過程,因?yàn)檫@將使模型從靜態(tài)開始。
對(duì)象存儲(chǔ)可以提供完整的生命周期管理功能。這包括隨著模型老化從熱層到溫層的分層,以及管理有關(guān)數(shù)據(jù)更新、轉(zhuǎn)換和刪除的策略。
與此相關(guān)的是對(duì)象存儲(chǔ)幾乎無限的可擴(kuò)展性。在一個(gè)可以擁有盡可能多的存儲(chǔ)空間的世界中,它們都可以存在于一個(gè)命名空間中。從對(duì)象生命周期管理的角度來看,這提供了無數(shù)的可能性——所有這些都是通過RESTful API實(shí)現(xiàn)自動(dòng)化的。
將不同的數(shù)據(jù)類型都放在一個(gè)命名空間中,大大簡(jiǎn)化了數(shù)據(jù)管理和驗(yàn)證過程。在規(guī)模上,這提高了運(yùn)營(yíng)效率并節(jié)省了資金。
性能
與規(guī)模一樣,性能也有多個(gè)方面。在轉(zhuǎn)向大規(guī)模性能之前,讓我們先看看讀寫性能。
發(fā)現(xiàn)一組給定模型的超參數(shù),以優(yōu)化訓(xùn)練能力是一項(xiàng)挑戰(zhàn)。對(duì)于一個(gè)給定的模型,事先給定一組訓(xùn)練數(shù)據(jù)是無法確定最優(yōu)超參數(shù)的。
超參數(shù)調(diào)整是一門藝術(shù),而不是一門科學(xué),通常歸結(jié)為在每個(gè)參數(shù)范圍內(nèi)對(duì)離散點(diǎn)進(jìn)行智能或非智能搜索,直到找到一個(gè)合適的集合(“網(wǎng)格搜索”)。
更復(fù)雜的是,給定一組選定的超參數(shù),模型在整個(gè)訓(xùn)練過程中的收斂速度不是線性的,這意味著當(dāng)給定的超參數(shù)集在給定的訓(xùn)練集上針對(duì)給定的模型進(jìn)行評(píng)估時(shí),必須允許每個(gè)模型完成收斂訓(xùn)練,以便評(píng)估結(jié)果模型的適用性和超參數(shù)集的可取性。
簡(jiǎn)單地說:這可能是大量重復(fù)的試錯(cuò)訓(xùn)練。對(duì)于非常大的數(shù)據(jù)集,這需要大量讀取訓(xùn)練文件。
在當(dāng)前的“Auto ML”庫(kù)中,數(shù)據(jù)科學(xué)家或開發(fā)人員對(duì)這項(xiàng)工作的大部分內(nèi)容都是隱藏的。它被隱藏并不意味著它沒有發(fā)生。當(dāng)我們將訓(xùn)練集群的大小增加到數(shù)百或數(shù)千個(gè)計(jì)算節(jié)點(diǎn)以并行化“Auto ML”過程時(shí),我們會(huì)創(chuàng)建一種情況,即給定的訓(xùn)練文件會(huì)被讀取數(shù)百或數(shù)千次。
如果該訓(xùn)練文件很大,則I/O量的增加速度大致等于正在評(píng)估的模型數(shù)量乘以我們決定測(cè)試每個(gè)超參數(shù)的離散點(diǎn)數(shù)量乘以給定模型的超參數(shù)數(shù)量。
簡(jiǎn)而言之,從持久性存儲(chǔ)中讀取訓(xùn)練文件的性能很重要。你可以隨心所欲地優(yōu)化代碼,但模型訓(xùn)練仍將取決于讀取性能。緩存當(dāng)然有幫助。但歸根結(jié)底,這是一個(gè)文件I/O挑戰(zhàn)。
多快是快?對(duì)于上下文,在NVMe的32個(gè)節(jié)點(diǎn)上運(yùn)行的MinIO讀取速度為325 GiB/sec。這應(yīng)該是AI/ML設(shè)置的目標(biāo)。
更復(fù)雜的AI/ML用例——Lambda Compute Eventing
一旦開發(fā)出一個(gè)似乎運(yùn)行良好的模型,通常需要在投入生產(chǎn)之前對(duì)其進(jìn)行驗(yàn)證。在金融服務(wù)組織中,這通常由一個(gè)單獨(dú)的模型驗(yàn)證團(tuán)隊(duì)完成,該團(tuán)隊(duì)不屬于數(shù)據(jù)科學(xué)開發(fā)的一部分。他們有意分開,負(fù)責(zé)驗(yàn)證組織使用的數(shù)學(xué)/模型的正確性。除了驗(yàn)證模型的正確性外,模型驗(yàn)證團(tuán)隊(duì)通常還負(fù)責(zé)測(cè)試和了解模型在各種意外不利經(jīng)濟(jì)條件下的行為,這些不利經(jīng)濟(jì)條件可能不是模型培訓(xùn)的一部分。
例如,如果我們討論的是金融模型,而使用的訓(xùn)練數(shù)據(jù)是最近的歷史數(shù)據(jù),這是常見的,那么模型驗(yàn)證團(tuán)隊(duì)可能會(huì)根據(jù)不利數(shù)據(jù)運(yùn)行模型,例如大蕭條時(shí)期的歷史數(shù)據(jù)或全球沖突時(shí)期的歷史數(shù)據(jù),如戰(zhàn)爭(zhēng)、極端市場(chǎng)波動(dòng)、收益率曲線反轉(zhuǎn)或負(fù)實(shí)際利率。他們還可以用理論數(shù)據(jù)測(cè)試模型,以評(píng)估穩(wěn)定性。模型驗(yàn)證團(tuán)隊(duì)在評(píng)估數(shù)學(xué)/模型的行為以及組織的總體風(fēng)險(xiǎn)方面發(fā)揮著作用。這不是一個(gè)小的努力。
要使用對(duì)象存儲(chǔ)操作AI/ML,一個(gè)真正強(qiáng)大的功能是Lambda Compute Eventing(LCE)。LCE有助于自動(dòng)化這個(gè)復(fù)雜的模型驗(yàn)證工作流。通常,為建模過程生命周期中的每個(gè)步驟創(chuàng)建單獨(dú)的桶,LCE用于通知相關(guān)方新對(duì)象到達(dá)每個(gè)桶。該事件會(huì)觸發(fā)模型進(jìn)展階段的適當(dāng)處理,以及滿足合規(guī)性要求或內(nèi)部檢查所需的任何業(yè)務(wù)級(jí)別審核。
總結(jié)
盡管最近的技術(shù)炒作會(huì)讓我們都相信,找到下一個(gè)偉大、復(fù)雜的建模方法是數(shù)據(jù)科學(xué)的圣杯,但實(shí)際上,數(shù)據(jù)的收集和正確管理,以及確保建模過程安全性和可再現(xiàn)性的正確MLOP,才是真正為組織創(chuàng)造價(jià)值的方法。MinIO本質(zhì)上提供了在現(xiàn)代企業(yè)中創(chuàng)建和使用大規(guī)模AI/ML所需的功能。