王浩田,鄂海紅,王 勇,宋美娜
(1.北京郵電大學(xué) 計算機學(xué)院(國家示范性軟件學(xué)院),北京 100876;2.聯(lián)洋國融(北京)科技有限公司,北京 100088)
隨著數(shù)字技術(shù)革新與發(fā)展,數(shù)字化轉(zhuǎn)型已成為企業(yè)轉(zhuǎn)型升級的必由之路[1]。數(shù)據(jù)智能業(yè)務(wù)通過“記錄—統(tǒng)計—分析—預(yù)測-決策”的方式為企業(yè)在不同場景的運營與發(fā)展提供了核心資料支撐,是企業(yè)實現(xiàn)數(shù)字化轉(zhuǎn)型的重要目標(biāo)之一。傳統(tǒng)企業(yè)的數(shù)據(jù)智能業(yè)務(wù)發(fā)展對于當(dāng)前過載的互聯(lián)網(wǎng)、大數(shù)據(jù)環(huán)境顯得力不從心,數(shù)據(jù)說話、精準(zhǔn)定位、快捷響應(yīng)已經(jīng)成為現(xiàn)階段的基本訴求。
雖然國內(nèi)外研究人員在大數(shù)據(jù)計算平臺、AI訓(xùn)練平臺以及服務(wù)開發(fā)平臺[2-7]等方面都進行了大量的研究和實踐,但是都集中在以DevOps或MLOps的軟件生命周期方法單一地對大數(shù)據(jù)處理流程和AI訓(xùn)練流程進行優(yōu)化,仍無法滿足數(shù)據(jù)智能業(yè)務(wù)快捷開發(fā)的需求,存在以下問題和挑戰(zhàn):
(1)海量多源異構(gòu)數(shù)據(jù)集中管理與利用的問題。數(shù)據(jù)智能業(yè)務(wù)所需要的數(shù)據(jù)來源廣且量大,不同的數(shù)據(jù)源所屬領(lǐng)域不同,它們提供的數(shù)據(jù)呈分散、異構(gòu)的特點,缺乏了統(tǒng)一的數(shù)據(jù)資源組織管理[8-11]。
(2)服務(wù)開發(fā)過程依舊繁瑣、開發(fā)周期依舊長的問題。數(shù)據(jù)智能業(yè)務(wù)的落地需要經(jīng)過大數(shù)據(jù)存儲與處理、模型設(shè)計與訓(xùn)練、模型性能評估、應(yīng)用部署運維等過程,需要投入大量的人力分工協(xié)作,且不同工作間具有依賴性,對后期發(fā)現(xiàn)問題的返工修正的不斷更新,導(dǎo)致更高的時間和經(jīng)濟成本[12-13]。另一方面,前期研發(fā)所形成的算法資產(chǎn),對于新的數(shù)據(jù)和特定的場景,都有持續(xù)訓(xùn)練、集成和部署的需求[14]。
(3)服務(wù)之間的可重復(fù)利用問題。在數(shù)據(jù)智能場景的服務(wù)開發(fā)中,復(fù)用多個已構(gòu)建數(shù)據(jù)智能服務(wù)的原子能力形成新的服務(wù),是一種提高生產(chǎn)力的有效方式[15]。但服務(wù)之間的依賴關(guān)系、重復(fù)調(diào)用導(dǎo)致了更長的響應(yīng)時間和系統(tǒng)資源占用量,如何設(shè)計出高效的組合服務(wù)顯得格外重要。
因此,該文旨在設(shè)計并開發(fā)一個云原生數(shù)據(jù)智能服務(wù)開發(fā)平臺,實現(xiàn)從多源異構(gòu)數(shù)據(jù)的統(tǒng)一組織管理,到數(shù)據(jù)智能服務(wù)自動化生產(chǎn)線的構(gòu)建,再到高性能數(shù)據(jù)智能服務(wù)引擎的搭建,提高從數(shù)據(jù)資產(chǎn)到模型資產(chǎn)的價值轉(zhuǎn)變能力,模型資產(chǎn)到服務(wù)資產(chǎn)的持續(xù)訓(xùn)練、集成和部署的自動化能力,以及服務(wù)資產(chǎn)之間的可重復(fù)利用能力,使相關(guān)人員能夠通過該平臺快速完成數(shù)據(jù)智能服務(wù)的開發(fā)與管理。
針對以上問題與挑戰(zhàn),該文重點圍繞數(shù)據(jù)智能服務(wù)自動化生產(chǎn)線和高性能分布式數(shù)據(jù)智能服務(wù)引擎兩個方面進行研究與分析,并完成了一個云原生數(shù)據(jù)智能服務(wù)生產(chǎn)平臺(見圖1)。主要研究內(nèi)容有以下三項:
圖1 關(guān)鍵問題與研究內(nèi)容
(1)設(shè)計并實現(xiàn)了數(shù)據(jù)智能服務(wù)自動化生產(chǎn)線。該生產(chǎn)線實現(xiàn)了從多源異構(gòu)的海量數(shù)據(jù)資產(chǎn)存儲與管理,到大數(shù)據(jù)驅(qū)動的多版本AI模型資產(chǎn)的生產(chǎn)與管理,再到高性能數(shù)據(jù)智能服務(wù)資產(chǎn)的部署與管理的自動化生產(chǎn)流程,有效縮減了數(shù)據(jù)智能服務(wù)的開發(fā)周期,減少了人力投入,實現(xiàn)了降本增效的目的。
(2)設(shè)計并實現(xiàn)了高性能分布式數(shù)據(jù)智能服務(wù)引擎。一方面,引擎實現(xiàn)了數(shù)據(jù)智能服務(wù)實例根據(jù)負(fù)載狀況自動擴縮容,提高服務(wù)的穩(wěn)定性和響應(yīng)速度;另一方面,引擎以表達式即服務(wù)的方式,實現(xiàn)了對數(shù)據(jù)智能服務(wù)原子能力的復(fù)用,并對表達式的構(gòu)建與調(diào)用進行了優(yōu)化,解決了服務(wù)編排時服務(wù)依賴問題帶來的響應(yīng)時間過長和服務(wù)重復(fù)調(diào)用導(dǎo)致的系統(tǒng)資源浪費的問題。
(3)設(shè)計并實現(xiàn)了云原生數(shù)據(jù)智能服務(wù)生產(chǎn)平臺。在產(chǎn)品設(shè)計方面,該平臺將算法與業(yè)務(wù)分離,使算法工程師更多地聚焦于算法的深度和廣度并承接更多場景的算法設(shè)計,使模型運營專注于數(shù)據(jù)集構(gòu)建和模型訓(xùn)練并快速達到業(yè)務(wù)指標(biāo)。在系統(tǒng)功能方面,該平臺提供了多源異構(gòu)數(shù)據(jù)統(tǒng)一管理、融合多種異構(gòu)數(shù)據(jù)的數(shù)據(jù)集構(gòu)建與管理、算子在線開發(fā)與版本管理、圖像化工作流拖拽開發(fā)與版本管理、模型評估部署與版本管理、服務(wù)健康監(jiān)測、表達式服務(wù)在線編輯與測試功能。通過產(chǎn)品層面的解耦合與功能層面的自動化生產(chǎn)能力,大大提高了相關(guān)人員開發(fā)數(shù)據(jù)智能服務(wù)的效率。
數(shù)據(jù)智能服務(wù)自動化生產(chǎn)線實現(xiàn)了從數(shù)據(jù)資產(chǎn)到模型資產(chǎn)再到服務(wù)資產(chǎn)的全方位管理與生產(chǎn),以過程自動化的方式提高數(shù)據(jù)智能服務(wù)的生產(chǎn)效率,降低人力成本的投入。
圖2是數(shù)據(jù)智能服務(wù)生產(chǎn)流水線的架構(gòu),流水線的運轉(zhuǎn)依賴下層的基礎(chǔ)服務(wù)層和基礎(chǔ)設(shè)施層,并支撐了上層的系統(tǒng)應(yīng)用層和場景應(yīng)用?;A(chǔ)設(shè)施層在物理機集群上搭建了Kubernetes容器云,提供了容器運行的基本環(huán)境。以容器應(yīng)用作為承載平臺計算任務(wù)的基本單元,可以實現(xiàn)運維的自動化和彈性伸縮等功能并最大限度地發(fā)揮物理機群的性能和資源規(guī)模調(diào)度的效率優(yōu)勢。基礎(chǔ)服務(wù)層以容器應(yīng)用的方式封裝了Spark、MapReduce等計算服務(wù),HDFS、Hive、Mysql、Minio等存儲服務(wù),Docker Image、Docker Container等虛擬化服務(wù),Grafana、Prometheus等監(jiān)控服務(wù),為流水線的核心功能層提供了基本服務(wù)。核心功能層實現(xiàn)了數(shù)據(jù)管理、自動化模型生產(chǎn)與管理、服務(wù)引擎等流水線的核心功能。系統(tǒng)應(yīng)用層對流水線的功能進行了封裝,實現(xiàn)了數(shù)據(jù)管理與標(biāo)注、算法模型研發(fā)、模型批量生產(chǎn)和數(shù)智服務(wù)管理等應(yīng)用模塊,為多場景數(shù)據(jù)智能服務(wù)的生產(chǎn)做支撐。
圖2 數(shù)據(jù)智能服務(wù)生產(chǎn)流水線的架構(gòu)
數(shù)據(jù)智能服務(wù)生產(chǎn)流水線為大屏可視化、智能客服、畫像構(gòu)建、推薦系統(tǒng)等多個場景應(yīng)用的構(gòu)建提供了智能服務(wù)支持。
數(shù)據(jù)智能服務(wù)的落地需要海量不同來源的數(shù)據(jù)作支撐,這些數(shù)據(jù)呈分散、異構(gòu)的特點,因此,亟需一個統(tǒng)一的數(shù)據(jù)資源倉庫實現(xiàn)對數(shù)據(jù)的統(tǒng)一管理。
圖3是該文設(shè)計的數(shù)據(jù)資源倉庫,實現(xiàn)了對海量多源異構(gòu)數(shù)據(jù)的存儲與管理。當(dāng)用戶提交數(shù)據(jù)文件或數(shù)據(jù)源信息后,數(shù)據(jù)倉庫通過四個過程將其進行存儲:(1)將數(shù)據(jù)文件或數(shù)據(jù)源信息上傳到HDFS中并根據(jù)配置信息創(chuàng)建一個文件導(dǎo)入任務(wù);(2)任務(wù)分類會將任務(wù)放入不同的管道中排隊;(3)空閑的解析器會在創(chuàng)建區(qū)根據(jù)它的類型裝載不同的文件導(dǎo)入任務(wù);(4)裝載完畢后,在運行區(qū)解析文件并將數(shù)據(jù)插入到Hive倉庫中。其中任務(wù)解析器是一個Job類型的Pod,當(dāng)解析器運行失敗Kubernetes會自動重啟該任務(wù),直到解析器運行成功。當(dāng)讀取數(shù)據(jù)的時候,可以執(zhí)行相應(yīng)的Hive SQL,并且可以實現(xiàn)多源異構(gòu)數(shù)據(jù)的關(guān)聯(lián)讀取。通過編寫不同的文件解析器,將文件從HDFS轉(zhuǎn)存到Hive中,可以實現(xiàn)多源異構(gòu)數(shù)據(jù)的統(tǒng)一管理。
圖3 數(shù)據(jù)資源倉庫
圖3中的HDFS和Hive是基于Kubernetes平臺實現(xiàn)的大數(shù)據(jù)集群提供的存儲服務(wù),采用這種方式部署大數(shù)據(jù)集群解決了傳統(tǒng)的大數(shù)據(jù)集群參數(shù)配置復(fù)雜、運維難度大、缺乏自動修復(fù)能力、彈性擴縮容緩慢且無法及時隨業(yè)務(wù)量變化等問題。
數(shù)據(jù)智能服務(wù)開發(fā)過程多且復(fù)雜,過程與過程之間具有依賴性,后期的返工修復(fù)會導(dǎo)致更多的時間和經(jīng)濟成本,以及在特定的場景和新數(shù)據(jù)的情況下,都有服務(wù)持續(xù)生產(chǎn)的需求。因此,該文在流水線中設(shè)計了自動化模型生產(chǎn)工作流和模型倉庫,實現(xiàn)了模型的自動生產(chǎn)與管理。
(1)工作流基本運算單元——算子。工作流中的節(jié)點也稱為算子,它是工作流運行的基本單元,對應(yīng)Kubernetes中的Pod。算子由代碼文件夾(包含一個啟動腳本和相關(guān)的程序代碼)、運行鏡像、運行參數(shù)等元素組成。
(2)工作流調(diào)度引擎。將多個算子按照一定的依賴關(guān)系進行拼裝組合,就可以形成一個自動化工作流。工作流調(diào)度引擎將會按照依賴關(guān)系,依次運行每一個工作流節(jié)點。已創(chuàng)建工作流資源可以輸入不同的數(shù)據(jù)和設(shè)置不同的配置參數(shù)多次運行,生產(chǎn)出不同的模型或服務(wù),實現(xiàn)算法資產(chǎn)的可持續(xù)集成、訓(xùn)練和部署。
圖4是工作流調(diào)度引擎的執(zhí)行過程,Web端構(gòu)造的工作流圖會放入管道中排隊,空閑的工作流處理器依次讀取管道中的工作流圖進行解析與調(diào)度。工作流處理器維護一個集合,對工作流圖進行層序遍歷。每當(dāng)運行完一個工作流節(jié)點,如果該工作流節(jié)點的后置節(jié)點不在集合中就將其加入集合,并對集合進行檢查,將所有前置依賴運行完的工作流節(jié)點取出并將其作為Job Pod放入Kubernetes中運行,重復(fù)進行此操作,直到集合為空,工作流運行成功。對于工作流中的一個節(jié)點,會存在兩次調(diào)度:一是等待全部依賴節(jié)點運行完成,才能夠調(diào)度該節(jié)點運行;二是將節(jié)點調(diào)度到Kubernetes集群的節(jié)點運行,實現(xiàn)資源的負(fù)載均衡。
圖4 工作流調(diào)度引擎的工作過程
(3)模型倉庫。工作流中的模型注冊算子會將訓(xùn)練完的模型存入到模型倉庫,模型倉庫會將實現(xiàn)模型資產(chǎn)的統(tǒng)一管理。
圖5是模型倉庫的架構(gòu),注冊算子注入的模型首先經(jīng)過模型轉(zhuǎn)換模塊轉(zhuǎn)換為ONNX模型,然后存入到模型庫。模型庫本質(zhì)是一張Sql表,表中記錄了模型的基本信息和模型所在HDFS中的路徑。此外,模型倉庫還提供了模型評估和模型部署的功能,模型評估通過在評估腳本模板中加載ONNX模型和測試數(shù)據(jù)集并與作為運行環(huán)境的鏡像一起以Pod的形式在Kubernetes中運行,實現(xiàn)模型性能指標(biāo)評估的計算。模型部署通過在推理腳本模板中加載ONNX模型并與作為運行環(huán)境的鏡像一起部署為多個Kubernetes的Pod實例實現(xiàn)服務(wù)的多實例部署與注冊。
圖5 模型倉庫功能與架構(gòu)
模型倉庫中創(chuàng)建成功的模型部署會將部署信息作為服務(wù)信息注冊到服務(wù)引擎,服務(wù)引擎實現(xiàn)了對服務(wù)資產(chǎn)的統(tǒng)一管理。
圖6是服務(wù)引擎的架構(gòu),單個服務(wù)是由一個負(fù)載均衡器、一個ReplicaSet控制器和多個實例組成。服務(wù)列表綁定了每個負(fù)載均衡器的地址,通過服務(wù)列表可以查找到已經(jīng)注冊的全部服務(wù)。底層的Prometheus監(jiān)控著實例的CPU、內(nèi)存等資源的利用率。伸縮控制控制器通過讀取實例的指標(biāo)進行判斷,當(dāng)某一指標(biāo)超過設(shè)定的最大閾值后,開始控制ReplicaSet控制器進行實例橫向擴容;當(dāng)所有指標(biāo)均低于設(shè)定的最低閾值后,開始控制ReplicaSet進行實例縮容。通過這樣的結(jié)構(gòu)和工作過程,提高了服務(wù)在峰值時的穩(wěn)定性以及減少了在低谷時的資源利用。
圖6 服務(wù)引擎架構(gòu)
高性能分布式數(shù)據(jù)智能服務(wù)引擎以表達式即服務(wù)方式實現(xiàn)了對數(shù)據(jù)智能服務(wù)原子能力的細(xì)粒度復(fù)用,并對表達式服務(wù)的構(gòu)建、調(diào)用等方面進行了優(yōu)化,有效提高了服務(wù)開發(fā)效率以及服務(wù)響應(yīng)速度和系統(tǒng)資源利用率。
數(shù)據(jù)智能服務(wù)引擎是三層結(jié)構(gòu)(見圖7):原子服務(wù)層、引擎中控層和應(yīng)用層,底下兩層采用了分布式的結(jié)構(gòu)。核心層是引擎中控層,它采用Leader-Worker的結(jié)構(gòu)保證中控層的高可用性和一致性,單節(jié)點的內(nèi)部由功能決策、緩存、歸并優(yōu)化器、狀態(tài)控制器、邏輯運算器、排序模塊、存儲服務(wù)、溢寫模塊等模塊組成,實現(xiàn)了表達式的優(yōu)化和表達式服務(wù)調(diào)用的優(yōu)化。底層是原子服務(wù)層,它實現(xiàn)了AI模型的推理能力,由負(fù)載均衡器和多個服務(wù)實例組成。最上層是應(yīng)用層,提供了表達式構(gòu)建、表達式準(zhǔn)確率在線測試和服務(wù)管理的功能。
表1 引擎結(jié)構(gòu)的主要模塊
圖7 數(shù)據(jù)智能服務(wù)引擎的三層結(jié)構(gòu)
數(shù)據(jù)智能服務(wù)本質(zhì)上是一種數(shù)據(jù)驅(qū)動的人工智能服務(wù),不同類型的服務(wù)由多種原子能力組成,如文本多標(biāo)簽分類服務(wù)是由多種單標(biāo)簽分類原子能力組成,命名實體識別服務(wù)是由多種單實體識別原子能力組成。針對數(shù)據(jù)智能服務(wù)的這種特點,該文將多種不同服務(wù)的原子能力組合成邏輯表達式,以表達式即服務(wù)的方式實現(xiàn)了新服務(wù)的快速開發(fā)。
圖8展示了表達式服務(wù)創(chuàng)建的過程。功能決策模塊首先會根據(jù)請求的Type字段判斷請求為服務(wù)創(chuàng)建類型,然后請求轉(zhuǎn)發(fā)給歸并優(yōu)化器。歸并優(yōu)化器會提取共有的原子服務(wù)進行聚合,示例中的表達式有三個數(shù)據(jù)智能服務(wù)項(也叫做原子服務(wù)項),共兩類atom_A和atom_B。具體歸并聚合例子為:[CallTC(atom_A,text, ‘見面問候’) ‖ CallTC(atom_A, text, ‘離別問候’) ‖ CallTC(atom_B, text,‘問候語’) ‖ InRegex(‘你好’,…,‘再見’)] &&NotInRegex (‘我生氣’,…,‘不開心’),通過提取項中的原子服務(wù),得到atom_A,atom_A和atom_B,然后進行歸并得到atom_A和Atom_B,對原表達式進行改寫,得到:(atom_A_Res==‘見面問候’‖atom_A_Res==‘離別問候’‖Atom_B_Res==‘問候語’‖InList[‘你好’,…,‘再見’])&&NotInList(‘我生氣’,…,‘不開心’),該樣例表達式在AI服務(wù)引擎中會將原來的3次服務(wù)調(diào)用優(yōu)化為2次。最后歸并優(yōu)化器會將得到的優(yōu)化結(jié)果以配置文件的形式存儲到存儲服務(wù)中,完成表達式服務(wù)的創(chuàng)建過程。
圖8 表達式服務(wù)創(chuàng)建過程
圖9展示了表達式服務(wù)的調(diào)用過程。功能決策模塊首先會根據(jù)請求的Type字段判斷請求為服務(wù)調(diào)用類型,然后根據(jù)(ServiceId,Text)查找緩存中是否命中,如果命中直接返回結(jié)果,否則轉(zhuǎn)發(fā)請求到狀態(tài)控制器。狀態(tài)控制器根據(jù)ServiceId從存儲服務(wù)中找到表達式服務(wù)的配置文件,然后根據(jù)CallService中原子服務(wù)的數(shù)量,創(chuàng)建等量的線程,并行調(diào)用原子服務(wù),直到全部的原子服務(wù)返回結(jié)果,將結(jié)果傳入到邏輯運算器。邏輯運算器根據(jù)原子服務(wù)的調(diào)用結(jié)果和正則列表,計算真值,將計算結(jié)果寫入到溢寫模塊并返回給客戶端。
圖9 表達式服務(wù)的調(diào)用過程
引擎中的溢寫模塊記錄了所有請求與表達式服務(wù)的運算結(jié)果,當(dāng)記錄存儲大小接近存儲系統(tǒng)的文件塊時,溢寫模塊會將這些記錄寫入到存儲服務(wù)中。引擎中的排序模塊會定期拉取歷史請求記錄以(ServiceId,Text)為Key進行聚合并降序排列,將結(jié)果的前N個寫入到緩存中。
在數(shù)據(jù)智能服務(wù)自動化生產(chǎn)線和高性能數(shù)據(jù)智能服務(wù)引擎的基礎(chǔ)上,該文設(shè)計并實現(xiàn)了云原生數(shù)據(jù)智能服務(wù)開發(fā)平臺。一方面,該平臺實現(xiàn)了數(shù)據(jù)資產(chǎn)到模型資產(chǎn)持續(xù)訓(xùn)練和集成的價值轉(zhuǎn)變能力,模型資產(chǎn)到服務(wù)資產(chǎn)持續(xù)部署的自動化能力,以及服務(wù)資產(chǎn)之間的可重復(fù)利用能力。另一方面,該平臺將算法與業(yè)務(wù)分離,使算法工程師更多地聚焦于算法的深度和廣度并承接更多場景的算法設(shè)計,使模型運營專注于數(shù)據(jù)集構(gòu)建和模型訓(xùn)練并快速達到業(yè)務(wù)指標(biāo)。
圖10是數(shù)據(jù)智能服務(wù)開發(fā)平臺功能結(jié)構(gòu),該平臺提供了數(shù)據(jù)管理、算子構(gòu)建、模型開發(fā)、服務(wù)管理和復(fù)合服務(wù)5個模塊,實現(xiàn)了對15種資產(chǎn)或資源的生產(chǎn)與管理。
圖10 平臺功能結(jié)構(gòu)
數(shù)據(jù)管理模塊實現(xiàn)了對多種數(shù)據(jù)源和數(shù)據(jù)集的統(tǒng)一管理,其中數(shù)據(jù)集通過導(dǎo)入數(shù)據(jù)源并進行標(biāo)注生產(chǎn)而來。算子構(gòu)建模塊實現(xiàn)了Job、Task、Run、鏡像、算子等資源的生產(chǎn)與管理,其中算子是一個Run的實例,Run是Task通過輸入運行參數(shù)運行的實例,Task由鏡像和項目腳本組成,Job則是一系列Task的集合。模型開發(fā)模塊實現(xiàn)了工作流、工作流運行歷史、模型、模型評估、模型部署等資源的生產(chǎn)與管理,其中工作流是對一系列算子編排而來,工作流運行歷史是工作流運行的實例,模型則是通過工作流運行生產(chǎn)而來,模型評估是通過輸入測試集對模型性能進行評估的實例,模型部署是將模型發(fā)布成服務(wù)的實例。服務(wù)管理實現(xiàn)了對服務(wù)實例的管理和監(jiān)控,其中服務(wù)實例是模型部署后產(chǎn)生的。復(fù)合服務(wù)實現(xiàn)了對正則組、表達式服務(wù)等資源的管理,表達式服務(wù)由一系列正則組合和一系列服務(wù)實例通過邏輯運算組合而來。
表2 數(shù)據(jù)智能服務(wù)開發(fā)平臺的生產(chǎn)或管理的資產(chǎn)與資源
圖11是平臺的技術(shù)架構(gòu),共分為5層:基礎(chǔ)設(shè)計層實現(xiàn)對CPU服務(wù)器、GPU服務(wù)器等物理設(shè)備的統(tǒng)一管理;虛擬化層利用Docker Engine和Kubernetes實現(xiàn)容器云,用于分配、調(diào)度和管理CPU計算資源、異構(gòu)GPU計算資源、存儲資源、網(wǎng)絡(luò)資源,為上層設(shè)施提供基本計算能力和基本存儲能力的支持?;A(chǔ)服務(wù)層提供AI訓(xùn)練服務(wù)、大數(shù)據(jù)服務(wù)和通用數(shù)據(jù)存儲服務(wù):AI訓(xùn)練服務(wù)利用Pytorch、TensorFlow、ONNX等框架實現(xiàn)了AI模型的搭建、訓(xùn)練和部署等能力;大數(shù)據(jù)服務(wù)利用HDFS、Hive實現(xiàn)大數(shù)據(jù)存儲能力,利用Spark實現(xiàn)大數(shù)據(jù)計算能力;通用存儲服務(wù)利用Mysql實現(xiàn)關(guān)系數(shù)據(jù)存儲,利用Minio實現(xiàn)對象存儲,搭建鏡像存儲服務(wù)器實現(xiàn)對鏡像的存儲。業(yè)務(wù)邏輯層將下層服務(wù)封裝成功能接口供前端調(diào)用,后端系統(tǒng)整體基礎(chǔ)架構(gòu)采用Spring Boot開發(fā),持久層框架采用MyBatis,實現(xiàn)對后端數(shù)據(jù)庫進行CRUD操作,前端與后端采用Restful API的方式進行通信。頁面展示層使用Vue.js前端開發(fā)框架進行開發(fā),配合Element-UI樣式組件庫實現(xiàn)前端頁面展示效果。同時通過axios異步調(diào)用的方式訪問后端接口。
圖11 平臺技術(shù)架構(gòu)
傳統(tǒng)企業(yè)的數(shù)據(jù)智能業(yè)務(wù)發(fā)展對于當(dāng)前過載的互聯(lián)網(wǎng)、大數(shù)據(jù)環(huán)境顯得力不從心。針對海量多源異構(gòu)數(shù)據(jù)集中管理與利用的問題、服務(wù)開發(fā)過程依舊繁瑣、開發(fā)周期依舊長的問題和服務(wù)之間的可重復(fù)利用問題,設(shè)計并實現(xiàn)了一個云原生數(shù)據(jù)智能服務(wù)開發(fā)平臺,提高了從數(shù)據(jù)資產(chǎn)到模型資產(chǎn)持續(xù)訓(xùn)練和集成的價值轉(zhuǎn)變能力,模型資產(chǎn)到服務(wù)資產(chǎn)持續(xù)部署的自動化能力,以及服務(wù)資產(chǎn)的一站式運維能力和服務(wù)資產(chǎn)之間的可重復(fù)利用能力,使相關(guān)人員能夠通過該平臺快速完成數(shù)據(jù)智能服務(wù)的開發(fā)與管理。研發(fā)的平臺支撐了國家自然科學(xué)基金醫(yī)學(xué)認(rèn)知圖譜復(fù)雜知識結(jié)構(gòu)表示研究項目。