技术圈流传这样一句话“人工智能背后的架构和工程问题是武当少林,属于内功。而算法则是招式,讲究一时之快。”
再强的算法均需强大的架构和工程作支撑,两者缺一不可。
那么 AI 公司该如何设计承载产品背后庞大复杂的算法、工程核心架构?本期 AI 科技评论特邀极限元 CTO 康利强为大家讲述《AI 公司该如何设计基于微服务的 AI Saas 架构》。
嘉宾介绍
康利强,极限元 CTO,亲自主导搭建了支撑极限元现有语音识别、计算机视觉、人机交互解决方案的构架;康利强拥有 20 年软件研发、架构设计以及项目管理经验,是前亿赞普集团核心架构设计专家;美国 Borland 软件公司中国机构分布式存储架构师及项目负责人。
本期公开课视频(共 44 分钟)
如想获取 PPT 资源,关注 AI 科技评论,在后台回复关键词“架构”,即可收到本期公开课 32 页的 PPT 下载链接。
以下为公开课内容:
今天我给大家分享的内容是基于微服务的 AI Saas 架构设计。
既然要设计 Saas 架构,先要了解何为 Saas?Saas 是云计算的一种服务形式,关于云计算我先简要做个介绍:
一、云计算简介
-
什么是云计算?
-
云计算的分类(分层)
-
云计算新的服务方式
什么是云计算
云计算是一种计算资源,按量付费,也就是你用多少就支付多少费用。可以便捷的访问通过网络进入可配置的资源池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,我们只需投入很少的管理工作,与服务供应商进行很少的交互。
自从 2006 年 8 月 Google 提出云计算的概念后,到今天已经过了 10 年的发展,云计算越来越为大家所接受,很多人也在使用云计算提供的服务,比如云主机、云存储、网盘、云分发、云笔记等等;这次公开课直播也会用到其中的几项服务,如云存储、云分发。由于用到云分发,所以大家在看直播的时候会有一个比较低的延时。
云计算的分类
接下来介绍云计算的分类,除了我们熟知的 Saas 外,云计算也包含其他几种类型:
-
IaaS(Infrastructure-as-a- Service):基础设施即服务。消费者通过 Internet 可以从完善的计算机基础设施获得服务。也就是云主机,比如亚马逊云,微软云,阿里云等。
-
PaaS(Platform-as-a-Service):平台即服务。PaaS 实际上是指将软件研发的平台作为一种服务,以 SaaS 的模式提交给用户。因此,PaaS 也是 SaaS 模式的一种应用。PaaS 的出现可以加快 SaaS 的发展,尤其是加快 SaaS 应用的开发速度。需要用户有一定的开发能力,比如谷歌的 GAE。
-
SaaS(Software-as-a-Service):软件即服务。它是一种通过 Internet 提供软件的模式,用户无需购买软件。例如:各种云存储,网盘、云笔记。
近些年随着 Docker 的发展,出现了一种新的服务形式:Caas。
Caas (Containers-as-a-Service): 容器即服务,可让应用的打包与部署自动化,创建轻量、私有的 Paas 环境,使持续集成/部署、测试自动化,部署可伸缩的 web app、数据库和后台服务。
因为 Docker 基于 Linux Container(Namespace,cgroup,chroot等),抽象出 Libcontainer 的接口,Docker 运行于 Libcontainer 接口之上而不关心底层实现,所以这种服务就叫做 Caas。
云计算的分类
上图是一个简化版的云计算分类,通过该图可以一目了然地看到它们之间的关系。
二、应用架构模式
讲架构设计之前,先来解读下架构模式。有人会问,题目是基于微服务的架构设计有微服务,那么是不是有宏大服务呢,答案是肯定的。
一般来说,有以下两种架构模式:
什么是单体式架构?
下面我们来看一下单体式架构:
单体式架构就是所有功能打包运行在一个进程,比如一个 war 包,从这个架构图我们也可以看到这是一个叫车应用,中间部分是一个整体,包含很多功能:有乘客管理、通知、支付、司机管理、路线规划等功能。
单体式架构的
优点是开发,部署,测试,水平扩展比较容易,可以放到一个工程,打一个包,扩展的时候只把这一个包复制到新的位置即可。而缺点就是随着功能增多,代码变多, 维护成本高,交付周期长。
与此同时,不同模块发生资源冲突时,扩展将会非常困难,有的要大内存,有的高带宽,有的要大的存储空间等。为了同时满足这些条件,这样就造成了资源的浪费。
还有一个问题是技术选项成本高,必须谨慎选择,因为一旦选定很难更改,如果要更改的话,肯能要全部推到重来。另外可靠性也存在问题,一个模块故障会影响整个服务。
什么是微服务架构?
在了解微服务之前,首先了解什么是微服务,其次需要了解微服务架构的设计要点,最后需知道微服务的优缺点。先看一下什么是微服务?
微服务没有一个公认的确切定义,但是有一些共性,微服务是是面向服务架构的一种特例,有以下特性:
所以微服务本身天然就具有模块化特性,适合于持续交付的开发部署,业务改变只需要重新发布部署少量的服务。了解微服务以后,进入今天的主题:为微服务架构设计。
微服务架构设计
其中微服务架构的优缺点包括以下几项:
三、基于微服务的 AI Saas 架构设计
我们知道,人工智能的核心是机器学习,因为机器不会自己学习,所以要明确指明一些特征来让机器知道符合这个条件的是什么,符合那个条件的是什么,这就需要编写复杂的程序来让机器来学习。由于在某些场景中随着需要的特征越来越多,编写程序也越来越困难,我们无法用足够实用并且可靠的方式明确指定所要优化的特征。
以让机器识别一只猫为例,假设这只猫是白色的,先不考虑其他特征,只说颜色特征。其它特征+白色这两个特征让计算机知道这是一只猫,那么来一只黑色猫就不认识了,或者来一只加菲猫计算机就有可能就会把它识别成色情图片了。
这就导致所需的特征越来越多,这时候发现程序没法写了。于是深度学习顺势而生,大量数据通过深度神经网络的训练,让计算机学习,机器会自己提取特征并跟测试集来比较,然后自己调整进行下一轮的训练,直到训练出合适的结果。所以说目前的 AI 更多是数据的比拼。
为什么需要 AI Saas 服务?
首先我们要了解 AI 能做什么,AI 可以做一些色情检测、广告检测、涉爆涉恐言论以及电信诈骗检测,这些都是 AI 可以做的事情。用 AI 来做的话可以节省大量的人力,但是,不是所有公司都有能量构建 AI 系统,从上图中可以看出,构建 AI 系统需要大量数据,需要大量计算资源,需要专业技术人员。
所以随着社会分工越来越细,专注于自己的业务,专业的事情交给专业的公司来做就好,避免自己精力过于分散。以直播平台为例,其需要检测上面所述的一些违规内容,也可以用 AI 来检测。但是不一定要自己做 AI 系统,你可以把更多的精力放在直播的流畅度、延时、互动性等提升上。
为什么微服务架构比较适合 AI Saas?