百度作为国内最早发力大数据,人工智能领域的公司,很多大数据服务都走在国内的行业前列。今天详细看了下百度提供的服务,觉得很多地方都值得我们学习借鉴。
百度大数据服务系统架构
RecSys提供了的服务包括:数据录入,数据存储系统,推荐策略离线计算,推荐索引,在线推荐。
对于用户,需要提供以下数据:
- item相关信息,比如电影的meta信息。
- 用户的行为日志,比如产品线的点展日志。
数据的提供和服务的使用都是通过Rest API,推荐策略生成,数据存储管理对于用户来说都是一个黑盒子,无需用户干预。后台使用Hbase来存储和管理用户提供的训练数据,对于pb级别的数据,也只有Hbase这样的分布式存储解决方案才能满足需求。
离线计算模块提供了多种推荐算法的解决方案,每个算法的简介,适用场景,优缺点,都在官网有着详细介绍。
用户通过Rest API提交数据后,需要等待一定时间,整个系统会自动进行离线计算,生成推荐模型,也就是架构图中的推荐索引系统。随后用户使用约定好的Rest API, 调用推荐服务。
平台服务架构优缺点
优点:
- 操作简单,整个平台架构通过Rest API进行数据交换,服务调用,用户无需关心复杂的算法实现, 不用去做性能調优,最大的简化了项目开发人员的压力。
- 所有数据,模型存储在百度的分布式存储平台,用户不用去关注数据存储,负载均衡, 没有服务器维护压力。
- 对于百度来说,大量高质量的数据汇聚,存储在自身云平台,这些数据具备再次分析的价值。
- 平台代码,细节保密。由于现在流行的机器学习工具都使用Python, Python源码可见,无法像C/C++这样这样的语言,把源代码编译成二进制文件,因此通过web services调用的方式,可以避免用户直接接触源码。
缺点:
- 无法个性化定制,所有服务都被限定死了,无法根据实际需求更改。
- 如果后台完全纯自动化的进行模型训练,没有做特征工程,没有模型調优,最终的准确率不会很高。
- 如果是敏感数据,不安全。
总体来说RecSys的推荐系统非常适合不具备人工智能开发能力,但对智能的推荐有着比较强烈需求的公司。其通用的架构模式,与传统软件服务模式的差别,也值得我们参考。
</br>
Reference
文中相关细节,截图来自百度RecSys文档。
http://recsys.baidu.com/recsys/doc?tpl=index&doc=SystemIntroduction&castk=LTE%3D#