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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

如何通過引入深度學習提高客服系統(tǒng)效率,以及如何擴展Spark工作流封裝TensorFlow模型

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-09-24 09:01 ? 次閱讀

編者按:Uber技術人員介紹如何通過引入深度學習提高客服系統(tǒng)效率,以及如何擴展Spark工作流封裝TensorFlow模型,結合CPU集群和GPU節(jié)點的性能優(yōu)勢.

年初我們在Uber引入了客戶滿意服務單輔助系統(tǒng)(Customer Obsession Ticket Assistant,COTA),利用機器學習和自然語言處理(NLP)技術給客戶服務人員推薦服務單類別和回復模板。在我們的客戶服務平臺集成COTA后,在保持甚至提高客戶滿意度的前提下,英文服務單的響應時間縮短了10%.

對Uber而言,這只是一個開始。為了提高COTA表現(xiàn),我們安排了離線試驗。試驗顯示,深度學習可以將類別模型的top-1預測精確度從49%提高65%,將回復模型的top-1預測精確度從47%提高到55%(更多細節(jié)請參考我們的KDD論文,arXiv:1807.01337)??紤]到這些任務的復雜度,這真的是很不錯的成績。

由于試驗的結果很鼓舞人心,我們決定將我們的深度學習模型部署到Uber內(nèi)部的機器學習平臺Michelangelo。為此,我們創(chuàng)建了一個基于Spark的深度學習工作流,以基于Michelangelo的現(xiàn)有基礎設施產(chǎn)品化第二代COTA(COTA v2)。由于模型的表現(xiàn)會隨著時間推移而下降,我們同樣創(chuàng)建了模型管理工作流,自動重新訓練、撤下模型,使模型始終保持最新。

集成到Michelangelo之后,在線測試驗證了之前的試驗結果,相比COTA v1系統(tǒng),COTA v2深度學習系統(tǒng)在模型表現(xiàn)、服務單處理事件、客戶滿意度等關鍵測度上,有了顯著提升。

初代COTA:挑戰(zhàn)和機遇

COTA v1主要有兩個地方需要提高:

對負面樣本的處理方式過于復雜,使訓練模型變得困難。再加上依賴特定的數(shù)據(jù)表,再訓練需要大費周章。

擴展性不夠,將來的NLP模型難以使用。

為何深度學習?

COTA v1的成功促使我們進一步投入技術棧,探索其他服務解決方案。在全球超過600個城市提供服務,支持多種語言和超過5種溝通渠道,Uber的客服涉及Uber旗下各種服務。這樣的范圍和規(guī)模給我們面臨的挑戰(zhàn)增加了極大的復雜度。因此,歸類和解決服務單的方式數(shù)以千計。此外,Uber的成長需要我們以前所未有的節(jié)奏迭代。如果沒有考慮到業(yè)務增長,今天奏效的解決方案可能幾個月后就失效了。

深度學習給包括機器翻譯、語音識別、計算機視覺、自然語言理解在內(nèi)的眾多的領域帶來了變革,并在特定任務上取得了和人類相當乃至超過人類的表現(xiàn)。因此,深度學習看起來是開發(fā)COTA v2自然的選擇。事實上,通過離線測試,我們發(fā)現(xiàn),相比COTA v1,深度學習模型可以提供精準得多的服務單響應預測。

遷移至基于深度學習的COTA v2

簡單來說,COTA v1基于傳統(tǒng)的NLP方法進行主題建模,并使用了結合文本特征、類別特征、數(shù)值特征的機器學習技術,如下圖上半部分所示:

上:COTA v1;下:COTA v2

COTA v1創(chuàng)建了處理輸入的服務單消息的NLP工作流,以提取文本特征。并通過另外的特征工程生成余弦相似度。一切特征就緒后,將所有特征傳入一個二元逐點排序算法,預測服務單類別和回復模板。

上圖的下半部分刻畫了COTA v2所用的深度學習架構。文本特征經(jīng)過典型的NLP預處理(例如文本清洗和tokenization,示意圖上沒有顯示),服務單中的每個單詞通過一個嵌入層(示意圖上沒有顯示)編碼為密集表示,并進一步通過卷積層編碼整個文本語料庫。類別特征通過嵌入層編碼,以捕捉不同類別的接近程度。數(shù)值特征通過批歸一化穩(wěn)定訓練過程。我們的離線試驗表明COTA v2深度學習系統(tǒng)較COTA v1有顯著提升(提高了8-16個百分比),無論是單獨預測類型和回復,還是一次性聯(lián)合預測類型和回復,皆是如此。

上圖顯示了深度學習模型學習到的嵌入的t-SNE圖形。例如,上圖左半部分可視化了一些Uber特定的關鍵詞,我們發(fā)現(xiàn),“載具”(vehicle)和“汽車”(car)在t-SNE圖形上非常接近。和支付相關的單詞,例如“充值”(charge)、“信用”(credit)、“費用”(fare),在t-SNE圖像上也聚類在一起。

上圖右半部分可視化了學習到的服務單類型嵌入,其中每個數(shù)據(jù)點對應一個類型。類型有三種顏色:“搭車人”、“司機”、“其他”(餐飲、旅館等)。在t-SNE圖形上,“搭車人”和“司機”的聚類很明顯。這些可視化直觀地確認了模型正在學習合理的表示,同時暗示模型足以捕捉單詞間的相關性和語義聯(lián)系,以及服務單類型之間的關系。

部署COTA v2的挑戰(zhàn)和解決方案

由于深度學習模型在離線測試上成果喜人,我們決定將其部署到生產(chǎn)系統(tǒng)。然而,同時集成NLP轉換和深度學習訓練帶來了不小的復雜度,再加上我們將使用大量訓練數(shù)據(jù),部署COTA v2深度學習模型很有挑戰(zhàn)性。

理想情況下,我們想要利用Spark分布式地進行NLP轉換。Spark計算通常基于CPU集群。另一方面,深度學習訓練在基于GPU的基礎設施上運行起來更高效。為了應對這一雙重性,我們需要找到一個同時使用Spark轉換和GPU訓練的方法,同時創(chuàng)建一個訓練深度學習模型并提供服務的統(tǒng)一工作流。

另一項挑戰(zhàn)是我們需要決定如何在Uber業(yè)務的動態(tài)本質(zhì)下保持模型的新鮮度。因此,工作流需要頻繁地重新訓練、重新部署模型。

為了解決第一項挑戰(zhàn),我們創(chuàng)建了一個深度學習Spark工作流(DLSP),同時使用Spark進行NLP轉換,使用GPU進行深度學習訓練。至于第二項挑戰(zhàn),我們集成了一個內(nèi)部工作規(guī)劃工具,在DLSP的基礎上創(chuàng)建了一個模型生命周期管理工作流(MLMP),讓我們可以按所需頻率規(guī)劃和運行每項工作。這兩個工作流讓我們得以在Uber的生產(chǎn)系統(tǒng)上訓練和部署深度學習模型,同時重新訓練和更新模型以保持峰值表現(xiàn)。

在接下來的兩部分中,我們將詳細討論這兩個工作流。

COTA v2的深度學習Spark工作流

分兩個階段定義工作流,一個階段進行Spark預處理,一個階段進行深度學習,看起來是分配工作負荷的最佳方式。我們擴展了Spark工作流的概念,得以使用現(xiàn)有的基礎設施支持批量預測和實時預測服務。

訓練

模型訓練分為兩個階段,如下圖上部所示:

基于Spark進行預處理:我們利用Uber的大規(guī)模Spark集群進行數(shù)據(jù)預處理,同時擬合訓練和服務所需的轉換。在預訓練時對數(shù)據(jù)所做的一切轉換均保存為Spark轉換器,接著用于創(chuàng)建Spark工作流提供服務。在Spark集群上進行分布式預處理比在單GPU節(jié)點上預處理數(shù)據(jù)要快得多。我們在Spark集群上計算擬合轉換(需要持續(xù)數(shù)據(jù)的轉換,比如StringIndexer)和非擬合轉換(比如從字符串中清洗HTML標簽)。

基于TensorFlow進行深度學習訓練:一旦完成了第一步的預處理,我們便利用預處理過的數(shù)據(jù)基于TensorFlow訓練深度學習模型。然后合并這一階段訓練好的模型和上一階段生成的Spark工作流,得到最終的Spark工作流。最終工作流整合了預處理轉換器和TensorFlow模型,以便運行預測。我們實現(xiàn)了一個特殊類型的轉換器,稱為TFTransformer,以結合Spark工作流和TensorFlow模型。因為所有的Spark工作流都是基于Java實現(xiàn)的,所以TFTransformer也使用了Java。

服務

上圖的下半部分展示了如何基于深度學習Spark工作流在批量預測和實時預測服務使用訓練好的模型。我們擴展了Michelangelo以支持通用Spark工作流,并利用現(xiàn)有的部署和服務基礎設施提供深度學習模型服務。用于提供服務的工作流運行在JVM上。我們觀察到提供服務時的延遲為p95 < 10ms(譯者注:95%的情況下延遲低于10毫秒),這展示了使用現(xiàn)有的JVM服務基礎設施帶來的低延遲優(yōu)勢。通過擴展Spark工作流封裝深度學習模型,我們能夠融CPU驅(qū)動和GPU驅(qū)動兩家之長:1) 基于CPU的Spark轉換分布式計算和Spark工作流低延遲服務;2) 基于GPU加速深度學習模型訓練。

模型生命周期管理工作流:模型保鮮

為了避免COTA v2模型的表現(xiàn)隨時間推移而下降,我們在DLSP的基礎上創(chuàng)建了一個模型生命周期管理工作流(MLMP)。具體來說,我們利用Uber內(nèi)部工作規(guī)劃工具Piper創(chuàng)建了一個端到端工作流,以固定頻率重新訓練、重新部署模型。

如上圖所示,模型生命周期管理工作流共有6項工作,使用Michelangelo現(xiàn)有的API重新訓練模型。這6項工作構成了一個有向無環(huán)圖(DAG),箭頭表示依賴關系:

數(shù)據(jù)ETL:包括數(shù)據(jù)提取,基本轉換,加載工作以準備數(shù)據(jù)。通常從若干不同的數(shù)據(jù)源拉去數(shù)據(jù),轉換數(shù)據(jù)至恰當?shù)母袷?,并放入Hive數(shù)據(jù)庫。

Spark轉換:這一步驟轉換原始數(shù)據(jù)(文本、類別、數(shù)值,等等)為張量格式,提供給TensorFlow圖作為輸入,以訓練模型。底層的轉換通過Michelangelo利用了Spark引擎分布式進行。轉換器保存到模型存儲。

數(shù)據(jù)傳輸:CPU計算機集群進行Spark轉換。深度學習訓練需要GPU加速進程。因此,我們將第二步的輸出數(shù)據(jù)傳輸至GPU機器。

深度學習訓練:數(shù)據(jù)一旦傳輸至GPU集群,就會觸發(fā)一項工作,開啟基于定制的Docker容器的GPU會話,并開始深度學習訓練過程。訓練結束后,將TensorFlow模型文件保存至模型存儲。

模型合并:合并第2步的Spark轉換器和第4步的TensorFlow模型,形成最終模型。

模型部署:部署最終模型后,生成model_id以便引用新部署的模型。外部微服務可以使用服務框架Thrift引用model_id。

在線測試:COTA v1 vs. COTA v2

為了驗證我們在離線試驗中觀測到的COTA v2深度學習模型的表現(xiàn),我們在滾動式更新系統(tǒng)前進行一次在線測試。

測試策略

為了避免早先存在的采樣偏差,我們在A/B測試前先組織了一次A/A測試,如下圖所示:

在A/A測試和A/B測試期間,服務單以50/50的比例隨機分配至對照組和實驗組。在A/A測試期間,對照組和實驗組的預測均由COTA v1模型做出。而在A/B測試期間,實驗組使用COTA v2深度學習模型。

結果

A/A測試跑了一周,A/B測試跑了大概一個月。下圖展示了我們追蹤的兩個關鍵測度:模型精確度(這里我們以服務單類型為例)和每個服務單的平均處理時間。如下圖上部所示,在A/A測試期間,模型表現(xiàn)沒有差異,而開啟A/B測試后,實驗組的模型大大提升了。這些結果確認了COTA v2深度學習系統(tǒng)比COTA v1體改了更精確的解。

如下圖下部所示,在A/B測試期間,實驗組的平均服務單處理時間要低得多。另外,從上圖上部我們還能觀測到一個現(xiàn)象,模型的表現(xiàn)隨著時間推移而下降,突顯了模型管理工作流MLMP的必要性。(為了保證一致性,在試驗期間沒有重新訓練模型。)

我們的在線測試再次證明給定足夠的訓練數(shù)據(jù),COTA v2深度學習模型的表現(xiàn)明顯超過經(jīng)典的COTA v1機器學習模型。

統(tǒng)計分析表明,A/A測試期間對照組和實驗組的平均處理時間沒有顯著差異,而A/B測試期間存在顯著差異。服務單處理時間有6.6%的相對縮短。另外,服務單建議的精確度也提高了。此外,我們也測量了顧客滿意度評分,發(fā)現(xiàn)使用COTA v2后滿意度略有提升。

COTA v2不僅提升了客戶支持的體驗,而且通過提高服務單解決過程的效率每年為公司節(jié)省數(shù)百萬美元。

下一步

鑒于COTA v2中的深度學習模型的強力表現(xiàn),我們計劃在未來使用服務單類型預測決定給定服務單分配給哪個客服,因為專門處理特定類型問題的客服通常能更快地積累經(jīng)驗。這一更新將增加在初次路由中識別解決客戶服務單的合適客服的概率,提升整個服務單支持系統(tǒng)的效率。

我們還打算考察能讓我們更快地回復僅僅請求信息的服務單的特性。例如,提問“我如何更新Uber賬戶頭像”的服務單。這類服務單,只需直接分享靜態(tài)信息(在這一情形下是指引)就可以解決。在所有服務單中,這可能只占一小部分,但這些服務單可以在無需客服監(jiān)督的情況下由COTA v2自動處理。提高這些靜態(tài)回應的效率可以幫助客戶節(jié)省時間,也能讓客服集中精力處理更具挑戰(zhàn)性的服務單,以提供更好的客戶服務。

COTA是Uber的應用機器學習團隊、客戶支持平臺、Michelangelo團隊、Uber AI實驗室通力協(xié)作的成果,主要貢獻者為Uber機器學習團隊數(shù)據(jù)科學家Huaixin Zheng,Michelangelo團隊機器學習工程師Guoqin Zheng、Naveen Somasundaram,Uber客戶滿意團隊軟件工程師Basab Maulik,Uber應用機器學習團隊數(shù)據(jù)科學管理Hugh Williams,Michelangelo團隊工程管理Jeremy Hermann,感謝Piero Molino、Viresh Gehlawat、Yi-Chia Wang、Joseph Wang、Eric Chen、Paul Mikesell、Alex Sergeev、Mike Del Balso、Chintan Shah、Christina Grimsley、Taj Singh、Jai Malkani、Fran Bell、Jai Ranganathan的貢獻,以及Molly Vorwerck和Wayne Cunningham幫助編輯本文。

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

    關注

    66

    文章

    8423

    瀏覽量

    132746
  • 深度學習
    +關注

    關注

    73

    文章

    5506

    瀏覽量

    121255
  • tensorflow
    +關注

    關注

    13

    文章

    329

    瀏覽量

    60538

原文標題:結合Spark與TensorFlow,Uber客服系統(tǒng)引入深度學習

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【「大模型啟示錄」閱讀體驗】如何在客服領域應用大模型

    模型可以提高客戶滿意度和服務質(zhì)量。新引入模型需要能夠無縫集成到現(xiàn)有系統(tǒng)中,以確保服務的連續(xù)性和穩(wěn)定性。因此,在選擇
    發(fā)表于 12-17 16:53

    基于工作流技術的廣州電信本地計費系統(tǒng)改造

    工作流自動化和構建流程應用提供基礎平臺,實現(xiàn)了流程邏輯與業(yè)務邏輯的分離,支持業(yè)務流程的分析和規(guī)范化定義以及業(yè)務單元的自動組裝,降低了復雜流程應用的開發(fā)難度,提高應用系統(tǒng)的管理
    發(fā)表于 04-24 09:20

    基于Notes的OA工作流引擎的設計和實現(xiàn)

    Domino/Notes平臺上實現(xiàn)了工作流引擎。實現(xiàn)了的工作流引擎由后臺類實現(xiàn)業(yè)務邏輯和前端類實現(xiàn)與用戶的交互。通過定義系統(tǒng)簡要表文檔、活動定義表文檔和路徑參數(shù)表文檔,
    發(fā)表于 04-24 09:22

    spark深度學習的基本原理

    Spark遇上TensorFlow分布式深度學習框架原理和實踐
    發(fā)表于 09-09 08:46

    淺談深度學習TensorFlow

    神經(jīng)網(wǎng)絡和深度學習的概念,但為了完整起見,我們將在這里介紹基礎知識,并探討 TensorFlow 的哪些特性使其成為深度學習的熱門選擇。神經(jīng)
    發(fā)表于 07-28 14:34

    labview測試tensorflow深度學習SSD模型識別物體

    安裝labview2019 vision,自帶深度學習推理工具,支持tensorflow模型。配置好python下tensorflow環(huán)境配
    發(fā)表于 08-16 17:21

    labview+yolov4+tensorflow+openvion深度學習

    缺陷檢測主要知識點:1Tensorflow-GPU環(huán)境的搭建Tensorflow object環(huán)境搭建學會如何標注圖片如何labview快速通過遷移學習訓練自己的
    發(fā)表于 05-10 22:33

    labview調(diào)用深度學習tensorflow模型非常簡單,附上源碼和模型

    本帖最后由 wcl86 于 2021-9-9 10:39 編輯 `labview調(diào)用深度學習tensorflow模型非常簡單,效果如下,附上源碼和訓練過的
    發(fā)表于 06-03 16:38

    Mali GPU支持tensorflow或者caffe等深度學習模型

    Mali GPU 支持tensorflow或者caffe等深度學習模型嗎? 好像caffe2go和tensorflow lit可以部署到AR
    發(fā)表于 09-16 14:13

    基于工作流技術的醫(yī)院辦公自動化系統(tǒng)

    為了降低復雜流程的開發(fā)難度,提高應用系統(tǒng)的管理效率,提出基于工作流技術的醫(yī)院辦公自動化系統(tǒng)。依據(jù)工作流
    發(fā)表于 04-17 09:45 ?23次下載

    OA系統(tǒng)工作流引擎的設計

    本文首先介紹了工作流供理系統(tǒng)的概念及其體系結構模型?;赪eb 平臺,針對模型工作流引擎模塊的設計提出了一個行之有效解決方案。關鍵字:
    發(fā)表于 06-16 11:31 ?45次下載

    擴展時間和層次的Petri網(wǎng)工作流模型

    針對當前工作流模型沒有明顯的時間約束以及缺乏對復雜工作流系統(tǒng)支持的現(xiàn)狀,對經(jīng)典Petri 網(wǎng)在時間和層次方面進行
    發(fā)表于 07-09 09:36 ?13次下載

    基于Petri網(wǎng)化簡技術的工作流模型合理性驗證

    隨著工作流系統(tǒng)趨于大型化,使得可達圖的驗證技術對于大型模型進行驗證時面臨著狀態(tài)空間爆炸的問題。因此,在過程驗證之前,對大型模型進行化簡是必要的。本文
    發(fā)表于 12-29 17:11 ?12次下載

    基于IPO的工作流模型定義與XPDL解析

    基于IPO的工作流模型定義與XPDL解析:根據(jù)工作流聯(lián)盟的相關標準,基于三維視圖給出了工作流過程模型定義,實現(xiàn)了過程
    發(fā)表于 01-12 17:15 ?17次下載

    深度學習框架tensorflow介紹

    。TensorFlow可以用于各種不同的任務,包括圖像和語音識別、自然語言處理和推薦系統(tǒng)等。 TensorFlow提供了一個靈活和強大的平臺,可以用于構建和訓練各種深度
    的頭像 發(fā)表于 08-17 16:11 ?2542次閱讀