写在前面
这是奇点云全新技术专栏「StartDT Tech Lab」的第5期。
在这里,我们聚焦数据技术,分享方法论与实战。一线的项目经历,丰富的实践经验,真实的总结体会…滑到文末,可以看到我们的往期内容。
本篇由奇点云Java架构与算法架构设计专家「鱼飞」带来:
作者:鱼飞
阅读时间:约8分钟
为什么需要模型工厂?
人工智能(AI)是由计算机、心理学、哲学等多学科交叉融合的交叉学科,对非AI算法从业者来说有着较高的门槛。即便从业者对AI算法有着学术研究领域上的理解,AI算法投入实际使用并产生价值,也就是所谓的AI工程化,依旧困难重重:
在整个算法工程化落地的过程中,掺杂着很多与算法本身不是很相关、但与基础设施强相关的事情,比如环境搭建,资源管理,模型部署,任务监控等。谷歌开发者社区曾有研究表明,“机器学习代码是现实世界生产环境机器学习系统的核心,但它通常最多只占整个生产环境机器学习系统整体代码的5%。”所以我们迫切的需要一套系统性的工具,来降低AI算法的落地门槛,真正的做到开箱即用,触手可达。
模型工厂应运而生。
模型工厂能干啥?
人工智能领域的“模型”是指基于已有数据集,运行机器学习算法,所得到的推理逻辑。
模型工厂是可以生成模型的环境,也就是机器学习集成开发环境,一般包含数据处理、模型生成、模型仓库、推理部署四个阶段。
#1 数据处理
数据处理的目的是标准化数据,确保标准化后的数据可以作为后续各种机器学习算法的输入,减少每次训练都需要的标准化时间成本。主要操作包含样本ID的确定、监督信息与对应特征的关联,以及异常值和缺失值的检测和处理、数据的变换、数据特征工程等处理方法,还包括对数据集的生成、引用、存储方式转换管理等。
#2 模型生成
模型生成通过对数据集的拆分、算法和超参数的设置,对模型进行训练和验证评估,生成模型,并对应评估指标。
#3 模型仓库
模型仓库,包括导入模型、查看、版本管理、检索、删除等。把训练好的模型部署为预测服务,需要首先将模型发布到模型仓库中,进而发布为预测服务。模型仓库支持3种形式,包括系统预装模型、通过模型生成模块生成模型,以及按照约定格式上传本地模型。
#4 推理部署
模型仓库中的模型可以根据离线或实时的使用场景,按照模型的算法类型、框架、格式等,发布成接收新的输入数据并输出推理结果的服务,并且可以配置模型评估监控和增量学习模块。
模型工厂的实践?
以奇点云一个零售客户为例:
我们的目标是完成线上APP的首页及商品详情页的推荐、流失用户预测等功能。以模型工厂的功能为基础,产品运营给出使用场景,数据开发给出对应数据,由算法开发上线算法模型,工程开发部署推理服务,这4个阶段可同时进行。
在环境和模型预装的基础上,只需理清业务,确认好数据接入和输出的格式和对接接口形式,就可以直接部署完成,并能够支持客户更新现有模型和增量数据训练。
下面分别对商品推荐和流失预警中的技术点进行讲解。
商品推荐:
预装的推荐算法模型分为召回和排序两个模块,其中商品召回模块,支持标签关联、热销、个性化、协同及Embedding相关的多路召回模式,可根据使用场景自定义商品的多路召回。排序模块可结合冷启动、实时数据、营销活动策略进行粗排、精排和重排。
流失预警:
该问题常常被归纳为softmax回归问题,通过营销活动的场景,可设置查全率或查准率作为提升指标来训练模型。在此过程中,一个至关重要的问题是如何选择最优超参数。常用的超参寻优策略有穷举、随机、贪婪、贝叶斯优化等。模型工厂设置超参数空间时,可指定超参搜索模式,以平衡模型训练时间和模型提升程度。