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

?

基于容器云技術(shù)的典型遙感智能解譯算法集成

2022-03-23 02:08趙智韜趙理君張正唐娉
大數(shù)據(jù) 2022年2期
關(guān)鍵詞:容器部署節(jié)點(diǎn)

趙智韜,趙理君,張正,唐娉

1. 中國科學(xué)院空天信息創(chuàng)新研究院,北京 100094;2. 中國科學(xué)院大學(xué)資源與環(huán)境學(xué)院,北京 100049

0 引言

隨著空天科學(xué)技術(shù)的發(fā)展和對地觀測系統(tǒng)的持續(xù)運(yùn)行,人們獲得遙感圖像數(shù)據(jù)變得越發(fā)簡單,形成了多源多尺度遙感數(shù)據(jù)并存的局面,遙感數(shù)據(jù)的增長速度逐年提高[1]。對于遙感智能解譯算法的集成而言,海量、多源、異構(gòu)的遙感數(shù)據(jù)不僅造成了數(shù)據(jù)集讀取標(biāo)準(zhǔn)不統(tǒng)一、算法模型訓(xùn)練方法不一致等困難,而且導(dǎo)致現(xiàn)有的遙感數(shù)據(jù)產(chǎn)品生產(chǎn)與管理方式無法滿足快速、高可靠性等服務(wù)需求。隨著高分辨率對地觀測衛(wèi)星時(shí)代的到來,從各種途徑獲取的遙感圖像數(shù)據(jù)的量正呈指數(shù)級(jí)增長。根據(jù)開放地理空間信息聯(lián)盟(Open Geospatial Consortium,OGC)預(yù)計(jì),當(dāng)前國家級(jí)遙感圖像數(shù)據(jù)存檔量將很快達(dá)到數(shù)PB之巨,而全球遙感圖像數(shù)據(jù)量將達(dá)到EB級(jí)[2]。在遙感大數(shù)據(jù)環(huán)境下,遙感產(chǎn)品生產(chǎn)涉及的算法種類和數(shù)據(jù)規(guī)模都是空前的[3],部分產(chǎn)品的設(shè)計(jì)和生產(chǎn)還需要考慮多源多尺度數(shù)據(jù)處理的順序?qū)哟侮P(guān)系,這對遙感算法的集成和協(xié)同都提出了更高的要求。然而現(xiàn)有的遙感智能解譯算法系統(tǒng)生產(chǎn)的產(chǎn)品種類單一、生產(chǎn)流程固定,無法滿足用戶復(fù)雜多變、個(gè)性化、大規(guī)模的產(chǎn)品生產(chǎn)需求。遙感智能解譯的基本流程如圖1所示。

圖1 遙感智能解譯的基本流程

此外,以往遙感領(lǐng)域的深度學(xué)習(xí)算法往往是基于單一的深度學(xué)習(xí)環(huán)境開發(fā)的,不同環(huán)境之間兼容性低,算法集成難度大。如何使深度學(xué)習(xí)代碼無須重寫,一次編寫、到處運(yùn)行(write once, run everywhere),具備良好的可移植性和復(fù)用性,成為一大挑戰(zhàn)。傳統(tǒng)的深度學(xué)習(xí)流程中算法在不同機(jī)器間進(jìn)行環(huán)境遷移非常復(fù)雜,基于Conda包管理技術(shù)解決上述問題并不是一個(gè)高效的方法。傳統(tǒng)的虛擬化技術(shù)使用KVM(kernel-based virtual machine)等虛擬化技術(shù),理論上可以支持多種模型的部署和運(yùn)行。然而遙感智能解譯算法通常依賴于深度學(xué)習(xí)框架和NVIDIA推出的CUDA(compute unified device architecture)通用并行計(jì)算架構(gòu),需要使用物理GPU進(jìn)行大規(guī)模的并行計(jì)算,而KVM虛擬機(jī)想要使用物理機(jī)的顯卡,需要用到復(fù)雜的GPU透傳(GPU passthrough)技術(shù),其搭建流程煩瑣且低效,無法滿足遙感智能算法的開發(fā)與集成需求。而容器技術(shù)可以將不同深度學(xué)習(xí)算法集成到同一物理機(jī)上,與傳統(tǒng)KVM等虛擬化技術(shù)相比,其具有小粒度、可拓展、靈活性和支持顯卡計(jì)算等優(yōu)點(diǎn),為大量深度學(xué)習(xí)算法的環(huán)境隔離和資源隔離提供了可能,提高了算法開發(fā)訓(xùn)練和部署的靈活性。

因此,本文借助容器云技術(shù)的分布式數(shù)據(jù)存儲(chǔ)、高性能計(jì)算、彈性擴(kuò)展、按需服務(wù)等優(yōu)點(diǎn),對典型的遙感智能解譯算法及產(chǎn)品生產(chǎn)中的關(guān)鍵技術(shù)展開研究,具體如下。

● 針對多源遙感數(shù)據(jù)集管理問題,引入GlusterFS分布式文件系統(tǒng),該系統(tǒng)支持在線擴(kuò)容,支持遠(yuǎn)程直接訪問內(nèi)存,支持跨集群云存儲(chǔ),方便遙感智能解譯算法所需數(shù)據(jù)的索引查找、數(shù)據(jù)緩存與集成,從數(shù)據(jù)集的角度提升智能解譯算法訓(xùn)練的速度可以大大減輕數(shù)據(jù)集管理和存儲(chǔ)的負(fù)擔(dān),避免大型數(shù)據(jù)集的遷移工作。

● 針對遙感智能解譯算法環(huán)境搭建的問題,基于Docker容器技術(shù)復(fù)現(xiàn)深度學(xué)習(xí)環(huán)境,縮短重復(fù)搭建環(huán)境的時(shí)間,且從集成規(guī)范化的角度,提供具備統(tǒng)一開發(fā)功能模塊的基礎(chǔ)鏡像,提供統(tǒng)一的模型參數(shù)接口約定和配置文件模板,滿足多用戶對算法環(huán)境的多樣化需求。

● 針對遙感智能解譯算法調(diào)優(yōu),首先通過建立模型統(tǒng)一可視化的框架,其次基于Kubernetes容器云技術(shù),統(tǒng)一分配物理資源,實(shí)現(xiàn)顯卡計(jì)算資源的管理自動(dòng)化、利用率最大化,提高模型調(diào)優(yōu)過程的效率。相較于自然圖像數(shù)據(jù),遙感數(shù)據(jù)的構(gòu)成更加復(fù)雜,不同遙感數(shù)據(jù)源由于其衛(wèi)星、傳感器物理參數(shù)等的不一致,造成了在空間分辨率、時(shí)間分辨率、波譜范圍、投影標(biāo)準(zhǔn)、分幅標(biāo)準(zhǔn)等方面的差異[4]。因此,遙感智能解譯算法在開發(fā)調(diào)試階段需要更加頻繁地調(diào)整算法和調(diào)試參數(shù),并且需要將多源異構(gòu)的數(shù)據(jù)處理的不同結(jié)果進(jìn)行可視化研究。構(gòu)建一個(gè)高可用、高可視化、高自動(dòng)化的調(diào)優(yōu)方案可以簡化整個(gè)遙感智能解譯流程,使開發(fā)人員能專注于算法本身。

● 針對遙感智能解譯產(chǎn)品的生產(chǎn)問題,首先通過對遙感數(shù)據(jù)各級(jí)產(chǎn)品的層級(jí)關(guān)系和遙感智能解譯算法的順序關(guān)系進(jìn)行梳理,構(gòu)建遙感產(chǎn)品上下層級(jí)關(guān)系[5],組織合理高效的遙感產(chǎn)品生產(chǎn)邏輯流程。之后引入Job引擎,動(dòng)態(tài)生成多源遙感產(chǎn)品生產(chǎn)工作流,實(shí)現(xiàn)多源、海量遙感數(shù)據(jù)的智能處理及產(chǎn)品生產(chǎn)。

● 針對遙感智能解譯算法的集成部署問題,使用Docker容器,統(tǒng)一集成遙感智能解譯算法環(huán)境。處理遙感數(shù)據(jù)的過程需要讀寫各種專門的遙感數(shù)據(jù)格式,并且涉及投影轉(zhuǎn)換、多波段、空間信息、幾何校正等特殊需求,因此解譯算法依賴于多種遙感數(shù)據(jù)處理庫和基于顯卡加速的處理算法,不同算法難以集成。而Docker容器秒級(jí)啟動(dòng)和環(huán)境隔離的優(yōu)點(diǎn)可以解決遙感智能解譯算法在集成部署環(huán)節(jié)中部署慢、集成難的問題。

開展上述研究的意義在于,首先,從數(shù)據(jù)集與模型交互的環(huán)節(jié)屏蔽了多源、異構(gòu)遙感數(shù)據(jù)的元數(shù)據(jù)差異,統(tǒng)一了模型獲取數(shù)據(jù)的方式,為多算法集成提供了基礎(chǔ);其次,通過調(diào)度與編排容器,按序執(zhí)行容器內(nèi)的算法,保證了復(fù)雜解譯產(chǎn)品生產(chǎn)任務(wù)的順利執(zhí)行,提高了遙感智能解譯算法之間的組織性;最后,本研究通過在幾種典型的遙感智能解譯算法上進(jìn)行實(shí)驗(yàn)表明,使用容器云技術(shù)構(gòu)建的GPU計(jì)算集群運(yùn)行神經(jīng)網(wǎng)絡(luò)算法可有效地提高計(jì)算資源的利用率,提高訓(xùn)練效率,同時(shí)極大地提高部署的靈活性,為遙感智能解譯技術(shù)的新型云端模式探索可行性方案。

1 技術(shù)背景

1.1 深度學(xué)習(xí)框架

深度學(xué)習(xí)框架是一種工具庫,它使人們在無須深入了解底層算法細(xì)節(jié)的情況下,能夠更容易、更快速地構(gòu)建深度學(xué)習(xí)模型。深度學(xué)習(xí)框架利用預(yù)先構(gòu)建和優(yōu)化好的組件集合定義模型,為模型的實(shí)現(xiàn)提供了一種清晰而簡潔的方法。

TensorFlow、PyTorch和Caffe等優(yōu)秀的深度學(xué)習(xí)框架完全開源,并且有多個(gè)活躍社區(qū)可解答相關(guān)問題,同時(shí)提供用于訓(xùn)練、測試等環(huán)節(jié)的完整工具包,可以幫助使用者快速上手。這些優(yōu)秀且對用戶友好的深度學(xué)習(xí)框架從技術(shù)和成本上降低了人工智能的門檻,提升了國內(nèi)中小企業(yè)以及個(gè)人開發(fā)者的效率。

1.2 遙感智能解譯技術(shù)

遙感是指使用傳感器通過遠(yuǎn)距離的、不與探測對象直接接觸的探測方式,收集探測對象的電磁輻射信息,并且分析探測到的數(shù)據(jù),得到探測對象信息的技術(shù)??焖侔l(fā)展的高分遙感系統(tǒng)已成為各個(gè)國家的重要軍事資源和必備設(shè)施。作為比較簡單易攜的航空遙感手段,無人機(jī)遙感技術(shù)在國內(nèi)外都已得到普遍使用,其被廣泛應(yīng)用在國家軍事水陸空的檢測、天氣預(yù)測、農(nóng)業(yè)林業(yè)病蟲害檢測、環(huán)境破環(huán)檢測、城市土地資源監(jiān)測等領(lǐng)域。遙感技術(shù)在地球信息收集、城市規(guī)劃、定位導(dǎo)航和應(yīng)急災(zāi)害等方面有重大的研究意義,遙感數(shù)據(jù)在軍事和民用領(lǐng)域都有重要的應(yīng)用價(jià)值。遙感圖像的使用需要很精密的算法對圖像上的物體進(jìn)行識(shí)別、分割、分析等[6]。

如圖2所示,近年來關(guān)于遙感圖像智能解譯的眾多研究都與深度學(xué)習(xí)技術(shù)具有較強(qiáng)的關(guān)聯(lián)性,主要有目標(biāo)檢測、地物分類、場景分類和變化檢測等實(shí)際應(yīng)用。目標(biāo)檢測是計(jì)算機(jī)視覺領(lǐng)域的核心問題之一,它的任務(wù)是找出圖像中所有感興趣的目標(biāo)(物體),確定它們的類別和位置。由于在遙感圖像中各類地物有不同的外觀、形狀和姿態(tài),加上成像時(shí)光照、遮擋等因素的干擾,傳統(tǒng)的目標(biāo)檢測識(shí)別方法不適用于海量的遙感數(shù)據(jù),其所依賴的特征表達(dá)式是人工設(shè)計(jì)的,很難從海量的數(shù)據(jù)中學(xué)習(xí)出一個(gè)有效的分類器來充分挖掘數(shù)據(jù)之間的關(guān)聯(lián)。而深度學(xué)習(xí)強(qiáng)大的高級(jí)(更具抽象和語義意義)特征表示和學(xué)習(xí)能力可以為圖像中的目標(biāo)提取提供有效的框架[7],YOLO、Faster-RCNN等深度學(xué)習(xí)算法已經(jīng)在遙感圖像目標(biāo)檢測中得到了廣泛的應(yīng)用。遙感地物分類就是利用計(jì)算機(jī)對遙感圖像中各類地物的光譜信息和空間信息進(jìn)行分析,選擇特征,將圖像中各個(gè)像元按照某種規(guī)則或算法劃分成不同的類別,然后獲得遙感圖像中與實(shí)際地物的對應(yīng)信息,從而實(shí)現(xiàn)圖像的分類[8],然而傳統(tǒng)的地物分類方法在應(yīng)用上受到很大限制。近年在各種出色的語義分割模型提出之后,基于語義分割方法對遙感圖像地物分類的研究取得了非常大的進(jìn)展,如UNet、SegNet。遙感圖像場景分類致力于根據(jù)圖像內(nèi)容自動(dòng)辨別土地利用或覆蓋的類別,隨著深度學(xué)習(xí)的出現(xiàn)與發(fā)展,其因強(qiáng)大的深層特征表示能力已經(jīng)逐漸取代手工特征,成為場景分類的主流方法[9]。遙感圖像的變化檢測可用于監(jiān)測區(qū)域內(nèi)不同時(shí)期的變化,通常通過收集某一區(qū)域在不同時(shí)刻的多幅遙感影像來識(shí)別該區(qū)域的土地覆蓋變化,可以分為像素級(jí)別和對象級(jí)別,特征提取能力和端到端的方式使卷積神經(jīng)網(wǎng)絡(luò)對影像塊具有很強(qiáng)的特征表達(dá)能力,相比于傳統(tǒng)的特征工程方法有很大的優(yōu)勢,其能夠直接從數(shù)據(jù)端得到變化檢測的分類結(jié)果[10]。

圖2 深度學(xué)習(xí)與傳統(tǒng)遙感任務(wù)的關(guān)聯(lián)性

隨著航天遙感信息技術(shù)的快速發(fā)展和全球?qū)Φ赜^測體系的建立,多種遙感數(shù)據(jù)的提供能力越來越強(qiáng),這些典型的遙感智能解譯算法的使用場景越來越廣泛,產(chǎn)品的精度也越來越高。為了進(jìn)一步提高遙感數(shù)據(jù)處理的精度和效率,需要更高效的遙感智能分析處理技術(shù)[11]。

1.3 Docker容器技術(shù)

在容器技術(shù)出現(xiàn)之前,開發(fā)者大多使用虛擬機(jī)構(gòu)建應(yīng)用程序所需要的運(yùn)行環(huán)境,如KVM、Xen等虛擬機(jī)技術(shù)[12]。Docker作為一種新的開源虛擬化容器技術(shù),一臺(tái)主機(jī)能運(yùn)行上百臺(tái)容器,可實(shí)現(xiàn)秒級(jí)啟動(dòng),并且在CPU計(jì)算效率、內(nèi)存訪問效率、GPU計(jì)算效率和網(wǎng)絡(luò)請求響應(yīng)效率等方面接近物理機(jī),可以在各類云平臺(tái)或本地機(jī)器上部署運(yùn)行。Docker容器包含了三大基本概念:鏡像、容器、倉庫。鏡像是創(chuàng)建容器的基礎(chǔ),通過聯(lián)合文件系統(tǒng)技術(shù),以分級(jí)存儲(chǔ)方式進(jìn)行創(chuàng)建,在一個(gè)鏡像中的修改不會(huì)對其他鏡像產(chǎn)生影響,每一個(gè)容器都運(yùn)行在屬于自己的獨(dú)立環(huán)境中,從而很好地避免了依賴沖突。采用Docker容器技術(shù)封裝深度學(xué)習(xí)算法和程序運(yùn)行環(huán)境,保證了算法的高復(fù)用性,實(shí)現(xiàn)了資源隔離,解決了不同算法之間依賴沖突的問題,可以將不同開發(fā)人員在不同環(huán)境下開發(fā)的程序集成到一個(gè)標(biāo)準(zhǔn)環(huán)境中,在不同機(jī)器上無差別運(yùn)行,節(jié)省配置環(huán)境和調(diào)試程序代碼的時(shí)間。Docker架構(gòu)如圖3所示。

圖3 Docker架構(gòu)

1.4 Kubernetes容器云平臺(tái)

Kubernetes是基于容器技術(shù)的分布式云平臺(tái)架構(gòu),是為容器集群打造的開源編排工具之一[13]。作為開源社區(qū)非常流行的平臺(tái)即服務(wù)(platform-as-aservice,PaaS)平臺(tái)之一,Kubernetes支持Docker技術(shù),具有資源管理自動(dòng)化、容器資源相互隔離、資源調(diào)度靈活、兼容分布式存儲(chǔ)系統(tǒng)等特點(diǎn),已經(jīng)成為業(yè)界廣泛使用的服務(wù)器資源共享的方式。Kubernetes容器集群編排系統(tǒng)將集群內(nèi)的服務(wù)器按功能劃分為主節(jié)點(diǎn)(master node)和計(jì)算節(jié)點(diǎn)(work node)[14]。圖4為Kubernetes系統(tǒng)的總體設(shè)計(jì)架構(gòu),主節(jié)點(diǎn)的重要組件包括:應(yīng)用程序接口(application programming interface,API)服務(wù)器,該組件負(fù)責(zé)為客戶端提供RESTful API服務(wù)接口,響應(yīng)客戶端發(fā)送的操作Pod請求,并將集群內(nèi)Pod的配置信息存儲(chǔ)到etcd元數(shù)據(jù)庫中供主節(jié)點(diǎn)端的其他組件訪問;控制管理器,該組件作為集群的控制器管理者,負(fù)責(zé)檢測集群內(nèi)計(jì)算節(jié)點(diǎn)、Pod、命名空間等出現(xiàn)的故障以及修復(fù)檢測到的故障,以保障集群正常穩(wěn)定運(yùn)行[15];調(diào)度器,該組件用于確保將Pod調(diào)度到一個(gè)合適的計(jì)算節(jié)點(diǎn)上運(yùn)行。子節(jié)點(diǎn)端的重要組件包括:kubelet,該組件用于對運(yùn)行在計(jì)算節(jié)點(diǎn)上的Pod對象實(shí)施具體的操作,包括創(chuàng)建、刪除等;kube-proxy,該組件將用戶提交的請求轉(zhuǎn)發(fā)到后端的目標(biāo)Pod實(shí)例上,同時(shí)支持將用戶發(fā)送的請求負(fù)載均衡到同一個(gè)服務(wù)的多個(gè)后端Pod實(shí)例上。

圖4 Kubernetes架構(gòu)

遙感智能解譯算法模型眾多,算法之間具有一定的層次和邏輯關(guān)系[16],而Kubernetes容器云技術(shù)可以根據(jù)部署鏡像之間的依賴關(guān)系,指定能夠控制批任務(wù)的Job資源對象,按序執(zhí)行容器內(nèi)的算法,完成容器的合理調(diào)度與編排[17],保證任務(wù)的順利執(zhí)行,失敗時(shí)自動(dòng)重啟任務(wù),并且可以將處理流程保存為YAML文件,保證處理流程隨時(shí)可以完全重現(xiàn)。相對于傳統(tǒng)的深度學(xué)習(xí),基于Kubernetes容器云平臺(tái)的深度學(xué)習(xí)具有很大優(yōu)勢,見表1。

表1 傳統(tǒng)深度學(xué)習(xí)和基于Kubernetes容器云平臺(tái)深度學(xué)習(xí)優(yōu)缺點(diǎn)對比

2 遙感智能解譯算法集成方案設(shè)計(jì)

2.1 集成方案整體架構(gòu)

隨著計(jì)算機(jī)技術(shù)的發(fā)展,不同遙感解譯處理算法、不同圖像處理流程可以在統(tǒng)一的計(jì)算平臺(tái)上集成與管理,不同遙感數(shù)據(jù)格式也可以相互集成與轉(zhuǎn)換。為了應(yīng)對多源、多算法的需求,集成方案的系統(tǒng)結(jié)構(gòu)需要清晰且具有一定的開放性,用戶可以用簡單的方式添加新的功能處理模塊,使集成方案具有彈性的縱向、橫向擴(kuò)展能力,為用戶提供集遙感智能解譯算法的數(shù)據(jù)讀取,模型開發(fā)、訓(xùn)練、推理和部署,以及遙感產(chǎn)品生產(chǎn)于一體的“一站式”服務(wù)。為了滿足遙感產(chǎn)品生產(chǎn)的需求,集成方案需要具備協(xié)同多計(jì)算節(jié)點(diǎn)工作完成遙感數(shù)據(jù)處理及產(chǎn)品生產(chǎn)的能力,構(gòu)建以高性能計(jì)算集群為處理核心的集群架構(gòu)。

因此,本文設(shè)計(jì)了基于容器云技術(shù)的遙感智能解譯算法集成方案的分層架構(gòu),如圖5所示。該框架可分為用戶接口層、應(yīng)用服務(wù)層、基礎(chǔ)服務(wù)層、存儲(chǔ)層、基礎(chǔ)設(shè)施層。

圖5 方案分層架構(gòu)

● 用戶接口層:即用戶直接的交互界面,主要通過命令行界面(CLI)或者Json配置文件調(diào)用Kubernetes中的API服務(wù)器,進(jìn)行訓(xùn)練的配置和日志顯示?;谠摻涌趯樱脩艨梢詫⒂?xùn)練參數(shù)、是否使用GPU、輸出文件的存儲(chǔ)路徑等項(xiàng)目管理的配置傳入配置文件。當(dāng)用戶進(jìn)行多次實(shí)驗(yàn)時(shí),僅需要修改配置文件,不需要關(guān)注底層設(shè)置,模型訓(xùn)練和推理流程全部自動(dòng)化完成。訓(xùn)練節(jié)點(diǎn)在訓(xùn)練過程中自動(dòng)將開始訓(xùn)練時(shí)間、當(dāng)前訓(xùn)練時(shí)長、訓(xùn)練狀態(tài)等數(shù)據(jù)寫入日志文件,并同步到主節(jié)點(diǎn),方便部署在主節(jié)點(diǎn)進(jìn)行展示。

● 應(yīng)用服務(wù)層:包括常見的深度學(xué)習(xí)框架PyTorch、TensorFlow,模型可視化和Jupyter Notebook服務(wù)。

● 基礎(chǔ)服務(wù)層:包括Kubernetes服務(wù)、Docker服務(wù)和容器可視化管理服務(wù)Portainer,提供鏡像制作、容器調(diào)度和編排等功能。

● 存儲(chǔ)層:采用GlusterFS分布式存儲(chǔ)系統(tǒng)和網(wǎng)絡(luò)文件系統(tǒng)(network file system,NFS),負(fù)責(zé)保存深度學(xué)習(xí)模型、參數(shù)和日志文件,讀取訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)。GlusterFS對Kubernetes兼容,具有良好的拓展性,可以將集群內(nèi)閑置的存儲(chǔ)資源統(tǒng)一起來,提高存儲(chǔ)空間利用率,有效地提高深度學(xué)習(xí)模型和數(shù)據(jù)文件的讀取速率。每個(gè)計(jì)算節(jié)點(diǎn)都部署GlusterFS服務(wù),從而使所有計(jì)算節(jié)點(diǎn)同時(shí)承擔(dān)分布式存儲(chǔ)任務(wù)。

● 基礎(chǔ)設(shè)施層:包括CPU服務(wù)器和GPU服務(wù)器,是提供計(jì)算資源的基礎(chǔ)。

總體而言,方案整體架構(gòu)如圖6所示,在主節(jié)點(diǎn)上部署Jupyter Notebook、控制面板(Dashboard)和深度學(xué)習(xí)可視化服務(wù)Visdom、Tensorboard,在計(jì)算節(jié)點(diǎn)上部署Docker服務(wù)和GlusterFS服務(wù)。用戶還可以通過容器化部署的方式靈活添加自定義的功能服務(wù)。遙感智能解譯算法模型開發(fā)和部署的總體技術(shù)路線如圖7所示。

圖6 方案整體架構(gòu)

圖7 總體技術(shù)路線

2.1 模型開發(fā)的設(shè)計(jì)

在集成方案的應(yīng)用層,統(tǒng)一容器創(chuàng)建后的分配方式,為不同的框架補(bǔ)充提供統(tǒng)一的服務(wù)功能,如容器對外鏈接服務(wù),在預(yù)先設(shè)計(jì)好的基礎(chǔ)開發(fā)鏡像內(nèi)部,封裝基本的遙感特定數(shù)據(jù)格式文件讀寫軟件包和常用的遙感預(yù)處理算法,免除用戶從底層開始搭建環(huán)境的重復(fù)性工作,用戶可以只根據(jù)自己的實(shí)際情況進(jìn)行所需軟件包的添加,輕松開啟模型開發(fā)流程。模型開發(fā)根據(jù)預(yù)先設(shè)計(jì)的深度學(xué)習(xí)算法,基于深度學(xué)習(xí)框架,進(jìn)行智能解譯算法的代碼編寫和鏡像構(gòu)建。其基本流程如圖8所示,具體如下。

圖8 模型開發(fā)流程

(1)從私有倉庫或開源倉庫使用Docker pull操作獲取所需的基礎(chǔ)環(huán)境鏡像?;诨A(chǔ)環(huán)境鏡像,添加OpenCV、GDAL、SciPy等Python包。對基礎(chǔ)鏡像統(tǒng)一設(shè)置SSH登錄端口,以便后期調(diào)試代碼。

(2)在主節(jié)點(diǎn),編寫YAML文件,調(diào)用Kubernetes中的API服務(wù)器,分配鏡像構(gòu)建的容器到Pod,分配GPU給Pod,并掛載數(shù)據(jù)集存儲(chǔ)目錄到容器,編寫算法代碼,對算法模型統(tǒng)一設(shè)置接口,將模型開發(fā)所需的參數(shù)統(tǒng)一寫入Json格式的文件config.json,傳輸?shù)接?jì)算節(jié)點(diǎn)。

(3)計(jì)算節(jié)點(diǎn)對模型進(jìn)行訓(xùn)練,并輸出模型輸出日志為Json格式的文件log.json,同步到主節(jié)點(diǎn)。

(4)在主節(jié)點(diǎn)調(diào)用可視化服務(wù),將日志和模型調(diào)試過程中的影像結(jié)果可視化輸出。

2.2 模型訓(xùn)練的設(shè)計(jì)

在模型訓(xùn)練的設(shè)計(jì)中,為了將開發(fā)者從手動(dòng)設(shè)置模型訓(xùn)練參數(shù)中解放出來,將模型接口匹配到一個(gè)文件形式的配置數(shù)據(jù)上,只需修改文件內(nèi)容,即可重復(fù)多次實(shí)驗(yàn),對比實(shí)驗(yàn)效果,并實(shí)時(shí)同步訓(xùn)練日志和數(shù)據(jù)效果到主節(jié)點(diǎn),實(shí)現(xiàn)簡單方便的可視化服務(wù),屏蔽了不同遙感智能解譯算法訓(xùn)練結(jié)果的底層差異。模型訓(xùn)練通過設(shè)置配置文件進(jìn)行實(shí)驗(yàn),使模型收斂,可視化實(shí)驗(yàn)進(jìn)程和對比實(shí)驗(yàn)效果,基本流程如下。

(1)將遙感數(shù)據(jù)采用分布式文件系統(tǒng) GlusterFS進(jìn)行分布式存儲(chǔ),統(tǒng)一數(shù)據(jù)格式。

(2)制定實(shí)驗(yàn)計(jì)劃,修改config.json配置文件,設(shè)定log.json日志文件的保存路徑,運(yùn)行容器訓(xùn)練。設(shè)計(jì)的配置文件和日志文件的元數(shù)據(jù)見表2和表3,保證不同的智能解譯算法的對外接口一致。

表2 配置文件元數(shù)據(jù)

表3 日志文件元數(shù)據(jù)

(3)利用Portainer服務(wù)可視化管理計(jì)算節(jié)點(diǎn)上容器的運(yùn)行狀態(tài),并通過IP: Port訪問主節(jié)點(diǎn)上的Visom或Tensorboard服務(wù),實(shí)時(shí)監(jiān)督訓(xùn)練過程。

(4)保存計(jì)算節(jié)點(diǎn)日志文件到主節(jié)點(diǎn),對比實(shí)驗(yàn)結(jié)果。

2.3 模型推理的設(shè)計(jì)

在模型推理的設(shè)計(jì)中,通過將不同節(jié)點(diǎn)歸屬到同一集群中,省略將訓(xùn)練好的模型權(quán)重文件同步到主節(jié)點(diǎn)的過程,減少了文件移動(dòng)開銷,僅需通過模型權(quán)重文件的路徑,即可自動(dòng)分配推理任務(wù)給計(jì)算節(jié)點(diǎn),并返回推理結(jié)果到統(tǒng)一路徑保存。模型推理通過配置文件和預(yù)訓(xùn)練好的模型權(quán)重進(jìn)行測試,驗(yàn)證測試結(jié)果,并存儲(chǔ)測試結(jié)果。其基本流程如圖9所示,具體如下。

圖9 模型推理流程

(1)設(shè)置配置文件test.json和預(yù)訓(xùn)練權(quán)重的路徑model.pth。

(2)在主節(jié)點(diǎn)調(diào)用Kubernetes中的API服務(wù)器,分配模型推理的容器和配置文件config.json到計(jì)算節(jié)點(diǎn),運(yùn)行容器內(nèi)算法,得到輸出結(jié)果及日志文件log.json。

(3)同步log.json到主節(jié)點(diǎn),對推理結(jié)果進(jìn)行顯示和存儲(chǔ)。

2.4 模型部署的設(shè)計(jì)

模型部署指高效地把訓(xùn)練好的深度學(xué)習(xí)的模型部署到生產(chǎn)環(huán)境,使用Kubernetes的容器編排服務(wù),自動(dòng)完成模型推理和結(jié)果輸出。容器按照運(yùn)行時(shí)間可分為兩類:服務(wù)類容器和工作類容器。服務(wù)類容器通常持續(xù)提供服務(wù),需要一直運(yùn)行,如Jupyter Notebook和Portainer等。工作類容器則執(zhí)行一次性任務(wù),如批處理程序,完成后容器就退出。遙感信息產(chǎn)品的生產(chǎn)流程是固定的,變化部分僅是每個(gè)容器的運(yùn)行參數(shù),因此在模型部署環(huán)節(jié),使用Kubernetes的Job機(jī)制,配置Job配置文件job.yaml,運(yùn)行容器內(nèi)的處理算法,在算法運(yùn)行完成后,Job的狀態(tài)會(huì)自動(dòng)更新為Complete,即這個(gè)Job任務(wù)已經(jīng)執(zhí)行完成,Pod不再在計(jì)算節(jié)點(diǎn)中繼續(xù)運(yùn)行,輸出并保存運(yùn)行結(jié)果。

生產(chǎn)環(huán)境中往往需要在同一集群中部署大量的算法模型,因此如何高效地利用集群的存儲(chǔ)空間也是模型部署環(huán)節(jié)需要考慮的問題。本方案通過搭建最小化的運(yùn)行時(shí)環(huán)境鏡像,可以有效縮小模型部署所需的存儲(chǔ)空間,方便在物理機(jī)上集成大量的深度學(xué)習(xí)算法。參照Dockerhub上托管的官方鏡像文件,TensorFlow和PyTorch的最小化運(yùn)行時(shí)環(huán)境鏡像和開發(fā)環(huán)境鏡像所占空間大小對比如圖10所示。

圖10 最小化運(yùn)行時(shí)鏡像與開發(fā)鏡像

3 遙感深度學(xué)習(xí)算法集成實(shí)例

3.1 數(shù)據(jù)集與實(shí)驗(yàn)環(huán)境

為了驗(yàn)證該集成方案的有效性,本節(jié)基于Docker和Kubernetes的遙感深度學(xué)習(xí)算法集成方案,以DOTA、UC Merced Land-Use、DSLT、SpaceNet7這4個(gè)數(shù)據(jù)集為例,選取5種不同的基于深度學(xué)習(xí)的遙感智能解譯算法,介紹4種遙感產(chǎn)品的生產(chǎn)。

DOTA是最大的面向?qū)ο蟮倪b感衛(wèi)星圖像檢測數(shù)據(jù)集,共發(fā)布了兩個(gè)版本:DOTA-v1.0和DOTA-v1.5。DOTA-v1.0數(shù)據(jù)集中的圖像來源于GoogleEarth以及我國的GF-1和JL-1衛(wèi)星。該數(shù)據(jù)集共包含2806張遙感圖像(圖像尺寸從800×800到4000×4000),一共有188282個(gè)實(shí)例,分為15個(gè)類別:飛機(jī)、船只、儲(chǔ)油罐、棒球場、網(wǎng)球場、籃球場、田徑場、港口、橋梁、大型車輛、小型車輛、直升飛機(jī)、足球場、環(huán)島和游泳池。每個(gè)實(shí)例都由一個(gè)四邊形邊界框標(biāo)注,頂點(diǎn)按順時(shí)針順序排列。UC Merced Land-Use數(shù)據(jù)集中的圖像尺寸為256×256,像素分辨率為1英尺,包括棒球場、海灘、建筑物、森林、高速公路、港口、停車場、儲(chǔ)油罐和網(wǎng)球場等21種類別,每一類有100張圖片,共2100張。DSLT數(shù)據(jù)集提供了3波段和16波段格式的1 km×1 km衛(wèi)星圖像,標(biāo)注了道路、建筑物、車輛、農(nóng)場、樹木、水道等10種不同的地物類型。SpaceNet7數(shù)據(jù)集包含約100個(gè)數(shù)據(jù)瓦片,這些數(shù)據(jù)瓦片是在兩年的時(shí)間跨度內(nèi)采集的4 m分辨率的多光譜圖像,標(biāo)注了相對應(yīng)的建筑物標(biāo)簽,用來檢測建筑物的變化情況。

實(shí)驗(yàn)中集群內(nèi)的節(jié)點(diǎn)采用的配置見表4,采用Kubernetes 1.20,構(gòu)建了一個(gè)GPU計(jì)算集群,在Kubernetes平臺(tái)上運(yùn)行容器化的深度學(xué)習(xí)模型,通過在主節(jié)點(diǎn)設(shè)置參數(shù)和配置文件,將訓(xùn)練數(shù)據(jù)集分別存放在不同節(jié)點(diǎn)上,進(jìn)行訓(xùn)練和部署實(shí)驗(yàn)。

表4 節(jié)點(diǎn)配置

3.2 模型算法

目標(biāo)檢測算法采用兩種算法,分別為旋轉(zhuǎn)框目標(biāo)檢測算法S2ANet(singleshot alignment network)[18]和水平框目標(biāo)檢測算法YOLOv3[19]。S2ANet通過修正錨定框,獲取精確的旋轉(zhuǎn)不變的卷積特征,以緩解分類和定位精度之間的沖突,用于大尺度遙感影像的目標(biāo)檢測任務(wù),在DOTA等公開數(shù)據(jù)集上具有最先進(jìn)的性能。YOLOv3是實(shí)時(shí)目標(biāo)檢測算法YOLO的第三個(gè)版本,其本身基于Darknet構(gòu)建的神經(jīng)網(wǎng)絡(luò)算法引入了殘差結(jié)構(gòu)和多尺度融合策略,相對于YOLOv2,其對小物體的識(shí)別性能提高非常明顯,更加適用于遙感圖像的目標(biāo)檢測。

場景分類算法采用ResNet101網(wǎng)絡(luò),ResNet在2015年被提出,在ImageNet比賽分類任務(wù)上獲得第一名。其引入了殘差模塊,緩解了隨著網(wǎng)絡(luò)加深模型準(zhǔn)確率下降的情況[20]。

地物分類算法采用UNet網(wǎng)絡(luò),此模型最開始用于醫(yī)療影像分割,采用編碼器-解碼器構(gòu)造,解決的是二分類問題。將UNet的損失函數(shù)修改為多類別損失函數(shù),使其適用于遙感圖像的地物分類任務(wù)[21-22]。

變化檢測算法采用UNet-VGG16,即編碼器部分使用VGG-16作為特征提取部分的UNet網(wǎng)絡(luò)。

實(shí)驗(yàn)?zāi)P偷脑O(shè)置見表5。

表5 實(shí)驗(yàn)?zāi)P驮O(shè)置

3.3 性能分析

在設(shè)置了參數(shù)和配置文件后,平臺(tái)自動(dòng)創(chuàng)建了一個(gè)包含3個(gè)節(jié)點(diǎn)的集群,包含一個(gè)主節(jié)點(diǎn)和兩個(gè)計(jì)算節(jié)點(diǎn),在運(yùn)行過程中,各節(jié)點(diǎn)算法正常訓(xùn)練。

在模型開發(fā)環(huán)節(jié),采用公開倉庫拉取環(huán)境鏡像的方式搭建深度學(xué)習(xí)環(huán)境,因此只需在將鏡像拉取到本地后,啟動(dòng)容器,即可進(jìn)行模型開發(fā)。圖11列出了啟動(dòng)容器的時(shí)間,每次啟動(dòng)可能會(huì)略有波動(dòng),啟動(dòng)容器時(shí)Kubernetes集群上沒有運(yùn)行其他容器,啟動(dòng)時(shí)間為容器從Stop狀態(tài)轉(zhuǎn)變?yōu)镽unning狀態(tài)花費(fèi)的時(shí)間。由圖11可知,5個(gè)測試容器啟動(dòng)正常,啟動(dòng)效率達(dá)到了秒級(jí),整體的啟動(dòng)時(shí)間都在5 s以內(nèi),實(shí)現(xiàn)了秒級(jí)部署深度學(xué)習(xí)環(huán)境。

圖11 智能解譯算法容器的啟動(dòng)時(shí)間測試結(jié)果

在模型訓(xùn)練環(huán)節(jié),在主節(jié)點(diǎn)可以得到統(tǒng)一可視化訓(xùn)練過程,如圖12所示。在模型推理環(huán)節(jié),采用Dashboard可視化管理監(jiān)督模型的運(yùn)行情況,如圖13所示。

圖12 Visdom可視化訓(xùn)練過程

圖13 Dashboard可視化管理界面

為了驗(yàn)證容器云動(dòng)態(tài)部署方式進(jìn)一步提升效率的效果,本文在物理機(jī)集群上測試了實(shí)驗(yàn)中4種算法部署任務(wù)的工作量,其中工作量以時(shí)間為衡量標(biāo)準(zhǔn),如圖14所示。搭建單個(gè)算法的環(huán)境或容器所需的平均工作量為1 min,3組實(shí)驗(yàn)分別進(jìn)行部署,對比了使用3種不同部署方式的工作量[17]。其中實(shí)驗(yàn)一直接在物理機(jī)上部署算法,通過復(fù)制上傳數(shù)據(jù);實(shí)驗(yàn)二使用Docker配置算法容器,通過復(fù)制上傳數(shù)據(jù)及鏡像;實(shí)驗(yàn)三使用容器云動(dòng)態(tài)配置算法容器及上傳鏡像,通過分布式存儲(chǔ)訪問數(shù)據(jù)??傮w來看,在物理機(jī)上搭建算法環(huán)境與搭建算法容器工作量基本相同,鏡像復(fù)制和數(shù)據(jù)復(fù)制、容器環(huán)境安裝所需工作量較少,使用容器云部署算法容器之后,實(shí)驗(yàn)任務(wù)的工作量可減少到直接物理機(jī)部署的任務(wù)工作量的50%以下,大幅提升部署效率。

圖14 部署工作量

同時(shí),對物理機(jī)部署及相同環(huán)境的容器化部署的4種智能解譯算法進(jìn)行了測試,對比了兩種方式對相同數(shù)據(jù)進(jìn)行推理所需的運(yùn)行時(shí)間。運(yùn)行時(shí)間是指在同一計(jì)算節(jié)點(diǎn),物理機(jī)上部署的算法和容器化部署的算法運(yùn)行推理代碼并輸出檢測結(jié)果所花費(fèi)的時(shí)間。選取100張算法對應(yīng)的標(biāo)準(zhǔn)圖像進(jìn)行測試,測試結(jié)果如圖15所示,橫坐標(biāo)為測試圖像數(shù)量,縱坐標(biāo)為取對數(shù)后的運(yùn)行時(shí)間,單位為秒(s)。Docker環(huán)境與物理機(jī)環(huán)境運(yùn)行效率基本一致。但是在新的機(jī)器中安裝部署生產(chǎn)環(huán)境時(shí),相比物理機(jī)環(huán)境,Docker容器環(huán)境可以顯著減少配置環(huán)節(jié)所需的工作,方便程序的遷移和復(fù)用,縮短算法部署和集成所需的時(shí)間。

圖15 物理機(jī)上部署的算法和容器化部署的算法運(yùn)行所耗時(shí)間

4 結(jié)束語

高效精準(zhǔn)地搭建深度學(xué)習(xí)環(huán)境,配置資源進(jìn)行訓(xùn)練推理,是開發(fā)智能解譯算法的核心步驟。然而,遙感算法程序的環(huán)境依賴眾多,傳統(tǒng)的開發(fā)環(huán)境管理技術(shù)導(dǎo)致資源占用大,容易造成資源浪費(fèi),集成部署的效率低,且模型開發(fā)流程復(fù)雜。

本文主要圍繞新興的Kubernetes容器云技術(shù)展開研究,針對目前基于深度學(xué)習(xí)的遙感智能解譯算法計(jì)算資源利用效率低、集成難、開發(fā)部署效率低的問題,提出了容器化的遙感信息高效智能解譯架構(gòu),實(shí)現(xiàn)了規(guī)范化、流程化的遙感深度學(xué)習(xí)算法開發(fā)及部署,實(shí)現(xiàn)了多種典型的遙感智能解譯算法的集成,實(shí)現(xiàn)了資源快速分配、開發(fā)環(huán)境秒級(jí)啟動(dòng)、模型訓(xùn)練高效化和自動(dòng)化,縮短了遙感深度學(xué)習(xí)算法的開發(fā)周期。該框架可滿足智能化遙感產(chǎn)品生產(chǎn)的需求,為我國未來航天遙感智能解譯技術(shù)的統(tǒng)一集成提供參考。

猜你喜歡
容器部署節(jié)點(diǎn)
基于RSSI測距的最大似然估計(jì)的節(jié)點(diǎn)定位算法
基于圖連通支配集的子圖匹配優(yōu)化算法
省委安排部署下半年和今后一個(gè)時(shí)期任務(wù)
部署
難以置信的事情
基于點(diǎn)權(quán)的混合K-shell關(guān)鍵節(jié)點(diǎn)識(shí)別方法
省婦聯(lián)部署2019年五項(xiàng)重點(diǎn)工作
液體對容器底及容器對桌面的壓力和壓強(qiáng)
取米
甘泉县| 利辛县| 浦县| 奉新县| 北安市| 江达县| 定远县| 越西县| 丰镇市| 蒙山县| 民勤县| 澎湖县| 宁晋县| 卓资县| 如东县| 新乡市| 宜黄县| 章丘市| 孟津县| 兴文县| 平乐县| 阳春市| 庆安县| 镇宁| 衡南县| 牙克石市| 阿坝| 兖州市| 丰台区| 布拖县| 莱州市| 宁陕县| 阿拉善盟| 堆龙德庆县| 长葛市| 综艺| 涟水县| 定远县| 太仓市| 栾城县| 波密县|