首先,附上 Github 链接
MetaSpore:https://github.com/meta-soul/MetaSpore
可搜索公众号元灵数智,在底部菜单了解我们 - 用户交流获取官方技术交流群二维码,进群与业内大佬进行技术交流。
本周三(3 月 31 日),数元灵发布了新一代一站式机器学习平台 MetaSpore。详见重磅!基于新一代MetaSpore平台快速搭建工业级推荐系统,这篇文章详细介绍了如何使用 MetaSpore 提供的开源组件,完整地搭建一个包含离线算法训练、在线预测服务、在线算法实验的工业级推荐系统。那么 MetaSpore 是怎样做到让原本复杂的推荐系统算法工程走出互联网大厂,走向广大的中小企业和开发者的?这篇文章将为您揭开 MetaSpore 的面纱,阐述其核心设计理念。
什么是一站式机器学习平台?
谈到机器学习,大家会联想到TensorFlow、PyTorch 等各种耳熟能详的机器学习框架,在 GitHub 上也能找到很多的模型实现 Python 代码。然而,在一个具体的业务场景,需要落地算法模型,往往还有很多的路(坑)要趟。以推荐系统为例,在真实业务场景落地时还会遇到如下几类问题:
1.训练数据(样本)怎样生成?在推荐场景,往往需要将曝光、点击等用户反馈信号和各类特征来源进行拼接,进行必要的特征清洗提取,对数据进行划分验证集、负采样等各类复杂的处理。这些处理通常无法在机器学习框架里实现,我们需要一套大数据系统来处理各类批量或流式的数据。
2.训练数据在大数据平台生成后,怎样传给深度学习框架?TensorFlow、PyTorch 等框架都有各自的数据输入格式以及对应的 DataLoader 接口,需要开发者实现数据解析。怎样处理数据分片、变长特征等问题往往困扰着算法工程师。
3.如何运行一个能够自由调度集群资源,包括 GPU的分布式训练?可能需要一个专门的运维团队来负责管理机器学习相关的硬件调度。
4.怎样训练稀疏特征模型,怎样使用 NLP 预训练模型?在推荐场景,我们需要能够处理很大规模的稀疏特征来建模用户和商品之间的兴趣关系。同时多模态模型融合也逐渐成为前沿的方向。
5.模型训练完成后,怎样才能高效地进行在线预测?除了集群资源,还涉及到弹性调度、负载均衡。而这些问题在异构环境下(同时有 CPU、GPU、NPU),还需要资源的动态调配。对于复杂的模型,还需要蒸馏、量化等各种手段来保证预测的性能。
6.模型上线后,在线系统怎样抽取拼接特征,如何保证在离线特征一致,并量化评估算法效果?我们需要一个能够和在线系统有机整合,读取各类在线的数据源,并提供多层 ABTest 流量实验功能的在线算法应用框架。
7.算法实验要怎样进行高效迭代?我们希望能够快速进行多个并行的实验,提升业务效果,而不是被繁杂的系统环境配置束缚了手脚。
以上问题在互联网大厂往往需要通过多个团队、维护多套不同的系统进行解决。如图所示,搭建一个完整的、工业级的推荐系统相当的复杂且繁琐,需要相当多的不同领域知识和工程开发投入。而中小企业不仅缺乏人手,也缺少一个一站式平台来规范地解决上面这些问题。
来自 Netflix 算法工程团队分享的推荐系统总体架构
MetaSpore一站式机器学习平台详解
我们开发并开源 MetaSpore 的初衷是希望基于MetaSpore的特性帮助企业和开发者解决算法业务开发过程中遇到的各类问题,利用标准化的组件和开发接口,提供一站式的开发体验,满足企业和开发者获得算法业务开发最佳实践的需求。具体来说,MetaSpore 有如下几个核心功能设计理念:
1.模型训练与大数据系统无缝集成。MetaSpore能够直接读取各类数据湖、数仓的结构化及非结构化数据进行训练,并将数据、特征预处理和模型训练无缝衔接在一起,省去繁琐的数据导入、导出和格式转换过程。
2.对稀疏特征的支持。在搜广推的场景,往往需要训练大规模的稀疏 Embedding 层,并且涉及到对稀疏特征的一些处理,例如交叉组合、变长特征 pooling 等,这些需要训练框架的特殊支持。
3.提供高性能的在线预测服务。在线预测服务能够支持神经网络(包括稀疏 Embedding)、决策树以及各种传统机器学习模型。支持异构硬件计算加速,降低在线部署的工程门槛。
4.统一的在离线特征计算。通过统一的特征格式和