博客相关推荐在线排序学习实践

现有固定槽位的填充召回策略在相关线上推荐服务中缺乏有效的相关性排序,存在较硬的排列顺序,各个策略之间互相影响,导致线上基于规则的拓扑图比较复杂,因此设计在线推理服务,通过学习用户行为完成在线排序。

1. 博客相关推荐现状

博客相关推荐现在基于固定槽位填充的方式。

1.1 召回现状

1.1.1 基于曝光搜索词召回

  1. 统计时间窗内搜索词pv数据,过滤无效搜索请求,通过衰减系数约束历史pv计算综合得分更新到 全量搜索词表中;
  2. 按照搜索词分组,根据分数倒排得到 query to blog_id 列表;
  3. 按照 blog_id分组,根据分数倒排得到 blog_id to query 列表;
  4. 步骤2和步骤3结果关联,计算 id_score * id_score 取top25用于召回;

1.1.2 基于点击行为召回

    根据已经曝光的博客计算平滑后的ctr,根据ctr结果进行倒排;

1.1.3 基于专栏召回

    在博客归属的专栏中根据文章阅读数进行排序,给出推荐其专栏内其他文章;

1.1.4 基于opensearch召回

    调用opensearch服务 召回搜索数据

1.1.5 其他召回

  • 召回博客/下载同标签下的数据

1.2 过滤

  • 相关推荐的去重过滤
  • 下载和学院课程资源的图片非法值过滤策略

1.3 组合

  • 先插入5条点击召回资源,再插入5条曝光搜索词召回资源 ,再插入5条opensearch召回资源。
  • 当召回不足的情况下增加兜底的热数据 / 或者用于代替热数据的同标签下或同专栏下内容数据
  • 相关推荐内容中按照槽位增加插入原力计划云原生的内容

2 在线推理框架设计

2.1 在线推理时序图

3. 上线遇到的问题

3.1 在线推理耗时较长,增加redis缓存

    小流量实验上线后经过特征服务和模型服务处理,相关推荐总耗时会增加约200ms,分析发现,特征服务异步调用blog特征、下载特征、媒资特征以及landing特征的耗时较长,所以将获取到的特征数据进行缓存;

3.2 增加异步处理逻辑,获取多源特征

    特征服务异步调用blog特征、下载特征、媒资特征以及landing特征的耗时不一致,通过异步处理减少串行处理的时间;

3.3 缓存必要的特征数据,提高有效缓存个数

    线上缓存数据库监控发现,资源占用较高,导致redis key 逐出率过高,通过缓存必要的特征数据,提高缓存利用率;

3.4 tf-serving服务中,拆开embedding逻辑到特征服务

     模型排序依赖文本信息的embedding处理,且耗时较多,因此将向量化模块做成独立服务在特征服务模块异步调用,充分利用等待时间;

3.5 优化处理流程图

    现在执行流程图中执行逻辑是先执行完第一层所有的节点,才能执行第二层节点,媒资和query特征所需时间较短,需要等待耗时最长的blog特征,并且媒资中的title和landing的query 信息需要embedding 操作,就导致时间利用不充分。通过图嵌套模式将多个子任务封装到一个大任务中,实现

如下图所示,右侧优化后能充分利用等待获取blog特征的间隙,节约出embedding的耗时: 

4. 模型效果

4.1 模型重排实验离线结论:

  • 标注团队标注了789个case的理想序
    query_pair总数:7643
    base(线上): 正序对数:4258, 逆序对数:3385, pnr: 1.2579;ndcg: 0.8249
    model(重排): 正序对数:4584, 逆序对数:3059, pnr: 1.4985; ndcg: 0.89227
    模型重排正序对增加 326对
  • 自评 GSB=6: 5: 2
    标注团队 GSB=40:50:10

4.2 胜出率情况:

第三条的胜出率最高 57.5%、Top5胜出率65%;

位置GSB胜出率
第1条1382554.0%
第2条1676854.0%
第3条1585057.5%
第4条1385255.5%
第5条1481554.5%
Top5整体40501065.0%

注:胜出率=(G+S/2)/(G+S+B)

4.3 Goodcase:

case1

原文title:常见mimeType大全

备注:左1,左2相关性差,右版明显胜出

位置线上base排序模型

首条

weblogic安装部署以及常见问题解决不相关常见文件对应的MIMEType类型

第2条

MIME 文件集列表弱相关史上最全的mime-type大全
第3条常用文件的mime和mimetype.txtMIME Type介绍
第4条Android MIME类型mime type类型详解
第5条MimeType对照表MIME type 类型大全

case2

原文title:程序运行报错:A JavaScript error occurred in the main process

备注:左1不相关,右版明显胜出

位置线上base排序模型

首条

An internal error occurred during: java.lang.NullPointerExcepti...不相关代码编译/程序运行报错:A JavaScript error occurred in the main process

第2条

打开电脑出现错误A JavaScript error occurred in the main process解决方法打开电脑出现错误A JavaScript error occurred in the main process解决方法
第3条如何解决一些日常的电脑弹窗故障( Error A JavaScript error occurred in the main process)A JavaScript error occured in the main process
第4条代码编译/程序运行报错:A JavaScript error occurred in the main processMongoDBCompassCommunity启动的时候出现a javascript error occurred in the main process
第5条A JavaScript error occured in the main process关于安装Fiddler出现 A JavaScript error occurred in the main process 问题解决

4.4 Badcase:

case1

原文title:Modelsim 安装步骤详解

备注:右1,右2弱相关,没有“安装”,左3不相关,右版落败

位置线上base排序模型

首条

Quartus II和Modelsim安装破解步骤ModelSim仿真实例教程弱相关

第2条

quartus II modelsim 破解安装教程ModelSim的使用详解弱相关
第3条计算机网络(谢希仁-第八版)第五章习题全解不相关Modelsim的安装教程
第4条modelsim安装步骤安装ModelSim的详细步骤:
第5条ModelSim SE 10.4安装破解教程入门数字集成电路设计系列(一)——Modelsim安装及破解过程记录

4.5 模型选择

第一版模型选择树模型,有助于我们分析现有特征的重要度,以及模型效果分析时帮助我们问题溯源。

树结构的可视化:

5. 附录 

性能

模型部署环境:docker 1C2G

测试环境:2C8G

测试工具:jemeter

线程数循环次数参数列表个数样本个数平均值中位数90%95%99%最小值最大值失败吞吐量接收KB/sec发送KB/sec
10010010100003634547112342400542.95 152.70 672.85 
1001005010000154115289338985424950273.94 230.60 1459.33 
10010101000463210212814652260377.79 104.41 466.33 
10010501000544311917018451930374.25 315.41 1989.31 
50201010003525758212451650342.23 95.25 422.44 
50205010003223629011451250363.50 309.19 1930.41 

               

模型部署环境:16C128G

线程数循环次数参数列表个数样本个数平均值中位数90%95%99%最小值最大值失败吞吐量接收KB/sec发送KB/sec
100100在线推理-POST请求-5010001108422424936873790259.6053998218.78853521380.16777
100100在线推理-POST请求-1010001035632441545744700312.402374386.33776554385.9267612
5020在线推理-POST请求-501000593016319339933990308.8326127260.27592261644.593982
5020在线推理-POST请求-101000644113718731724040276.090557776.8416103341.0689018

文章作者: 李永 & 卫亮亮 & 王品

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/8574.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数通王国历险记之TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记(1) 前言 一,我们要先知道PDU是什么? 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1,拓扑图 2.将lsw4配置一下 3,FTP服务器端开启FTP服务: 4&#x…

本地新项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮,新建一个项目 新建空白项目 项目名称与本地新建项目名称相同,其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下,右击 git bash here打开命令窗口 初始化…

机器学习21:机器学习工程落地注意事项-I

目录 1.静态训练与动态训练 1.1 如何选择训练方式? 2.静态与动态推理 2.1 离线推理的优缺点 2.2 在线推理的优缺点 3.数据依赖性 3.1 可靠性 3.2 版本控制 3.3 必要性 3.4 相关性 3.5 反馈回路 4.参考文献 到目前为止,【机器学习1&#xff5e…

小型中文版聊天机器人

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、简单介绍与参考鸣谢 二、数据集介绍 三、数据预处理 1、重复标点符号表达 2、英文标点符号变为中文标点符号 3、繁…

中北大学 - 信息对抗大三下学习课程设计(爬取招标网站,进行招标分析,数据保存execl中)

文章目录 1. 题目描述2. 项目细节分析定时爬取任务思路避免多次爬取数据重复问题网站结构根据爬取信息确认招标地区 3. 项目代码4. 运行截图 1. 题目描述 中北大学信息安全技术爬虫课程设计 题目 5:招投标信息分析系统 (20050441 2005031113&#xff09…

在 7 月 4 日,PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部

在 7 月 4 日,PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部 DEX PancakeSwap(POSE/ZBC 交易对),在 $POSE 开盘交易的 10 分钟内,其最高涨幅达到了 2169.22%,所有的早期投资者基本都从中获得了不菲的…

Kafka入门, 消费者工作流程(十八)

kafka消费方式 pull(拉)模式: consumer采用从broker中主动拉取数据。 Kafka采用这种方式。 push(推)模式: Kafka没有采用这种方式,因为由broker决定消息发送速率,很难适应所有消费者的速率。例如推送速度是50m/s,consu…

Ant Design4中Form.List和shouldUpdate一起使用的坑

背景 在antd3.x版本中,如果要实现一组表单增加删除的功能,需要Array.map()加上state状态来控制,代码比较复杂,而且非常不优雅。 其次在antd3.x中,表单中任何一个表单项的内容更新都会触发页面重新渲染,这在…

SpringBoot整合minio服务(超详细)

一、使用docker部署minio 1、拉取镜像 docker pull minio/minio 2、创建目录 mkdir -p /home/minio/config mkdir -p /home/minio/data 3、创建Minio容器并运行 docker run -p 9000:9000 -p 9090:9090 \--nethost \--name minio \-d --restartalways \-e "MINIO_ACC…

nginx

Nginx yum安装 配置Nginx的yum源 [nginx] namenginx repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck0 enabled1安装以及重启,检查 yum -y install nginx 默认安装最新版本 启动 关闭 重启 加载 systemctl start/stop/restar…

《安全软件开发框架(SSDF) 1.1:降低软件漏洞风险的建议》解读(三)

安全软件开发框架SSDF是由美国国家标准与技术研究院发布的关于安全软件开发的一组实践,帮助开发组织减少发布的软件中的漏洞数量,减少利用未检测到或未解决的漏洞的潜在影响,从根本上解决漏洞防止再次发生。本文根据《Secure Software Develo…

基于 Opencv python实现批量图片去黑边—裁剪—压缩软件

简介 批量处理图片文件,批量提取GIF图片中的每一帧,具有范围裁剪、自动去除黑/白边、调整大小、压缩体积等功能。 先看一些软件的界面,是基于Tkinter写的GUI 裁剪等功能基于Opencv 下载 我添加了处理GIF的github: 原作者的gith…