0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

企業(yè)中的推薦系統(tǒng)包括哪幾個部分

Tensorflowers ? 來源:TensorFlow ? 作者:黃鴻波 ? 2021-09-24 14:49 ? 次閱讀

隨著互聯(lián)網(wǎng)的發(fā)展和人工智能的進步,各個廠家都開始針對性的向用戶推薦自己的內(nèi)容,這些內(nèi)容包括了文章、視頻、商品以及一些其他的希望被用戶看到的內(nèi)容了,能夠讓用戶有好的內(nèi)容的體驗,更好的捕捉到用戶所需要的內(nèi)容,這背后的成功都?xì)w功于推薦系統(tǒng)。

企業(yè)中的推薦系統(tǒng)包括哪幾個部分

上面是企業(yè)中一個常見的推薦系統(tǒng)的架構(gòu)圖,一般來講,一個完整的推薦系統(tǒng)企業(yè)級的架構(gòu)應(yīng)該包括數(shù)據(jù)的存儲、業(yè)務(wù)模型、服務(wù)層以及上層對于用戶來講可見的 App 或者一些其他可視化是產(chǎn)品。

數(shù)據(jù)存儲

對于數(shù)據(jù)存儲來講,幾乎是每一個完整的推薦系統(tǒng)必不可少的一個部分,所有的用戶數(shù)據(jù)、候選內(nèi)容的所有的信息、日志系統(tǒng)以及緩存等,全都屬于數(shù)據(jù)存儲的一部分,后續(xù)我們要做的與用戶相關(guān)的畫像、內(nèi)容畫像以及其他需要提取的特征信息也全都來自于數(shù)據(jù)系統(tǒng)。

一般來講,數(shù)據(jù)系統(tǒng)是一個很大的概念,它不僅限于某一個數(shù)據(jù)庫,或者某一個數(shù)據(jù)處理邏輯,而是一整套與數(shù)據(jù)相關(guān)的系統(tǒng),用于存儲用戶信息的關(guān)系型數(shù)據(jù)庫、用戶存儲商品信息的數(shù)據(jù)模型、用于進行大數(shù)據(jù)運算的數(shù)據(jù)湖和數(shù)據(jù)集群等,我們把這些處理數(shù)據(jù)的系統(tǒng)整合,形成了推薦系統(tǒng)的數(shù)據(jù)存儲部分。

業(yè)務(wù)模型

業(yè)務(wù)模型是推薦系統(tǒng)的核心。推薦系統(tǒng)的效果好壞可以說 90% 以上是由于業(yè)務(wù)模型決定的。在一個推薦系統(tǒng)中,數(shù)據(jù)系統(tǒng)一般包含三個部分,數(shù)據(jù)邏輯層、召回層和排序?qū)印?/p>

一般來講,我們當(dāng)從用戶進入到我們的系統(tǒng)的時候,推薦系統(tǒng)就已經(jīng)在發(fā)揮作用了。首先,我們會將用戶的數(shù)據(jù)通過各種數(shù)據(jù)處理、深度學(xué)習(xí)或者機器學(xué)習(xí)的方法進行數(shù)據(jù)的處理,這一部分的處理一般包括類似于用戶日志采集,分詞、內(nèi)容畫像、用戶畫像等,這里可用使用大量的深度學(xué)習(xí)方式來做。

接下來,我們可以使用這些畫像和特征來進行針對于特定用戶的內(nèi)容召回,這里的召回實際上就是通過各種方法來找到用戶可能感興趣的內(nèi)容。

當(dāng)找到用戶可能感興趣的內(nèi)容之后,我們一般會對這些內(nèi)容進行進一步的篩選和排序,找到在這些內(nèi)容中,用戶最感興趣的前面的幾個或者幾十個內(nèi)容分別是什么,這一步,一般我們稱之為排序?qū)印?/p>

最后,我們可以將排序后的結(jié)果輸出給用戶進行界面的展示,從而達(dá)到最后的推薦效果。

使用 TensorFlow Serving 賦能

目前來講,無論是數(shù)據(jù)邏輯、召回層還是排序?qū)?,都可以使用很多深度學(xué)習(xí)的方法來做。例如數(shù)據(jù)邏輯中有關(guān)命名實體識別的部分可以使用 TensorFlow 來實現(xiàn),召回層可以使用 TensorFlow 來實現(xiàn) YoutubeDNN 模型并部署到生產(chǎn)環(huán)境中,在排序?qū)游覀円部梢允褂?xDeepFM 等深度學(xué)習(xí)方法來實現(xiàn)。

那么對于這些深度學(xué)習(xí)模型來講,最好的模型上線和部署方式莫過于使用 TensorFlow Serving 進行部署了。

由于 TensorFlow Serving 本身就是 Google 自家的產(chǎn)品,也是 TensorFlow 大家族的一部分,因此,使用 TensorFlow Serving 對 TensorFlow 的模型進行部署無疑是最好的選擇。

在我所在的企業(yè)中,幾乎所有的深度學(xué)習(xí)所涉及到的模型都會被轉(zhuǎn)換成 TensorFlow Serving 的模式進行部署。在使用 TensorFlow Serving 進行模型部署的時候,實際上會有很多個 tricks。

例如,在實際的操作當(dāng)中,很多人會發(fā)現(xiàn),自己也把模型轉(zhuǎn)換成了 PB 模型,也能自己使用代碼的方式加載這個 pb 模型進行推理,但是,放到 TensorFlow Serving 上之后就無法進行推理,然后還會報各種各樣莫名其妙的錯誤。一般來講,造成這個問題的原因有以下幾種。

1. pb 模型轉(zhuǎn)換的類型錯誤

pb 模型轉(zhuǎn)換的類型錯誤是大部分 TensorFlow 開發(fā)人員常見的錯誤之一,一般來講,TensorFlow 可以轉(zhuǎn)換的 pb 文件大致可以分成兩種,一種是直接轉(zhuǎn)換成一個 pb 文件,這種文件只是一個以模型名稱命名,以 .pb 為格式的單個文件,這個文件一般使用在終端的推理中,比如移動端的推理,或者是給到 C++ 等語言進行模型的調(diào)用,但是如果把它直接使用 TensorFlow Serving 進行部署的話,往往就會出錯。

實際上,如果想使用 TensorFlow Serving 進行部署,那么我們就需要將我們的模型轉(zhuǎn)換成 Saved Model 格式的 pb 文件。Saved Model 格式的 pb 文件與一般的 pb 文件相比不同之處在于,Saved Model 格式的 pb 文件一般是凍結(jié)圖文件,它可以更方便的部署。一般來講,使用 Saved Model 格式進行打包之后,除了模型文件本身,會生成 variables 目錄,其中 pb 文件是模型的定義文件,variables 目錄下存放的是模型的各個推理所需要的參數(shù)。

因此,如果你生成了一個 pb 文件在本地可以推理,但是放在 TensorFlow Serving 中部署的時候不能推理的話,首先看看是不是這里的問題。

2. 在 TensorFlow Serving 中推理的時候沒有加入版本標(biāo)識

有些同學(xué)在使用 TensorFlow Serving 的時候,也能夠轉(zhuǎn)換成 Saved Model 格式的 pb 文件了,而且在本地驗證也沒有問題了,但是放到 TensorFlow Serving 的相關(guān)服務(wù)上就會報錯,總是提示找不到版本,一般來講,這種問題是你導(dǎo)出的模型中沒有添加模型的版本號所導(dǎo)致的,我們在 TensorFlow Serving 中進行模型部署的時候,往往都需要在最外層定義一個模型的版本號,而 TensorFlow Serving 也會通過判斷模型的版本號來進行模型的更新。

3. 模型沒有標(biāo)明正確的輸入輸出

有些同學(xué)在模型轉(zhuǎn)換完之后,發(fā)現(xiàn)無法在推理環(huán)境中運行,一直提示輸入的 tensor 不正確,這種情況下一般來講是在對模型進行導(dǎo)出時,沒有對輸入輸出的參數(shù)進行命名,從而使得模型使用了標(biāo)準(zhǔn)的命名,導(dǎo)致無法進行推理。

TensorFlow Serving 的性能優(yōu)化

之前很多人在使用 TensorFlow Serving 在做模型部署的時候,都跟我說它的性能不好,部署 Albert tiny 模型的 QPS 連 50 都不到,還不如使用傳統(tǒng)的部署方法,當(dāng)我跟大家說,我使用 TensorFlow Serving 部署時,在 CPU 服務(wù)器上 QPS 能上到 2000 多,在 GPU 服務(wù)器上 QPS 甚至能達(dá)到 5000 以上,那么,為什么差異會這么大呢?

實際上,如果按照正常的部署方式,沒有帶任何參數(shù)的話,它的并發(fā)確實會很低,但是實際上,TensorFlow Serving 給我們提供了針對于高并發(fā)的部署方案,在 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 }

這個示例,很大程度上決定了并發(fā)的性能。一般來講,在使用 CPU 部署的時候,我們可以將 num_batch_threads 設(shè)置為 CPU 核數(shù)的 2 倍加 1,例如我們的 CPU 是 48 核,這里可以設(shè)置為 97;當(dāng)我們使用 GPU 進行部署的時候,這里面的 num_batch_threads 最好設(shè)置為 GPU 的個數(shù)。這樣的設(shè)置,能夠最大的程度上利用到我們的 CPU 和 GPU,使得并發(fā)提高。

在部署方面,TensorFlow Serving 給我們提供了 2 種大類別的 docker,一個是 GPU 的一個是 CPU 的,這個在做 docker 部署的時候一定要注意區(qū)分,否則很容易導(dǎo)致部署之后的性能低;另外,在 TensorFlow Serving 所提供的 docker 中,又可以分為 devel 版本和正常版本,其中 devel 里面帶有一些內(nèi)置的開發(fā)環(huán)境,一般用于調(diào)試用,在正式環(huán)境中,我們更建議使用正常的 docker 版本。

實際上,在工業(yè)界,將 TensorFlow 與推薦系統(tǒng)結(jié)合的例子很多,我們可以利用好 TensorFlow Serving 做好模型的推理,從而更好的提供相關(guān)的服務(wù)。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88308
  • 人工智能
    +關(guān)注

    關(guān)注

    1787

    文章

    46061

    瀏覽量

    234991
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48357
收藏 人收藏

    評論

    相關(guān)推薦

    GUTOR備品備件主要包括哪幾個組成部分?

    GUTOR備品備件主要包括哪幾個組成部分?
    發(fā)表于 09-12 17:19

    labview的應(yīng)用程序包括哪幾個部分

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)的應(yīng)用程序主要由以下幾個部分組成: 前面板(Front Panel) : 功能
    的頭像 發(fā)表于 09-04 16:06 ?214次閱讀

    TAS2505-Q1的MCLK, WCLK, DIN, BCLK這幾個PIN,對應(yīng)的mcu這邊的哪幾個pin?

    1.請問參考設(shè)計的的耳機接口HPOUT 及 IOVSS,在PIN描述沒有這兩個PIN呢? 2.請問2505的MCLK, WCLK, DIN, BCLK這幾個PIN,對應(yīng)的mcu這邊的
    發(fā)表于 08-08 08:28

    cnc系統(tǒng)軟件一般包括哪幾個部分

    CNC(計算機數(shù)控)系統(tǒng)是一種廣泛應(yīng)用于工業(yè)制造領(lǐng)域的自動化控制系統(tǒng)。它通過計算機軟件和硬件的結(jié)合,實現(xiàn)了對機床的精確控制,提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。CNC系統(tǒng)軟件是CNC系統(tǒng)的核心組
    的頭像 發(fā)表于 06-14 16:01 ?661次閱讀

    柔性制造單元包括哪幾個要素

    具有高度的靈活性和適應(yīng)性,能夠?qū)崿F(xiàn)多品種、小批量、快速換型的生產(chǎn)模式。本文將詳細(xì)介紹柔性制造單元的組成要素,包括硬件設(shè)備、軟件系統(tǒng)、工藝流程、生產(chǎn)管理、質(zhì)量控制、設(shè)備維護等方面。 一、硬件設(shè)備 機床:柔性制造單元的核心設(shè)備是機床,包括
    的頭像 發(fā)表于 06-11 09:56 ?522次閱讀

    ADuC845來畫PCB的話,需要引出來哪幾個腳來燒錄?TXD和RXD嗎?

    我需要買什么下載器來下載嗎?如果我使用這個芯片來畫PCB的話,需要引出來哪幾個腳來燒錄?TXD和RXD嗎?
    發(fā)表于 05-31 06:09

    一個成熟的PCBA設(shè)計通常包含哪幾個方面?

    一站式PCBA智造廠家今天為大家講講什么是成熟的PCBA設(shè)計?成熟的PCB設(shè)計包含哪幾個方面?。成熟的PCB(印刷電路板組裝)設(shè)計是指經(jīng)過精心規(guī)劃、優(yōu)化和驗證的設(shè)計,以確保電路板的功能性、可靠性以及
    的頭像 發(fā)表于 05-07 09:24 ?303次閱讀

    汽車蓄電池正極幾條線都是接哪幾個地方的?

    汽車蓄電池正極幾條線都是接哪幾個地方的? 汽車蓄電池正極連接的地方有幾個,下面將逐一進行詳細(xì)介紹。 1. 車輛電氣系統(tǒng):首先,汽車蓄電池的正極線會連接到車輛的電氣系統(tǒng)。這個
    的頭像 發(fā)表于 02-06 10:34 ?3812次閱讀

    ADE7753功率因數(shù)是由哪幾個寄存器運算得到的?

    電壓使用1M:1K的電阻分壓后送入芯片,電流使用錳銅片采樣送入芯片。負(fù)載1000W的用電設(shè)備,ADE7753的哪幾個或哪一個寄存器地址是讀取后經(jīng)過運算得到這個1000W的值的。功率因數(shù)是由哪幾個寄存器運算得到的。 能不能詳細(xì)的解釋ADE7753的各寄存器。
    發(fā)表于 12-27 08:16

    PLC的基本單元由哪幾個部份組成?各起什么作用?

    PLC 的基本單元由哪幾個部份組成?各起什么作用? (1) CPU :PLC 的核心部件,指揮 PLC 進行各種工作。如接受用戶程序和數(shù) 據(jù)、診斷、執(zhí)行執(zhí)行程序等; (2)存儲器:存儲系統(tǒng)和用戶的程序和數(shù)據(jù);
    發(fā)表于 12-07 14:05 ?2062次閱讀

    LED的伏安特性 led的伏安特性曲線分為哪幾個區(qū)域

    LED的伏安特性 led的伏安特性曲線分為哪幾個區(qū)域? LED(Light Emitting Diode,發(fā)光二極管)是一種半導(dǎo)體器件,具有獨特的伏安特性曲線。在這篇文章,我將詳細(xì)介紹LED
    的頭像 發(fā)表于 11-30 11:43 ?4291次閱讀

    無功補償怎么設(shè)置參數(shù)?設(shè)置無功補償參數(shù)要考慮哪幾個關(guān)鍵因素?

    無功補償怎么設(shè)置參數(shù)?設(shè)置無功補償參數(shù)時需要考慮哪幾個關(guān)鍵因素? 無功補償是電力系統(tǒng)的一種重要技術(shù)措施,用來對無功功率進行補償,以優(yōu)化電力系統(tǒng)的功率因數(shù)和電壓質(zhì)量。在設(shè)置無功補償參數(shù)
    的頭像 發(fā)表于 11-06 11:10 ?2834次閱讀

    請問51單片機有哪幾個中斷源?

    51單片機有哪幾個中斷源?
    發(fā)表于 11-01 08:05

    求助,在51單片機哪幾個特殊功能寄存器是16位的?

    哪幾個才是16位的呢
    發(fā)表于 11-01 06:30

    中斷可分為哪幾個階段?在執(zhí)行中斷響應(yīng)后,要完成哪些主要功能?

    中斷可分為哪幾個階段?在執(zhí)行中斷響應(yīng)后,要完成哪些主要功能? 中斷是操作系統(tǒng)重要的概念之一,用于在程序執(zhí)行過程暫停當(dāng)前運行的程序并轉(zhuǎn)移控制權(quán)到特定的中斷處理程序
    的頭像 發(fā)表于 10-24 11:49 ?3700次閱讀