文 | 阿里云高性能计算技术专家 孙相征
新冠状病毒疫情发生后,为了帮助抗攻击疫情,阿里云免费向全球公共科研机构提供高性能计算、SCC超级计算集群和CPU/GPU机器、云超算及AI等技术。
近期,不少研究机构和高校在阿里云上E-HPC云超算上进行药物研发相关的数值计算,阿里云超算团队提供了技术支持与跟进。
本文主要介绍药物筛选阶段,E-HPC云超算如何帮助研发人员实现大量小分子库的快速并发处理。同时,介绍全球健康药物研发中心GHDDI算力和成果共享开放平台的阿里云解决方案。
病毒、药物研发和高性能计算
一款药物的诞生周期极其漫长,从最早的新药研发到上市,至少要经历10年。
在疫情这般分秒必争的背景关系下,时间尤为珍贵。因此在本次过程中,许多科学家会尝试从已有的药物里面,找到能治疗新冠的药,免去了后续大量审批上市等步骤。
化合物发现阶段,以往的方法是通过大量实验做筛选,发现可能适合的化合物。如今,科学家尝试通过机器模拟分子化合物与靶点的相互作用,从而筛选出可能有效的化合物做实验。
在此过程中,高性能计算(High Performance Computing,简称HPC),常被称为“超算”,是现代药物研发必不可少的支持。
云计算的兴起更是改变了科学家获取算力、享受超算服务的方式。比如阿里云E-HPC 云超算产品,能够让科学家自助在云上搭建高性能集群系统,满足药物研发人员对计算平台的需求。
此外,云上算力规模庞大且灵活,科学家可以按需购买,而不用担心被算力规模限制了研发速度。
那么,具体病毒、药物研发和高性能计算之间具体联系几何?我们将从从病毒如何在宿主复制扩散开始讲起,到药物抑制方法举例,最后给出高性能计算在药物研发的作用。
病毒和药物研发
病毒是由核酸分子(DNA或RNA)与蛋白质构成的非细胞形态,如下图烟草花叶病毒所示。因为是非细胞的,无法通过细胞分裂的方式来完成数量增长,它们通过进入宿主细胞并利用宿主细胞内的代谢工具来合成自身的拷贝,并完成病毒的组装[1]。 冠状病毒(CoV)是一种是一组高度同源的,单链正译RNA病毒,其具有以上的病毒特征,可引起多种严重程度不同的呼吸道,肠道,肝脏和神经系统疾病,在过去的12年中出现的两种新型的,即严重的急性呼吸系统综合症(SARS-CoV)和中东呼吸系统综合症(MERS-CoV)[2],以及目前肆掠的COVID-19都属于这种病毒。
COVID-19病毒
某病毒蛋白分子结构[4]
病毒进入宿主细胞后,病毒基因组完成复制、转录(除了正译RNA病毒外)以及病毒蛋白质合成,然后组装行成更多数目的病毒,其生命流程如下图所示(无包膜病毒简易示图)。
利用药物干扰病毒复制过程,可以有效抑制病毒对机体的伤害。例如,病毒蛋白在合成过程中,需要蛋白酶的介入,如3cl蛋白酶和ProPL蛋白酶,抑制蛋白酶的功能就是抑制病毒的方法之一。蛋白酶上能够被其它物质(配体、药物)识别或结合的结构,被称为靶点(Biological Target)。找到能够与病毒的蛋白酶合适的靶点结合的配体(小分子药物),通过药物的作用改变蛋白酶的立体结构,进而改变其功能,阻碍病毒蛋白合成,导致病毒无法复制,实现抑制病毒复制的效果。[3]
药物研发与高性能计算
药物研发是一个非常复杂和非常耗时的过程,药物筛选只是流程前期一个环节。例如,之前提的寻找跟蛋白病毒酶结合的小分子,由于存在不同种类或研究机构的配体(小分子)库,配体(小分子)库数量巨大,每个配体库的配体数量成千上万,甚至更大,通过实验方式一一测试验证是不切合实际的。通过计算机数值模拟进行筛选,对不同配体的结合效果进行打分,筛选出打分高且结合模式合理的一些配体作为候选药物进行实验验证,能够有效加速药物的研究进程。
由于配体库巨大,如果在有限时间完成筛选,也是一个巨大的挑战。例如,配体库有10,000个候选配体,每个配体平均处理时间为1.5个小时,总共需要15,000 个小时(625天)。因此,为在规定时间内算完,需要具备以下条件:
• 拥有强大计算能力的计算平台;
• 大容量存储,用于存放处理数据和计算结果;
此外,为了保证筛选计算能够高效、顺利完成,还需要计算服务,包括:
• 集群软件运行环境,保证在多机环境下软件运行,以及数据访问;
• 能够支持多任务在多机环境下并发处理的并行方案。
除计算平台外,药物筛选还需要高性能应用软件。药物筛选模拟计算包括Docking和分子动力学计算:Docking 耗时相对较小,常用于大量配体的初步筛选,主要软件有dock6、Autodock Vina、Glide 等;分子动力学模拟计算比较耗时,测试作用的时间变化,用于对Docking初选结果进一步分析,主要软件有Gromacs,Namd,Amber等,GPGPU加速效果一般比较明显。
E-HPC 高通量药物筛选方案
药物研发需要强大计算能力的高性能集群,如何获取这些计算资源和服务呢?
伴随着云计算的兴起,从云上获取计算服务器服务成为一个新的途径,同时阿里云提供不同产品服务,如云超算产品E-HPC(Elastic High Performance Computing),集群共享文件系统NAS/CPFS,数据库等。其中E-HPC 云超算产品,能够让用户自助在云上搭建自己的高性能集群系统,配置高性能服务器和大容量存储,提供软件多节点运行和高通量任务处理解决方案,直接满足药物研发人员对计算平台的需求。
E-HPC 云超算
阿里云E-HPC云超算产品是云原生的高性能计算集群解决方案,将阿里云的计算产品(ECS/EGS/裸金属服务器/超级计算集群)、网络(VPC/RoCE)和存储(NAS/OSS/CPFS)等产品进行整合,配置高性能计算作业管理和账户管理,并集成常用的HPC应用软件,实现让用户在页面操作,获取自己的高性能计算集群,拥有root权限,对集群进行管理配置。
除功能以外,性能上阿里云提供多种计算实例类型,提供各种计算能力(1vCPU、2vCPU、4vCPU … 104vCPU)、不同内存配比(1vCPU:2GB, 1vCPU:4GB, 1vCPU: 8GB)的算例、或配有GPU或FPGA加速卡,CPU类型多为Intel 最新架构。其中,弹性裸金属服务器(ECS Bare Metal Instance)是基于阿里云完全自主研发的下一代虚拟化技术而打造的新型计算类服务器产品,兼具虚拟机的弹性和物理机的性能及功能特性,释放整机的计算性能;裸金属服务器配有支持RMDA的RoCE高速网络,变成超级计算集群SCC (Super Computing Cluster) 产品,满足大规模高并发的应用场景。
E-HPC高通量任务解决方案
高性能计算环境提供基础的计算平台,要实现高效的药物筛选,还需要一种高通量任务解决方案。
例如,使用DOCK6 处理配体(小分子)库的对接案例,在一个文件夹中,如mol2,存放大量的小分子文件,每个小分子处理流程是一样的,均需要跟相同的受体(如病毒蛋白酶)进行计算。
如果使用串行的处理方式,代码如下图所示。其中,dock.in 为DOCK6命令的输入文件,并且需要根据小分子文件名修改相应的参数取值。这段代码遍历mol2文件夹下每个分子文件,对每个文件生成对应的dock.in输入文件,然后运行dock6命令进行处理。
for molin in mol2/*; do
molin_name=`basename $molin`
cp dock.in $molin_name.dock.in
sed -ie "/^ligand_atom_file/cligand_atom_file
$molin" $molin_name.dock.in
sed -ie "/^ligand_outfile_prefix/cligand_outfile_prefix $molin_name" $molin_name.dock.in
dock6 -i $molin_name.dock.in -o $molin_name.dock.out
done
串行执行,时间长,无法利用高性能集群的计算能力,如何在集群上多节点、多核并发的处理,实现快速处理呢?实现方法也有多种,如手工的将mol2文件夹分成若干个子文件夹,每个文件夹分得少量的小分子文件,然后在每个子文件串行执行。这种方式需要过多的人工参与,尤其是在有任务出错,需要调整重新提交的场景,很容出现重算、漏算。
E-HPC 高通量任务定义和启动
E-HPC 提供了高通量任务解决方案。对于本案例,通过3个步骤就能够实现大量小分子文件的并发处理。
-
将mol2文件下的分子文件名保存到一个文件文件,如molin。
$ ls mol2/* > molin
-
编写处理单个小分子文件的脚本 task.sh,小分子文件名用 $molin 代替,对比串行逻辑,可以看出是直接复制for循环内的处理代码。
molin_name=`basename $molin` cp dock.in $molin_name.dock.in sed -ie "/^ligand_atom_file/cligand_atom_file $molin" $molin_name.dock.in sed -ie "/^ligand_outfile_prefix/cligand_outfile_prefix $molin_name" $molin_name.dock.in dock6 -i $molin_name.dock.in -o $molin_name.dock.out
-
通过E-HPC 高通量任务处理命令 ehpcarr 提交task.sh运行,并返回作业号2[].manager。此时,任务已经使用96个CPU core进行并发处理了,如果节点包含CPU core数目少于96时,会自动分配到多个节点。例如,使用12 CPU core的实例,所有分子处理任务会在8个节点上运行。
$ ehpcarr submit -w 96 ./task.sh molin 2[].manager
E-HPC 高通量任务状态查询
使用ehpcarr命令,根据作业号进行查询任务的并发执行情况。从查询结果可以得倒每个任务当前的处理状态,包括完成(DONE)、运行(RUNNING)、失败(FAILED)、排队(INIT),每个任务处理的启示截止时间,通过对任务执行时间可以预估下次使用的计算资源。
从查询结果可以看出:
• E-HPC 作业调度器启动了8个节点进行药物筛选处理;
• 不同任务分配到不同的计算节点(0号任务分配到compute001,10520任务分配到compute008);
• 相同节点有不同的并发任务(0,111都在compute001并发处理)。
$ ehpcarr status 2[].manager
E-HPC 解决方案,是基于高性能集群作业调度器的数组作业,并进行了增强:
• 限定任务的并发数量,避免1个任务1个作业引发集群大量排队作业,影响其它集群使用者作业的运行;
• 能够实现任务的动态调度,充分利用计算资源。
GHDDI 开放共享平台
在新冠状病毒疫情下,资源和研究成果共享,能极大的加速研究者的进展,避免重复的工作。
全球健康药物研发中心(Global Health Drug Discovery Institute,简称“GHDDI”)是由比尔及梅琳达·盖茨基金会、清华大学和北京市政府共同创立和建设的一个独立运营、非营利性质的新型药物研发机构。
GHDDI在阿里云之上搭建了开放共享平台,使用E-HPC搭建高性能计算集群,用于药物研发的模拟计算,同时为合作伙伴创建不同的云超算子账户,实现计算资源共享。
同时,为了将E-HPC云超算集群上的计算结果共享发布,将阿里云对象存储产品OSS直接挂载到E-HPC超算集群上,把需要发布的结果放到OSS上。此外,在云上新建一个ECS计算服务器,用于搭建web服务器[4],将OSS访问链接放在web服务器上,供大家浏览、下载。
总结
药物研发需要强大计算能力的高性能计算集群,如药物筛选需要进行大量小分子的Docking处理。
科学家可以利用阿里云E-HPC云超算产品,在云上快速构建高性能集群,获取高性能的计算实例,满足算力的需求。
同时,E-HPC提供了高通量任务处理的解决方案,使得药物筛选在多计算节点、多核上并发处理,降低任务整体执行时间。此外,由于E-HPC是云原生的超算产品,因此能够跟其它云产品打通,如对象存储OSS,能够容易、快速搭建计算、信息发布平台。
[1] https://zh.wikipedia.org/wiki/%E7%97%85%E6%AF%92#cite_note-2
[2] Zumla, A., Chan, J., Azhar, E. et al. Coronaviruses — drug discovery and therapeutic options. Nat Rev Drug Discov 15, 327–347 (2016). https://doi.org/10.1038/nrd.2015.37
[3] https://zh.wikipedia.org/wiki/%E9%9D%B6%E7%82%B9_(%E7%94%9F%E7%89%A9%E5%AD%A6)
[4] https://ghddi-ailab.github.io/Targeting2019-nCoV/