搭建算法平台的架构设计

Posted 屁屁和铭仔的数据之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建算法平台的架构设计相关的知识,希望对你有一定的参考价值。



搭建算法平台的架构设计




ENTER TITLE


   这是我当时为一个app设计的一个数据平台的架构,其中包括数据etl、数据分析、报表系统、用户画像、数据模型多个部分的组成,当时也是想到什么花什么,现在看来要是实现的话还是要花费很大的人力物力,其实这个平台他也不是一个部门完成的,他应该是后台、数据仓库、数据分析、数据模型、前端多个部门的共同搭建的,涉及到多部分的功能。今天跟大家分享的是其中的一部分,算法平台的搭建。
 


如果需要该图,可点击百度云链接获取:

链接:https://pan.baidu.com/s/1ZpkQon08oPaivfaNdGkXFw

提取码:lcpu

那么其实现在很多公司也会开始着手做算法平台,无论是哪一类型的,机器学习或者深度学习再或者是针对自然语言处理的,那么为什么很多公司都想要做算法平台呢,首先呢是因为数据中台还有功能集成的热度一直不减,公司层面希望把很多能力都集成在一个平台上,通过微服务的形式吐出去。

那么微服务其实就是api,为什么现在很多热衷于使用api,因为api对于后台系统或者说模型功能来说,他的请求方式方便,其次呢,就是可以责任化,什么叫责任化,就是每人维护自己的api,自己的api一旦出现问题,自己修改,其他环节的人,只要知道你的api的输出和输出,别人保证输入的正确,你保证输出的正确,没有那么多上游下游的责任纠纷。这是我认为的api的好处哈,还有别的好处,因为我没涉及到,所以我也不懂,这个不提了。

算法平台我在上家算是搭了一点点,最终是没有界面化,项目就难产了,所以今天的分享是从算法的功能出发去介绍,算法平台中需要哪种模块。相当于今天的文章数据产品经理规划说这个平台有哪些功能。

搭建算法平台的架构设计
数据获取


这个功能是满足数据的简便获取,最方便的方式,将用户的数据拼接成一个宽表,全部的维度都存放在这张表中,加上时间维度,那么在建模中需要时间切片中的变量,你直接设置时间区间就可以了。表结构大概长这个样子:

 

搭建算法平台的架构设计


  那么到时前端放在页面上,可以将产品类型、用户注册时间、用户申请时间、用户放款时间作为筛选条件,平台使用者可以根据自己的需要取到自己所需要的的训练的数据。

 

搭建算法平台的架构设计
数据处理

数据处理中,主要需要处理以下几种问题:

  • 1、字符类的数字转float或者int

  • 2、日期标准化

  • 3、字符规划范,例如数据中的字符太多类的,将数据较少的类合并为一类

  • 4、数据去噪声化(填补缺失值),对于过大过小的数据用数据替换方法替换(这里的替换方法在做的时候后,应该是有默认的一个方法,以及还有其他方法可以选择)。

  • 5、转换编码,像逻辑回归或者xg需要转换woe编码或者one-hot编码的则在这个流程中转换即可。

  • 6、变量衍生,如果你的宽表已经是做好变量衍生的,那么这部分就需要了,但是如果宽表的部门变量仍可以衍生,那么可以在这部分调用变量衍生的功能产生新的变量。

搭建算法平台的架构设计
映射关系留存


  这个功能是为了你后续上线服务的,因为你做数据处理的时候,你已经将原始的数据更改了,那么到时你上线的时候,输进来又是原始数据,那这样子跑你的模型肯定是要报错的,对不对!!,那这时候这个功能就是为了留存在你做数据处理的过程,然后打包放在原始数据上,这样子你到时线上的数据就会跟你离线训练进入模型时的数据是一样的啦。你问我怎么打包,这个就很多话说了,你要感兴趣,我们可以开个房间慢慢聊。这里的操作有点像nlp中词袋映射的代码的打包,其实就是把代码打包成pkl


搭建算法平台的架构设计
模型自动调参


模型的自动调参功能需要满足,你只要输入数据就模型可以自动调参以及输出最好的模型的模型文件,以及相关的指标,模型自动调参部分,有两种模式,第一种,是你指定模型类型,他自动按照你指定的模型跑出适合数据的模型参数,第二种就是你无须指定算法,代码直接按照有的算法,全部执行一遍,输出最好的算法模型以及对应的参数。


搭建算法平台的架构设计
模型打包


模型打包功能,则到此为止,模型已经是准备好了,按照如果有模型后台的公司,这时候就把原始数据与模型数据的映射关系以及模型文件上传到模型后台,这时候就可以上线模型了,所以模型打包的功能则是将映射关系和模型文件打包在一起,作为一个文件,这样子的好处,映射关系跟模型的捆绑在一起的,不会因为到时模型一多起来,还需要增加对映射关系的管理,反正你就一个模型一个文件,加上版本号,上线就这个文件,下线也是这个文件。


搭建算法平台的架构设计
模型上线自动测试


模型的上线自动测试,因为模型从头到尾都是离线训练的,所以在上线之前需要做实时数据的测试,那么这时候需要使用线上的数据,跑你上一环节打包的模型,看结果是否符合你的预期,这里你需要两部分测试,第一部分的测试,是用你训练的数据切面的原始数据跑一边你打包好的模型,看模型结果是不是跟你训练的评估结果一样。第二部分的测试就是,在实时的测试环境中,跑一段时间的数据,看模型效果是否跟预期的相差不大,那么这个模型的测试也算是通过了。当然这里也有其他的测试方法。

搭建算法平台的架构设计
模型一键部署


模型测试通过之后需要部署啦,部署的话,需要在支持热更新,以及权限分配的功能,热更新则是模型一旦部署上去,则立即生效,那为什么这里要有权限分配,是因为热更新的话,一旦生效,就是到实时环境中生效了,那么如果部署错了,就很麻烦,所以权限分配的功能则是只有部分人可以有一键部署的权限,其他人都需要这部分人审核过模型才可以上线。

 

模型AB测试通道设置


在风控系统中,需要设置ABtest的通道,模型灵活替换风控流程中的模型,则在模型开发完成之初,支持旧通道跑旧的模型,新模型新增一条通道跑新增模型的流程(这个流程中,除了新的模型,其他环节与旧通道一致),以检验新模型是否在整体的风控流程中真的比旧的模型效果好。

 

 

 

 


以上是关于搭建算法平台的架构设计的主要内容,如果未能解决你的问题,请参考以下文章

搭建一个通用监控告警平台,架构上需要有哪些设计

AI系统架构之算法平台设计

Alink漫谈 : 从源码看机器学习平台Alink设计和架构

Alink漫谈 : 从源码看机器学习平台Alink设计和架构

项目需求及架构设计

某城商行开发测试云平台架构设计和运维方案设计实践经验分享