人类全基因组分析提速10倍的背后:TCS 服务垂直行业的探索

近日腾讯云国内首发二代基因测序FPGA加速方案,将人类全基因组数据分析从业内平均水平的30小时降低到了不到3小时,在业内引起不小反响,也吹响了腾讯云进军基因计算行业的号角[1]。这其中的核心技术就来自于架构平台部的腾讯计算服务(TCS:Tencent Computing Service)和腾讯云相关团队紧密合作,针对基因计算这一行业进行深度垂直化定制,以IT赋能BT(BioTechnology),帮助基因企业享受IT技术进步带来的便利和效率提升。

基因听起来很神秘,但其实早就已经在很多领域得到了广泛的应用,已经越来越和我们的生活密不可分。比如现在很多孕期妈妈会做的无创产前检测(NIPT),就是基因技术应用于我们生活中的一个例子。农业上,科学家需要测定不同物种的DNA序列,找出影响性状的关键基因,并尝试让它们朝着对人类有益的方向变化,比如大家耳熟能详的转基因作物;医疗上,医生们需要测定癌症肿瘤患者的基因,找准对该患者有效的靶向药物,才能有的放矢达到疗效;遗传学上,通过测定不同物种的DNA序列,可以确定地梳理清楚物种起源关系。

基因测序技术当前以二代测序为主流,三代测序也在蓬勃发展之中。其特点是数据量大、计算量大。数据量大表现在一个人的全基因组测序数据就高达几百G,同时对这些数据需要进行大量的计算才能找出我们想要的信息。以人的全基因组测序数据分析为例,二代测序当前普遍需要的计算力达到~500核时,而三代测序需要的计算力更是高达数万核时。

因为基因测序对数据存储和计算的庞大需求,而且业务存在淡旺季周期,它天然适合云计算的模式。架构平台部的腾讯计算服务TCS采用弹性计算平台提供动态资源,通过自研极光硬件加速和基因行业垂直定制化方案,进一步加速基因计算效率,赋能基因行业发展。

弹性计算平台---动态伸缩调度资源

TCS弹性计算平台,依托部门和公司内的大量空闲资源,以docker技术进行资源的调度,对外提供弹性可伸缩的算力资源。已经支撑了QQ/微信的图片/视频压缩转码、离线计算和AI计算等,为各业务提供了百万核的算力。

在基因计算的场景中,基因公司通常会购置一批高性能的CPU服务器,用行业内流行的网格计算系统(SGE)组建成集群,搭配以共享文件存储系统,就可以开始进行数据分析计算。但是由于业务本身存在淡旺季周期,机器买多了有可能浪费,买少了在业务增长时又会制约自身发展。

这种情况下,基因公司需要的是能够按需使用的资源,需要的时候可以及时拿到大量算力,不需要的时候立刻释放不再付出成本。弹性计算平台通过复用空闲资源来低成本地提供大量算力,同时集成了负载均衡、名字化服务等功能,让算力供应变得稳定、可靠。面对基因计算中动辄成百上千的计算核时请求,弹性计算平台都能够从容应对。

自研极光技术---硬件异构加速

相比于CPU/GPU,FPGA的一大特点是其软硬件一体化的定制能力,可以达到很高的计算能力。基于FPGA的自研极光加速技术已经被架构平台部应用于AI图像识别、图片webp/hevc格式压缩等大规模的业务场景,原来需要数千台服务器的集群,现在只需要100多台FPGA服务器,显著节约了成本。

以二代基因数据分析的金标准BWA+GATK流程为例,我们分析发现在前半段的比对、去重、排序等步骤都可以用多线程运行,而最后的GATK变异召回只能单线程运行,这是受限于开源软件的实现。

针对于此,我们学习了变异召回的原理,请教了行业内的一些专家,通过拆分染色体的方式让GATK变异召回这一步实现了分片段的并行化。让业内标准的30x的NA12878样本,分析时间从通常的30小时缩减到了10小时。

接着使用FPGA对计算密集的BWA中的smith waterman算法和GATK中的PairHMM算法进行硬件实现和加速,让时间进一步从10小时缩短到2.8小时。

基因行业垂直定制

一个基因数据分析流程涉及很多步骤,往往用到了几十种不同的软件,每个软件消耗的算力资源和存储IO都不同。因为行业传统沿袭,基因公司往往追求堆砌硬件,达到很高的理论计算能力和很大的理论IO吞吐。但是实际的运营中,因为传统调度机制的不尽完善,导致集群常常是低负载状态,集群CPU利用率一般只能达到20%。

针对于此,我们对业内较为标准化的一些数据分析流程进行深入的研究分析,通过更优的分布式调度、针对性的软硬件加速优化,在节约成本的同时缩短整个流程的耗时,提升效率。

比如对于三代测序的falcon运算,典型的是在一个集群环境中进行。原生的调度往往不均衡,有的节点分配到更多任务,有的节点分配到的任务耗时明显更长,最终都导致整体作业耗时很长。

以一个小样本为例,我们使用一个昆虫样本在一个小集群上运行花了10个小时。观察发现Daligner这一步骤调度非常不均衡,有的节点分到了12个任务,而且其中有3个任务的输入数据达到100M。有的节点只有3个任务,而且任务的输入数据只有40M左右。同时我们发现这一步骤的计算量与输入文件体积呈正相关。

因此我们优化了这一步的调度,让每个节点分配到的计算量尽可能平均,并且弹性申请更多资源,将耗时从10小时减到了3.6小时。

总结与展望

基因测序是一个朝阳产业,随着国家精准医疗计划的普及推进,将越来越深刻地影响普通人的生活。我们希望能够以TCS腾讯计算服务为载体,通过腾讯云上的相关产品来为基因公司提供大规模的可靠的弹性计算资源;挖掘基因公司在IT上的痛点,以深度定制研发来加以解决。真正做到以技术赋能行业,帮助基因企业更专注于业务本身的发展,获得更大的成长。 

[1]国内首个二代基因测序FPGA加速方案落地腾讯云,人类全基因组分析从30小时到2.8小时http://mp.weixin.qq.com/s/Bm5nHlPQjbH0iru3m8S-Ag

本文转自“腾讯架构师”公众号

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JadePeng的技术博客

管理培训笔记

同时注意,选择合适人员 - 客观条件 - 人员意愿 + 不会做 + 不能做 + 不想做

783
来自专栏编程坑太多

小白入职公司都是自己看,嫌弃增删改查,做了2年感觉没前途?

迷茫期间就学英语吧,这东西技多不压身,能通读文档和论坛算是出师,能无障碍日常交流算是小成,能总结并汇报算是大成。

1234
来自专栏SDNLAB

如何成为IoT开发者?

物联网行业蓬勃发展,根据Gartner发布的一则报告,2017年全球使用互联设备数量将达到84亿。Gartner预测,到2020年将有超过208亿的物联网设备。...

30710
来自专栏大数据文摘

【大数据100分】大数据架构及行业大数据应用(中级教程)

27715
来自专栏Linyb极客之路

如何在不喜欢的情况下完成任务?

你有没有这样的经验: 坐在电脑前开始一个项目,打开你的编辑器,然后只是盯着屏幕?这种情况一直发生在我身上,所以我理解你的内心挣扎。 即使你很热爱自己的工作,也...

963
来自专栏java一日一条

作为一个新手程序员该如何成长?

“哦,天那。相比其他开发者,我又笨又没准备。老板会知道我是多么无能,我要被炒鱿鱼了。”

692
来自专栏腾讯社交用户体验设计

[ISUX转译]设计追波风 - 腾讯ISUX

1272
来自专栏SDNLAB

互联网的架构

编者按:作者从计算机的架构说起,阐述了计算机架构的变革历程。由计算机到网络架构,是侧重终端还是侧重网络?这又引出了计算机厂商与电信运营商历史之战,20多年的纠葛...

3045
来自专栏java一日一条

助力程序员成功的几个好习惯

老实说,如果你google搜索“程序员的好习惯”这方面的内容,那么就会有很多大同小异的文章映入你的眼帘。

633
来自专栏罗超频道

微信已经到了野蛮生长的临界点

罗超为虎嗅网撰稿。2013年6月9日发表于首页 微信5.0即将推出。看了下几篇内测文,微信5.0更新大致归纳为三类:扫一扫全面加强,公众账号折叠、小优化功能例...

3074

扫码关注云+社区