0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

企业中的推荐系统包括哪几个部分

Tensorflowers 来源:TensorFlow 作者:黄鸿波 2021-09-24 14:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着互联网的发展和人工智能的进步,各个厂家都开始针对性的向用户推荐自己的内容,这些内容包括了文章、视频、商品以及一些其他的希望被用户看到的内容了,能够让用户有好的内容的体验,更好的捕捉到用户所需要的内容,这背后的成功都归功于推荐系统。

企业中的推荐系统包括哪几个部分

上面是企业中一个常见的推荐系统的架构图,一般来讲,一个完整的推荐系统企业级的架构应该包括数据的存储、业务模型、服务层以及上层对于用户来讲可见的 App 或者一些其他可视化是产品。

数据存储

对于数据存储来讲,几乎是每一个完整的推荐系统必不可少的一个部分,所有的用户数据、候选内容的所有的信息、日志系统以及缓存等,全都属于数据存储的一部分,后续我们要做的与用户相关的画像、内容画像以及其他需要提取的特征信息也全都来自于数据系统。

一般来讲,数据系统是一个很大的概念,它不仅限于某一个数据库,或者某一个数据处理逻辑,而是一整套与数据相关的系统,用于存储用户信息的关系型数据库、用户存储商品信息的数据模型、用于进行大数据运算的数据湖和数据集群等,我们把这些处理数据的系统整合,形成了推荐系统的数据存储部分。

业务模型

业务模型是推荐系统的核心。推荐系统的效果好坏可以说 90% 以上是由于业务模型决定的。在一个推荐系统中,数据系统一般包含三个部分,数据逻辑层、召回层和排序层。

一般来讲,我们当从用户进入到我们的系统的时候,推荐系统就已经在发挥作用了。首先,我们会将用户的数据通过各种数据处理、深度学习或者机器学习的方法进行数据的处理,这一部分的处理一般包括类似于用户日志采集,分词、内容画像、用户画像等,这里可用使用大量的深度学习方式来做。

接下来,我们可以使用这些画像和特征来进行针对于特定用户的内容召回,这里的召回实际上就是通过各种方法来找到用户可能感兴趣的内容。

当找到用户可能感兴趣的内容之后,我们一般会对这些内容进行进一步的筛选和排序,找到在这些内容中,用户最感兴趣的前面的几个或者几十个内容分别是什么,这一步,一般我们称之为排序层。

最后,我们可以将排序后的结果输出给用户进行界面的展示,从而达到最后的推荐效果。

使用 TensorFlow Serving 赋能

目前来讲,无论是数据逻辑、召回层还是排序层,都可以使用很多深度学习的方法来做。例如数据逻辑中有关命名实体识别的部分可以使用 TensorFlow 来实现,召回层可以使用 TensorFlow 来实现 YoutubeDNN 模型并部署到生产环境中,在排序层我们也可以使用 xDeepFM 等深度学习方法来实现。

那么对于这些深度学习模型来讲,最好的模型上线和部署方式莫过于使用 TensorFlow Serving 进行部署了。

由于 TensorFlow Serving 本身就是 Google 自家的产品,也是 TensorFlow 大家族的一部分,因此,使用 TensorFlow Serving 对 TensorFlow 的模型进行部署无疑是最好的选择。

在我所在的企业中,几乎所有的深度学习所涉及到的模型都会被转换成 TensorFlow Serving 的模式进行部署。在使用 TensorFlow Serving 进行模型部署的时候,实际上会有很多个 tricks。

例如,在实际的操作当中,很多人会发现,自己也把模型转换成了 PB 模型,也能自己使用代码的方式加载这个 pb 模型进行推理,但是,放到 TensorFlow Serving 上之后就无法进行推理,然后还会报各种各样莫名其妙的错误。一般来讲,造成这个问题的原因有以下几种。

1. pb 模型转换的类型错误

pb 模型转换的类型错误是大部分 TensorFlow 开发人员常见的错误之一,一般来讲,TensorFlow 可以转换的 pb 文件大致可以分成两种,一种是直接转换成一个 pb 文件,这种文件只是一个以模型名称命名,以 .pb 为格式的单个文件,这个文件一般使用在终端的推理中,比如移动端的推理,或者是给到 C++ 等语言进行模型的调用,但是如果把它直接使用 TensorFlow Serving 进行部署的话,往往就会出错。

实际上,如果想使用 TensorFlow Serving 进行部署,那么我们就需要将我们的模型转换成 Saved Model 格式的 pb 文件。Saved Model 格式的 pb 文件与一般的 pb 文件相比不同之处在于,Saved Model 格式的 pb 文件一般是冻结图文件,它可以更方便的部署。一般来讲,使用 Saved Model 格式进行打包之后,除了模型文件本身,会生成 variables 目录,其中 pb 文件是模型的定义文件,variables 目录下存放的是模型的各个推理所需要的参数。

因此,如果你生成了一个 pb 文件在本地可以推理,但是放在 TensorFlow Serving 中部署的时候不能推理的话,首先看看是不是这里的问题。

2. 在 TensorFlow Serving 中推理的时候没有加入版本标识

有些同学在使用 TensorFlow Serving 的时候,也能够转换成 Saved Model 格式的 pb 文件了,而且在本地验证也没有问题了,但是放到 TensorFlow Serving 的相关服务上就会报错,总是提示找不到版本,一般来讲,这种问题是你导出的模型中没有添加模型的版本号所导致的,我们在 TensorFlow Serving 中进行模型部署的时候,往往都需要在最外层定义一个模型的版本号,而 TensorFlow Serving 也会通过判断模型的版本号来进行模型的更新。

3. 模型没有标明正确的输入输出

有些同学在模型转换完之后,发现无法在推理环境中运行,一直提示输入的 tensor 不正确,这种情况下一般来讲是在对模型进行导出时,没有对输入输出的参数进行命名,从而使得模型使用了标准的命名,导致无法进行推理。

TensorFlow Serving 的性能优化

之前很多人在使用 TensorFlow Serving 在做模型部署的时候,都跟我说它的性能不好,部署 Albert tiny 模型的 QPS 连 50 都不到,还不如使用传统的部署方法,当我跟大家说,我使用 TensorFlow Serving 部署时,在 CPU 服务器上 QPS 能上到 2000 多,在 GPU 服务器上 QPS 甚至能达到 5000 以上,那么,为什么差异会这么大呢?

实际上,如果按照正常的部署方式,没有带任何参数的话,它的并发确实会很低,但是实际上,TensorFlow Serving 给我们提供了针对于高并发的部署方案,在 http://tensorflow.google.cn/tfx/serving/serving_config 中,有一个叫做 Batching Configuration 的配置的示例:

max_batch_size { value: 128 }

batch_timeout_micros { value: 0 }

max_enqueued_batches { value: 1000000 }

num_batch_threads { value: 8 }

这个示例,很大程度上决定了并发的性能。一般来讲,在使用 CPU 部署的时候,我们可以将 num_batch_threads 设置为 CPU 核数的 2 倍加 1,例如我们的 CPU 是 48 核,这里可以设置为 97;当我们使用 GPU 进行部署的时候,这里面的 num_batch_threads 最好设置为 GPU 的个数。这样的设置,能够最大的程度上利用到我们的 CPU 和 GPU,使得并发提高。

在部署方面,TensorFlow Serving 给我们提供了 2 种大类别的 docker,一个是 GPU 的一个是 CPU 的,这个在做 docker 部署的时候一定要注意区分,否则很容易导致部署之后的性能低;另外,在 TensorFlow Serving 所提供的 docker 中,又可以分为 devel 版本和正常版本,其中 devel 里面带有一些内置的开发环境,一般用于调试用,在正式环境中,我们更建议使用正常的 docker 版本。

实际上,在工业界,将 TensorFlow 与推荐系统结合的例子很多,我们可以利用好 TensorFlow Serving 做好模型的推理,从而更好的提供相关的服务。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7315

    浏览量

    93983
  • 人工智能
    +关注

    关注

    1813

    文章

    49740

    浏览量

    261549
  • 模型
    +关注

    关注

    1

    文章

    3649

    浏览量

    51713
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPC基材构成全解析:从绝缘到导电,每一步都至关重要!

    一站式PCBA加工厂家今天为大家讲讲FPC主要由哪几个部分组成?FPC的基材构成部分。FPC(柔性电路板)的基材构成主要包括绝缘薄膜、导电层和粘接剂,以下是具体介绍: FPC的基材构成
    的头像 发表于 12-01 09:33 166次阅读
    FPC基材构成全解析:从绝缘到导电,每一步都至关重要!

    无质量损失的数据迁移:Nikon SLM Solutions信赖3Dfindit企业

    的数据迁移,并从另外两个应用获益:战略性零部件管理和ECAD集成。作为金属增材制造集成解决方案的全球供应商,该公司被认为是选区激光熔化技术的先驱。其创新技术被广泛应用于各行各业,包括汽车、能源、工具
    发表于 11-25 10:06

    热敏电阻哪几个参数是比较重要的

    热敏电阻哪几个参数是比较重要的 热敏电阻全解析:NTC与PTC的特性、参数与选型指南 热敏电阻是一种电阻值随温度发生显著变化的半导体器件,主要分为负温度系数(NTC) 和正温度系数(PTC
    发表于 11-04 13:29

    使用rt-thread studio ,配置某对GPIO为串口,比如配置PA0与PA1 为uart1 ;如何操作?

    ,烧录没有问题,但是,我不知这个串口,比如是uart1. 是由哪几个GPIO所配置而成?特请教一下,有文档看看也可以,感谢
    发表于 09-11 07:50

    鸿蒙系统怎么安装企业微信

    系统自带的应用市场无法下载企业微信,卓易通的无法用微信登录,使用不了
    发表于 08-26 15:43

    TC397哪几个Nodes支持TT-CAN呢?

    TC397 具有3个modules,每个modules具有4个Nodes,共支持12路CAN。哪几个Nodes支持TT-CAN呢?支持TT-CAN的Nodes能否用做普通的CAN呢?
    发表于 07-29 10:38

    MES系统与ERP系统有什么联系

    MES系统(制造执行系统)和ERP系统企业资源计划)是制造业两类核心的信息化管理工具,二者既有明确分工又紧密关联,共同构成
    的头像 发表于 06-23 10:04 975次阅读

    三相变压器主要组成部分有哪些

    三相变压器的主要组成部分包括以下几个关键部分
    的头像 发表于 05-20 13:35 1020次阅读
    三相变压器主要组成<b class='flag-5'>部分</b>有哪些

    NTC温度传感器有哪几个温度特性

    NTC温度传感器是由NTC(负温度系数)热敏电阻作为温感元件组装而成的温度传感器。其温度特性主要体现在以下几个方面:
    的头像 发表于 04-02 09:46 1105次阅读
    NTC温度传感器有<b class='flag-5'>哪几个</b>温度特性

    水利大坝安全监测有哪几个方面

    大坝安全监测主要是通过相关数据的采集、分析、评估等步骤实现对大坝的安全监测。一般情况下,大坝安全监测系统主要由四部分组成,测量传感器,测量控制单元,网络通信连接及大坝安全监测中心组成。水利大坝主要
    的头像 发表于 03-28 10:13 768次阅读
    水利大坝安全监测有<b class='flag-5'>哪几个</b>方面

    使用rt-thread studio配置某对GPIO为串口,比如配置PA0与PA1 为uart1,如何操作?

    ,烧录没有问题,但是,我不知这个串口,比如是uart1. 是由哪几个GPIO所配置而成?特请教一下,有文档看看也可以,感谢
    发表于 03-07 06:52

    国之重器燃气轮机100问全解析

    1 什么是燃气轮机? 答:燃气轮机是以连续流动的气体为工质带动叶轮高速旋转,将燃料的能量转变为有用功的内燃式动力机械,是一种旋转叶轮式热力发动机。 2 燃气轮机理想简单循环(布雷登循环)包括哪几个
    的头像 发表于 02-19 10:46 2076次阅读

    ADS1259读取模数转换结果的时候是否是两种读取模式?

    咨询下ADS1259读取模数转换结果的时候是否是两种读取模式,一种是读引脚(DIN),一种是读寄存器,读寄存器的数据是进行数据校验? 还有不明白的是读寄存器的内容时,模数转化后的数据是放在9个寄存器哪几个里面呢?是否是可以随意设置的?英文水平很差,只好请教了,也是第一次用串行AD, 谢谢各位
    发表于 01-22 07:18

    DHCP在企业网的部署及安全防范

    以下是关于 DHCP 在企业网的部署及安全防范的介绍: 部署步骤 规划网络与 IP 地址:根据企业网络规模、部门划分等因素,合理规划网络拓扑结构,确定需要分配 IP 地址的范围,包括不同 VLAN
    发表于 01-16 11:27

    企业AI解决方案包括哪些内容

    企业AI解决方案是一种集成了人工智能技术的综合性方案,旨在提高企业运营效率、降低成本、优化业务流程,并提升企业的整体竞争力。那么,企业AI解决方案
    的头像 发表于 01-10 10:15 1009次阅读