145
阿里云
自定义算法开发__产品简介_推荐引擎-阿里云
本节简要说明在RecEng中开发自定义算法的过程,具体技术细节参见离线算法开发手册、在线算法开发手册、实时修正算法开发手册。
自定义算法和RecEng预置的系统算法的区别在于自定义算法只有开发者自己可见,而系统算法所有客户可见。
离线算法开发
RecEng的离线计算都运行在MaxCompute(原ODPS)上,所有的离线算法都用Java编写,需要符合MaxCompute的要求。MaxCompute支持的三类离线算法,包括SQL脚本,MapReduce程序,和基于图模型的算法,这三类算法都可以用于开发RecEng的自定义算法。RecEng做的工作是把离线算法组织成为算法流程,以类似批处理的方式运行。为了达到这个目的,RecEng提供了一套SDK,负责向客户自定义算法传递上下文参数,并接收客户自定义算法的输出,根据算法流程的配置再将其传递到对应的算法节点。
所以客户在开发自定义算法时分为以下几个步骤:
1.下载离线算法开发SDK包,包中已经包含所需的MaxCompute依赖库。
2.将SDK包集成到本地开发工具,如eclipse中。
3.开发遵循MaxCompute规范的离线算法,可以是SQL脚本,MapReduce程序,或图模型程序,并单元测试。MaxCompute上离线算法的开发和测试请参考大数据计算服务MaxCompute快速入门手册中运行SQL、编写MapReduce、编写Graph等章节。
4.利用RecEng的SDK将算法集成到RecEng框架中。
5.在RecEng的算法注册页面上将开发好的jar包注册到RecEng中。客户只需要把自己开发的程序编入jar包即可,SDK及依赖包都不需要编入。
6.注册完成后即可在算法流程配置界面中使用自定义算法。
也可以参考离线算法开发样例
在线算法开发
在线算法开发相对简单。在线算法由Node.js编写,都运行在RecEng的在线环境中,客户不需要准备运行环境,直接在RecEng的在线代码开发页面上编写代码并提交即可。
和离线算法一样,在线算法也是有类别的,如前所述,在线算法的类别由输入输出的标准数据集决定,客户在编写在线算法时,首先在在线代码开发页上确定在线算法的类别,明确算法的输入输出后即可编写。编写完成后可利用自定义的默认参数功能进行单元测试。
所有这些操作都在RecEng中完成,客户不需要配置Node.js环境。
虽然RecEng提供了多种实时流程,应用在这些实时流程中的自定义在线算法其实区别并不大。以推荐流程的在线流程(rec_path->online_flow)为例,自定义在线算法需要从环境变量CTX中获取各种必要的数据,也可根据需要去指定读/写保存在在线存储中的某些数据,不过出于安全的考虑,所有读/写外部的在线存储都需要通过指定的SDK进行访问,不允许自定义代码直接访问外部在线存储。获得了所有必要的信息后自定义代码执行逻辑,并将最终输出的结果也保存在环境变量CTX中。RecEng会自动将CTX中的结果发送出去。
实时计算和离线计算最大的区别在于实时计算要追求低延迟,用到的数据是在某个窗口之内的,而离线计算用到的是全量数据。所以在编写在线算法的时候要注意算法的效率,每一次访问在线存储,每一次大循环都会造成round-trip(RT)的增加。比如对推荐API来说,不考虑传输延时的情况下,仅由计算导致的时延不要超过50毫秒;一般来说,每次读取在线存储的时间代价大约是2-5毫秒;此外还需要预留一些时间给系统,这部分时间大约是15-20毫秒左右,所以推荐API中,所有自定义在线算法的总时延最好不要超过20毫秒。
最后更新:2016-11-23 16:04:13
上一篇:
全流程规范__产品简介_推荐引擎-阿里云
下一篇:
测试__产品简介_推荐引擎-阿里云
Phpwind如何存储远程附件到oss__ossftp_常用工具_对象存储 OSS-阿里云
锐化__图片效果_图片处理指南_对象存储 OSS-阿里云
万网接入__CNAME绑定教程_用户指南_CDN-阿里云
续费降配__购买实例_购买指南_云服务器 ECS-阿里云
服务打包__线上服务发布_开发者指南_企业级分布式应用服务 EDAS-阿里云
ALIYUN::ESS::ScalingGroupEnable__资源列表_资源编排-阿里云
处理-使用访问日志统计__最佳实践_日志服务-阿里云
搭建VPN网关__最佳实践_用户指南_专有网络 VPC-阿里云
步骤 2:创建Windows实例__快速入门(Windows)_云服务器 ECS-阿里云
PhysicalConnectionType__数据类型_API 参考_云服务器 ECS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云