張寶花,李輝,劉倩,高美娜,黃荷,趙毅,于坤千+,金鐘
1.中國科學(xué)院計算機(jī)網(wǎng)絡(luò)信息中心,北京100190
2.中國科學(xué)院上海藥物研究所,上海201203
3.中國科學(xué)院大學(xué),北京100049
惡性傳染病的間歇性暴發(fā)對人類社會產(chǎn)生了深遠(yuǎn)而持久的影響。人類與病毒的較量,是科研與時間的賽跑,而快速藥物研發(fā)則是較量之關(guān)鍵。采用基于受體結(jié)構(gòu)進(jìn)行分子對接的高通量藥物虛擬篩選(high throughput virtual screening,HTVS)方法,有助于從海量小分子中篩選出與受體結(jié)構(gòu)最強(qiáng)結(jié)合的部分,是先導(dǎo)化合物發(fā)現(xiàn)的重要步驟[1-2]。在選定了合適的分子對接軟件并進(jìn)行了合理參數(shù)設(shè)置后,HTVS計算效率的提高主要依靠虛擬篩選規(guī)模和虛擬篩選計算的有效執(zhí)行。
據(jù)化學(xué)家估計,滿足Lipinski類藥五規(guī)則的穩(wěn)定小分子化合物數(shù)量達(dá)到1060左右[3]。研究表明,大規(guī)模篩選的對接得分隨虛擬篩選規(guī)模增加而提高[4-5]。增加虛擬篩選規(guī)??蓮膬蓚€方面來改善虛擬篩選的質(zhì)量:通過識別具有更緊密結(jié)合親和力的配體,可降低劑量和減少脫靶效應(yīng);發(fā)現(xiàn)藥代動力學(xué)更有利的、細(xì)胞毒性較小的化合物[6]。增加虛擬篩選規(guī)模則主要有兩種途徑:一方面,考慮到化合物的可合成性和易購買性,可選擇以ZINC(>5 億)和REAL(>14 億)為代表的大型化合物庫[7];另一方面,人們可通過碎片組合虛擬篩選庫、深度學(xué)習(xí)等方法生成海量的配體化合物[8-9]。
在可接受時間內(nèi)完成海量化合物分子的虛擬篩選對高性能計算技術(shù)提出了巨大挑戰(zhàn)。幸運的是,目前的超級計算機(jī)已接近E級(Exascale,每秒可進(jìn)行百億億次浮點運算)計算能力。美歐日均制定了E級計算計劃,我國也在研制下一代異構(gòu)高性能計算系統(tǒng),這均為超大規(guī)模虛擬篩選提供了可能。計算功能強(qiáng)大的超級計算機(jī)在藥物設(shè)計中的應(yīng)用給藥物發(fā)現(xiàn)帶來了新機(jī)遇,使藥物分子設(shè)計在速度和成功率上均發(fā)生了突飛猛進(jìn)的提高。然而,如何緊跟硬件的步伐,將超級計算機(jī)的計算能力發(fā)揮到最佳,還需要選擇合適的方法進(jìn)行有效的大規(guī)模藥物虛擬篩選。
科研人員在如何將分子對接軟件應(yīng)用于高通量藥物虛擬篩選方面開展了大量工作。例如使用AutoDock Vina 軟件來進(jìn)行高通量虛擬篩選,可提前將配體小分子進(jìn)行一定數(shù)量切割后存入不同的文件目錄。在計算資源充裕的條件下,不同的文件目錄可以同時獨立執(zhí)行計算來最優(yōu)化計算時間[10]。rDock與rxDock 軟件則通過將含有多個配體文件的sdf 文件,利用sdsplit 進(jìn)行按需劃分,對每份文件在當(dāng)前節(jié)點獨立發(fā)起分子對接操作或通過隊列調(diào)度系統(tǒng)調(diào)度到其他計算節(jié)點執(zhí)行計算[11]。Vina MPI使用MPI包裝器,可支持同時啟動數(shù)千個并行AutoDock Vina 可執(zhí)行文件[12]。POAP(parallelized Open Babel&AutoDock suite pipeline)將Open Babel 和AutoDock 軟件包連用,使用GNU Parallel將配體準(zhǔn)備、受體準(zhǔn)備、對接任務(wù)等并行化,通過Shell 命令行方式使用[13]。以上幾種方式,僅針對部分適合藥物發(fā)現(xiàn)的有機(jī)化合物(106~107個分子)[14]進(jìn)行中小規(guī)模的藥物虛擬篩選計算,對多任務(wù)進(jìn)行簡單分割,易引起負(fù)載不均衡,缺乏大規(guī)模藥物篩選的應(yīng)對策略。李祖華等人利用網(wǎng)格計算技術(shù)構(gòu)建了用于大規(guī)模藥物虛擬篩選的計算環(huán)境[15],可有效整合散布于網(wǎng)絡(luò)上的各種異構(gòu)計算資源,并能夠快速吸納新的網(wǎng)格結(jié)點和篩選工具。在整體架構(gòu)上使用了支持大規(guī)模并發(fā)的主從模式,在網(wǎng)格監(jiān)控上使用了支持多種異構(gòu)軟硬件環(huán)境的適配器模式,滿足了真實環(huán)境大規(guī)模藥物虛擬篩選的要求,但存在數(shù)據(jù)轉(zhuǎn)移安全性問題,網(wǎng)絡(luò)通訊能力強(qiáng)弱對性能也有很大影響。Peng等人在“天河二號”上研發(fā)的D3DOCKxb軟件[16]則通過設(shè)計一種新型可擴(kuò)展并行算法,利用CPU+MIC協(xié)同計算,采用分層、分段任務(wù)處理策略,分組休眠緩解IO壓力,“橫向并行、縱向分段”緩解通訊壓力,在8 000 節(jié)點上可獲得超過80%的加速,一天內(nèi)篩選老藥化合物4 200 萬個。Gorgulla 等人在Nature上發(fā)表的超大規(guī)模藥物發(fā)現(xiàn)平臺[4],其中的VFVS(virtual flow for virtual screening)使用Shell 腳本開發(fā),文件列表形式進(jìn)行多層級任務(wù)分發(fā),數(shù)據(jù)壓縮形式遷移減少IO 問題,使用8 000 個CPU 核心,4 周時間篩選化合物約13 億。以上科研團(tuán)隊在大規(guī)模藥物虛擬篩選的有效執(zhí)行方面均取得了較好進(jìn)展。但隨著異構(gòu)超級計算機(jī)大量采用GPU 卡等加速部件,針對特定服務(wù)器架構(gòu)設(shè)計的mD3DOCKxb 軟件和僅支持CPU 計算的VFVS 軟件已無法有效利用加速部件提升計算速度。此外,在超大規(guī)模虛擬篩選時的動態(tài)負(fù)載均衡和容錯管理方面亦存在不少優(yōu)化空間。
本文提出了一種在超級計算機(jī)上進(jìn)行大規(guī)模藥物虛擬篩選新的實現(xiàn)方式,即利用中央數(shù)據(jù)庫進(jìn)行任務(wù)的多層動態(tài)分發(fā)。此外,對大規(guī)模虛擬篩選中的負(fù)載均衡、通訊、IO及容錯管理等問題也開展了研究。通過以上工作,有望利用高性能計算系統(tǒng)進(jìn)行更大規(guī)模更快速的虛擬篩選,為應(yīng)對暴發(fā)性惡性傳染病候選藥物的快速發(fā)現(xiàn)提供強(qiáng)大計算保障,大大地加速藥物研發(fā)。
文章將按照以下組織進(jìn)行撰寫:系統(tǒng)設(shè)計部分將介紹系統(tǒng)的總體架構(gòu)及在動態(tài)負(fù)載均衡、容錯管理、通訊和IO優(yōu)化等方面的設(shè)計方案;系統(tǒng)實現(xiàn)部分將介紹系統(tǒng)實現(xiàn)中相關(guān)的技術(shù)方案,包括系統(tǒng)的運行流程和操作方式等;系統(tǒng)測試部分通過各項測試展示系統(tǒng)的實現(xiàn)效果;系統(tǒng)應(yīng)用部分將介紹系統(tǒng)在新冠病毒藥物研發(fā)中的應(yīng)用成效。最后部分為總結(jié)和展望。
藥物虛擬篩選是海量數(shù)據(jù)影響下的超高通量計算過程,由大批量松耦合的子任務(wù)構(gòu)成。在超級計算機(jī)上進(jìn)行此類計算模擬,需有效地利用各空閑資源,高效處理數(shù)十億化合物,確保高通量計算執(zhí)行的速度和質(zhì)量。為此,本文提出以中央數(shù)據(jù)庫進(jìn)行集中任務(wù)分發(fā)的方案??紤]到單個數(shù)據(jù)庫進(jìn)行任務(wù)分發(fā)將達(dá)到負(fù)載上限,如集中通訊量過大必然導(dǎo)致通訊速度減慢甚至異常。從效率和節(jié)點穩(wěn)定性方面考慮須采用多數(shù)據(jù)庫分擔(dān)負(fù)載。為方便管理多個數(shù)據(jù)庫并及時補充待計算的任務(wù),本文提出基于多層級數(shù)據(jù)庫的并行分發(fā)處理策略,設(shè)計了“樹”形的多層級任務(wù)分發(fā)框架。
如圖1所示,根服務(wù)節(jié)點控制整個計算任務(wù)的中央數(shù)據(jù)庫,計算任務(wù)從這里開始分配。T個“樹”的枝服務(wù)節(jié)點啟動枝數(shù)據(jù)庫,與根數(shù)據(jù)庫通訊獲取大任務(wù)并分割后,由圖2所示的任務(wù)執(zhí)行單元來執(zhí)行計算。
圖2 任務(wù)執(zhí)行單元處理流程Fig.2 Processing flow of task execution unit
每個任務(wù)執(zhí)行單元采取兩個層級的主從模式設(shè)計,第一層為枝數(shù)據(jù)庫與計算節(jié)點(圖中WG表示)的主從執(zhí)行模式,數(shù)據(jù)庫負(fù)責(zé)管理和分發(fā)作業(yè),WG 與數(shù)據(jù)庫通訊獲取和更新任務(wù)。在每個WG 里含第二層主從模式,主進(jìn)程負(fù)責(zé)抓取和預(yù)處理任務(wù)并啟動多個子進(jìn)程執(zhí)行批量分子計算操作。子進(jìn)程將計算任務(wù)全部執(zhí)行完畢后,由主進(jìn)程統(tǒng)計計算結(jié)果,對本組結(jié)果進(jìn)行排序并將少量輸出結(jié)果寫入上級數(shù)據(jù)庫。之后去數(shù)據(jù)庫中抓取新任務(wù),不斷輪詢“抓取任務(wù)-啟動子進(jìn)程計算-結(jié)果處理”操作,直至數(shù)據(jù)庫中任務(wù)全部執(zhí)行完畢,WG 退出,本數(shù)據(jù)庫作業(yè)執(zhí)行完畢。然后由上級枝服務(wù)節(jié)點與根數(shù)據(jù)庫通訊獲取下一批次計算任務(wù)。
藥物虛擬篩選屬于分布式計算[17],可把需要利用巨大的計算能力才能解決的藥物篩選問題進(jìn)行“水平切分”,分布到不同的節(jié)點分別處理得到結(jié)果,并綜合起來得到最終結(jié)果。如何減少任務(wù)獲取、數(shù)據(jù)更新時的通訊負(fù)擔(dān)并保證計算任務(wù)在各種狀態(tài)下的負(fù)載均衡,是超大規(guī)模藥物虛擬篩選的主要痛點。在本文中,得益于多層級中央數(shù)據(jù)庫和“樹”形模式的任務(wù)分發(fā)框架,下級節(jié)點通過主動鏈接上級數(shù)據(jù)庫進(jìn)行任務(wù)獲取和執(zhí)行,計算過程中各節(jié)點都處于任務(wù)滿載狀態(tài),并可根據(jù)節(jié)點服務(wù)能力動態(tài)調(diào)整負(fù)載。運行快的節(jié)點將從上級數(shù)據(jù)庫獲取更多的任務(wù)計算。反之,計算較慢的節(jié)點則會減緩與上級數(shù)據(jù)庫的通訊頻次。故障節(jié)點則不再與上級數(shù)據(jù)庫通訊獲取任務(wù),由此可將慢節(jié)點和故障節(jié)點的影響降到最低。
超大規(guī)模虛擬篩選涉及到大量的數(shù)據(jù)通訊、文件讀寫等操作,對超級計算機(jī)的網(wǎng)絡(luò)通訊和IO 提出很大挑戰(zhàn)。
直接存放和處理數(shù)十億級別的分子會導(dǎo)致文件系統(tǒng)卡頓甚至崩潰。本文采取“分而治之”的處理策略,將海量分子文件進(jìn)行多層壓縮打包以減少存儲壓力。如圖3 所示,根數(shù)據(jù)庫存放多個頂級壓縮文件。執(zhí)行計算時枝服務(wù)節(jié)點與根數(shù)據(jù)庫通訊,獲取頂級壓縮包,解壓得到多個二級壓縮包(內(nèi)含多個小分子文件),并作為圖2 所示任務(wù)執(zhí)行單元的處理對象。另外,從計算策略上進(jìn)行優(yōu)化,通過長時間間隔讀寫來減少IO 頻次。在計算節(jié)點上,每次分子對接計算執(zhí)行完后,隨即進(jìn)行能量提取操作,待同一批次全部分子執(zhí)行完后,由主進(jìn)程執(zhí)行能量排序并根據(jù)用戶選擇挑選排名靠前的結(jié)果記錄到上級數(shù)據(jù)庫中。通過少量大文件長時間間隔讀寫減輕了系統(tǒng)IO壓力,使硬件系統(tǒng)在處理海量計算任務(wù)時流暢不卡頓。
圖3 海量小分子文件的多層級壓縮處理策略Fig.3 Multi-level compression strategy for massive small molecular files
通過文件壓縮和大文件遷移的方式,在緩解系統(tǒng)IO 壓力的情況下,還間接促進(jìn)了通訊問題的改善。計算節(jié)點每次從數(shù)據(jù)庫獲取多個配體分子組成的壓縮包,進(jìn)行二級分發(fā)后執(zhí)行計算,如此可有效減少與上級數(shù)據(jù)庫的通訊次數(shù)。分子對接計算任務(wù)則完全在計算節(jié)點本地執(zhí)行,計算節(jié)點間無任何通訊。
高通量任務(wù)運行時,不可避免地會出現(xiàn)節(jié)點異常、程序計算錯誤等問題。如何保障作業(yè)正確、有效、順利地執(zhí)行,是超大規(guī)模藥物虛擬篩選的基本需求。
由前所述,通過采取中央數(shù)據(jù)庫動態(tài)管理和分發(fā)作業(yè),相較于固定文件列表分發(fā)方式,中央數(shù)據(jù)庫服務(wù)在靈活性和易用性方面更有優(yōu)勢,例如支持在計算過程中動態(tài)靈活增加數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù),容易統(tǒng)計任務(wù)執(zhí)行狀態(tài)等,在訪問時可以對單條數(shù)據(jù)加鎖,且加鎖粒度更細(xì),可將故障節(jié)點和慢節(jié)點的影響降到最小,這就要求中央數(shù)據(jù)庫服務(wù)必須持續(xù)運行。
并行分發(fā)系統(tǒng)配備的監(jiān)控程序可定時檢查根數(shù)據(jù)庫服務(wù)和枝數(shù)據(jù)庫服務(wù)。如圖4,若檢測到服務(wù)節(jié)點異常掉線,則自動重啟服務(wù),保證下級數(shù)據(jù)庫能夠鏈接獲取任務(wù)。同時,在每個節(jié)點中,對計算節(jié)點錯誤,如節(jié)點空掛無進(jìn)程、加速卡故障等錯誤進(jìn)行定時掃描,發(fā)現(xiàn)異常則刪除進(jìn)程,釋放節(jié)點。對于失敗的計算作業(yè),通過修改作業(yè)狀態(tài)可重新回到待計算任務(wù)數(shù)據(jù)庫中由其他正常節(jié)點獲取計算。
圖4 計算錯誤處置策略Fig.4 Calculation error handling strategy
本工作采用Python語言實現(xiàn)了簡單易用的藥物虛擬篩選并行分發(fā)系統(tǒng)。MongoDB數(shù)據(jù)庫作為中央數(shù)據(jù)庫,是一款為現(xiàn)代Web 應(yīng)用程序和互聯(lián)網(wǎng)基礎(chǔ)設(shè)施而設(shè)計的新型開源數(shù)據(jù)庫管理系統(tǒng)。作為一種典型的分布式NoSQL數(shù)據(jù)庫,它并發(fā)性能優(yōu)異、支持水平擴(kuò)展、模式自由靈活,且在大文件傳輸、故障自動轉(zhuǎn)移等方面具有優(yōu)良的特點。藥物虛擬篩選涉及到的任務(wù)比較松散,非常適合使用MongoDB 數(shù)據(jù)庫來進(jìn)行任務(wù)管理。
圖5展示了并行分發(fā)系統(tǒng)的啟動流程,用戶發(fā)起計算請求并通過隊列調(diào)度系統(tǒng)獲取到計算資源后,由主程序啟動一個根數(shù)據(jù)庫和T個枝數(shù)據(jù)庫。根服務(wù)節(jié)點啟動枝服務(wù)節(jié)點與根數(shù)據(jù)庫通訊獲取任務(wù),并對任務(wù)分割后存于枝數(shù)據(jù)庫中。啟動計算節(jié)點,并開啟主進(jìn)程與枝數(shù)據(jù)庫連接獲取任務(wù),通過Python進(jìn)程池調(diào)用節(jié)點上其他資源進(jìn)行分子對接計算。在每個計算節(jié)點上,還配有一個心跳程序,每隔10 min連接枝數(shù)據(jù)庫對當(dāng)前任務(wù)執(zhí)行時間和狀態(tài)進(jìn)行更新。主程序還會啟動監(jiān)控程序來監(jiān)控數(shù)據(jù)庫和計算節(jié)點的狀態(tài),根據(jù)異常狀態(tài)來進(jìn)行容錯。
圖5 并行分發(fā)系統(tǒng)啟動流程Fig.5 Parallel distribution system startup process
在進(jìn)入虛擬篩選前,需對受體和配體分子進(jìn)行處理,如受體補全殘基、格式轉(zhuǎn)換、加氫及加電荷等操作,并根據(jù)受體結(jié)合口袋位置和尺寸設(shè)置分子對接的配置文件。經(jīng)過預(yù)處理的文件即可使用藥物虛擬篩選并行分發(fā)系統(tǒng)執(zhí)行計算。圖6 展示了并行分發(fā)系統(tǒng)在超級計算機(jī)各節(jié)點上的映射關(guān)系。為管理方便,每個枝數(shù)據(jù)庫設(shè)置M個子庫負(fù)責(zé)管理和分發(fā)分組作業(yè)。在虛擬篩選執(zhí)行時,為每個分組啟動N個計算節(jié)點,每個節(jié)點對應(yīng)圖2中一個WG。在節(jié)點上,進(jìn)程1作為主進(jìn)程,負(fù)責(zé)執(zhí)行數(shù)據(jù)抓取、后處理等任務(wù),而其他進(jìn)程則負(fù)責(zé)調(diào)用CPU 或競爭調(diào)用加速器執(zhí)行具體的分子對接操作。
圖6 并行分發(fā)系統(tǒng)在超級計算機(jī)節(jié)點上的映射關(guān)系Fig.6 Mapping of parallel distribution system on supercomputer nodes
本文并行分發(fā)系統(tǒng)屏蔽了復(fù)雜處理細(xì)節(jié),用戶通過簡單設(shè)定配置文件相關(guān)參數(shù)即可開啟大規(guī)模并發(fā)計算模擬。通過編輯配置文件可使用服務(wù)器上已安裝的軟件執(zhí)行分子對接計算,如選擇AutoDock GPU 程序利用GPU 加速計算或AutoDock Vina 程序利用CPU并行加速,解除對于軟件的高集成綁定,實現(xiàn)分子對接軟件與并行分發(fā)系統(tǒng)的松耦合。對于執(zhí)行計算的分組數(shù)量、執(zhí)行計算的進(jìn)程等數(shù)量均可通過參數(shù)配置靈活調(diào)整以增強(qiáng)易用性。
針對如何在超級計算系統(tǒng)上有效進(jìn)行超大規(guī)模藥物虛擬篩選,本文設(shè)計了基于中央數(shù)據(jù)庫的“樹”形多層級任務(wù)并行分發(fā)系統(tǒng)。在動態(tài)負(fù)載均衡、高容錯技術(shù)、優(yōu)化IO與通訊問題等方面進(jìn)行的研究,為快速高效穩(wěn)定地執(zhí)行大規(guī)模藥物虛擬篩選提供了有力保證。
系統(tǒng)硬件配置:每節(jié)點配置1 顆國產(chǎn)X86 處理器,32核心,8*DDR4內(nèi)存通道、128*PCI-E 3.0通道,4個國產(chǎn)加速器,16 GB HBM2顯存,帶寬1 TB/s。
計算參數(shù)設(shè)置:藥物虛擬篩選并行分發(fā)系統(tǒng)需要結(jié)合具體的分子對接程序執(zhí)行計算。研究測試表明,雖開源軟件相較于商業(yè)軟件的算法不同,但構(gòu)象排序和打分結(jié)果差異不大,并不存在一個對接軟件在各方面都優(yōu)于其他軟件[18]??紤]到對接軟件的準(zhǔn)確性和計算速度,本文選取了AutoDock GPU(OpenCL加速版本)[19]程序執(zhí)行對接計算。
經(jīng)測試,AutoDock GPU 計算并非全部在加速器上執(zhí)行,加速卡在較少進(jìn)程時出現(xiàn)了負(fù)載不滿的現(xiàn)象。節(jié)點內(nèi)分子對接計算的進(jìn)程數(shù)量會對計算效率產(chǎn)生影響,測試(圖7)發(fā)現(xiàn)每個節(jié)點啟動30個以上進(jìn)程競爭使用加速器計算的執(zhí)行時間最少,硬件能夠得到充分的利用。因此,在之后的計算中,設(shè)置每個WG中使用的子進(jìn)程數(shù)量為30。
圖7 節(jié)點內(nèi)計算進(jìn)程數(shù)量對性能的影響Fig.7 Impact of the number of computing processes on performance intra node
計算受體采用由饒子和院士團(tuán)隊公布的新冠病毒Mpro 蛋白及對接口袋位置[20],使用AutoDock Tools 對受體進(jìn)行加氫加電荷和格式轉(zhuǎn)換操作,對接口袋大小設(shè)置為22.5 ?,受體設(shè)置為剛性,使用AutoDock Tools 準(zhǔn)備好.gpf 文件,進(jìn)而使用autogrid程序生成需要的各個.map文件和.fld文件[21]。配體取自公開數(shù)據(jù)庫REAL和ZINC,使用Openbabel軟件進(jìn)行了加氫加電荷和格式轉(zhuǎn)換處理,配體設(shè)置為柔性。
對饒子和院士團(tuán)隊報道的病毒RdRp 蛋白[22]與REAL 數(shù)據(jù)庫分子執(zhí)行篩選計算,選取測試軟件為AutoDock GPU 程序,每個計算節(jié)點啟動30 個進(jìn)程+4 加速器來執(zhí)行計算,對接策略采取受體為剛性,配體為柔性的處理方案,每次對接產(chǎn)生10 個最優(yōu)構(gòu)象。以50節(jié)點對100萬分子執(zhí)行半柔性對接進(jìn)行測試,采用傳統(tǒng)劃分文件目錄后,順序調(diào)用加速器執(zhí)行分子對接計算的處理方法,計算時間受任務(wù)劃分粒度、計算節(jié)點服務(wù)能力、小文件頻繁IO 等因素的影響,計算時間大于5 h。超過500節(jié)點的大規(guī)模模擬、計算不均衡等因素導(dǎo)致的影響則更為嚴(yán)重,甚至多次出現(xiàn)節(jié)點故障導(dǎo)致計算失效的情況。使用本文分發(fā)系統(tǒng),計算時間可縮短到1.1 h。以50節(jié)點對100萬分子執(zhí)行半柔性對接為基準(zhǔn)測試計算效率。通過網(wǎng)絡(luò)傳輸效率的測試,本文采取了一個枝服務(wù)數(shù)據(jù)庫向500 個計算節(jié)點同時分發(fā)任務(wù)的方案。例如,在2 000節(jié)點計算時,采用了1個根數(shù)據(jù)庫和4個枝數(shù)據(jù)庫。由表1 所示,隨著并發(fā)規(guī)模的增大,計算效率在2 000節(jié)點時,效率超過95%。
表1 并行分發(fā)系統(tǒng)弱擴(kuò)展性測試Table 1 Weak scalability test of parallel distribution system
對于更大并發(fā)規(guī)模的計算,可通過增加枝數(shù)據(jù)庫的數(shù)量來調(diào)度更多的計算節(jié)點。由于計算節(jié)點只與上級數(shù)據(jù)庫通訊,而彼此不進(jìn)行通訊,每個分支計算互不影響,可實現(xiàn)計算規(guī)模的不斷擴(kuò)展。
VFVS 為美國哈佛大學(xué)最新發(fā)表的超大規(guī)??焖偎幬锾摂M篩選平臺。它使用Shell 腳本開發(fā),采用文件列表進(jìn)行任務(wù)分發(fā),集成了包括QuickVina 和AutoDock Vina在內(nèi)的多個CPU計算軟件,暫不支持GPU加速。利用該平臺,科研人員針對KEAPI受體,利用8 000CPU 核心花費約4 周時間,篩選了超13 億分子(包括3.3 億ZINC 數(shù)據(jù)庫分子及10 億REAL 數(shù)據(jù)庫分子),文中稱可利用Google 云平臺16 萬CPU 核心于15 h 篩選10 億化合物,是目前已知報道的篩選規(guī)模最大、速度最快的藥物虛擬篩選平臺。
本文針對新冠病毒Mpro 受體(參數(shù)設(shè)置同上),每個節(jié)點選擇30個CPU核心,使用QuickVina2軟件[23]對VFVS 和本文并發(fā)系統(tǒng)進(jìn)行對比測試。首先測試單節(jié)點計算,本文選取了300 個分子,根據(jù)VFVS 軟件要求,分為30組(每組10個分子)寫入中央文件列表,使用30個進(jìn)程執(zhí)行QuickVina2軟件計算,每個進(jìn)程串行執(zhí)行。本文對300 個分子通過Python 進(jìn)程池調(diào)度節(jié)點內(nèi)30 個進(jìn)程執(zhí)行上述計算。測試發(fā)現(xiàn):對于300 個分子結(jié)構(gòu)全部相同的情況,VFVS 測試時間為513 s,本文程序為502 s,性能接近;若300 個分子結(jié)構(gòu)不同,VFVS的計算時間為473 s,本文為295 s。同理,對于600和1 123個不同結(jié)構(gòu)的分子,本文并發(fā)系統(tǒng)體現(xiàn)出了良好的速度優(yōu)勢。
根據(jù)SlogP、MW、TPSA、HBA、HBD、RotB 等參數(shù)從REAL 數(shù)據(jù)庫中選擇了166 萬分子,分別使用VFVS 和本文并發(fā)程序進(jìn)行測試,測試條件同上,測試規(guī)模為50 節(jié)點,VFVS 全部節(jié)點執(zhí)行計算完成需19.5 h,本文為10.2 h。
分析計算時間出現(xiàn)差異的原因,VFVS在工作任務(wù)較少時,會發(fā)生進(jìn)程的CPU利用率不高的狀況,由負(fù)載不均衡造成性能少許損耗。本文由于使用了進(jìn)程池動態(tài)調(diào)度,CPU基本處于滿載狀態(tài),有效克服了負(fù)載不均衡問題。
新型冠狀病毒肺炎為感染新型冠狀病毒所致,該病毒在入侵細(xì)胞后首先利用細(xì)胞機(jī)器合成復(fù)制酶多肽,由主蛋白酶Mpro剪切后形成功能蛋白,進(jìn)一步組裝成以RNA聚合酶RdRp為核心的復(fù)制轉(zhuǎn)錄機(jī)器,啟動自身遺傳物質(zhì)的大量復(fù)制,干擾這兩種蛋白質(zhì)的功能有望阻斷或抑制新冠病毒的復(fù)制過程。根據(jù)饒子和院士團(tuán)隊解析Mpro和RdRp家族同源結(jié)構(gòu)信息,本文提出了兩種不同活性位點的篩選方案,并在國產(chǎn)超級計算機(jī)上開展了對多個小分子數(shù)據(jù)庫的虛擬篩選。
采用本文的并行分發(fā)系統(tǒng),結(jié)合AutoDock GPU程序(計算參數(shù)設(shè)置同上)篩選了超過20億個小分子化合物,化合物來自ZINC、REAL公開數(shù)據(jù)庫和自有數(shù)據(jù)庫等。如圖8,篩選出的活性分子有瑞德西韋類似物(圖中紫色部分對應(yīng)的分子),還發(fā)現(xiàn)了若干新活性分子,目前已進(jìn)入實驗活性測試階段(圖8 上圖為新冠病毒Mpro 與ZINC 數(shù)據(jù)庫對接后復(fù)合物之一,下圖為新冠病毒RdRp 蛋白與ZINC(紫色)及REAL數(shù)據(jù)庫對接后復(fù)合物之一(綠色))。
圖8 蛋白與活性分子復(fù)合物Fig.8 Protein and active ligands complex
本文開發(fā)了超大規(guī)模虛擬篩選并行分發(fā)系統(tǒng),利用負(fù)載均衡優(yōu)化和高容錯技術(shù)等實現(xiàn)了超大規(guī)??焖偬摂M篩選計算,支持國產(chǎn)加速器,系統(tǒng)易用性好、穩(wěn)定性強(qiáng)。系統(tǒng)采用“分而治之”的策略,中央數(shù)據(jù)庫及下級多層數(shù)據(jù)庫管理和分發(fā)作業(yè),主從模式并發(fā)計算,可有效利用異構(gòu)計算部件,實現(xiàn)近線性加速效果。通過多層級任務(wù)分發(fā)、文件打包遷移及計算和后處理流程式設(shè)計,實現(xiàn)節(jié)點間IO 和存儲的性能優(yōu)化,可有效處理數(shù)十億級分子;自動掃描節(jié)點、快速重啟數(shù)據(jù)庫服務(wù)及相應(yīng)計算程序,實現(xiàn)長時間穩(wěn)定運行;屏蔽復(fù)雜處理細(xì)節(jié),通過配置文件靈活調(diào)整程序輸入及運行參數(shù)等,有一定易用性。
未來工作主要包括以下三方面:一是進(jìn)一步利用異構(gòu)加速提升計算速度;二是拓寬程序應(yīng)用領(lǐng)域和范圍,例如使用多個對接程序進(jìn)行共對接等;三是進(jìn)一步提升易用性,通過程序封裝并結(jié)合前端網(wǎng)絡(luò)應(yīng)用提供更加方便易用的使用體驗。
致謝本文的部分計算得到“東方”超級計算系統(tǒng)的支持與幫助。