LINE 資料工程團隊如何透過專業分工與 MLOps 打造不同服務 | 以 MarTech & NLP 為例

大家好,我是來自 LINE Taiwan 資料工程團隊的 Nina,很開心這次有機會在 LINE Developers Meetup #14 與大家分享 Let’s Play in DataPark 這個主題,分享我從學校畢業加入 LINE 這一段時間的經驗!

KKTIX 活動網頁: 活動網址

介紹

LINE 擁有各式各樣的服務,其中有很多都有 ML 的身影 (如上圖)。LINE 資料工程團隊每天的生活就是想辦法運用大規模的資料來優化服務,由於我們每天需要處理各種大數據議題,例如:資料流、實驗設計、模型開發、測試與部署等等,要完成這些 data team 的日常工作,需要許多不同的角色參與其中,讓擁有不同長才的同仁在對的位置上,一起合作打造 AI 服務。

日常工作項目與角色分工

在 LINE 資料工程團隊中主要有四個角色,個別負責不同的任務,以下三個角色的介紹可以參考 「How ML Powers LINE Services」機器學習如何的讓 LINE 的服務能更貼近使用者

  • 資料工程師 (Data Engineer)
  • 資料科學家 (Data Scientist)
  • 資料分析師 (Data Analyst)

而在 LINE Developer Meetup 開發者小聚系列活動 #13 之後在流程上多劃分了另一個角色:

  • 機器學習服務工程師 (ML Service Engineer),其主要的工作是要在資料科學家完成模型訓練後,設計並建立可規模化的機器學習服務架構,使模型能夠在線上服務

如欲了解更詳細的說明請參閱 TECHPULSE 2020 的主議程 – Scaling Machine Learning at LINE

相關職位請參考2021 Recruitment Day 的介紹文章

劃分了這麼多角色,就是為了讓每個人在 ML 的工作流程中各司其職,發揮自己的長才,提高團隊工作效率。根據我們的經驗,可以將 ML 的開發流程簡單分成 7 個部分,其中每個階段有各自的主要工作任務:

  • Prepare:需要用哪些資料、怎麼取得、資料標注
  • Discover:挖掘資料特徵、尋找適合演算法
  • Develop:模型開發、版本控管、實驗設計與指標紀錄
  • Train:參數調整、計算資源分配
  • Test:驗證與分析模型
  • Deploy:注重在線上環境的服務效能,如:模型計算與回應速度、計算資源分配、規模化
  • Monitor/Analyze:服務的可靠性、模型是否 decay、應用模型後在商業上所帶來的成效

MarTech & NLP

了解 LINE 資料工程團隊的日常工作與角色分工後,大家一定很好奇,我們打造了哪些 ML 應用來協助完成上層的服務吧?主要可以分為 MarTech & NLP 兩大領域:

  • MarTech:「以 User 為主」的 ML 應用,例如:利用個人化廣告、用戶行為預測等等來協助行銷操作
  • NLP:「以內容為主」的 ML 應用,像是近似文章搜尋、自動擷取文章的關鍵字等等工具

以下會各舉一個我所參與的專案實例,來讓大家更了解 MarTech & NLP 應用細節!

MarTech – Uplift Model

當行銷在投放廣告的時候,如果我們可以預先知道「我們採取某個行動後,使用者會有什麼反應」,我們就可以知道該把廣告遞送給誰可將效益最大化,而不在效果微乎其微或者是容易產生反作用的地方浪費資源。

在 Uplift model 應用中,我們會以「有無收到刺激(你可以想像成廣告或折價券) 、購買率的高低」來把使用者分為「無論如何都支持」、「絕對不支持」、「不打擾沒事,打擾就離開」以及「可被說服的」四種人,我們的目標就是找出那群可被說服的人,精準投遞廣告讓資源效益最大化。由上圖四宮格來看,我們必須訓練一個模型可以找出「在有無收到刺激的形況下反應差最大」的那群可被說服者。以下舉一個例子來說明如何訓練 Uplift Model:

假設我們有一群狗狗使用者,以狗骨頭作為刺激,當我們想知道哪些狗狗對狗骨頭比較有反應時,由於我們不可能讓一隻狗狗同時收到刺激又沒收到刺激,所以會使用隨機試驗去抽取兩群狗狗,只把狗骨頭遞送給其中一群。接著分別在兩群狗中找相似的狗狗,例如圖中的秋田犬與柴犬,搭配他們在廣告活動前一個月的行為,來觀察他們有無收到刺激在活動期間的反應為何,藉此訓練  Uplift model ,用以在下次廣告活動前,去預測每一隻狗在有無收到狗骨頭下的反應差,來找出那些對狗骨頭有比較高反應的狗,作為我們主要的廣告投遞對象。

NLP – Related Search

上述提到 NLP 屬於「以內容為主」的應用,那就要介紹 相關搜尋 (Related Search) 這個推薦模組了!

LINE 購物是一個給大家搜尋比價導購賺點的電商聯盟平台,故如何協助使用者在商品海中快速找到想要的產品變得非常重要,因此我們開發了 相關搜尋 (Related Search) 這個服務,它會根據你搜尋的關鍵字,回傳一串推薦關鍵字給你,讓用戶利用推薦選項更精準搜尋。如上圖,當使用者輸入「吸塵器」, 模型會回傳「吸塵器無線、吸塵器dyson、吸塵器直立式」等更詳細的規格或品牌,幫助使用者更快速找到想要的產品。他背後是使用一個模型將不同維度的資料處理後 embedded 在一起,我們除了考慮字詞相關性以外,因電商是個快速變化的世界,每段時間流行的產品與詞彙會不一樣,所以我們會使用過去一段時間內的 使用者搜尋紀錄 作為訓練資料,如此一來才不會推薦已經過時的商品給用戶導致客戶流失,讓推薦更加符合需求。

MLOps

在了解完實際應用後,大家是不是很好奇,要如何快速開發模型並使之成為在線上服務的產品呢?首先,我們可以先想一想,在完成了模型開發之後,要將模型上線還會有哪些的事情要做?

以相關搜尋 (Related search) 為例,你可能會碰到以下各種困難麻煩的問題:

  • Data 怎麼來?要做哪些處理?
  • 為了保持熱門程度,多久要更新一次?
  • 怎麼驗證模型?hit rate 要大於多少?
  • 是否要做成 Serving API 提供給 LINE SHOPPING 串接?
  • 模型上線後要用哪些指標去觀察表現?
  • 如果 model decay 是否重新訓練?

以上的各種問題,可以仰賴 MLOps 的方式,結合 ML 與 DevOps 整合各階段的工作,使開發與上線更流暢。

在開發階段,我們必須反覆做實驗、設計模型,開發完成後我們會把 source code 存下來,將其打包形成一個自動化的 pipeline;而這個 pipeline 在上線後,會持續地從資料庫或許新資料做訓練以產生模型;之後我們會把通過驗證的模型部署到線上環境,變成一個可以預測服務;而我們也會持續去監測這個模型是否還適用,若 performance 下降,可能會啟動 pipeline 拿新資料重新訓練,或是回到開發階段重做實驗。

在 LINE 裡我們擁有各種強大的平台及架構,來協助我們應用 MLOps 的心法,以一套系統化的方式去解決 ML 開發的困難,而導入 MLOps 能夠為我們帶來以下好處:

  1. 加速 ML 產品化與規模化,縮短從訓練到上線的時間
  2. 運用共同的平台,有利不同角色的協同合作
  3. 讓 AI product 更容易維護,也降低為運成本

若讀者想了解更多細節也可以參考 TECHPULSE 2020 的議程內容:

結論

在這次的 Developers Meetup 中,從團隊角色與分工、應用與專案介紹等角度讓大家更了解 LINE 資料工程團隊做了什麼,不過我們的日常其實不是只有研究演算法、訓練模型而已(圖中的 ML code 部分),許多人對 Data 有很多高大上的想像,這邊也很明白地跟大家分享在學校與在業界做 ML 其實有很大不一樣,寫核心 ML 程式碼其實只是整個系統中的很小的一部分,為了打造精準又穩固的服務,還有許多底層的事情需要做,也因此我們才需要這麼多元的角色參與其中。

總結來說,打造機器學習服務需要非常多角色在 Pipeline 中的不同階段通力合作,LINE 擁有豐富的平台資源,讓我們能透過系統化的方式來加速 ML 開發,如果你想要在一家國際級的大公司,打造頂尖的資料科學服務,歡迎加入 LINE 資料工程團隊!請參考「2021 LINE Taiwan Developers Recruitment Day」系列文章。

如果大家意猶未盡,可以參加「LINE Developers Meetup 開發者小聚系列活動 #15」,將會由另一位同仁 Charlie Tang 為大家帶來「MarTech: from 0 to 1」,歡迎大家踴躍報名!

活動小結

立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev

關於「LINE 開發社群計畫」

LINE 今年年初在台灣啟動「LINE 開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦 30 場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看: