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