从算力网络发展,看未来十年的宏观算力体系|每日快看
来源:互联网     时间:2023-05-08 12:13:14

三大运营商都在积极地推广“算力网络”的相关技术概念落地,互联网公司有类似的概念叫“分布式云”。个人理解,两个概念的技术实现基本相同,不同点在于:算力网络站在基础计算环境的视角,着眼于算力资源的整合;分布式云从业务服务的视角,着眼于计算以何种形式提供。

今天这篇文章,抛砖引玉,探讨一下宏观视角的算力网络的底层算力体系。

1 算力网络和分布式云的概念

Garnter 2021年发布的战略技术趋势,将分布式云(Distributed Cloud)列为云计算的重要战略技术趋势。分布式云的定义:将公有云服务分布到不同的物理位置(即边缘),而服务的所有权、运营、治理、更新和发展仍然由原始公有云提供商负责。解决客户让云计算资源靠近数据和业务活动发生的物理位置的需求。分布式云是整合公有云、私有云和边缘云在一起,核心思想是,让公有云的全栈服务能力延伸到最靠近用户所需的地方。分布式云,本质上是一朵云,由云负责调配计算资源。虽然中间需要网络,但是网络主要是承担管道的角色。


(相关资料图)

按照运营商的观点,算力网络是云网协同和分布式云的升级版,指的是:在计算能力不断泛在化发展的基础上,通过网络手段将计算、存储等基础资源在云-边-端之间进行有效调配的方式,以此提升业务服务质量和用户的服务体验。算力网络中的网络非常关键:网络是用户去往算力资源的必经之路,也是用户发起业务需求的入口,通过网络调配算力。

站在用户业务的角度,分布式云和算力网络的目标是一致的:云网边端从协同走向融合。算力网络是网络拥有者为满足这类需求,提出的方案;分布式云是云计算厂商为满足同样的需求,提出的方案。从趋势看,两种方式是既合作又竞争的关系,随着未来技术和业务的不断发展,两种方式会逐渐趋于统一。

2 从计算形态看算力网络

2.1 计算机的资源分类

在传统CPU的计算机架构里,计算机资源主要分为三类:CPU、内存和外设。在异构和超异构的计算体系下,计算机的硬件资源可以分为四类:

CPU:站在控制的视角,CPU作为中央处理器,是整个系统的核心;站在计算的视角,CPU和其他加速器一样,是用于计算的处理器之一。

内存:在异构或超异构计算体系下,内存的概念同经典架构下意义相同;区别在于,在异构或超异构情况下,内存的访问者更多,访问更加频繁,带宽等性能要求更高。

I/O设备:同经典架构下意义基本相同。

其他的加速处理器:如GPU、AI-DSA、网络DSA,以及各种ASIC类的加速器等。从CPU视角看,其他的加速器是和I/O设备对等的“外部设备”;而从计算的视角看,其他的加速器是和CPU对等的计算处理器。

2.2 IaaS服务分类

IaaS服务主要分为四类:计算、网络、存储和安全,详细分析如下:

计算类:不管是裸金属机、虚拟机或者容器的形态,云计算的主机或容器硬件平台都是由计算机的四大大资源组件组成的:

计算的CPU处理器,不管是通用(CPU)计算,还是异构计算,CPU都是不可缺少的资源组件。

计算的加速处理器,异构计算需要有GPU、AI加速等加速处理器资源组件。

计算的内存,内存是用于计算暂存的存储资源。

网络和存储I/O,是计算不可或缺的组件;在IaaS体系里,网络和存储通常以独立服务的形态存在。

根据业务场景的需要,计算的硬件平台是这些资源的不同规格不同比例的组合。

根据需要,可以通过很多种方式,实现所有资源的池化,以及实现硬件平台计算资源的本地或(和)远程扩展。

网络类:狭义的网络只是一个网卡,为计算提供网络访问的通道。广义的网络类服务,包括两类:网络转发,如VPC、EIP、各类网关、LB等;网络通信:如高性能网络、确定性网络等。

存储类:从计算的角度看,外存是计算的输入输出,即使计算机关机,外存的数据依然存在。但从云服务器的视角看,本地外部存储是临时存储,当云服务器资源被销毁后,也会销毁本地存储的数据。要想长期地持久化地保存数据,则需要采用远程的分布式存储。本地临时存储和分布式的快存储、对象存储、归档存储等都是以服务的形式,支撑计算类服务。

安全类:安全的计算,如可信计算;安全的网络,如防火墙;安全的存储,如数据加解密等。安全是个非常庞大的话题,无处不在,这里我们不再展开。

2.3 算力网络的两种类型

简单介绍一下Serverless的概念。Redhat给出的Serverless定义为:“无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。无服务器方案中仍然有服务器,但它们已从应用开发中抽离了出来。云提供商负责置备、维护和扩展服务器基础架构等例行工作。开发人员可以简单地将代码打包到容器中进行部署。部署之后,无服务器应用即可响应需求,并根据需要自动扩容。公共云提供商的无服务器产品通常通过一种事件驱动执行模型来按需计量。因此,当无服务器功能闲置时,不会产生费用。”

通俗易懂的讲,有服务器的服务,需要用户自己创建服务的具体实例Instance,一个实例只能归属于一个用户,一个用户可以拥有一个或多个实例;而Serverless类型的服务则不需要创建服务实例,直接使用服务即可,很多用户共享使用同一个服务“实例”(不是所有用户,服务软件在不同数据中心的部署可以是不同的服务)。至于服务所需要的各种底层资源,用户不需要关心,服务可以根据业务使用的情况自动地扩缩容等。

也因此,算力网络的实现形态,我们大体上可以分为两个类型:有服务器型和无服务器型。

类型1,有服务器型

有服务器的形态,更接近算力网络的概念。通过网络等方式实现数据中心的以及跨数据中心的各类资源的池化,然后再通过云裸金属机、云虚拟机、云容器等方式组合出供用户业务运行的硬件的计算平台。

可以根据用户的需求,在云、网、边、端的任何位置,组合出规格和形态各异的计算平台,给用户提供最优的算力服务,实现算力的无处不在。

类型2,Serverless无服务器型

业务软件,经典的C/S或B/S架构,一切皆(微)服务的架构下,可以简单地理解成客户端和多个微服务组成的分布式软件。

Serverless无服务器型,更接近分布式云的概念。类似分布式云的早期经典案例是CDN,当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务。CDN只是一些静态内容,而分布式云则需要把服务分布式的放置在边缘等节点。

在分布式云的体系下,用户不需要关心底层的主机和容器,只需要关注自己的业务逻辑。通常情况下,客户端可以运行在终端本地(不排除有的系统只在服务器运行,客户端也运行在服务器侧),具体的运行位置用户不需要关心。云服务供应商可以根据微服务所需的带宽、时延、性能、成本等要求,选择最优的运行环境,它可以是终端本地,也可以是边缘、网络或者云端。并且,这些服务还可以根据环境的变化,动态地调整运行的位置。

3 面向未来十年的宏观计算系统特征

3.1 需求的未知

首先,系统场景一直在快速变化:上层软件场景层出不穷,两年一个新热点,已有热点仍在快速演进。并且,宏观大系统,计算资源是预先准备好的。购买和部署相关资源时,并不知道具体的计算资源会分配给哪个用户,也不知道用户在此资源上会运行什么任务。此外,资源分配和任务运行会一直动态变化。

传统芯片和系统设计,需要先理解场景,然后根据场景需求来设计芯片和系统。未来的挑战是,系统的场景需求是不确定的;不但芯片公司不了解,客户自己也“不了解”。

因此,复杂计算系统的设计,需要“无的放矢”。

3.2 全面而综合

不管是云计算数据中心系统,还是云网边端万物互联系统,亦或是云宇宙虚实融合系统,宏观的计算系统,只有“一个”。

然而,千千万不同用户的需求多种多样;并且,用户的需求一直处于快速的变化中;此外,还会不断有新增用户和新增需求。

因此,系统需要有包罗万象的能力,即面对已知的和未知的各种各样的需求,系统都要能够支持。

3.3 专业而高效

通常情况下,“专业的人做专业的事”。言下之意是:专才只能做本领域的事情,其他领域的事情几乎做不了。与此同时,通才什么事情都能做,但在每个领域都不够高效。

但对宏观的复杂计算系统来说,系统不仅仅要能干几乎所有事情,并且干任何事情都要足够的专业而且高效,达到既通又专。

3.4 超级并发

数以亿计的用户,数以万亿计的用户任务,而系统只有“一个”。

千千万用户的计算需求需要及时响应,用户的工作任务需要快速地处理。

因此,同一时刻,系统并发处理数以亿计的各种类型的用户任务。

3.5 无处不在

系统覆盖非常广泛的地域,实现算力无处不在,使得算力资源唾手可得。

即在任何地方,任何时刻,为用户的任何工作任务,都能提供算力和相关资源支撑。

并且,需要以最合适的形态,最合适的方式,给用户更好的体验,为用户创造更大的价值。

3.6 快速演进

上层软件应用层出不穷,系统需求快速变化。并且,同一领域,不同用户的需求具有差异性;与此同时,同一用户的业务需求仍会快速迭代。

宏观地看,用户以及用户需要运行的任务,一直处于不断地变化状态。

复杂而融合的系统,需要持续快速演进,才能适应上层业务需求的不断变化。

4 体系结构视角看算力网络

4.1 算力资源的多样性

随着CPU的性能瓶颈,我们需要通过GPU、FPGA、DSA等各种形态的加速处理器,来持续不断地提升性能和算力。也因此,计算的资源,就不仅仅是CPU了,而是多种架构多种类型处理器的组合:

CPU:包括x86、ARM和RISC-v等各种架构的CPU,并且每种CPU还有Vector、Matrix、Tensor等各种加速的协处理器。

GPU:GPU作为通用的并行计算平台,是使用最广泛的加速计算处理器。并且,目前的GPU除了支持通用计算的CUDA外,还集成了更高效加速处理的Tensor Core,进一步提升了GPU的加速能力。

FPGA:通过各种硬件编程设计,实现各种形态各种架构的计算引擎。

DSA:计算有很多领域,每种领域还有很多公司的很多DSA,甚至同一家公司同域但不同代的DSA架构也有可能不同。

ASIC:ASIC完全面向特定场景,不同领域的不同场景,都有形态和架构各异的各种ASIC引擎。

这么多的处理器类型,这么多的处理器架构,造就了算力网络计算资源的多样性特征。

性能和灵活性是一对矛盾,对单个处理器引擎来说,如果要性能就必须损失灵活性,如果要灵活性必然损失性能。然而,支撑算力网络的宏观计算系统,既要“全面而综合”,又要“专业而高效”。怎么办?

通过CPU、GPU、DSA等多种类型的处理器相互协作,实现团队作战。每个处理器引擎各司其职,发挥各自的性能/灵活性优势,从而实现宏观意义上的性能和灵活性的兼顾和微观上的每个处理的高效和高性能。

4.2 算力资源的融合

算力资源的多样性,其实也就是算力资源的碎片化,并不是一个好的现象。

4.2.1 算力资源的池化

如果每个处理器核是一个孤岛式的计算资源,那么就没有意义。算力网络的价值本就在涓涓小溪流汇聚成大海,这是算力网络的基础。这样,把宏观的不同云/边缘数据中心、不同终端设备的计算资源汇聚在一起,形成算力的统一的大资源池。

网络本身更多承担的是连接和总线的角色,网络设备中也会有一些计算和存储的资源,可以归属到计算或存储资源类型。

池化虽然可以把不同服务器不同设备上的相同计算资源连成一个资源池,但受限于算力资源的多样性,不同类型不同架构的资源仍然是无法整合到一起的。因此,算力资源的池不是一个,而是很多很多个。比如x86和ARM、RISC-v的CPU资源就无法整合到一个池里;不同厂家的GPU也无法整合到一个资源池里;甚至存储或网络I/O设备,因为接口的不同,也可能无法整合到一个资源池;包括各种DSA/FPGA/ASIC,更是无法整合。

当有多达上百个不同类型不同架构的资源池的时候,其实已经弱化了资源池化的价值。

4.2.2 算力资源的聚合

ChatGPT等AI模型对算力的需求,每2个月翻一倍。如此快速的算力增长,目前只能通过Scale out的方式来提升整个计算集群的性能。但随着集群规模的扩展,集群的损耗变得越来越不可承受:集群内部东西向的网络流量会占到90%以上,真正外部交互的流量只有不到10%。这个现象也符合阿姆达尔规律,受限于系统中串行部分的影响,随着并行计算的节点越来越多,通过提升并行数量来提升系统性能的方式会逐渐遇到瓶颈。

也因此,在Scale out方式无法进一步提升系统性能的情况下,提升性能的方式只能通过Scale up。也就是要提升单个计算节点的性能。也因此,单个计算节点的计算架构需要从现在的异构计算逐步过渡到多个异构融合的超异构计算架构。

4.2.3 软件需要跨硬件移动

传统场景下,软件通常附着在硬件之上,两者是绑定的。可以通过如HAL一样的抽象层来实现平台的标准化,然后再部署操作系统和应用软件。而在系统越来越复杂的情况下,软件的实体,如虚拟机、容器等,需要在不同的硬件上迁移,这就使得软件和硬件逐渐分开了。

通常来说,可以通过虚拟化实现硬件架构的屏蔽,软件不需要太多关注硬件的架构和接口。但随着虚拟化技术的完全硬件化,硬件的架构和接口完全地暴露给了上层的虚拟机或容器。这就对硬件的架构和接口提出了更加严苛的要求。

4.2.4 开放架构和生态,让架构收敛

CPU、GPU、AI-DSA等只有单个类型架构的处理器,一家公司只做私有的架构,如果公司的产品成功,那么就可以独占整个生态。这里的成功案例如Intel的x86,NVIDIA的CUDA。

在同构和异构时代,这种做法是可能成功的;但到了处理器架构非常多的超异构时代,这种做法几乎不可行。因为没有任何一家公司能做到,在所有的计算架构上都能够做到最好。并且“百花齐放”的做法,其实在进一步分裂整个计算生态,与算力网络资源池化和云网边端融合的发展趋势相悖。

在超异构时代,唯一能成功的方式是,大家都遵循一定的架构规范,从而形成开放的架构和生态,让计算的架构逐渐收敛,从而能发挥算力资源池化的优势,真正实现算力无所不在。

标签: