梁 萌,吳文鸝,馮 斌,陳 實,劉艷麗
(1.中國地質科學院 地球物理地球化學勘查研究所,廊坊 065000;2.國土資源部 地球物理電磁法探測技術重點實驗室,廊坊 065000)
在地球物理方法的應用中,大地電磁法勘探作為一種有效的技術手段,應用在我國經濟社會發展包括能源、礦產勘查和深部探測等一系列重要領域。隨著勘探技術的提高和勘探目標的日趨復雜,驅使大地電磁法三維勘探及處理技術逐步推廣,由剖面二維測量發展到了多剖面測區三維測量,從而導致數據量成倍增長。考慮到項目實施周期及綜合解釋等要求,對數據處理周期的要求越來越短,以往的串行處理方式已經不能完全滿足項目實施的要求,采用并行計算已經成為數據處理的必然趨勢[1]。以往基于單臺計算機多線程的并行程序,對計算效率的提高也極其有限,近兩年在地球物理數據處理研究方面,尤其是電磁法三維正反演方面,多采用分布式并行編程模式(MPI)實現地球物理多進程并行計算[2],相比單機運行程序可以有效提高計算效率,但其對計算機的計算能力要求也越來越高,甚至需要采用具有超性能計算機來進行三維反演并行計算,但這樣無疑會增加項目實施的成本[3]。
邊緣計算是為應用開發者和服務提供商在網絡的邊緣側提供云服務和軟件環境服務,在靠近數據輸入的地方提供計算、存儲和網絡帶寬[4]?;谶吘売嬎愕睦砟睿梢詫⒃拘枰沙阅苡嬎銠C來處理的數據計算移往網絡邏輯上的邊緣節點進行分布式處理,由于高性能工作站及高速網絡設備已經成為科研院所及高級院校中的必備設備,將已有的高性能工作站通過單位內部的局域網絡聯接形成分布式計算環境,為分布式并行計算提供一個可供研發及數據處理的平臺。
依托中國地質科學院地球物理地球化學勘查研究所(物化探所)地質云物理分節點硬件設備,采用虛擬化技術構建具有一定計算與存儲規模的硬件資源池[5],結合3臺曙光工作站和3臺華為服務器,形成分布式計算環境的硬件環境(圖1)?;谶吘売嬎愕睦砟顚⒁陨嫌嬎銠C通過局域網絡互相連接后,形成可以集中調度計算資源的分布式計算環境[6],用于分布式并行計算研發和高性能計算服務。

圖1 分布式計算環境架構圖Fig.1 Architecture of distributed computing environment
以往多采用手動配置方式將若干臺計算機連接形成分布式計算環境,涉及到網絡配置、節點間無密碼登錄和程序手動部署等一系列繁雜的操作,隨著計算機數量的增加其操作的繁雜程度會成倍增長,造成了計算機集群難以快速擴展??傊葱纬捎行У姆植际接嬎悱h境構建、程序的部署與運行方案,在一定程度上阻礙了分布式并行程序的研發和推廣應用。
區別于以往的手動配置方式,筆者提出基于容器編排系統Kubernetes構建分布式計算環境。Kubernetes是一款開源的容器編排系統,旨在提供一個用于跨主機集群自動部署、擴展和操作容器(Docker)的平臺,其運行核心是將分布在不同主機的應用容器,通過網絡組件連接實現服務的分布式計算[7]。Docker是一個基于Linux技術構建容器的容器引擎,以Docker容器為程序運行的載體,與基于物理實體計算機方式相比,在流程化的開發、測試、部署和維護具有較高的優勢[8]。
采用Kubernetes容器編排系統將圖1所示計算機,通過局域網絡進行連接形成在物理空間上相互獨立,但在邏輯上相互統一的計算平臺。具體操作包括4個步驟:①計算機安裝Linux操作系統;②計算機安裝Kubernetes容器編排系統;③選擇其中1臺計算機作為主節點且初始化;④其他節點通過網絡加入主節點,形成由主節點統一調度的計算資源池?;谝陨?個步驟可快速構建分布式計算環境,若需要進一步擴展計算資源只要執行第2步和第4步操作,解決了以往手動配置分布式計算環境的操作繁雜問題。
手動配置分布式計算環境的主要缺點是缺少統一調度計算資源的能力,且由于各臺計算機存在操作系統版本與環境配置的差異,需要在每一臺計算機上分別部署和調試應用程序。采用Kubernetes容器編排系統構建的分布式計算環境,可以通過由主節點統一調度的計算資源池快速部署以Docker容器為載體的應用程序,由于部署后的Docker容器運行時包括應用程序及其依賴的運行環境,不必再進一步調試應用程序。
在計算資源池上通過主節點部署大地電磁法三維反演程序,筆者采用基于MPI的美國俄勒岡州立大學的ModEM大地電磁法三維反演并行程序[9],首先構建包含大地電磁法三維反演程序的Docker容器鏡像,構建步驟如表1所示。此構建步驟具有通用性,若部署其他程序,只需在第2步中將執行程序以及依賴環境進行替換。

表1 Docker鏡像構建步驟表Tab.1 Building steps of Docker image
構建大地電磁法三維反演程序的鏡像后,通過主節點在計算資源池中部署此鏡像形成多個計算節點,計算節點由Kubernetes的網絡組件連接形成分布式計算環境,基于計算節點內部的MPI環境實現大地電磁法三維反演分布式并行計算。分布式計算環境由主節點提供的接口服務模塊進行調度與運行,接口服務模塊基于Kubernetes提供的Python語言API接口編寫,具體功能函數包括計算節點發現,數據文件上傳與結果回傳,計算啟動、計算進度監控與停止。基于分布式計算環境提供的計算服務接口,進一步研發大地電磁法三維反演分布式計算軟件。
大地電磁法三維反演分布式計算軟件由系統集成框架與計算服務接口兩部分組成(圖2),系統集成框架基于物化探所電法工作站和三維電磁探測數據處理與反演解釋軟件系統[10]等已有研究成果實現,集成框架框架以數據驅動為核心,采用插件模式設計,由多維圖形可視化、人機交互操作界面和插件管理模塊組成,底層采用數據庫管理大地電磁法數據和反演模型。計算服務接口基于插件開發模式集成于系統框架中,通過按鈕、列表、曲線和進度條等人機交互方式實現和使用相應的接口功能,實現方法處理過程監控,反演結果查看和分析(圖3)。由圖3可以看出,大地電磁法三維反演分布式計算軟件的數據計算與用戶操作兩部分完全分離,其區別于傳統電磁法軟件主要特點包括:①軟件部署在客戶端,用戶直接操作軟件不必登錄到計算服務器上使用,減少不必要的操作流程;②數據計算與軟件操作分離,可進行離線計算,不會造成因軟件關閉造成反演計算進程終止的問題;③當反演程序更新時,不必更新客戶端軟件,只需要在服務端重新部署應用程序,可實現程序的快速部署與集成。

圖2 大地電磁法三維反演分布式計算軟件架構圖Fig.2 Architecture of three-dimensional magnetotelluric inversion distributed computing software

圖3 大地電磁法三維反演分布式計算軟件操作界面Fig.3 Interface of three-dimensional magnetotelluric inversion distributed computing software
為了對研發的大地電磁法三維反演分布式計算軟件的有效性和并行效率進行測試,設計了一個2層理論模型,用其合成數據在分布式計算環境上進行試算。模型為2層模型,模型為每層含4個異常體(如圖4所示),第一層每個異常體規模相同:長為500 m,寬為500 m,高為100 m。頂界面位于-100 m處,4個異常體的中心點分別位于(-500,-500)、(500,-500)、(-500,500)、(500,500),電阻率分別為30 Ω·m、300 Ω·m、300 Ω·m、30 Ω·m;第二層每個異常體規模相同:長為500 m,寬為500 m,高為300 m。頂界面位于-300 m處,4個異常體的中心點分別位于(-500,-500)、(500,-500)、(-500,500)、(500,500),電阻率分別為2 000 Ω·m、20 Ω·m、20 Ω·m、3 000 Ω·m。背景電阻率為100 Ω·m。正演采用的地面測點規模描述如下,測線21條,測線間隔為100 m,每條測線上21個測點,測點間隔為100 m,共441個測點。正演頻率采用0.031 25 Hz至8 192 Hz共38個頻點。理論模型經正演得到合成數據后進行反演,反演參數與初始模型描述如下,正則化因子為2,搜索半徑為50 m,迭代次數30次;模型網格數三個方向分別為40、40和44個,初始模型電阻率為100 Ω·m。從圖5、圖6中看出,反演結果可以很好地反映模型上下2層8個異常體的形態與位置。

圖4 模型示意圖Fig.4 Diagram of model(a)模型在y=-500 m垂直方向斷面圖;(b)模型在y=500 m垂直方向斷面圖;(c)模型在z=-150 m平面俯視圖;(d)模型在z=-450 m平面俯視圖。

圖5 反演結果在不同深度的水平切片圖Fig.5 Horizontal slice of inversion results at different depths(a)反演結果在深度150 m的水平切片圖;(b)反演結果在深度450 m的水平切片圖

圖6 反演結果的垂直斷面圖Fig.6 Vetical section of inversion results(a)y=-500 m;(b)y=500 m
為保證并行效率統計的計算性能一致性,基于容器編排系統的標簽技術,在相同配置的6臺計算機上部署16個計算節點,測試結果如表2所示,其中加速比=單節點運算時間/并行運算時間,計算效率=加速比/參加計算的節點數量。

表2 MT 三維反演并行計算效率Tab.2 Parallel computation efficiency of MT 3-D inversion
從表2分析得出,隨著計算節點個數的增加計算時間會相應縮短,并行計算的加速比隨著計算節點數的增加而提高,當計算節點是16個時,加速比達到9.92倍。隨著計算節點個數的增加計算效率會不斷下降,當計算節點是16個時,計算效率只有62.02%,這是由于計算節點是通過容器編排系統Kubernetes構建的虛擬局域網絡進行通信,在并行計算過程中程序的數據通信時間隨著計算節點的增加,其所占的比例逐漸增大,造成計算效率逐步下降。
基于邊緣計算的理念,采用Kubernetes和Docker兩項容器技術構建具有大規模計算資源的分布式計算環境,實現了將大地電磁法三維反演的并行計算任務分配到網絡邊緣設備上,通過高性能工作站協同完成三維反演分布式并行計算。通過模型合成數據進行反演試算,分析了在增加計算規模的情況下對分布式并行計算的影響,結果表明,分布式計算環境解決了三維反演計算速度和資源需求問題。基于松耦合方式的軟件架構設計,研發了大地電磁法三維反演分布式計算軟件,實現了人機交互操作和反演結果可視化,進一步推動了大地電磁法三維反演程序的實用化。在下一步的研究工作中,將細化三維反演算法的并行任務,以適應分布式計算環境,進一步提高反演程序的并行計算效率。
致謝
感謝美國俄勒岡州立大學Gary Egbert教授提供的ModEM大地電磁法三維反演源程序。