如何支持研发对CSDN个性化推荐系统重构

article/2025/7/1 7:14:39

目录

    • 大地图
    • 工具构建
    • 数据治理
    • 保持发布
    • 重视测试
    • 小结
    • 引用

一个以内容服务为主的软件,它的推荐系统在数据侧对软件产生着举足轻重的作用。数据的三个方面决定了这个内容软件的档次。

  • 数据的质量好坏
  • 数据和用户需求的相关性好坏
  • 数据的层次体系好坏

通常,我们说的推荐,包含了两类不同的推荐

  • 内容详情页下的相关推荐
  • 软件主视图的各种推荐等信息流,属于【个性化推荐】部分

本文介绍的是我们在CSDN的软件主视图的各种推荐等信息流部分的持续改进工作。这部分在各种不同的技术浪潮下,容易发生这些问题

  • 优先级不高,整个系统处于年久失修状态
  • 推荐系统依赖的数据链路不通,数据处于不健康状态
  • 研发人员的多次转换,后面新增的代码和前人加的代码之间有矛盾和冲突的地方
  • 最可怕的是,一些策略事实上已经出错,但是也无人知晓和改进
  • 缺乏最新的构架和全局链路信息地图

本文侧重在个性化推荐系统治理中的4种重要的工程保证:

  • 梳理大地图:有持续维护的最新构架和全局链路信息地图
  • 工具构建:支持必要的数据解析和非常规的调试工具
  • 数据治理:持续梳理和简化数据侧的工作
  • 保持发布:坚决执行SMART原则,拆和推进的能上线的任务
  • 重视测试:深入细节的测试

大地图

首先我的同事介绍了在《CSDN个性化推荐系统的设计和演化》,介绍了许多在服务代码层面做的持续的重构工作。这部分工作基本上需要持续有耐心地将系统的每个部分都梳理、重构、迭代、上线。

系统治理的角度来说,服务代码的直接重构是系统中的一个最重要的环节,但不是全部。这是因为这样的系统包含对多个部分的理解:

  • 服务接口部分:下游如何使用系统的接口,下游对推荐服务的接口做了哪些进一步的加工工作后,才能和应用层对接上。
  • 服务策略部分:也就是推荐服务本身(如上文章)
  • 服务数据部分:在上述文章里构架图里的Habse的数据来自哪里?

所以,从系统治理的角度,大概构架图这样的:
在这里插入图片描述
在系统治理的过程中,需要完整的梳理3个环节是如何工作的:

  1. 聚合接口部分如何工作
  2. 个性化推荐和策略配置部分如何工作
  3. 数据源部分如何工作,和配置之间的关系(包括:定时计算服务、数据仓库的几十个计算任务、以及流式计算部分)

没有全链路信息,我们就是在盲人摸象,这是系统工程,需要严肃的工程和数据质量

在整个系统治理期间,工程上的做法是:

  • 从头到位维护一份持续更新的个推数据管道流向的文档
    • 使用分层、表格梳理的方式梳理全链路的数据流向
      • 以数据流动和朔源为驱动
        • 服务研发、测试、数据研发联合持续更新

工具构建

我们都知道,在工程上,维持开发/测试/正式三件套的完整分离的环境对于健康项目的迭代是非常重要的。但是我们也经常遇到一些系统由于历史的各种原因,并不完整的具有开发/测试/正式三件套环境。这给开发、测试和验证功能带来了很大的麻烦。

但是作为工程师,我们必须解决问题,有时候不能等着理想环境的出现(这是一个代价的问题)。因此,我们支持研发花时间构建在线上系统诊断工具。这个系统原有一些简单的线上接口调试信息获取能力。但是对于初期诊断那些疑难问题还是信息不够。这部分也是通常所的「可观测性」。

我的同事付出努力,构建了一套相对完备的易于使用的线上系统诊断 inspect 接口,这位后续的诸多问题定位解决带来了极大的便利。

其次,该推荐系统的策略配置一堆json定义的组合配置,代码中需要解析这些组合配置动态构建出策略树,本质上是一个有向无环图的数据结构。这里的问题是配置的和代码之间的映射,如果单靠看配置是很难定位和诊断问题的。旧的工程师也开发了一个可视化的工具来呈现这个有向无环图,但是

  • 一方面这些工具久无维护就失去了时效性
  • 另一方面策略多了之后,可视化工具也并不方便查看
  • 最后在节点和源代码之间的映射信息不够完全,难以直接映射

这个问题一度是研发中的瓶颈问题。这个和前一节是一样的:在系统治理中,如果没有好的工具支持对全局信息或者局部重要信息的快速定位,它就会成为解决问题的瓶颈

于是,我们写了一个策略配置的解析工具,将线性的配置,解析成符合实际代码嵌套的管道紧凑json,将有向无环图的骨架快速展示出来,便于定位和诊断,包含多种中间格式的数据。实际上这是一种复合利用文本解决问题的Unix风格做法。

在这里插入图片描述
图示是一个小的策略配置例子,具体信息对于系统研发来说有着具体的含义,这样的组合链路,如果繁杂起来但是没有便利的展示,用以快速定位到源代码中具体的类和配置,会十分费劲。

这部分,我们的经验是:投资工具,使得系统问题诊断能快速而直接,从而让研发循环周期更小。

数据治理

我们在系统治理过程中,遵循一些原则使得系统逐渐更加简单可依赖:

  • 尽可能简化服务代码层的工作,服务代码层做有技术含量的策略配置和反馈机制
  • 尽可能在数据层解决问题,因为数据层的工作在可维护上研发周期更短,小到按小时就可以解决。

这部分的工作。我们数据层的研发同事会有专门的技术博客分析:《CSDN 个性化推荐的数据治理

但是我们在这个过程中,坚持持续的梳理所有的数据计算任务:

  • 清理旧的实效的数据
  • 合并冗余的策略
  • 减少特异性规则
  • 使用上AI层的新的结构化数据特征
  • 构建完备的控制api

这层工作,核心是要体现:数据驱动。

保持发布

大的系统治理,有一个麻烦的地方在于如何保持迭代周期。在工程上,有一个重要的原则是:“保持发布是硬道理”。如果某个工作,想的太多,想要改造的步伐太大,常常会导致系统在工程上不收敛,这是绝大部分研发都会遇到的问题。

不过我们通过一些策略,比较合适的规避了这样的问题。大概有这些方式:

  • 有了大地图,使得我们能比较清晰地判断:
    • “这是一个适合在数据层解决的问题”
    • “这是一个适合在策略层解决的问题”
    • “这是一个适合在聚合层解决的问题”
  • 有了工具,使得我们能在DAG部分的配置快速定位问题
    • “根据这个链路骨架,出问题的应该是这个环节”
    • “根据这个链路骨架,可以在这层加入特性解决问题”
    • “根据这个链路骨架,这两层做的事情是冲突的,应该合并到一起”
  • 有了数据层的梳理,使得我们可以快速确认
    • “快速找到数据的源头,检查数据源头是否有问题,如果能通过源头解决,中间就不要动”
    • “数据层可以做更多的事情,提供更完备信息后,策略层就可以去掉一大块原来很绕的逻辑…”

对于需要多环节配合的任务,一般的方式是:

  • 数据侧先准备数据
  • 数据层的数据ready后,策略层再跟进改进
  • 测试验证策略层接口没有问题后,先通过api发布的方式迭代上线
  • 策略层api已经ready后,再推进聚合层接口的改造…

通过多阶段的发布,避免端到端研发带来的各种弊端。

重视测试

关键的一部分,我们的测试熟悉系统每个环节的工作原理。使得测试能在每个环节的迭代中,深入细节的做白盒测试。这对于这样的系统治理来说非常关键。这部分的工作,我们的测试也会有相关的技术博客:《CSDN个性化推荐系统-负反馈测试》

小结

良构的数据系统,才能带来良构的生态,从而上层目标的搭建才不会建立在一堆已经不正确工作的系统产生的数据指标之上。

引用

[1] 《CSDN个性化推荐系统的设计和演化
[2] 《CSDN 个性化推荐的数据治理
[3] 《CSDN个性化推荐系统-负反馈测试

–end–


http://chatgpt.dhexx.cn/article/aA8PthW8.shtml

相关文章

智能个性化推荐系统设计

推荐系统构成 * 召回层 - 对海量的数据进行召回 * 排序层 - 对召回后的数据进行排序,排序结果返回给用户 推荐系统架构 基于物品的推荐系统架构 基于用户的推荐系统架构

个性化推荐系统设计(4.1)——案例分析

在过去的十年中,神经网络已经取得了巨大的飞跃。如今,神经网络已经得以广泛应用,并逐渐取代传统的机器学习方法。 接下来,我要介绍一下YouTube如何使用深度学习方法来做个性化推荐。 由于体量庞大、动态库和各种观察不到的外部因素…

141.如何个性化推荐系统设计-1

141.1 什么是个性化推荐系统? 个性化推荐系统就是根据用户的历史,社交关系,兴趣点,上下文环境等信息去判断用户当前需要或潜在感兴趣的内容的一类应用。大数据时代,我们的生活的方方面面都出现了信息过载的问题&#…

下一代个性化推荐系统

本文结合技术及社会需求发展的大背景,讲述了当前推荐系统的价值及所面临的挑战,并指出了下一代个性化推荐系统的设计思路及需要注意的问题。 作为个性化推荐系统核心的协同过滤(Collabora-tive Filtering)算法,是Goldb…

基于大数据的个性化推荐系统

随着互联网时代的发展和大数据时代的到来,人们逐渐从信息匮乏的时代走入了信息过载的时代。为了让用户从海量信息中高效地获取自己所需的信息,推荐系统应运而生。 推荐系统的主要任务就是联系用户和信息,它一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在…

CSDN 个性化推荐系统的设计和演进

个性化推荐项目 个性化推荐的设计和演进项目概览项目梳理依赖管理实现代码的重构和改进持续演化 个性化推荐的设计和演进 CSDN 的个性化推荐系统,是从既有的推荐项目中剥离出来的一个子项目,这个项目随后移交到了我们AI组。在近一年的时间内&#xff0c…

【个性化推荐系统】简介

个性化推荐系统-简介 1. 推荐系统简介2. 推荐系统产生背景3. 推荐系统的作用4. 推荐系统和Web项目的区别 1. 推荐系统简介 ​ 个性化推荐 (推荐系统) 经历了多年的发展,已经成为互联网产品的标配,也是AI成功落地的分支之一,在电商(淘宝/京东…

个性化推荐系统研究综述

从最初接触个性化推荐系统已过去六天。今天是第七天,完全可以对前六日的学习做出复盘。推荐系统并没有如同网络上那般盛传的玄秘深晦,而是直白到令人一眼看穿。 本文从六个层面总结个性化推荐系统: 在用户建模上,详细总结了用户…

个性化推荐系统实践应用

个性化推荐已经成为现代人们生活的一部分, “猜你喜欢”、“相关阅读”你一定并不陌生。计算机如何做到对用户投其所好?企业在做个性化推荐时要如何精准把握用户兴趣?如何解决冷启动问题?如何避免推荐结果的单调与重复&#xff1f…

新闻个性化推荐系统

新闻个性化推荐系统 一、绪论及背景1.1、绪论1.2、背景1.3、发展历史 二、需求分析2.1、功能需求2.1.1、用户功能需求2.1.2、运营功能需求2.1.3、算法功能需求 2.2、非功能需求2.2.1、性能需求2.2.2、准确性需求2.2.3、稳定性需求2.2.4、可靠性需求 三、详细设计3.1、系统结构设…

【推荐系统】什么是好的推荐系统?个性化和非个性化推荐

最近在写一些关于推荐系统的介绍,找了不少案例及资料,总觉得不够具体及深入,没有一些可作为基础及科普类,于是萌生自己来写一篇试试。 定义:推荐系统是信息过滤系统的子类,旨在预测用户对产品或服务的“评…

个性推荐①——系统总结个性化推荐系统

个性推荐系列目录: 个性推荐②—基于用户协同过滤算法原及优化方案 个性推荐③—基于物品的协同过滤算法及优化方案 本文是整理于个性推荐经典之作《推荐系统实战》,将会以十个大家最想问的问题,揭开个性化推荐系统的神秘面纱(文…

个性化推荐算法(推荐系统)概要

读者读完本文后,你会知道每类范式常用的算法有哪些、实现的思路是什么、以及常用的应用场景。本文也可以作为读者落地推荐算法到真实推荐场景的参考指南。 一、推荐算法与产品介绍 什么是推荐系统? 在介绍推荐算法之前需要先介绍一下什么是信息过载。…

深度解析京东个性化推荐系统

向AI转型的程序员都关注了这个号👇👇👇 人工智能大数据与深度学习 公众号:datayx 作者简介: fisherman,时任推荐部门推荐系统负责人,负责推荐部门的架构设计及相关研发工作。Davidxiaozhi&…

个性化推荐系统实践

个性化推荐已经成为现代人们生活的一部分, “猜你喜欢”、“相关阅读”你一定并不陌生。计算机如何做到对用户投其所好?企业在做个性化推荐时要如何精准把握用户兴趣?如何解决冷启动问题?如何避免推荐结果的单调与重复&#xff1f…

Scratch Paper Minecraft

Paper Minecraft Scratch 也能创造奇迹 几乎还原了Paper Minecraft,我的世界2D版。| o | 注:文章末尾有下载链接。❤

指纹传感器和Blackfin处理器增强了生物识别设备的设计

生物识别与安全 在当今世界,对有效安全实施和有效实施的需求日益明显。必须确定个人身份以允许或禁止访问安全区域,或使他们能够使用计算机,个人数字助理(PDA)或移动电话。生物特征签名或生物特征用于通过测量某些独特…

js学到什么程度学框架_如何学到什么

js学到什么程度学框架 Set a target, learn just enough to hit it, teach someone, repeat. 设定目标,学习足以达到目标的目标,教某人,然后重复。 JavaScript’s my craft. JavaScript是我的技能。 Despite my young career, no other ski…

java开发简单解释器,实现一个简单的解释器(5)

你如何处理和了解像创建解释器或编译器这样复杂的事情?在开始时,一切看上去都像是一团乱七八糟的纱线,你需要解开缠结才能得到完美的球。 到达那里的方法是将它解开一个线,一次解开一个结。不过有时候,你可能会觉得自己…

【“笨办法”学Python】43.基本的面向对象分析和设计——自顶向下、自底向上

43.基本的面向对象分析和设计 文章目录 前言一、解决问题的方法——流程1、自顶向下(top down)2、自底向上 二、代码示例三、运行Python程序总结 前言 使用Python,尤其是通过面向对象编程(OOP)方式构建一些东西的流程。 一、解决问题的方法——流程 所谓按照流程就是…