AI算法实现与云平台应用( 七 )


图18 架构设计2
机器学习平台分类有:
图19 机器学习平台
图19是我们自己实现的平台 。上层是我们的业务,有非结构化的数据,有传统的推荐系统 。底层是我们的计算资源,包括公有云、私有云、GPU 。我们底层最依赖的是两个调度框架: 和。在调度框架上面实现我们的模型训练、模型服务、数据管理、特征抽取、模型评估、自学习服务,对外提供API 。
如果我们只是要实现 的功能,其实很简单 。我们都知道是一个通用的任务调度服务 。对于的运行环境我们打包成一个镜像,并不直接用的API,我们可以对API做一定的封装 。
图20 工作流
我们真正做一个业务,除了做训练,我们还需要做数据引入、特征抽取、模型评估 。模型训练只是简单的部分 。其实这一部分在小米的时候,我们让用户自己做的,自己做一些需求 。在第四范式我们希望用户通过拖拽的方法定义一个工作流 。工作流的算子应该是可拓展的 。
图21 工作流2
这是工作流的截图,没有做动画 。这边有数据引入、数据拆分、特征工程、训练算法、模型预测,有几个模块,用户可以通过这个模块把算子拖出来 。只要你懂这机器学习业务,不需要自己去写spark,不需要写LR算法的实现,你只要拖一个算子过来,把这个线连起来,单机跑一下,就可以完成机器学习的业务了 。
图22 算子
我们设计上,希望算子通用的,可以解决任意的问题 。机器学习其实是一种计算的方式,数据拆分特征抽取也是 。我们定义了最简单的抽象接口,用户要实现自己的算子,只需要实现的方法就可以了 。我们现在大约提供了十种数据处理算子,十多种机器学习算子,以及三种的算子 。
图23 高可用
我们在做平台的时候一定会考虑高可用和多租户 。一个系统的高可用肯定是它各个组件的高可用 。我们知道k8s依赖etcd,etcd本身有一个Raft协议,所以通过部署多个节点,它本身就是高可用的 。用户实现的是一个API ,目前是一个java应用,依赖于或者是etcd实现的一个主从集群 。DB我们用的是MySQL的高可用方案 。
图24 多租户
平台是给企业或者其他云平台用户用的,所以要实现多租户 。有两个概念:认证和授权 。认证我们支持多种方式:用户名/密码,AK/SK,后者是一种更高的认证方式 。LDAP是满足企业用户的需要 。授权使我们自己实现的RBAC的方法 。
图25 多租户2
为什么要用RBAC呢?我们把用户和权限分开了,没有在数据库写死哪个用户有什么权限,而是在数据插入用户跟role的关系,role里面维护role和的关系 。
图26 多租户3
我们并没有把组和权限有糅合在一起,组是一个单独的概念 。我们有一个Group表,有一个user和group的表 。组和user其实都是一个,我们可以对进行授权 。所以组跟是一个解耦的关系 。
【AI算法实现与云平台应用】最后总结一下,搭建完整的云深度学习平台需要有良好的架构,还需要实现高性能、高可用、授权认证等功能组件,希望大家对底层基础架构和算法原理有进一步的了解,看完这次分享也有一定的收获,谢谢 。