2024-08-21|閱讀時間 ‧ 約 27 分鐘

美國大廠ML 糟糕infra系列:feature develope pipeline

為什麼寫這篇

最近離開美國大廠,加入一家新公司,體驗到什麼是好的ML infra, 因為前東家雖然也是大科技,但infra奇爛無比

為了避免日後忘記,特別記錄一下上一家infra為什麼這麼爛

NOTE:這篇不是批評,而是以一個developer角度說出pain point,希望其他公司不要重蹈覆徹

feature store在AI角色?

先說說AI吧,AI在現實生活中,目前應用最多就是推薦系統,推薦系統顧名思義就是有任何ranking的部分,都可以用推薦系統,像是homepage內容排序,廣告排序

推薦系統內最重要的部分就是model,model可以預測使用者喜歡什麼,而要產生一個model最重要的部分就是feature, feature具體可以是內容的精彩度, 內容的品質,使用者偏好等等

feautre store就是存一堆feature的database,每當使用者來推薦系統,會去獲取相關feature,幫助model去產生推薦

機器學習工程師如何開發feature?

這邊不講如何開發feature store, 這通常是infra的事情, 可以把它當作key-value store就好

對於機器學習工程師(MLE)來說,每當要加入一個新的feature進去model,就需要開發feature pipeline, 具體做法就是ETL, 從幾個table讀資料,處理一下,輸入到feature store, 結束

ML infra讓開發這麼難(EI, PROD cluster)

如上所說就是寫個scala/spark/SQL來做ETL, BUT就是這個BUT

在我前東家有個很大的pain point就是EI跟prod是分開的, 真正需要的是PROD,但我們開發只能在EI上開發,你會問有什麼差,EI開發好, deploy 去prod不就好?

錯!錯!錯!在我前東家不是這一回事!先讓我說說

因為EI跟prod分開,所以source data也是分開!!!這是啥意思?這意思是假設你的pipeline需要讀table A,但table A在prod有data但是在EI沒data

讓要怎麽讓source有data?在我前東家有三個data cluster,彼此是分開的!兩個EI,一個prod. 你說為啥要兩個EI? 我不知道!一個EI for general HDFS,一個for feature store

所以需要從EI for general HDFS copy到EI for feature store,用cmd copy大概需要兩小時,copy好了之後,只能從pipeline去跑feature push!不能從cmd, 而要launch一個pipeline需要build, upload, run大概需要兩小時

說更詳細一點,理論上ETL應該在同一個cluster去跑,但因為featue push cluster不能處理processing(啥infra問題), 所以一個pipeline要在兩個cluster去跑,前半在cluster A, 後面(only push)在cluster B

feautre store在EI, prod cluster也不同,所以要創造兩次

總結一下

  1. 寫好ETL code, build, upload to two EI clusters(A,B) (2 hours for build, upload)
  2. 先跑cluster A pipeline 產生table 甲 on cluster A
  3. run cli to copy table 甲 on cluster A to table 甲 on cluster B
  4. 跑cluster B pipeline read table 甲, push to feature store on cluster B

以上是develop, 那要怎麼check data有進去? 理論上: 不能check!!!!!

what??? 不能check? why???? 因為是使用者data不能看!為了可以check

需要把data手動亂碼一下 還要approval 才可以check

還有另外一個case就是有個fake data要測試feature

你可以如上還是跑pipeline,但要很久,當然我們還有notebook, 可以生成fake data,但是notebook 要在cluster B上跑, 比較tricky是要生成schema, 那個infra internal schema超奇怪schema

另外每個cluster每天都會reset,都要重打密碼!不可以chrome存密碼!!!因為要密碼搭配VIP code(會refresh); 每個cluster都要打一次,所以一天用到四個cluster,要打四次.... 搭配有時候cluster平均一個月掛掉一次

總結

要澄清infra team也是很辛苦,會造成這現象很多時候是歷史因素,像是為啥這麼多cluster,還不相容, 公司內資安系統很很亂,光是帳號密碼就有三組,常常不知用哪個....

之後再打打其他HDFS差異吧










分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.