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

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

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.mfbz.cn/a/34773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】数据链路层之随机接入-CSMA/CD协议(总线局域网)

1.概念 2.信号碰撞(冲突) 3.解决方案 CSMA/CD 4.争用期(端到端往返时延) 5.最小帧长 6.最大帧长 7.指数退避算法 8.信道利用率 9.帧发送流程 10.帧接受流程 12.题目1 13.题目2 14.题目3 15 小结

数字IC后端学习笔记:等效性检查和ECO

1.形式验证工具 对于某些电路的移植,一般不需要对新电路进行仿真验证,而可以直接通过EDA工具来分析该电路的功能是否与原电路一致,此种验证方法可以大量减少验证时间,提高电路的效率。 等效性检查(Equivalence Check&a…

给LLM装上知识:从LangChain+LLM的本地知识库问答到LLM与知识图谱的结合

第一部分 什么是LangChain:连接本地知识库与LLM的桥梁 作为一个 LLM 应用框架,LangChain 支持调用多种不同模型,提供相对统一、便捷的操作接口,让模型即插即用,这是其GitHub地址,其架构如下图所示 (点此查…

状态检测防火墙

状态检测防火墙原理 对于已经存在会话表的报文的检测过程比没有会话表的报文要短很多。通过对一条连接的首包进行检测并建立会话后,该条连接的绝大部分报文都不再需要重新检测。这就是状态检测防火墙的“状态检测机制”,相对于包过滤防火墙的“逐包检测机制”的改进之处。这种…

ChatLaw:中文法律大模型

论文题目:ChatLaw: Open-Source Legal Large Language Model with Integrated External Knowledge Bases   论文日期:2023/06/28   官网地址:https://www.chatlaw.cloud   论文地址:https://arxiv.org/abs/2306.16092   G…

Compose编排工具应用

补充: Docker Compose 文件:Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。它使用 YAML 文件格式来描述应用程序的各个组件和其配置。以下是一个简单的示例: 在上面的示例中,我们定义了两个服务:web 和…

浅谈金融场景的风控策略

随着互联网垂直电商、消费金融等领域的快速崛起,用户及互联网、金融平台受到欺诈的风险也急剧增加。网络黑灰产已形成完整的、成熟的产业链,每年千亿级别的投入规模,超过1000万的“从业者”,其专业度也高于大多数技术人员&#xf…

Ubuntu 23.10 现在由Linux内核6.3提供支持

对于那些希望在Ubuntu上尝试最新的Linux 6.3内核系列的人来说,今天有一个好消息,因为即将发布的Ubuntu 23.10(Mantic Minotaur)已经重新基于Linux内核6.3。 Ubuntu 23.10的开发工作于4月底开始,基于目前的临时版本Ubu…

通过ioctl函数选择不同硬件的控制,LED 蜂鸣器 马达 风扇

通过ioctl函数选择不同硬件的控制,LED 蜂鸣器 马达 风扇 实验现象 head.h #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{volatile unsigned int MODER; // 0x00volatile unsigned int OTYPER; // 0x04volatile unsigned int OSPEEDR; // 0x08volati…

【Linux】gcc编译过程、make和makefile的概念与区别、Linux简单进度条实现

文章目录 1.gcc编译过程1.1预处理1.2编译1.3汇编1.4链接 2.自动化构建工具-make和makefile2.1使用背景2.2两者的概念和区别2.3项目清理 3.Linux简单进度条的实现 1.gcc编译过程 1. 预处理(进行宏替换)   2. 编译(生成汇编)   3. 汇编(生成…

【NX】NXOpen::BlockStyler::Tree的个人使用类分享

网上关于NXOpen::BlockStyler::Tree的例子不是太多,控件默认id名称为tree_control01,因为例子不多很多功能得自己写,虽然NXOpen::BlockStyler::Tree的封装已经不错了,但是实际使用起来也不是很方便,比如像获取所有节点…

【Git】 Git初相识

文章目录 1. Git的必要性1.1 提出问题1.2 解决问题1.3 注意事项 2. Git的安装2.1 kali下的安装2.3 Windows下的安装 3. Git的配置 1. Git的必要性 1.1 提出问题 在我们的学习或者工作中,经常会遇到一些比较难搞的上司或者老师,让我们交上去的文档改了又…

【UI设计】新拟态风格

新拟态风格 1.有且只有一个光源照射 那作者在追波上按钮也好还是卡片处理也好,仔细观察不难发现,它定了一个光源,是从左上向右下照射的,所以,越靠近光源的部分,越亮,远离光源的越暗(…

Linux进程OOM-kill 监控和规避

目录 一、proc目录简介 二、Linux OOM机制说明 1、OOM killer机制 2、寻找系统中最先被OOM kill的进程 3、修改 oom_score_adj 一、proc目录简介 proc是linux系统中的一个虚拟文件系统,它实际上不含有任何真正的文件,/proc中的文件如同linux内核中的…

Elasticsearch Dump的详细安装和迁移es索引和数据的使用教程

前言 如果希望将数据导出到本地文件而不是通过编程方式处理,可以考虑使用Elasticsearch的导出工具,如Elasticsearch Dump(Elasticdump)或Elasticsearch Exporter。这些工具可以将Elasticsearch索引中的数据导出为可用于后续处理的…

通付盾发布UIAM白皮书,利用区块链、大模型AI,以及无证书分布式身份认证赋能工业互联网

简介 UIAM白皮书结合各行业与国内外IAM发展状况,对IAM发展历程、核心能力以及现代增强型IAM技术的演进路线进行探讨。探索身份和信息安全管理与区块链、大模型AI、无证书分布式身份认证等技术趋势,以及UIAM技术在工业互联网的应用。期望能够帮助企业组织…

Vue3使用element-plus实现弹窗效果-demo

使用 <ShareDialog v-model"isShow" onChangeDialog"onChangeDialog" /> import ShareDialog from ./ShareDialog.vue; const isShow ref(false); const onShowDialog (show) > {isShow.value show; }; const onChangeDialog (val) > {co…

mysql的两种安装方式(yum在线安装和通用二进制)

文章目录 msqly的安装一、yum在线安装二、通用二进制安装mysql msqly的安装 一、yum在线安装 yum是一种在线安装方式&#xff0c;通过官网网址在linux下载安装 首先是配置一个yum安装源 yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm也…

使用Jetpack Compose中的LazyRow

在Jetpack Compose中&#xff0c;我们可以使用LazyRow来创建一个水平滚动的列表&#xff0c;类似于传统Android开发中的HorizontalScrollView。在这篇博客中&#xff0c;我们将探讨如何在Jetpack Compose中使用LazyRow。 创建LazyRow 要创建一个LazyRow&#xff0c;我们需要创…

旧手机不要轻易扔掉,将其设置为无线网卡,不消耗流量

如果你有一部旧手机正在闲置着&#xff0c;或者正考虑要将其丢弃&#xff0c;那么请暂停一下。因为这个旧手机可以成为你的无线网卡&#xff0c;帮助你在家中或出行时实现更快的网络下载速度&#xff0c;而且毫不费流量。接下来&#xff0c;我将告诉你如何将旧手机变成无线网卡…
最新文章