Line建立起ML平臺MLU,整合了多項開發工具,讓使用者能在平臺上直接呼叫開發工具來使用,而不用擔心個別軟體的開發環境設定。透過各種開發工具在不同環節的應用,也能作為溝通憑藉,讓不同角色成員更容易介入協作。(圖片來源/Line臺灣)

Line透過MLOps設計了一套標準化的AI開發流程,其中涵蓋了從模型實驗、Pipeline的持續部署與交付、自動化建立Pipeline,以及模型的持續訓練、持續部署、持續監測等流程,若模型發生衰變就會回到模型實驗的環節,重複先前的循環。

為了實現這個開發流程,Line建立起一套加速AI開發的協作平臺ML Universe(簡稱MLU),在平臺中整合多種開源或自建的工具,讓使用者在MLU平臺中,能直接呼叫開發工具來使用,而不用擔心個別軟體的開發環境設定;同時,透過各種開發工具在不同環節的應用,也能作為溝通憑藉,讓不同角色成員更容易介入協作。

「我們希望透過MLU平臺,可以讓開發者更輕鬆創造出許多有價值的AI應用。」Line臺灣研發工程部資深資料工程師孫韻如表示,藉由MLU平臺,Line要在維持模型開發品質的同時,也消除不同角色之間的知識壁壘。

Line透過MLOps設計了一套標準化的AI開發工作流,其中涵蓋了從模型實驗、Pipeline的持續部署與交付、自動化建立Pipeline,以及模型持續訓練、持續部署、持續監控等流程。若模型發生衰變,就會回到模型實驗的環節,重複先前的循環。(圖片來源/Line臺灣)

資料準備與探索階段工具

重點功能:特徵商店(Feature Store)

資料工程師在進行特徵工程時,由於這項工作需經過反覆的試驗,團隊建立了用來管理特徵資料的特徵商店(Feature Store),讓資料工程師能將處理後的資料,透過一個統一的介面輸入特徵商店,將特徵資料以標準化的方式來儲存。

如此一來,ML工程師與資料分析師,也能透過同一個介面來查找所需資料,不用再費時處理資料,藉此達到重複利用特徵資料的目的。

模型開發與訓練階段工具

重點功能:程式碼開發工具Jupyter Notebook

團隊整合了Jupyter Notebook作為協作開發的工具,讓開發者能直接在MLU平臺中開啟Notebook介面來使用,Line也已經預安裝好AI開發常用語言及框架,如Python、Tensorflow、PyTorch、Keras、OpenCV,還有NFS、CephFS、S3FS等文件系統,以及能提供分散式任務調度、排程和基本的I/O功能的PySpark核心,讓開發者不用一一自行安裝,只要點選就能開啟。

Line也同步綁定內部的帳號權限,讓開發者只能開啟權限許可的專案,藉此來進行專案管理。

Line臺灣資料工程部資深經理蔡景祥指出,Jupyter Notebook是現行在開發AI應用時,最常使用的工具之一,這個介於編輯器與IDE之間的開發工具,能較清楚的定義開發流程中的不同階段,有助於釐清不同開發者的業務,且因Jupyter Notebook是建立於Web之上的應用,也能較輕易的在團隊中共享、檢視程式碼。

重點功能:程式碼審查工具Jupyter NB viewer、ReviewNB

Line自行開發了Jupyter NB viewer,讓專案程式碼能被共享與瀏覽,來確保每一份程式碼,都至少有兩個人以上看過。Line也採購了Jupyter Notebook的協同作業工具ReviewNB,來與Jupyter NB viewer交互使用,讓程式開發的協作與程式碼檢視工作都更流暢。

ML流程編輯工具Pipeline Editor

為了減少ML開發者與工程人員的溝通成本,Line自建了一個視覺化ML工作流編輯工具Pipeline Editor,讓開發者在開發完模型後,能直接透過拖拉設定的方式來建立ML工作流程,來取代過去需要手動程式開發的作法。(圖片來源/Line臺灣)

為了減少ML開發者與工程人員的溝通成本,Line自建了一個視覺化的編輯工具Pipeline Editor,讓ML開發者在開發完模型後,能直接透過拖拉設定的方式來建立ML流程。Line更在每一個開發步驟,都設計了編輯器功能,讓開發者從介面設定參數,就能配置每一階段中介產物的來源與儲存位置,進而串起整個開發流程達到自動化。

孫韻如進一步解釋,比如在開發ML模型時,在每個環節都必須要指定中介產物儲存的路徑、命名格式與存取權限,完成後才會依照設定儲存到相應位置,但以往,這些設定必須寫程式去定義,這對ML開發者來說具有一定的開發門檻,通常要靠工程維運的角色將ML流程串起來。

「Pipeline Editor的好處,就是當資料科學家開發完模型,將服務部署上線時,不用從頭到尾寫程式來串起流程上的每個作業,只要透過視覺化的介面,來完成相關設定就好。」孫韻如說。

蔡景祥也回憶,最初在開發ML模型時,全團隊還只有自己一個人,從熟悉的模型開發工作,到流程串接,包括檔案如何放、如何取,全都要靠自己寫程式來配置,「而且只適用這個專案,完全是一個客製化的工程。」直到建置了MLU平臺,將客製化開發轉變為通用性的設定,才讓每個人的ML專案都能快速實現。

工作流管理平臺Airflow

開發者在編輯完Pipeline之後,能透過開源工作流管理平臺Airflow,將Pipeline能自動轉換為Airflow的腳本,來進行後續的部署、CI/CD的工作流程,並能從MLU平臺進行版本控管,讓開發者不需要從零開始學習Airflow工作流的建立,只需進行簡單設定,就能在幾秒鐘內建立一個Airflow實例。

針對Airflow的管理,Line也在Airflow中配置了K8s執行器,來更有效率地管理工作流排程,開發者也能從MLU平臺來監控Logs或是重啟Airflow。

雲端ML平臺NSML

在模型訓練的環節,Line臺灣透過由上百顆GPU支持的NSML平臺來訓練模型,滿足大量的運算需求,並透過視覺化的方式來監控所使用的資源量,且NSML平臺也提供了AutoML的功能,能自動進行超參數調校,來節省部分ML模型需要反覆調校超參數的時間。

模型訓練與測試通用工具

版本管理平臺MLFlow

針對持續訓練時產生的不同模型版本,開源ML平臺MLFlow,能記錄或查詢每一次實驗的程式碼、訓練資料、參數配置及訓練結果,讓開發者能更容易進行版本控管,還能在後續模型測試的階段,進行簡單的分析驗證。

模型部署與監控工具

ML模型部署平臺BentoML

在模型經過驗證後,由於資料科學家要將預測服務產品化,具有一定的開發門檻,Line透過開源ML模型部署平臺BentoML,讓開發者能將選定的模型存取下來,透過簡易的設定,手動或由系統自動打包成Docker Image,再部署到Docker Hub中。接著,透過自動擴充的模型部署工具搭配K8s,就能根據流量來自動擴充運算資源量。

Prometheus+Grafana、BI

在上線後的模型成效監控環節,需監控的面向包括服務本身的健康程度,以及模型是否因環境的變化而衰退,前者可以透過普羅米修斯(Prometheus)搭配Grafana來監控,後者則需要根據業務邏輯來設定監控指標,並透過BI儀表板來監控。若發生模型衰變情形,也將觸發重新訓練來維持模型預測表現。

 從實例看MLU平臺如何加速AI開發 

在MLU平臺中整合了多項ML開發常用工具後,Line在開發ML專案時,就能根據ML專案的特性,選擇不同的工具來加速ML開發。

比如說,Line的關鍵字搜尋推薦模型,是根據使用者查詢的歷史記錄,來建立詞與句子的嵌入模型,進而在搜尋欄位推薦用戶關鍵字。Line臺灣研發工程部資深資料工程師孫韻如指出,由於使用者搜尋的關鍵字,會跟著每天的潮流或趨勢而改變,這類模型對於輸入資料的變化特別敏感,需要頻繁的迭代更新,甚至每天都需要重新訓練,才能維持模型的推薦表現。

因此,在這個模型的維運上,Line臺灣透過MLU平臺整合的儀表板工具,來監控模型服務端的健康指標,自動觸發模型進行重新訓練與迭代更新;而且,為了保障模型品質,團隊也運用MLFlow來進行版本控管與模型驗證,若更新後的模型表現低於設定指標,就會自動捨棄更新後的模型,直接採用前一個版本的模型來進行預測,確保模型品質在一定水準之上,「整個流程都已經自動化。」

除了模型本身的監控,團隊也透過用戶端的監測機制(如點閱率),來分析使用者對於Line所推薦的關鍵字是否買單,進而去判斷,除了模型自動迭代更新,ML工程師是否需要手動重新開發模型,「因為當模型劣化到一定程度,就需要從根本上重新調整。」

另一個同樣運用了MLU平臺的模型,是文章內容推薦模型,比如Line的內容服務就是運用這個模型,推薦用戶相同類型的文章來閱讀。這個ML模型是以ELECTRA框架為基礎來開發,在訓練這類模型時,由於資料集龐大、模型複雜度高,會需要針對超參數進行大量反覆的試驗。

因此,團隊運用MLU平臺中,AutoML自動調整參數的功能,來更有效率的篩選出表現較佳的模型,同時也透過BentoML,來提供服務端可直接呼叫的API,節省部署上線的時間。

除了上述兩個在線上提供預測服務的模型,Line臺灣也開發了線下服務的模型,比如目標群眾鎖定(User Targeting)模型,目的要在最小成本下找到最容易被吸引的使用者群,來生成一份目標群眾的名單,提供後續活動推播時使用。這個ML應用與上述兩者的最大不同,是該模型不是將預測服務打包成API,透過線上呼叫API來取得預測結果,而是在線下生成用戶名單,這類部署方式也能透過MLU平臺來快速交付。

完整系列報導在這裡

熱門新聞

Advertisement