国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種機(jī)器學(xué)習(xí)管道模型分層化管理和分發(fā)方法

2023-05-11 06:49:58蘇孫愷銀本亮
關(guān)鍵詞:配置文件鏡像倉(cāng)庫(kù)

董 昕 梁 艷* 郭 勇 蘇孫愷 銀本亮

(1.成都工業(yè)學(xué)院計(jì)算機(jī)工程學(xué)院,四川 成都 611730;2.成都育碧電腦軟件有限公司,四川 成都 610041)

0 引言

目前,在計(jì)算機(jī)存儲(chǔ)系統(tǒng)中的模型倉(cāng)庫(kù)領(lǐng)域,機(jī)器學(xué)習(xí)管道模型的分發(fā)系統(tǒng)可以歸結(jié)為一類方法:基于文件系統(tǒng)或?qū)ο蟠鎯?chǔ)系統(tǒng)實(shí)現(xiàn)的以單一模型文件為基本存儲(chǔ)對(duì)象的模型倉(cāng)庫(kù)。用戶需要通過軟件開發(fā)工具包(Software Development Kit,SDK)或者用戶界面(User Interface, UI)的方式,將模型上傳到模型倉(cāng)庫(kù)中。在模型上傳后,模型倉(cāng)庫(kù)會(huì)將模型或者模型的元數(shù)據(jù)存儲(chǔ)在自身維護(hù)的存儲(chǔ)后端中。當(dāng)需要利用模型進(jìn)行推理時(shí),用戶可通過模型倉(cāng)庫(kù)提供的SDK 或者接口將模型下載下來(lái),進(jìn)行推理服務(wù)。這種方法并不區(qū)分單一模型和管道模型(即基于工作流的若干模型的組合)[1-2]。

這種方法將管道模型當(dāng)作單一模型文件來(lái)存儲(chǔ),無(wú)法應(yīng)對(duì)管道模型訓(xùn)練或部署在靈活性方面的要求[3]:用戶希望對(duì)管道中的模型重新編排、組合形成新的管道模型;用戶希望提取管道模型中的某個(gè)或幾個(gè)模型,重新訓(xùn)練或單獨(dú)部署。除此之外,復(fù)雜的管道模型還帶來(lái)了性能上的挑戰(zhàn)[4]:較慢的管道模型上傳和下載速度;較高的模型持久化存儲(chǔ)成本。

該文在分析上述方法的基礎(chǔ)上,提出了一種新的管道模型分層化管理和分發(fā)新方法。該方法能解決現(xiàn)有方法在管道模型管理和分發(fā)方面靈活性不高和性能較低的問題。

1 新方法的模型

容器是一個(gè)標(biāo)準(zhǔn)的軟件單元,將代碼及其所有依賴項(xiàng)打包為鏡像。Docker 容器鏡像是一個(gè)輕量級(jí)的、獨(dú)立的、可執(zhí)行的軟件包,包括運(yùn)行應(yīng)用程序所需的一切:系統(tǒng)庫(kù)、代碼、運(yùn)行時(shí)間和運(yùn)行設(shè)置等[5]。Docker 容器將軟件與其環(huán)境隔離開,無(wú)論基礎(chǔ)設(shè)施如何,都確保軟件能夠一致地工作,支持Linux、Windows、云、服務(wù)器等多種運(yùn)行環(huán)境[6]。機(jī)器學(xué)習(xí)管道模型分層化管理和分發(fā)系統(tǒng)符合經(jīng)典的客戶端服務(wù)器架構(gòu),系統(tǒng)框架如圖1 所示。

圖1 新方法框架圖

其中,模型管理客戶端是由命令行管理工具和高級(jí)容器引擎Docker后臺(tái)構(gòu)成的。命令行管理工具模塊以命令行的方式提供機(jī)器學(xué)習(xí)管道模型構(gòu)建、上傳和下載等工具。Docker后臺(tái)提供了應(yīng)用程序接口(Application Programming Interface,API)用于接收來(lái)自命令行管理工具的請(qǐng)求,支持用戶可通過構(gòu)建自定義鏡像的方式管理自定義機(jī)器學(xué)習(xí)管道模型,其后根據(jù)不同的請(qǐng)求分發(fā)給不同模塊進(jìn)而執(zhí)行相應(yīng)的工作。模型管理客戶端支持開放容器標(biāo)準(zhǔn)(Open Container Initiative,OCI),可以像Docker 管理鏡像一樣管理模型,能夠在客戶端對(duì)模型文件和模型屬性進(jìn)行分層存儲(chǔ)管理[7]。模型鏡像倉(cāng)庫(kù)提供了Docker 注冊(cè)表API 用來(lái)接收來(lái)自模型管理客戶端的請(qǐng)求,支持用戶上傳、下載機(jī)器學(xué)習(xí)管道模型,能夠在服務(wù)器端對(duì)模型文件和模型屬性進(jìn)行分層存儲(chǔ)管理。該系統(tǒng)涉及的模型鏡像倉(cāng)庫(kù)模塊具有通用性,能夠支持任何符合OCI標(biāo)準(zhǔn)的鏡像倉(cāng)庫(kù)方法。

通過上述模塊,可以為管道模型定義符合Docker 鏡像和鏡像倉(cāng)庫(kù)服務(wù)規(guī)范的功能和服務(wù),這意味著上傳或下載機(jī)器學(xué)習(xí)管道模型就像拉取鏡像一樣簡(jiǎn)單,在支持模型拉取的客戶端的環(huán)境里,開箱即用[8]。

2 新方法的使用及其成效

為了實(shí)現(xiàn)機(jī)器學(xué)習(xí)管道模型鏡像倉(cāng)庫(kù)服務(wù),新方法使用步驟如下。第一步:獲取多個(gè)機(jī)器學(xué)習(xí)模型,使用有向無(wú)環(huán)圖(Directed Acyclic Graph,DAG)定義機(jī)器學(xué)習(xí)模型之間的管道關(guān)系,通過序列化的方法將DAG 作為一種特殊模型來(lái)存儲(chǔ)。DAG 是業(yè)界工作流或數(shù)據(jù)流常用的描述方式,具有靈活和彈性的特點(diǎn)??梢岳媚撤N編程語(yǔ)言例如Python 去描述機(jī)器學(xué)習(xí)管道模型調(diào)用的關(guān)系圖DAG,并通過持久化的方法將DAG 作為一種特殊模型來(lái)存儲(chǔ)。第二步:通過自定義配置文件描述多個(gè)機(jī)器學(xué)習(xí)模型和DAG 模型在待構(gòu)建的Docker 鏡像中的層次關(guān)系,包括配置文件需要指定每個(gè)機(jī)器學(xué)習(xí)模型的讀取位置;配置文件需要描述Docker 鏡像中的一個(gè)鏡像層包括一個(gè)且只有一個(gè)機(jī)器學(xué)習(xí)模型的約束關(guān)系;配置文件需要描述多個(gè)機(jī)器學(xué)習(xí)模型所對(duì)應(yīng)的鏡像層的構(gòu)建順序和層次,即n個(gè)機(jī)器學(xué)習(xí)模型依次對(duì)應(yīng)于第一層、第二層,…,第n-1 層、第n層;配置文件需要描述DAG 模型所對(duì)應(yīng)的鏡像層的構(gòu)建順序和層次,即位于最頂層的第n+1層,如圖2 所示。第三步:模型管理客戶端根據(jù)自定義配置文件生成鏡像構(gòu)建腳本,然后根據(jù)構(gòu)建腳本對(duì)多個(gè)機(jī)器學(xué)習(xí)模型和DAG 模型進(jìn)行構(gòu)建,包括模型管理客戶端能夠正確讀取和解析配置文件,生成符合Docker 規(guī)范的鏡像構(gòu)建腳本;模型管理客戶端需要實(shí)現(xiàn)符合Docker 規(guī)范的鏡像構(gòu)建功能,能夠根據(jù)構(gòu)建腳本對(duì)多個(gè)機(jī)器學(xué)習(xí)模型和DAG 模型進(jìn)行機(jī)器學(xué)習(xí)管道模型鏡像的構(gòu)建。第四步:將機(jī)器學(xué)習(xí)管道模型Docker鏡像推送至模型鏡像倉(cāng)庫(kù)。模型管理客戶端通過推送命令和模型鏡像倉(cāng)庫(kù)交互,上傳管道模型鏡像。管道模型鏡像的配置Config 和鏡像層Layers 中的每層,都是以Blob的方式存儲(chǔ)在鏡像倉(cāng)庫(kù)中,它們的摘要digest 作為鍵Key 存在。第五步:這一步是可選的,模型管理客戶端通過拉取命令和模型鏡像倉(cāng)庫(kù)交互,下載管道模型鏡像。在發(fā)送請(qǐng)求得到模型鏡像的Manifest 后,模型管理客戶端利用 digest 并行下載鏡像所有的Blobs,其中就包括Config 和所有的Layers。

圖2 Docker 鏡像層次關(guān)系

上述步驟中,其中第三步涉及支持機(jī)器學(xué)習(xí)管道模型這一工件類型Manifest 的關(guān)鍵設(shè)計(jì)和若干子步驟,具體如下:1)模型管理客戶端通過擴(kuò)展Docker 后臺(tái)功能生成符合OCI標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)管道模型鏡像的Manifest。Manifest 文件的結(jié)構(gòu)可以完全遵循 OCI 分配規(guī)范。 Manifest 是鏡像的 config 文件索引,保存了很多和當(dāng)前平臺(tái)有關(guān)的信息。Manifest 文件是一個(gè) JSON 文件,其定義包括兩個(gè)部分,分別是配置Config和 Layers。Config 是一個(gè) JSON 對(duì)象,Layers 是一個(gè)由 JSON對(duì)象組成的數(shù)組。Config 與 Layers 中的每一個(gè)對(duì)象的結(jié)構(gòu)相同,都包括三個(gè)字段,分別是 digest、mediaType 和 size。其中 digest 是對(duì)象的 索引,mediaType 是該內(nèi)容的類型,size是大小。 2)Config 部分記錄了關(guān)于鏡像的配置,可以理解為是鏡像的元數(shù)據(jù)。通常它會(huì)被鏡像倉(cāng)庫(kù)用來(lái)在 UI 中展示信息,以及區(qū)分不同操作系統(tǒng)的構(gòu)建等。具體到對(duì)管道模型這一工件類型的支持的設(shè)計(jì)上,需要定制Config 結(jié)構(gòu)使其包括管道模型的元數(shù)據(jù)。每個(gè)管道模型會(huì)被賦予一對(duì)標(biāo)志符 pipeline_model_id 和 pipeline_model_version 來(lái)作為唯一標(biāo)識(shí)。并且一個(gè)管道模型包括若干個(gè)模型如model_1、model_n、dag。同時(shí)管道中每個(gè)模型的具體信息,也有若干個(gè)參數(shù),可以通過model_param 和 model_meta 展示每個(gè)模型的具體信息,也就是模型的參數(shù)和元的信息。3)機(jī)器學(xué)習(xí)管道模型鏡像的Layers 是由多層媒體類型(mediaType 為OCI 標(biāo)準(zhǔn)中 application/vnd.oci.image.layer.v1.*)的內(nèi)容組成的(其中最常見的是application/vnd.oci.image.layer.v1.tar+gzip) 。在該系統(tǒng)中,管道模型鏡像是分層構(gòu)建的,每一層就對(duì)應(yīng)著一個(gè)機(jī)器學(xué)習(xí)管道模型或DAG 模型。

基于Docker 鏡像和鏡像倉(cāng)庫(kù)服務(wù)的機(jī)器學(xué)習(xí)管道模型管理和分發(fā)系統(tǒng)的實(shí)例,如圖3 所示。新方法包括模型管理客戶端和模型鏡像倉(cāng)庫(kù);模型管理客戶端包括命令行管理工具模塊和Docker 后臺(tái)模塊。

圖3 新方法實(shí)例的示意圖

管道模型的開發(fā)者按照該方法的機(jī)器學(xué)習(xí)管道模型鏡像分層方法和Manifest 文件規(guī)范構(gòu)建Docker 鏡像;開發(fā)者將構(gòu)建的鏡像交付到機(jī)器學(xué)習(xí)管道鏡像倉(cāng)庫(kù)中;模型用戶使用客戶端從鏡像倉(cāng)庫(kù)拉取鏡像,拉取過程符合標(biāo)準(zhǔn)的鏡像倉(cāng)庫(kù)服務(wù)API:客戶端會(huì)先向鏡像倉(cāng)庫(kù)請(qǐng)求鏡像的Manifest;客戶端拉取鏡像的Config 信息結(jié)構(gòu);客戶端拉取包括管道模型的所有文件層。其中Manifest 文件構(gòu)成如圖4 所示,Config結(jié)構(gòu)如圖5 所示。

圖4 Manifest 構(gòu)成示意圖

圖5 配置結(jié)構(gòu)

該方法克服現(xiàn)有方案中存在的管道模型管理、分發(fā)在靈活性和性能方面的缺陷,可以共享復(fù)雜的管道模型,保證多方訓(xùn)練和服務(wù)的一致性并且構(gòu)建和試驗(yàn)任意復(fù)雜的模型。這也為集成學(xué)習(xí)、多任務(wù)學(xué)習(xí)、聯(lián)邦學(xué)習(xí)技術(shù)所需的更復(fù)雜的模型結(jié)構(gòu)提供了可能性,同時(shí)讓用戶可以動(dòng)態(tài)地實(shí)現(xiàn)模型操作和自定義評(píng)估。

3 結(jié)論

該文提出一種機(jī)器學(xué)習(xí)管道模型分層化管理和分發(fā)新方法。該方法通過鏡像倉(cāng)庫(kù)分發(fā)鏡像的方式來(lái)支持對(duì)機(jī)器學(xué)習(xí)管道模型的存儲(chǔ)和分發(fā),從而將管道里的每個(gè)機(jī)器學(xué)習(xí)模型作為鏡像里文件系統(tǒng)中的單獨(dú)一層來(lái)存儲(chǔ);用DAG 定義機(jī)器學(xué)習(xí)管道模型的計(jì)算關(guān)系圖,然后將其命名為DAG 的模型來(lái)存儲(chǔ)管道的計(jì)算關(guān)系并且DAG 模型會(huì)作為文件系統(tǒng)中的最上面單獨(dú)一層來(lái)存儲(chǔ)。

綜上所述,該系統(tǒng)使用鏡像來(lái)封裝管道模型,利用鏡像倉(cāng)庫(kù)提供了低延遲的管道模型管理和分發(fā)基礎(chǔ)設(shè)施并且可以極大的節(jié)省模型存儲(chǔ)的空間。實(shí)踐證明,該方法值得在其他機(jī)器學(xué)習(xí)管道模型的分發(fā)系統(tǒng)中推廣和部署。

致謝:該研究得到了教育部春暉計(jì)劃合作科研項(xiàng)目、國(guó)家留學(xué)基金管理委員會(huì)和四川省教育廳西部項(xiàng)目地方創(chuàng)新子項(xiàng)目及四川省無(wú)人機(jī)產(chǎn)業(yè)發(fā)展研究中心項(xiàng)目的支持。

猜你喜歡
配置文件鏡像倉(cāng)庫(kù)
倉(cāng)庫(kù)里的小偷
提示用戶配置文件錯(cuò)誤 這樣解決
填滿倉(cāng)庫(kù)的方法
鏡像
四行倉(cāng)庫(kù)的悲壯往事
搭建簡(jiǎn)單的Kubernetes集群
互不干涉混用Chromium Edge
忘記ESXi主機(jī)root密碼怎么辦
鏡像
小康(2018年23期)2018-08-23 06:18:52
消防設(shè)備
日照市| 澳门| 南漳县| 民县| 司法| 水城县| 黑河市| 云阳县| 娱乐| 绍兴市| 耒阳市| 安顺市| 余庆县| 静宁县| 定襄县| 绥滨县| 磴口县| 二手房| 隆林| 贞丰县| 英山县| 桦川县| 焉耆| 灵石县| 广宗县| 甘洛县| 泰州市| 杂多县| 武义县| 大理市| 东丽区| 梧州市| 高尔夫| 抚远县| 宝兴县| 商南县| 台中县| 扎鲁特旗| 乌兰察布市| 西城区| 贵州省|