AI 云原生浅谈:好未来 AI 中台实践

作者 | 刘东东,好未来AI中台技术负责人

前言

AI 时代的到来,给企业的底层 IT 资源的丰富与敏捷提出了更大的挑战。利用阿里云稳定、弹性的 GPU 云服务器,领先的 GPU 容器化共享和隔离技术,以及 K8S 集群管理平台,好未来通过云原生架构实现了对资源的灵活调度,为其 AI 中台奠定了敏捷而坚实的技术底座。

*在 2020 年云栖大会上,好未来 AI 中台负责人刘东东,分享了他对 AI 云原生的理解与好未D 4 a { | ;来的 AI 中台实践,本文为演讲内容整理。
*

大家好,我是好未来 AI 中台技术负责人刘东东。今天p - M , k我给大家带来的演讲主题是《好未来 AI 云原生的浅谈》。

我的分享主要分成四个部分:

第一,AI 服务对云原生的挑战。

第二,AI 与云原生的服务部署。

第三,AI 与云原生的服务治理。

最后想谈一谈, K8S% n D F % 与 Spring Cloud 的有机结合。

AI 服务对云原生的挑战u n ? ( _ w

首先,我们` | } A k来讲一讲 AI 服务对云原生的挑战。在云原生时代,AI 服务其中最大的一个特点就是,需要更大R k # u 2 y ~的算力支持,以及更强% e e U C b ^ h大的一个服务的稳定性。

AI 云原生浅谈:好未来 AI 中台实践

我们的服务不单单只是原来的一个单体服务,现在已经转入到一个集群服务。同时对性能的稳定性要求,已经从 3 个 9,开始向 5 个 9 发起了挑战。

那么这些问题,已经不再是原有的传统技术架构能够解决的。所以我们需要一个新的技术架构。

这个新的技术架构是什么呢?就是云原生。

我们来看一看,t H C W q 7 ) l 1云原生对我们带来的变化。云原生带来的最大变化,我总结为四个要点和两大方面。

四大要点分别是,DevOps、持续交付、微服务容器的四个特点。两个方面则是服D W V 0 Y b务部署和服务治理。当然,它还有 12 个要素的整体系统总结。

AI 云原生浅谈:好未来 AI 中台实践

今天重点来讲的是服务部署和服务治理。

在云原生浪潮下{ [ y c f 8 k ],我们是如何处理服务部署和服务治理呢?

首先我们通过 AI 与( . % 6 8 T M云原生的服务部署,即通过 K8S,加上一个资源的虚拟化,资源的池化等技术,解决了 AI 服务对各种硬件资源的数量级增长需求。

第二个,AI 服务与云原K 8 j {生的服务治理进行有机结合4 = o ( J - U F。通过服务治理的技术,包括服务发现、HPR O X p s E 3 DA、负载均衡等,解决 AI 服务W i . R / ^ u对 5 个 9 的 SLA 的需求。

AI 云原生浅谈:好未来 AI 中台实践

AI 服务的云原生部署

第一点谈一下是怎么把 AI 与云原生的服务部署结合起来的。

首先看一下,在 AI 时代下服务部署有哪些特点呢?

8 Z + v m : J一个就是硬件资源需求与费用增长的一个矛盾。AI 服务对于硬件的需求成数量级增长,但是硬件预算并没有成数量级增长。

第二,AI 服务对硬件的需求是多样化的。如,对高 GPU 的需求、高 CPU 的需求、高内存的需求,甚至还有部分混合的需求。

第三h , K / 8 , +,AI 服务对资源的隔离是有需求的。每一个 AI 服务都能够独立使用这些资源,并且相v 8 4 7 % g u互之间不会打扰。

第四,AI 服务能够对资源池化有要求。AI 服务不需要去感知机器的具体配置,一旦将所有的资源进行池化,即可降低H 8 o & a z资源碎片,提Y c F = ` = E ` I升使用率。

最后一点,AI 服务对突发的资源是有请求的。因为流量是不可预知的,企业需要随时保持,能够随时扩充资源池的能力。

AI 云原生浅谈:好未来 AI 中台实践

我们的解决方案是什么呢?

首先,我们使用 Docker 的虚拟化技术,实现资源的隔离。

然后使用 GPU 共享技术,将 GPU、内存、CPU, L t a h G 等资源进行池化,然后将整个资源进行统一的管理。

最后,使用 K8S 的 resources,包括污点(taints)u H % 6、容忍度(tolerations)等这些技术w 4 F N & ] . } n特性,实现服务的灵活配置。

另外,建议大家要* 7 Q买一些高配置的机器,这些高配置的机器,主要是为了进一步降低碎片。

当然,还~ M = 8 L { # B要实现对整个集群硬件的监控,充分利用 ECS 可以各种复杂的时间规则调度特性(下图的 cron 是一个基于时间的作业调度任务),应对高峰流量。

AI 云原生浅谈:好未来 AI 中台实践

接下来,我们更仔细地看看好未来 AI 中台是如何解决这些 AI 部署问题的。

这个页[ U }面是我们的一个 Node 的服务管理,通过这个业务,我们是可以清晰看到每一m u Q l S :个服务器上面U v ]的部署情况,包括资源使用情况、部署哪些 pod、哪些节点等等。

AI 云原生浅谈:好未来 AI 中台实践

第二个实际上是 AI 中台的服务部署页面。我们是可以通过压码文件,精准地控制每一个 pI { [od 的内存、CPU、GPU 的使用。同时,通过污点等技$ * = $术,让服务器的多样化部署得到满足。

AI 云原生浅谈:好未来 AI 中台实践

根据我们的对B t v比实验,使用云原生的方式部署对比用户自行部署,成本大概节省了 65%。而且,这样的优势会随着 AI 集群的增长,在经: _ S o * m )济收益上和临时流量扩容上,将会受益更多。

AI 与云原生服务治理

接下来再讨论一下 AI 与云原生的服务治理。

简单介绍一下什么叫微服务?其实微服务,只是服务的一种架构风格,它实际上是将单个服务,作为一整套的小型服务开发,然后每一个应用程序都有6 0 x 4自己进程去运行,并且通过轻量级的一些,比如说 HTTP、API 等进行通信。

AI 云原生浅谈:好未来 AI 中台实践

这些服务,实际上是围绕着业务本身去构建的,可以通过自动n 3 j g化的部署等手段去集中管理。同时,通过不同的语g - h E言去编写,使用不同的存储资源) v 2

总结起来微服务有哪些H Z % ~ G特点?

**第一,微服务它足够小,甚至它只能做一件事情。
**
**第二,G K / X 微服务是无状态的。
**
第三,微服务相互之间是相互独R 0 ~ n r立的,并且它们是T { a l 2 * a面向接口的。

最后,微服务是高度自治的,每个人只对自己负责。

AI 云原生浅谈:好未来 AI 中台实践

看到这些微服务的特点之后,再去想一想,AI 服务与微服务特点,我们发现,AI 服务天生适合微服务。每一个微% % o ; k ; 7 . 5服务,其实本质上只做一件事情。比如 OCR,OCR 服务,只做 OCR 服务;ASR,主要做 ASR 服务。

继而,每一个# j A g % j 6 Q 8 AI 服务的请求都是独立的。举个简单例子,一个 OCR 请求和另外一个 OCR 请求,在本质上是没有什么关联的。

AI 服务对横向扩容是有天y ! g o n + f生苛求的。为什么?因为 AI 服务队资源d e l Z T m W v u的渴求非常大。于是,这种扩容就显得非常有必要性了。

AI 服务之间的依赖性也特别小。比如说像我们的 OCR 服务,可能对 NLP 的服务,或者是对其它的 AI 服务,可能没有什么太大的要求。

所有的 AI 服务,都可以通过写申明式的 HTTP,甚至 API 的方式,提, c D } a o z v n供 AI 能7 ~ P力。

进一步去看一下 AI 服务,会发现,并不能将所有的 AI 服务进行微服务化。于是,我们做了什么事?

第一G D S U p j i,需要将 AI 服务做成u u ^一个无状态的服务,这些无状态服务,都是有畜牲化、无状态、可丢弃,并且不采用任何的一些磁盘或者内存的请求方式,去做一些存储功能。这样就可以让服务部署在任何的一个节点,任何一个地方。

当然,并不是所有的服务都能做到m U $ / } l L无状态。如果它有状态了怎么办呢?我们会通过配置中心、日志中心、Redis、MQ,还有2 F y 8 I F W y = SQL 等数据库,存储这些请求状态。同时,确保这些组件的高可靠性。

AI 云原生浅谈:好未来 AI 中台实践

这个就是好未来 AI 中台 PaaS 的整体架构图。首先可^ z D ; 3 6 = G以看一下k G K a K z 最外层是服务接口层。最外层接口层是面向外部提供 AI 能力的。

平台层里最重要的层是服务网关,主要是负责一些动态路由、流量控制、负载均衡、鉴权等。再往下就是我们的一些服务发现,注册中心,容错、配置管理、弹性伸缩等等一些功能。

再下面是业务层,这些业务层[ Y o k K a就是我们所说的,一些 AI 的推理服务。

最下面就是阿里云给我们提供的) r * [ 0 l c F _ K8S 集群。

也就是说整体的一个H Z p L V = ] r )架构是,K8S 负责服务部署,SpringCloud 负责服务治理。

AI 云原生浅谈:好未来 AI 中台实践

我们是怎么通过技术手段来实现刚才说的一个整体架构图?

首先是通过: ! v Y i / G Eureka 作为注册中心,X W $ t C实现分布式系统的服务发现与注册。通过配置中心 Apoll 来管理服务器的配置属性,并且支持动态更新。网关 Gateway,可以做到隔离内外层的效果。熔断 Hystrix,主要是分为分时熔断和数量熔断,然后保护我们的服务不被阻塞。

负载均衡加上 Fegin 操作,可以实现整体流量的负载均衡,并且将我们的 Eureka 相关注册信息进行消费。消费总& } K ; i线 Kafka 是异步处理的组件。然后鉴权是通过 Outh2+RBAC 的方法去做z z a w W D $的,实现3 Y m了用户的登录包括接口的鉴权管理,保证安全t ! t n #可靠。

链路追踪,P . _ Q ,采用的是 Skywalking,通过这种 APM 的一个架构,我们可以追踪每一个请求的情况,便于d T Z K定位和告警每一个请求。

m l j ? Z P i 3后日志系统是通过 Filebeat+ES,分布式收集整个集群的日志。

AI 云原生浅谈:好未来 AI 中台实践

同时我们也开发了一些自己的服5 O / H L务,比如说部署服务、Contral 服务。主要是负责与 K] C I8S 进行通信,收集整个 K8S 集群里面服务的服务部署、K8S 相关的硬件信息。

然后告警系统是通过 Prometht M _ p . geus+Monitor 去做的,可以收集硬件数据] I l X y,负责资源、业务等相关的告警。

数据服务是主要用于下X F /载,包括数据回流,然后截取我们推理场景下的数据情况。

限流服务是限制j a ) s =) ^ O y J o个客户的请求和 QPSD k V 相关功能。

HPA 实际上是u C ! , o 最重要的一个部分。HPA 不单单只支v ^ y G 1持内存级别的,或 CPU 级别的 HPA,还支持一些 P99、QPS、GPU 等相关规则。

最后4 ( 4是统计服务,主要是用于统计相关调用量,比如请求等。W h 8 / k w ^

AI 云原生浅谈:好未来 AI 中台实践

我们通过一个统一的$ 6 G s T #控制台,对 AI 开发者提供了一站式的解决方案,通过一个平台解决了全部的服务治理问题,提升了运维的工作自动化,让原来需要几个a R c m ]0 3 w E维护的一个 AI 服务的情况,变成了一个人能够做到维护十几个 AI 服务。

这个页面展示的就是服务路由、负载均衡、限流相关的配置页面。

AI 云原生浅谈:好未来 AI 中台实践

这个页面展示的- T -是我们在接口级别~ l b ) w w的一些告警,p ( d o x % 7 I q以及部署级别的硬件告警Q m

AI 云原生浅谈:好未来 AI 中台实践

这是日志检索,包括实时日志相关功能。

AI 云原生浅谈:好未来 AI 中台实践

这个是手动伸缩和自动伸缩操作页面。其中自动伸缩包括 CPU、内存级别的 HPA,也包括基于相应响应时长制定 HPA、定时的 HPA。

AI 云原生浅谈:好未来 AI 中台实践

K8S 与 Spring Cloud 的有机结合

最后来聊一下 K8S 与 SpringCloud 的有机结合。

AI 云原生浅谈:好未来 AI 中台实践

可以看一下这X $ 3 J两张图。左图是我们 SpringCloud 数据中心到路由的图。右边是 K8S 的 ser, 9 ~vice 到它的 pod 的图。

这两个图在结构上是p Z E j非常接近的/ { * c . _ ]。我们是怎么做到呢?实际上是将我们的 Application 与 K8S 的 service 进行绑定,也就是说最终注册到我们 SpringCloud 里面 LB 的地址,实际上是把它转成了 K8S service 的地址。这样就可以将 K8S 与 SpringClL y t l M xoud 结合i T 2 * L起来。这是路由级别集合。F = k r有了这个集合,就能达到最终的效果。

AI 云原生浅谈:好未来 AI 中台实践

SprigCloud 它是一个 Java 的技术语言站。而 AI 服务的语言是多样化的,有 C++、Java,甚至有 PHP。

为了实现跨语言,我们引入了 sidecar 技术,将 AI 服务与 sidecar 通过 RPC 去通信,就可以屏蔽语言的X y T ] x I 6 Z特性 t 9 Z ^ - + G

Sidecar 主要的功能L N 5 F = z )有,应用服务发现与注册、路由追踪、链路追踪,以及健康检查。

今天我的演讲到此结束,非常感谢各位的聆听。谢谢大家。