IT基础设施云化专场PPT下载
2019年阿里云上海峰会,由阿里云资深技术专家何万青带来以“阿里云超算E-HPC平台”为题的演讲。本文内容包括了HPC概念及发展趋势,面向“大计算”设计的弹性基础设施,客户应用云上优化,着重介绍了E-HPC自动伸缩,闲时计算方案与混合云,数据全流程可视化以及HPC工作流与数据迁移等。
以下为精彩视频内容整理:
ECS主要讲弹性,弹性的根源就是虚拟化。在高性能计算行业,在阿里云的带动下有一种说法叫做超算云。各大超算中心、第三方软件中心提供二次租赁,基石是物理机,不具备弹性,粒度是一台主机,没有做虚拟化。云超算和超算云在技术上来讲是两码事情。
HPC概念及发展趋势
高性能计算 (High Performance Computing)是计算机科学的一个分支。主要聚焦于解决大规模科学问题的计算和海量数据的处理,如科学研究、气象预报、计算模拟、军事研究、CFD/CAE、生物制药、基因测序、图像处理等等。构建高性能计算系统的主要目的就是提高运算速度,要达到每秒万亿次级的计算速度,对系统的处理器、内存带宽、运算方式、系统I/O、存储等方面的要求都十分高,这其中的每一个环节都将直接影响到系统的运算速度。
世界上每年两次的超级计算大会,都会评世界TOP500。超算是计算技术的峰顶,会往下进行技术的扩散。特点是在2005年以后,普遍用通用服务器,通过高速互联的网络,并行的系统连成超算集群。TOP500大部分都是计算集群,HPC和云计算结合,最早是所谓网格计算,而真正的HPCinCloud,最早出现在亚马逊,接着是微软,阿里云。这证明高性能计算的算法,计算模式上云是需要一个过程的。
阿里云3招拆解超算上云障碍
障碍来自几个方面,高性能计算或者超计算用户。第一是存量用户,不管是做地震资料模拟还是气象模拟,都是跟互联网公司、云公司的基础结构完全不一样的,互联网公司或者云公司计算架构是出自大数据,阿里云刚开始做大数据的处理,是分布式计算,基于异步通信,每个节点上由在地数据在当地完成计算,然后进行异步通信。但是高性能计算由于要解偏微分方程,需要在每个时间迭代上算完所有的节点,才能进行下一步,所以有几个核心要求:
第一,单个节点的性能要非常高,高主频、多核,还有一点是有很大的心理障碍,虚机是有损失的,所以人们不愿意用云。
第二,同步通信带来的对延迟的极致要求。在阿里云用RDMA跟IB 同一个延迟数量级,两个微秒之内完成点对点。另外一点是RDMA的网络会对大量的互联网应用有很大的普适性,而高性能计算具有垂直和分多个行业,每个行业有头部应用,有汽车碰撞或者渲染。
第三,高吞吐并行文件系统。互联网上云公司做的最好的是数据的保护和稳定,压力在于企业级并行存储,做每秒钟几十个GB的吞吐,通过在云上建立并行文件系统解决了这个差距。
阿里云做的就是近似裸金属的性能,但是具备云的弹性,才能叫云超算。二是网络,还要把并行软件系统做到盘古上去。
面向“大计算”设计的弹性基础设施
面对大计算,在神龙虚拟化出现之前,Zen和KVM都需要一部分的CPU拿来做Hypervisor (虚机管理)。比如我手上这瓶矿泉水,云公司中底层之间的差距在于,谁能把更多的水卖出去,这是虚拟化的开销。神龙就是把hypervisor用软硬件结合的MOC卡方式实现了。
一方面如果实现了hypervisor之后,整个的输出是弹性的,可以连上VPC、云盘,连上阿里云存储产品、IO网络。剩下的计算部分,裸金属输出,高性能计算最大的问题,一是需要裸金属的性能,二是需要隔离性,这都可以做到。每一代处理器的推出,英特尔不会把所有新的feature马上虚拟化,没有办法通过完全虚拟化的方式得到这部分feature。这一部分跟超算中心一样的东西,提供*超算的配置,如果喜欢,就可以用8卡的GPU再加上48核CPU,这样就可以达到*超算的性能。在云计算模式下,当高性能计算上云之后,真正带来性能的是云计算资源的调配、安排以及怎么有效的使用。
很多超算中心CPU使用率,测试出来是30%左右,由于没有办法做更小的切割。在计算过程中,伸缩是没有办法释放和扩展的。
一张图描述E-HPC
在做高性能计算的时候有几种选择,一种是把实例做出来,客户上云去手动搭出一个超算,这叫松耦合,亚马逊的做法。微软起步晚,通过购买Linux IB集群来使用。阿里巴巴采用一种云原生紧耦合的模式,线下超算是这样,计算节点,文件存储、图形节点、头节点。我们需要把阿里云上可选的实例类型用高速互联的ROCE连在一起,形成网络之后,可以跟其他的文件存储产品登录节点连在一起。所有的超算都是这样,立项、OEM应标,最后只有一套配置,没法再改变,只能通过应用对它优化。但在阿里云上,你随时可以为超算变配。
另外一种是在云上提交,使用这份资源的时候,这一部分的机器公共云上。但是在VPC你是私有的,你不用的时候别人在用,这才是真正摊平成本最重要的事情。
E-HPC 让云超算强大易用
在阿里云上做高性能计算,实际上是在云原生基础设施上开发了一个PaaS平台,把所有的计算节点、登录节点、共享存储,通过软件栈变成一个并行计算和编程的环境。它和超算中心很不一样的地方是首先要付费,一般来讲大型的行业知道自己的工作模式,就会包年包月。但是很多的基因计算用户使用按量付费,因为它的科研和任务是变动的,这个时候需要能够自动伸缩保证它每次用的是正好够用的,像每次买电一样。还有就是在阿里云和公共云上都有一种竞价实例,这个适合搞科研的人。因为课题组不能保证每天算多少何时算,是博士们脑袋来灵感才算,所以竞价实例正好跟高性能计算行业长期形成的东西,叫断点续算可以结合 – 形成我们叫做“闲时计算”的模式,大部分的气象预算,超算中心硬件故障率发生时,算上几天突然间有一个节点坏了,不可以从头开始算,那就无法预报,那么应用本身带有checkpoint(断点续算)的话,隔绝故障后隔几分钟再从“断点“继续往下算,跟阿里云竞价实例在一起,这样大量节约成本,而性能基本上没有太大损失。通过几个键的点击就可以在公共云上形成自己的一套超算,最大的好处对于搞科研的人来讲,不需要学习怎么样构建集群等。
部署集群—基础配置
在公共云平台上,通过硬件配置、软件配置、基础配置最后形成一个拓扑,这是标准的拓扑,单个节点、单个实例,两台加上三台计算节点,计算过程中可以变配,形成一个集群。
任务提交和查看
我们把上面的文件导入导出,可以通过阿里云计算流数据流的方式,在自己的集群上编程是两种模式。
作业调度器
在高性能计算里面,不可或缺又容易被忽视的是并行调度器。在云上的高性能计算可以最大程度发挥调度器的能力,因为云资源切片粒度要细得多,资源的弹性和伸缩是云计算的精髓,调度最常用的是PBS、SLURM、SGE、OpenGrid、CUBE。我们可以在切片的力度上追踪每一个job排队有多少,现在有多少节点,有多少节点等待,可以通过资源编排和自动伸缩实现高密度的调度。我们有车厂的客户,包括上汽、吉利集团。吉利集团是国内最大的使用阿里云公共云的公司,公共云集群有一万七千多核,90%以上的利用率。上汽在扩容,90%以上的利用率已经用了一年多,这些靠的是底层的非常灵活的切片和调度。
上传数据
我们在用云上做计算的时候,很多人会忘记一件事情,上传数据的时候,永远是加密免费的。数据停留的时间和最后下拉要考虑时间和费用,通过类似云盘的方式,把数据上传到OSS上面去,导入并行文件系统再做计算。数据可以用私有包,因为可以建很多的集群,互相可以分享,也可以自己用。模式是这样的,可以用控制台。
作业运行性能分析:CloudMetrics|集谛
在高性能计算领域大部分的软件工程师做性能优化和并行工作,针对一个应用,针对某一平台的优化作用局限于特定的机器。作为公共云,大量的用户运行同样应用的时候,底层的 CPU利用率等指标怎么样,是可以进行“性能大数据”搜集和优化的,即通过搜集底层的行为,去优化系统配置和应用。简单来讲,像智能手机一样,越用越聪明,其实集群也应该这样,阿里云其他产品通过机器学习去优化热迁移。在云上有不同的侦测工具,很多工具像一个示波器,真正厉害的是使用示波器的工程师的经验。集谛就是把这个性能示波器在并行环境下,跟进程绑定,和进程起始和线程绑定,会找TOP的进程,会把所选择的指标进行时间对齐。很有意思的是,程序运行一遍之后,随时可以调出数据进行解剖,验试程序,看能不能跑更快。它跟高性能计算的领域,长期发展的一套优化的方法论是相关的。
客户应用云上优化: 优化方法
高性能计算的优化是分层的,最上面的都是大尺度的,相对容易一点。优化到底层需要一些工具,每一层的优化,处理器发展到现在,英特尔处理器大概几年前有四百个以上的PMU测试指标。但是我们真正关心的是头部几个指标,这几个是工程师的知识储备,这个知识,被设计到集谛的分层采集上。
应用级性能监控工具——集谛
把这种基于工程师的技术变得产品化,它会一层一层的,一开始看集群,整个的大盘上是均衡还是不均衡,哪里有问题,进入节点级,然后做时间对齐,进而进入时间进程,到函数一级。这些会选TOP指标,这些指标分布在四个象限 – CPU,内存,网络,IO存储,所有的性能,单节点,多节点,在四个象限上面,该选哪些指标是真正见功夫的。如果通过这个看搜索引擎,该选的指标不一样。搜索引擎在要在一定延迟内(比如8毫秒)最大能做到多少IPO,这个叫做*指标。在高性能计算有固定的*指标。所以形成在云上面一个应用有什么样的一个特征,通过它来判断该选什么样的集群。
基于作业负载的弹性伸缩
云超算可以做的最极致的就是弹性伸缩。做高性能计算到现在为止十多年来,有一个特点,很多人都是性能优化的高手,但是他们没有办法将此转化成产品。在云上看似没有门槛,但是真正能带来性能和资源的起点是弹性伸缩。比如,任务提交时是四个节点,接着提交四个节点,它应该会自动增加。现在画的是节点,可以做到VCPU。怎么做?弹性伸缩可以做成什么样?在十个节点,现在发八个节点上去,然后再四个节点上去,每两分钟,头节点上会有调度器侦测,在计算节点侦测它的使用率,它有两个控制。现在需要增加八个,只要增加六个就可以了。甚至可以做到额外节点,总会有一些调度出问题,所以会增加一些水位,会有一个扩容比例,不希望每个进去都不用排队马上做到,可以扩40%。其实就是排队,这些做法完全在云上全部自动,可以设置各种policy。
比如说学生经费比较少,可以容忍计算时间长,想算一个东西,那就可以买竞价实例,但是要规定好多少个节点。有些老师让过几天天马上交论文,那就找云上高密度计算节点和GPU异构资源,而找超算中心通常要排队。在自动缩容时,如果检测到连续几个节点一直没有工作,就把它放弃掉,这一部分就不用付钱了。我们很多的算法都是围绕着弹性伸缩来做的。这是云弹性计算产品的核心。
E-HPC闲时计算方案与混合云
闲时计算,大量超算应用和开源都有断点续算(Check-point)的功能,过去有一段时间国家气象局只考虑两家公司IBM和SGI,因为这两家的胖节点对checkpoint做得非常好。今天要预报24小时三公里,要算8个小时,算到6个小时的时候,存储出问题了,如果重新算,新闻联播就播不了。那怎么做呢?用阿里云抢占式资源,我们现在很多的资源放在一个大池子里,抢到以后,一个小时自动释放掉,这样下去,就会很便宜,一折。每次放掉以后,马上抢到下一个,抢到下一个之后从上次计算的断点算,这是可以的。分子动力学GROMACS,设置每两分钟把计算状态存到BT里面去,把每次计算的结果放到一个文件里面,算的时候就会发现闲时计算的成本比常规计算低了不止一半。
断点续算应用算例:GROMACS
已经生成集群后,作为用户登进去,自动伸缩的模式定下来,把作业提交上去,它是压缩的,上去之后展开。这是在分析它计算过程中,节点1被抢占释放,稍后自动扩容到节点2运行,我们可以看进程的方式,就是这个模式。第一个进程在算的过程中,一个小时被抢断,抢断之后,迅速抢到另外一个资源继续算。这个方式特别适合大的调研组或者学院,就用这个方式算。
数据全流程可视化
高性能计算还有一个很重要的环节,基本上做科学和工程计算,很重要的一点是有大量的处理网格,并且结果一定要有可视化,无论做流场、压力场等磁场,里面有一大类计算需要大量GPU或者远程桌面要求。在做整个产品的时候,一般在超算中心会把任务提交上去,算完再拉回来,把图形工作站,或者写一个程序给导下来。现在由于背后的计算资源越来越大,石油公司会用几十台的渲染集群去做,然后逐层解释,解释之后改回再算。这个过程完全可以上云,阿里云上除了做GPU加速计算,还有云图站。
控制台远程可视化
我们怎么做呢?
先去创建GPU集群,这个集群与存储和计算节点输出绑定,之后可以调用渲染的APP,或者直接在上面进行物理计算再输出,都是可以的。它的使用也是一样,把它看成一种计算资源,它是拿来做可视化的,它要交互。
HPC工作流与数据迁移
最后,我们总结在阿里云超算的流程,这个过程,首先按账户上传到OSS上。比较大的海量数据,比如石油中心,可以用闪电立方一下传过去,通过OSS下载在云上的并行文件系统,然后计算、可视化,这是流程,数据流和控制流的关系。
E-HPC 工业计算业务架构:被集成到SaaS
阿里云过去是以做IaaS为主,随着场景越来越复杂,高性能计算分成多个行业的场景,每个场景都不一样。我们把PaaS做出来,基本上不做SaaS。大量的应用本身是付费的,而工业ISV软件特别贵,我们和底层资源调度,尤其是弹性伸缩绑定在一起,怎么把license用的更高效。像石油行业,一套license可以几十万上百万。阿里云把我们的调度和整个的PaaS能力输出给第三方合作伙伴,他们跟阿里云最终用户做出他们的业务系统,这个业务系统调动的都是高性能计算并行的工业软件。