探索BI系统搭建的必要性与AI技术的应用潜力
1330
2022-05-29
1. BoostKit 2.0:“数据亲和”,使能应用极致性能
分享嘉宾:颜叶,华为计算产品线鲲鹏计算产品部部长
1.1. 前言
应用使能是助力行业价值实现,如何持续提升应用性能、加速数据流的处理是企业开发者面对的永恒挑战。
1.2. 鲲鹏全栈优化,使能应用极致性能
过往大家关注的更多是基准算力比拼,往往忽略了软硬协同优化,导致场景化应用性能提升遇到瓶颈。鲲鹏应用使能套件 BoostKit通过硬件、基础软件到场景化应用的鲲鹏全站优化。面向开发者,提供高性能开源组件和加速软件包,使能应用极致性能。
目前boostkit的已经使能的主流开源社区支持鲲鹏,实现开源软件在鲲鹏上开箱即用。在开发者的积极支持下,鲲鹏社区的boostkit的下载量达到了3,600万。
80%的行业top伙伴在方案中选择使用boostkit,其中超图、宝兰德、亚信等头部伙伴采用boostkit构建的解决方案不仅获得鲲鹏validate高阶认证,而且有力支撑了150多个市场项目的落地。
1.3. 数据亲和,基于数据全处理流程的负载优化
20年我们发布了booskit的1.0版本,聚焦大数据、分布式存储、数据库等8大应用场景,提升鲲鹏算力性能。为了降低数据加载的等待时间、提升有效算力的使用率,21年我们发布了booskit的2.0版本。居于数据全处理流程进行负载优化,向开发者提供数据亲和的加速组件。
下一面我以分布式存储、大数据和机密计算场景为例,介绍boostkit数据亲和的技术创新。
1.4. 聚焦ceph存储的性能优化与有效容量提升
在分布式存储场景,boostkit聚焦ceph存储的性能优化和有效容量的提升.
传统ceph软件架构下,不仅IO请求路径长,而且IO的访问线程切换频繁,导致IOPS和时延性能低下。!
boostkit全局缓存通过软件架构创新,重构存储数据流,缩短IO路径,实现IOPS性能十倍提升和时延降低90%,帮助用户加速数据存储。
另一方面,booskit通过EC Turbo数据压缩压紧等三部曲,提升ceph有效存储容量,帮助用户降低存储成本。
首先,EC Turbo通过降低数据读写流程中的IO放大比例,实现带宽性能不降低的情况下,提升磁盘利用率一倍;
其次,数据压缩算法通过对原数数据进行特征识别、动态匹配、最佳压缩算法等优化手段,实现重复数据的高效存储,压缩率提升了25%;
最后,数据压紧算法通过减少因数据对齐产生的补零、空间浪费来实现更紧凑的数据落盘,压缩率能够再提升20%。
1.5. 聚焦Spark、Hbase、Hive等开源大数据软件的性能优化
那么在大数据场景,boostkit聚焦spark、hbase、hive等开源大数据软件的性能优化帮助用户加速大数据的全处理流程。
boostkit的机器学习和图分析算法通过算法原理和基于鲲鹏硬件的亲和性优化,能够显著加速海量数据的分析效率,相比原生开源算法性能提升最高可达20倍。
目前,boostkit已发布覆盖10类29个机器学习和图分析优化算法。
此外,在传统的数据接入和处理场景下,计算只能在中心侧节点中进行。数据先要从存储侧传输到中心侧。海量的数据搬迁,导致网络拥塞和算力浪费。boostkit的OmniData通过将计算侧的过滤类算子下推到具有富余算力的存储侧,让计算在数据本地进行,将数据搬迁量降低为原来的千分之一,消除了海量数据的网络传输瓶颈,从而帮助用户显著提升数据处理性能。
1.6. 机密计算TrustZone,构建数据使用的安全可信
如何在保障数据安全的前提下,更好地挖掘数据价值,已经成为越来越多用户的普遍需求。booskit的机密计算基于arm TrustZone技术,实现安全可信能力增强,为开发者提供构建机密计算方案的可信执行环境并提供完善的应用开发SDK。其中,鲲鹏TEE安全OS作为机密计算的核心基础软件所采用的微内核已经在上亿端侧设备上稳定运行,历经市场近十年的成熟验证。此外,基于鲲鹏的硬件可信能力也为鲲鹏TEE安全 os 的运行完整性提供了可信保障。
1.7. 助力伙伴构建场景化解决方案,使能鲲鹏“好用”
今年我们将重点帮助开发者更好的了解和应用集成booskit 2.0的数据亲和加速组件,并携手伙伴开展场景化方案创新,在行业核心应用上使能鲲鹏好用。目前在开发者和行业伙伴的支持下,我们已经取得了显著进展。
其中运商行业伙伴在方案中,集成分布式存储全球缓存之后,存储硬件规格不变,业务性能提升超过一倍,从而帮助用户构建更具市场竞争力的高性能云存储服务。
1.8. 获取更多资料
boostkit立志做好开发者的开发者。我们持续开展技术创新,同时也不断丰富学习和开发资源。
今年4月华为伙伴及开发者大会上,将会有booskit的重磅发布以及更丰富的开发者活动,期待届时与开发者朋友们再次交流。
2. 同等规格硬件,10被存储性能提升
分享嘉宾:杜阁,华为鲲鹏BoostKit分布式存储架构师
2.1. 前言
随着5G与 ai 等新型技术的发展加速了数据的产生和流动。举几个典型的例子,5 g 网络的全面铺开,延展了人与人的链接,丰富了应用,给运营商带来10倍以上的数据增长;基因测序技术的进步,让遗传病的筛查更加精准,也产生了更多的数据。据不完全统计,当前每台检测的设备,每天最多会产生6TB的数据量,8 k 的这种高清视频,每小时会产生1.8TB的数据。L3的自动驾驶每台车训练数据每天可以达到60TB。根据华为全球产业展望 giv 报告的数据,到2025年全球数据量会达到180个ZB。
多样性业务正带来数据前所未有的增长,数据也变得越来越重要。随着数据量的增多,应用对于存储系统的性能要求,会不断地提高。下面以公有云的云盘业务为例子,性能指标为3毫秒左右时延,单盘IOPS为5K左右的云盘服务只能满足最基本的离线业务和日常办公等需求场景。而对于附加值较高的高性能计算、数据仓库、NoSQL数据库的应用,要求存储系统对时延控制在1毫秒,单盘IOPS需要达到几十个K。而针对核心的在线交易、流处理、日子处理的应用更是要求存储系统将时延控制到亚毫秒级别。单盘的IOPS需求在10万以上。面对新兴应用越来越高的性能诉求,如何不断提高存储系统的性能以满足业务诉求成为一大挑战。
2.2. 鲲鹏BoostKit分布式存储,访问更快、成本更低、性价比更高
鲲鹏boostkit分布存储解决方案面对当前存储系统应该如何做到性能更高、成本更低、综合性价比更优这三个核心挑战给出了全面的答案。第一,通过软件架构创新推出了boostkit的global cache全局缓存特性。他可以大幅提升存储系统的性能并降低端着端的时延,可以有效帮助客户达成挑战的性能目标。通过自研存储算法创新推出数据缩减方案,包含数据重删、数据压缩、EC Turbo等关键特性,大幅提升存储介质有效容量,降低系统存储成本。通过软硬结合创新,推出异构卸载方案,包括算力卸载、网络卸载、io 处理流程卸载。让存储系统的每次IO处理更加便宜,提供更高性价比。
2.3. 全局缓存:重构存储系统数据流,打造极致性能
下面我们重点介绍一下Global Cache全局缓存的一些关键价值和关键核心技术点。Global Cache的重点价值主要包含以下四个方面。第一,Global Cache是一个独立的分布式缓存集群,有完备的设备管理和异常处理机制,支持独立部署运行、不依赖开源存储系统。第二,Global Cache通过适配层主动兼容开源存储系统可以为多种主流分布式存储系统加速,比如ceph、hdfs、lustre。第三,Global Cache通过 api 与开源存储系统对接,不修改开源软件代码和流程,不影响开源存储系统功能。存储系统的上层应用是不感知 Global Cache 的存在的。第四,Global Cache还可以屏蔽硬件的差异,提供极致的性能。Global Cache作为全局缓存集群,需要高性能存储介质来缓存数据,也需要高性能网络来进行数据交换。用户可以根据业务的性能诉求选择不同的硬件配置。比如nvme ssd或者SM作为存储介质,使用tcp或rdma等网络硬件。硬件的这些差异Global Cache会全部屏蔽掉。保证 Global Cache 实现高性能的三个核心技术点可归纳为:第一,缓存前后台分离架构,应用请求在前台完成响应,缩短整个的 io 处理路径。第二,通过IO聚合和重构业务 walkload,保证数据大块顺序下盘,写数据尽量不驻留在缓存中,避免写缓存被击穿导致的性能严重下降。第三点,通过数据智能预取提前将数据从后端存储库预取到缓存中,保证读数据能够命中读缓存。
2.4. 前后台分离:缩短IO路径,降低端到端时延
现在介绍一下global cache前后台分离架构的一些原理。global cash 将端到端IO处理路径划分为前台和后台两部分。前台部分主要是为了保证最快的响应,应用的读写请求。应用只会感知到缓存的部分的执行时间,后台部分的执行时间应用是不会感知到的。以数据写入请求为例,Cache前台会将业务写入的数据通过 wl 形式保存在非意识的存储介质当中,然后立刻 response 给应用。对应用业务来说,写请求就已经执行完成了。然后 cache 的后台会异步地将业务数据聚合,然后批量下刷到后端的存储pool中,这时候才完成整个数据流的全部处理流程。当业务发起数据读请求的时候,我们会直接在读cache pool中获取到相应的数据,然后response给上层应用。cache的后台会根据业务workload提前将数据从存储pool中预取到读cache pool中,保证读cache能够被命中。同时我们的缓存前台的整个处理流程实现了零上下文切换达到最小程度的软件开销,尽量保证IO处理的低时延。Cache前后台分离的这个架构保证了业务数据写入的快速响应。
2.5. IO聚合:提升介质性能,写缓存永不失效
但如何保证不会产生写cache被击穿后导致的性能断崖下降呢?这就得归功于 cache 后台流程中的 io聚合功能。
写入存储介质的workload的不同会严重影响介质的性能发挥,以HDD介质为例,每块 HDD 处理随机4 k 的请求只能达到150个IOPS左右,换算成带宽就是600 K。使用顺序1M的IO进行写入HDD盘可以达到100兆以上的带宽。这样相比随机4K IOPS的请求来说,HDD盘的带宽提升了足足160多倍。真实的业务场景数据workload就是大小不同、顺序性不同的各种情况。而IO 聚合特性就是将各种访问地址随机、块大小不同的数据块整合成为4兆、8兆等大块的 IO,然后通过顺序的这种方式写入到后端的存储磁盘。这样就能保证后端存储介质性能大幅的提升,同时我们只需要根据系统的最大性能规格进行匹配相应的HDD盘的数量就可以保证写入的cache永远不会被写穿,实现写数据百分之百的 cache全名中。同时为了避免IO聚合后的读放大,IO聚合功能的原数据管理,支持部分数据按序读取。IO聚合技术保证了写缓存永远百分之百命中。
2.6. 智能预取:提前预取数据。数据读缓存命中
决定系统的另外一个难题,如何提高读缓存的命中率就摆在了我们面前。智能预取技术由此应运而生,智能预取技术主要工作原理为解析应用发起读请求的pattern进行访问行为匹配,比如顺序流、逆序流、间隔流、热点流、关联流等。如果匹配成功就能提前预判业务可能会读取的数据,将这些数据提前从后端存储pool中读取到cache pool。为了更加准确的预取数据,pattern匹配预取门线、预计长度等参数都会根据读cache命中率的读反馈进行实时的动态调整。目前经过多种真实业务负载的测试,读命中率已经可以达到了80%以上。
为了测试 global cache 的特性效果,我们使用当前典型的分布式存储硬件配置进行测试。分别使用3台x86服务器和3台鲲鹏服务器组成两个测试集群,x86和鲲鹏的 cpu 为同档位的型号,内存使用相同的256G。每台服务器中使用12块HDD作为存储pool介质,两块nvme ssd作为cache pool介质。软件配置上,x 86即选用开源Bcache加开源ceph,鲲鹏集群使用 global cache加开源ceph。最终的测试结果显示,鲲鹏硬件及加上 global cache配合开源ceph可以达到端到端性能为140,000 IOPS每节点&1毫秒。相对于x86硬件加开源Bcache配合开源ceph来将IOPS性能提升了12倍,时延降低了96%。
2.7. 全局缓存开发实操演示
下面我们以全随机4K 7比3,混合读写业务分别在x86集群和鲲鹏集群上的实际运行效果进行对比。下面是操作演示环节。
本次测试使用了3台x86服务器组成一个存储集群,然后软件的话我们是在开源ceph的基础上部署了开源Bcache。我们的测试业务模型为随机4K IO 7比3混合读写。
现在执行完成了,结果已经出来。
可以看到整个集群的一个读的性能为IOPS是26.2K,平均读时延为23.5毫秒,写IOPS为11.3 K,平均写时延为114毫秒。读写性能综合化,每个节点的IOPS性能为12.5K,平均时延已经超过了50个毫秒,可以看到开源 Bcache配合开源ceph端到端的IOPS性能和实验都不太理想。这样就很难满足应用对于存储的高性能诉求。
使用 global cache 特性的第一步就是通过华为官方的 support 网站先去下载一个安装的压缩包。
安装压缩包下载完成之后第一步就是解压,解压完成之后,我们进入到解压后的目录,然后通过 rpm命令进行 global cache特性的安装,可以看到已经安装完成了。然后我们直接启动 global cache的服务。然后我们看一下整个启动过程当中的一些细节。
这是启动过程当中的各个模块的执行的情况,可以看到现在已经启动完成了。然后我们查询一下当前Global cache的状态。
大家可以看到Global cache现在已经可以正常工作了。
使用脚本开始运行测试用例。
本次测试我们使用3台鲲鹏服务器组成的一个存储集群。先是部署了开源ceph,然后在ceph的基础上部署了Global cache进行加速。我们使用的那个测试模型为随机4K IO 7比3混合读写。业务已经运行完成了,我们来看一下最终的执行效果。
可以看到整个集群的读IOPS 为294 k,平均读时延为948微妙,写IOPS为126K,平均写时延为1077微秒。按照7比3的读写比例进行综合平均,开源ceph在加持了boostkit的global cache特性后,端到端的写入达到了14万IOPS每节点,平均时延为984k,实现了亚毫秒级别的时延。相对于开源Bcache加ceph在IOPS性能和时延的指标都有大幅度的提升,可以很好的满足应用对于存储系统的高性能诉求。
2.8. 获取更多资料
鲲鹏分布式存储解决方案的学习材料获取路径。
3. 大数据进阶算法,分析性能提升20倍
分享嘉宾:沈姝,华为鲲鹏BoostKit大数据架构师
3.1. 前言
大数据在实施过程中有多个关键的挑战,大数据提供批、交互、流处理等多个业务场景。用户需要访问hive、hbase、flink等多个组件,接口不一、多样化查询无法统一。现有的查询引擎在大数据量查询性能比较差,无法满足业务的诉求。大量的查询存在磁盘IO瓶颈,hdfs的性能提升比较困难,针对跨数据源的融合分析需要适配多种数据访问方式和数据格式,解析难度比较大。在跨数据中心的查询场景,数据无法共享;跨数据中心融合分析,需要克服网络带宽低任务调度等问题。鲲鹏boostkit大数据聚焦大数据关键挑战针对跨元跨域查询提供 openLooKeng开源大数据计算引擎统一数据入口,针对基础软件,提供IO智能预取AI算法高效取数,提升hdfs的读取性能。针对应用性能加速,提供积极学习和图算法加速库,优化算法性能,提供OmniData算子下推,实现净数据计算优化计算引擎的查询性能。
3.2. 全栈优化,提升大数据计算性能
鲲鹏boostkit大数据围绕鲲鹏基础硬件聚焦大数据关键挑战,从基础加速,应用加速,开源建设多个层面,对大数据进行全栈优化,提升计算性能。在基础加速层,鲲鹏boostkit开源了openEuler操作系统和毕昇JDK编译器,针对大数据业务特征,提供了 appcds、 gc优化磁盘和网络IO调度策略等多个优化点。IO智能预取采用高速缓存盘,配合高效数据预取算法,提升系统存储性能进而提升大数据中IO密集型场景的整体性能。在应用加速层,鲲鹏boostkit提供OmniRuntime大数据加速底座,从数据接入、交互、缓存、数据的处理、算子编译、数据格式等多个流程点进行深入优化,适配大数据openLooKeng、hive、spark 等多个计算引擎。鲲鹏boostkit提供机器学习和图算法加速库,基于硬件亲和性和算法原理同时优化算法性能倍数级提升。在大数据开源生态上,鲲鹏boostkit提供openLooKeng开源大数据计算引擎,对接hive、spark、elasticsearch、mysql、postgresql等多个数据源。对上提供统一的SQL数据入口,提供跨数据中心的融合查询能力。
机器学习和图计算在各个行业中都有重要的应用场景。例如机器学习的分类回归算法广泛应用于运营商的高价值客户识别场景、金融的风险评估场景、交通的流量预测场景等。图计算的骨干分析算法广泛应用于运营商的用户离网预测金融的团体欺诈识别等场景。鲲鹏boostkit大数据推出了机器学习和图算法加速库,基于 spark 原生算法,在算法原理和鲲鹏亲和性上进行了深度优化。算法执行效率倍数级提升,最高可达到20倍。boostkit大数据算法加速库使用简单,他的类和接口定义保持与spark原生算法一致,客户如果基于spark原生算法开发了自己的业务应用,要使用boostkit的算法库,不需要修改上层应用的任何代码,只要替换了算法库,就可以直接获得性能收益。boostkit大数据算法加速库目前已优化了8大类29个算法,包括机器学习的分类回归、推荐特征工程等,以及图计算的群体分析、路径分析和骨干分析等等可以覆盖市场项目中绝大部分的应用场景。
3.3. 进阶算法的奥秘之一:三大鲲鹏亲和性优化
鲲鹏boostkit大数据算法加速库从多个方面进行了优化,首先是算法的鲲鹏亲和性优化,原生算法受限于工程实现问题无法实现多核的并发,例如即便 cpu 有64个核,也只能使用30个,无法充分发挥 cpu 的算力。boostkit大数据算法库针对这部分拆解算法实现力度和数据计算耦合性,可以实现80%-90%的 cpu 利用率,充分发挥鲲鹏的多核优势。以矩阵计算为例,执行单击矩阵乘时,按照2d 的矩阵划分形式,将大矩阵拆分为多个小矩阵计算,实现多核并发。原生算法shuffle的数据通信量非常大,性能开销高。boostkit大数据算法库优化计算方式和数据编码,降低通信数据量,提升计算性能。例如执行分布式矩阵乘时,由大矩阵和小矩阵进行2d的划分,优化为大矩阵1d划分,加上小矩阵进行广播,降低了大矩阵复制带来的通信开销和结果矩阵的汇聚通信开销。boostkit算法库在内存数据结构方案上面也从原生的多层嵌套格式优化为扁平化的数据结构。精简标识矩阵的数组内存占用,提升内存的使用率。
3.4. 进阶算法的奥秘之二:机器学习算法原理优化
第二方面是算法原理的优化,我们有专业的算法专家团队,针对算法的实现逻辑,进行数学原理上的优化,降低算法的复杂度。以分布式 svd 算法为例,svd 算法通常用来做信息提取、降维或者信息预处理。svd 算法基本的概念这边可以看到这样一个图,将一个大矩阵分解为三个矩阵乘,svd 分为全量式和截断式,全量是指求解全部的奇异值,截断是指求解前 k 大的部分的奇异值。在对大规模矩阵进行求解时,通常使用截断式 svd。我们对截断式 svd流程图的关键节点进行了一些创新,在开始奇异值相差比较大的情况下,我们采用密法加速的方式加快随机 svd 的收敛速度,在后续奇异值相差比较小时,通过构建块krylov子空间来进一步加速不分离奇异值的收敛以提升计算性能。在算法实现上,我们将矩阵乘向量的计算优化为矩阵乘矩阵,可以发现计算效率提升明显,最终达成 svd 算法性能相比开源算法提升一倍以上。
3.5. 进阶算法的奥秘之三:图分析算法原理优化
下图为page rank 网页排名算法,他是搜索引擎中对网页进行排名的一种常用算法。本质上,是一种以网页之间超链接的个数和质量分析网页重要性的算法。在 page rank 中有两种计算方式,一个是全量迭代,所有的节点参与迭代计算和消息的更新;一种是残差迭代,部分节点参与迭代计算和消息更新。相比于全量的迭代,谈差迭代单个消息携带的信息量会更多。在page rank 计算初期,绝大部分的节点均没有收敛,要参与计算。原生的算法全流程采用残差迭代的方式进行算法收敛,因单个消息携带的信息多,网络和数据传输的量非常大,我们优化的算法采用残差迭代和全量迭代自适应的方式,大部分节点未收敛时采用全量迭代的方式,仅剩部分节点未收敛时采用残差迭代的方式。这样可以实现shuffle数据通信量减少50%以上。同时我们采用涂压缩的技术,优化内存空间占用,达成page rank算法整体的性能优化,在不同规模的数据集上,相比原生算法性能可以提升1.5倍到3倍以上。
3.6. 鲲鹏BoostKit算法加速库应用
下面我们从算法的业务场景,来讲述下boostkit算法加速库的应用,我们以群体分析类的算法为例,群体分析算法是基于实体对象之间的关系网络建模、挖掘亲密关系社团。根据实际应用的不同问题,需要对相应的关系进行建模并进行算法选择,以赋予应用问题结果的可解释性。群体分析算法的典型场景包括人员群体查询、分析某个人员关联的群体信息、群体类别查询、分析个群体中相关度高的人员情况、特定群体分析、用户可指定不同类别的关系进行群体挖掘。在这些应用场景中,我们遇到以下一些业务挑战,大规模数据量的群体分析需求占比高,传统单击的算法无法计算,没有分布式的算法可以使用,用户当前基于规则查询结合人工识别的方法耗时长,分析结果不完备,需要人工干预,现有算法精度不够,计算出的社团内节点数量过大,无法收敛,不能针对未知实体做群体挖掘。
针对以上挑战,boostkit算法加速库,基于鲲鹏多核优势,创新实现高并发分布式算法,支持分析全量关系数据,解决传统单机图谱计算效率低的问题。基于鲲鹏算法原理的优化,构建群体分析模型,支持大规模亿级别数据小时级计算响应,提升计算结果精度,可收敛到合适的社团大小,结果稳定精度高。在群体分析场景中,boostkit算法加速库提供自研的极大团分布式算法,针对关系网络进行近邻分析,挖掘团内两两相连的紧密关系团体,解决重叠社区分布式挖掘问题。针对Louvain算法,提供高性能高精度的实现,通过逐层的子图聚合及聚合增益分析,挖掘得到关系紧密的非重叠社区,支持异步计算,提升算法精度。
我们以几个案例来介绍下boostkit算法加速库的应用效果。第一个是某省级项目,拥有9,000万节点,20亿边的关系图谱数据量庞大,项目需要基于关系图谱挖掘出其中的关系稠密的团体。鲲鹏boostkit使用全量极大团算法,精确求解耗时在一个小时以内,执行性能相比开源提升了6倍。在局部稠密数据量集中的场景,开源算法复杂度太高,无法做到精确求解,算不出结果。第二个是某个运营商的诈骗短信识别的案例,全量的样本有10亿条,其中中标的样本只有10万条,数据占比非常小。需要通过聚类算法来对样本进行筛选,为了提高聚类算法的计算效率,采用PCA特征降维算法提炼关键特性。从千维特征降到百维特征,降低计算复杂度,将计算时间从5个小时降低为1个小时,极大提升了算法的执行效率。第三个是某市级项目,需要对百万级的数据级做人码信息匹配采用 boostkit算法库梯度提升数 gbdt 算法,将模型训练速度从开源的1.3小时降低到了0.6个小时,效果非常明显。
3.7. GBDT实操演练
下面我们以gbdt算法为例,给大家演示一下boostkit算法库的使用。
在命令行操作前,先介绍下如何获取算法包和用户操作指南。我们在鲲鹏社区发布了boostkit算法加速库的资料,里面包括算法包的介绍、下载以及开源部分如何编译。也可以从社区直接下载编译好的jar包。那么同时提供了算法包整体的安装部署的过程,针对于算法包之上如何进行应用程序的开发,这里也给出了对应的样例工程。同时我们在鲲鹏社区提供了所有算法的 api 接口说明在算法运行时我们也提供了对应的性能调优的指南欢迎大家来这里查询。
下面我们就给大家演示一下gbdt 算法的使用和性能测试。这里我们准备了两个集群,左边是一个管理节点3个计算节点的鲲鹏集群,单个 cpu 是48个核心。右边是同样的一个管理节点3个计算节点的x86的集群。20个物理核心40个超线程的 cpu 的芯片。
因为便于操作我们已经提前把鲲鹏的算法包拷贝到鲲鹏服务器上。针对x86部分我们使用的时开源的算法包,所以没有额外的部署动作,就是使用原生spark mlib的jar包。而针对鲲鹏部分,则需要使用对应算法包放到对应环境变量中。根据结果,可以看到鲲鹏算法库明显快于x86原生算法库。
4. 构建安全可靠的机密计算可信执行环境
分享嘉宾:沈国华,华为鲲鹏BoostKit机密计算架构师
4.1. 前言
计算平台作为信息系统的底座,他决定了整个it系统的安全可信。而现实是在计算系统中,只要有数据流动,就有被攻击的途径,目前还不存在一个完全安全的系统。系统从分层来看,应用和操作系统存在大量的漏洞,硬件也可能受到物理攻击,即使是芯片,也会有新的漏洞。在数据全生命周期中,每个环节都有成熟的安全技术或方案来保障。在数据使用中的安全仍然是个业界的难题,原因是数据在处理时他必须是有确定性的,并且需要被处理者所理解。比如我们使用密钥,他必须以明文的方式作为输入才能得到确定性的结果,这个过程就为攻击者提供了可乘之机。使用中的数据的安全问题,需要有隐私计算或机密计算来解决,所以在将来几年中,安全可信是迫切的需求和核心竞争力。
著名咨询公司Gartner发布的2021年前沿科技战略趋势报告中将隐私计算作为未来几年科技发展的九大趋势之一,国内九大行相继发布了隐私计算金融应用的白皮书和蓝皮书。在隐私计算体系中,可性执行环境也就是我们所说的TEE,被作为了隐私计算的硬件方案与基于密码学的技术并列。在绿盟的计算服务器机密计算 hpp 书中将基于硬件TEE来保护使用中的数据的技术定义为机密计算。由芯片提供的硬件TEE技术主要包括Intel的SGX,AMD的SEV,ARM的TrustZone。鲲鹏的机密计算是一种基于TrustZone技术的TEE方案。
4.2. TrustZone通过硬件安全扩展提供额外的安全执行环境
TrustZone是一个被隔离的可以独立运行的系统,也就是所谓的安全世界。这个印象难免会给人产生一些误解,比如有人会问说TEE是不是要运行在一个独立的cpu 上面呢,事实上这个安全世界是依靠 cpu 新增加的安全状态,并利用了 cpu 的分时复用机制来运行一个独立的操作系统,所以说他是不需要额外的CPU的。然后在 cpu 上同时进行了必要的扩展,将安全世界的资源进行隔离,并设置了这个硬件过滤器,来进行权限控制,使得只有安全世界才能访问安全资源。安全世界和普通世界的通讯是通过处于123的monitor 来进行的。TrustZone的应用组成分为CA和TA,CA是部署在RE侧的客户端,负责与外部通讯,TA是执行在TEE里面的可信应用。TEE的硬件隔离是通过安全扩展来实现的。简单来说,就是从ARM的核开始到cache通过总线到达内存控制器或者外部设备,整套通路上面他都进行了一个隔离。从架构上面可以看出这两个世界其实在自然使用的上面是相同的,因此他的算力应该也是需要对等的。他们有各自的操作系统,但是TEE他是为安全而生,为了确保安全可信,必须减少可信机,减少外部的暴露面。因此通常TEEOS会被设计的非常的精简,这个精简是一把双刃剑,意味着对开发者来说不友好。
4.3. 鲲鹏机密计算TrustZone套件
了解了TrustZone的基本原理,我们来了解一下TrustZone套件的特点和组成。TEEOS是TEE的核心组件,华为采用了自研的微内核系统,并针对服务器的云应用场景完成了适配和优化。华为TEEOS的主要特点之一是稳定可靠。因为他已经拥有手机系统近十年的时间,服务过亿级用户;第二点是安全性有保障,他得到了第三方安全认证机构的认证,取得了CC EAL4+的证书.其他特点还包括华为云上场景化的应用提供支撑,比如说远程证明,这是一个云上应用迫切的共性需求,我们在今年也将会提供。另外还有TEEOS 深度与鲲鹏 cpu 进行了集成并充分利用了硬件的安全特性。套件的组成有两种形态,浅蓝色部分是华为闭源维护的二进制,绿色部分会对社区开源。套件是一个软硬件结合的系统,需要得到bios以及 bmc 的配合,其中bios完成对TEEOS的解密以及校验,初始化安全内存。而 bmc则是用来提供升级能力和维护能力。REE Patch 提供驱动以及ca的开发接口,这个 patch,开发者可以根据自己的操作系统自行编译。sdk提供了标准的gp接口以及华为特有的服务接口,还有标准的 c 和 c++接口,这对于开发者来说相对友好。
开发便利性也是鲲鹏计算方案的特点之一,因为我们都知道OPEN TEE或者Intel SGX并不支持 c++。
在前文的技术原理中,我们已经知道了TrustZone是基于ARM架构的标准扩展来实现的。但是安全操作系统本身的完整性以及系统启动之后业务数据的机密性,还有TEE如何提供自己的身份证明都是需要芯片厂商和整机厂商考虑的问题。鲲鹏精密计算的TEEOS的完整性是基于鲲鹏 cpu 的信任链来保障的,在启动过程中如果完整性得不到校验,他将会拒绝启动TEEOS。TEEOS的二进制是由 cpu内部的huk,也就是硬件违约唯一密钥来派生之后得到的密钥加密。在TEE启动之后,TA业务机密数据的安全由硬件安全引擎来保证。该安全引擎被设置成了安全态仅TEE内部可以访问。为了支持后续的远程证明,或本地证明的服务,在硬件工厂生产的时候,在 cpu 中烧写了与cpu 绑定的身份证书。私钥的生成和加密的过程都在 TEE内部进行,确保密钥不会离开TEE。
4.4. 华为PKI拳法开发者证书以支撑客户的应用部署
硬件TEE的定位决定着它天生就需要被信任,因为对开发者来说,只要他把可信应用部署到TEE内,就会被认为他是安全的,不需要再做额外的工作。但对于开放平台来说,TA的来源他是不可预知的,为了保证TEE环境的可信,避免被恶意应用污染,TA在运行前必须得到身份和完整性的确认。鲲鹏机密计算采用的是通过给客户签发开发的证书,并实现对TA的完整性校验进行管控。整体流程有以下几步,首先开发者需要与华为取得联系,签署相关协议之后启动项目,之后开发者会得到相应的指导,他需要为自己的TA生成证书请求文件,并提交到华为的接口人。华为接口人会组织技术评审,在确认业务审批已经完成,技术评审性通过之后,接口人通过华为的PKI申请证书,最后将证书发放给用户。开发者构建自己的TA二进制,并使用 sdk 中提供的工具对 ta 进行签名和加密,生成最终的镜像文件。
4.5. 最简安全收益实例
了解TrustZone的工作原理以及华为TrustZone套件的组成和特点之后,我们以一个最简单的应用实例来体验TEE带来的直观安全收益。
在这个实例中,我们要在服务器上先部署一个签名的服务。被联系客户对他们的data.bin文件进行签名并返回签名的结果,同时也没有实质性的要求,并且采用手工方式。于是管理员新建了一个用户来进行签名的操作。
在没有了解TEE之前,开发人员按一般的实现,采用了最简单的openssl命令行来实现这个签名工具。首先用这个命令行生成RSA的私钥,接着使用生成的私钥指定私钥算法和输出的路径等。最后我们就得到了签名的二进制文件以及私钥文件。
在这个实现过程中,机密数据的安全性是基于操作系统提供的安全机制来保证的。那这个实现会存在哪些风险呢?
首先是漏洞,OS或者软件存在漏洞并被利用后,攻击者可能通过提权,可获取操作人员或者密钥人员账号下的私钥,另一个就是管理漏洞,即使操作系统有用户管理的功能,私钥在生成的时候,也可以采用口令进一步进行保护,但是无法防止管理员本身就是恶意的。所以这个私钥文件仍然是不安全,始终都不安全。 开发人员在了解了TEE 可以带来的增强之后,重新基于TEE实现了签名工具。
根据前面的介绍,TEE应用的实现分为CA和TA,CA是部署在RE侧的普通应用,负责与外部通讯。TA就是可信模块,负责签名数据的处理。如下所示为基于该工具对原始数据进行加密,也就是进行TEE增强。
那么由于TEE带来的增强,RE侧无论是因为 os 的漏洞或者应用本身的漏洞,再或者是管理员问题,都没法再获取TEE内部的可信模块的机要数据。还有一种诉求是签名之后生成的私钥需要持久化,那么鲲鹏提供的是硬件加封的方案。
TA可以直接调用标准的 gp 接口,就是左下方这块,那么这个接口进入到TEEOS之后,那么TEEOS会基于HUK,也就是硬件唯一密钥派生出根密钥。根密钥进一步与调用TA的标识结合,之后再派生出针对TA的工作密钥。最后机要数据就可以哦那个这个工作密钥来加密,将机密信息绑定到CPU与TA上。
4.6. 技术应用1:密态数据库
基于TEE带来的安全加强还有许多可以被应用的场景,这里是一个华为GaussDB密态数据库的技术应用实例。
在普通的数据库信任模型中,数据库的使用者必须信任数据库服务器,但是在密态数据库服务中,服务器给用户提供了基于用户自由密码对数据加密的能力。比如说用户发起一个查询,他想得到大于123的所有的记录,查询的条件由用户自由的密码派成之后来加密,这个加密的密钥也就是CEK。服务器收到请求之后,由CA将请求输入到TEE内,TEE内的数据库TA将与用户的客户端建立安全通信获得CEK之后解密查询的条件。数据库TA解密条件之后通过CA从数据库中读取密文的记录,然后在TEE内完成迭代计算,最终结果会被CEK加密之后返回给到客户端。这个场景中利用了TEE的隔离性,使CEK只能在TEE内产生和使用。能用的数据也只能出现在TEE内,防止中间人攻击以及系统漏洞引起的攻击。
4.7. 技术应用2:云场景TICS(可信智能计算功能架构)应用
下述例子是华为公有云可信智能计算服务,在这个应用中TEE被用作联邦梯度以及数据库查询的数据聚合节点,使得 ai 训练或数据库操作都在隔离的环境中进行确保数据库的安全。为进一步提高服务的并发能力以及打破资源的限制,在这个方案中TEE被设计成了安全聚合集群。
4.8. 技术应用3:在TEE内部署JIT编译器支持Java程序执行
下面这个技术应用场景试图在TEE内实现Java代码直接运行的一种实践。在不改变现有Java代码逻辑的前提下,使用标签标记代码中的可信模块,同时在TEE内部署功能相对完整的JIT编辑器以及运行态。Java代码被编译成字节流后,以class的方式送到TEE内部,JIT编译后执行,实现了低成本的Java应用在TEE中的部署。
4.9. 行业应用
下述这个在金融行业中的一种应用场景,比如政府奖励金发放计划,在奖励金发放之前首先要完成对企业或者个人的综合评估,以确保公平和合法。传统的方式中,评估场景涉及多部门的大量用户数据,并且通过人员传递存在的隐私泄露的风险,同时这种方式也存在效率低周期长,需要有领导担保签字之后才能调取,业务很被动。在创新模式中,多用户协同,可以实时地将数据汇聚到TEE内,在数据到达TEE之前全程加密,之后在TEE内隔离计算,达到数据可用不可见的目标。在计算过程中,多部门还可以通过远程证明,随时检查计算节点,以及TEE内处理的数据程序是否是可信的,提高业务的效率,降低了法律的风险。
最后是一个医疗行业的应用场景,医疗机构通常拥有大量的病例数据,非常适合 a i 的训练以发挥数据的价值,但是要考虑数据使用的安全性。在这个场景中,个人用户通过传感器设备将数据保存在自己的个人云空间中,网上医院可以由第三方的 suv 来实现。用户通过网上医院发起比如疾病初筛等服务请求,网上医院将设备采集到的数据送到计算节点中,计算节点将终端用户的数据和医疗机构的数据(这些数据包括模型和病例库等数据)汇聚到TEE内之后进行 a i 计算,最终得到结果返回给用户。在这个应用中,除了TEE可以用于AI计算之外,数据库也可以采用前文介绍的密态数据库。
5. 高效调度38万核超大规模HPC集群
分享嘉宾:胡守峰,华为鲲鹏BoostKit多瑙调度器架构师
5.1. 前言
HPC的全名是高性能计算也称为高性能计算集群,通常用来处理大型科学计算问题。目前 hpc 早已进入各行各业,典型的场景包括环境科学、生命科学、能源制造、核爆模拟等等。随着社会的发展对 hpc 提出了更高的要求,传统的 hpc 面临很多挑战。第一是对算力的要求持续增长,大约每10年增长1,000倍,而且应用场景的多样化导致了算力的多样化需求;第二 hpc 系统规模的增长,导致系统整体资源的利用率偏低,行业内对 hpc 的集群的吞吐量要求很高。海量作业、海量资源对调度引擎的要求极高。作业既要写的快又要查的快。最后传统的 hpc 运维复杂、专业性强、对管理员要求技能很高,需要更加便捷的操作平台。
5.2. 华为鲲鹏全栈HPC解决方案
为了打造中国数字经济的安全底座,紧跟hpc的发展,华为及时提出了自主可控的全栈解决方案。首先最底层的是基础设施层,分为风冷和液冷两种数据中心;其次是硬件平台层,包括计算、存储和网络,计算简单来说就是鲲鹏arm服务器加昇腾卡还有GPU等等。再次是技术设施层,HPC技术软件的核心就是集群管理与调度,也就是我们的多瑙portal,多瑙调度器。最上面的是行业应用层,包括气象、制造、EDA设计、政府、教育科研等等。
5.3. 多瑙Portal:集成四大中心功能,作业全流程管理效率提升30%
下面重点介绍多瑙套件。为了方便用户使用,我们提供了多瑙portal,也即是集群管理平台,为用户提供了可视化UI界面,多瑙Portal围绕调度器打通了整个业务流程,支持作业的查询与管理和资源的监控,提供了便捷的业务数据与资源分析平台,支持报表与计费。其核心功能主要有以下四个:第一是应用中心,为终端用户提供全生命周期的管理;第二是监控中心,可以对资源集群进行监控,支持管理员高效调度、高效运维集群;第三是报表中心,提供各种数据报表,支持管理员和领导进行业务决策;最后是计费中心,支持管理员完成内部结算与分摊。
5.4. 多瑙调度器:支持38万核超大规模调度
针对前面提到的HPC的挑战,多瑙调度器目前已经支持以下四个功能,第一是算力的融合调度,主要是鲲鹏ARM服务器与GPU的融合调度;第二是单机群最大规模38万核,到今年底,我们支持的规模会达到百万核;第三是多瑙调度器首创了多调度阶段与调度策略的灵活组合的方式,使得调度引擎的资源分配率可以高达90%。基于benchmark测试,多瑙调度器的吞吐量可以达到每小时400万以上。
5.5. 多瑙调度器:基于master-slave中心架构,分布式缓存加持的技术路线
多瑙调度器采用业界经典成熟的中心化架构管理服务。充分利用鲲鹏芯片多核的优势,设计上采用了模块化、事件驱动服务化的方式提高了调度器的整体性能。在数据存储与访问方面,经过缓存加持,热温冷数据分区存储,突破物理性能瓶颈,大大提高了调度系统的吞吐量。而且在高可靠方面我们实现了管理节点的主备和存储服务的主备,解决了分布式调度系统的单点问题,保证了调度性的高可靠和高可用。最后在安全方面,我们采取了各种安全加固措施,例如权限隔离等等,使得安全性得到明显提高,而且超越友商。
5.6. 多瑙调度器:38万核超大规模资源管理,400+万高吞吐作业调度
在整个HPC调度系统中,其中管理节点是整个系统的瓶颈,我们必须要保证其高性能高可靠。为此我们自研了消息队列作为事件引擎,配合状态机进行事件的平滑与异步处理,大大提高了系统的并行处理能力。经过以上的措施,我们支持38万核超大规模资源调度与管理,而且经过缓存加持的存储系统,我们的端到端吞吐量可以高达每小时400万以上。对于作业速率的提交,我们可以达到每小时1,500个,20万活动的在线查询可以达到1分钟以内。
5.7. 多瑙调度器:高效灵活的调度引擎,资源分配率90+%
调度引擎作为HPC的大脑,其核心的设计与实现难点在于海量作业与海量资源的高效快速匹配。为此我们设计了高效灵活的调度框架,实现了调度阶段与调度策略灵活组合的方式,保证了资源分配率可以高达90%以上。在资源分配阶段,资源池内我们可以将资源按照配额分配给各个部门,保证部门之间的公平性。在作业调度阶段,在资源配额内,我们会基于作业和部门的优先及公平性进行快速调度,而在配额外我们可以支持资源借用以进一步提高资源利用率,在最后的后调度阶段,我们提供了两种策略,第一个是抢占,他可以保证高优先级作业优先获得资源以便执行,第二是回收策略,他支持回收部门已经借出的资源,以优先满足本部门的作业需求。
5.8. 多瑙调度器特性演示
下面我会分三个场景给大家演示一下调度器如何使用,第一个是资源分配率可以达到90%,第二个场景是 gpu 作业的调度与执行,第三个场景是作业的抢占调度策略。
接下来演示第一个场景。首先我们登录到操作环境上,看一下集群中的节点,屏幕显示集群中有5个节点,450个核心。
我已经提成提交了一些短作业,大约有3万多个。目前由于集群中的节点是被关闭的状态,所以他不会有任何作业的下发。现在我把集群中所有的节点都给打开以后,我们监控这个作业状态的执行资源分配率等。
图中可以看到,当我打开节点之后,集群中的资源调度瞬间可以达到基本上是满核心的状态。由图我们还可以看到当前只有一个节点由剩余核心,其他都已经分发。
动态观察集群节点资源分配情况。
关闭节点,任务运行完成之后,可以看到集群资源都已经释放了,不在分配。
然后我们再把集群节点打开,再看一下资源分配率是否可以达到90%。打开之后,我们发现资源利用率还是可以达到90%以上。
由以上演示我们可以看到在我们的多瑙调度器中,资源分配率可以达到90%以上。
接下来演示第二个场景,首先登录GPU节点,根据输出可以看到机器上有两张GPU卡。
我们实时监控两张GPU卡的运行状态。现在我们在调度器中提交一个GPU作业。提交完成之后,可以看到作业使用了GPU 卡0。
再提交一个作业,可以看到第二个作业运行在GPU卡1上。
待作业2运行完毕,可以看到GPU卡正常释放。
此时,我们再一次提交作业,其再次提交到卡1上。
待所有作业执行完毕,可以看到所有卡资源都已经释放。
接下来演示最后一个场景,登录系统后开启抢占策略。这里已经提前配置好了,直接演示。
首先我们向low队列提交作业,然后再想high队列提交作业,查看作业状态,可以看到新提交的作业把原先提交的作业的资源抢占了,使得原先作业变成STOPPED状态。
之后再把high队列作业kill,此次资源释放,low队列作业重新被拉起。
6. 总结
华为鲲鹏BoostKit2.0提供了“数据亲和”和加速组件,上文介绍了其在大数据、分布式存储、机密计算和HPC场景的4个关键特性,帮助企业开发者基于鲲鹏平台开展应用性能加速,使能极致性能。
7. 参考资料
本文整理自华为云社区【内容共创】活动第14期。
https://bbs.huaweicloud.com/blogs/336904
任务7.鲲鹏BoostKit新版本推介会
上云必读 鲲鹏
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。