twdsmeetup
Published in

twdsmeetup

舊金山Yelp Machine Learning Engineer工作分享—Albert Lee

Taiwan Data Science Meetup 台灣資料科學社群線上板聚 2020.11.14

個人背景

Albert 擁有台大資工學士以及 University of California, San Diego (UCSD) 資工碩士學位,畢業後曾在聖荷西的日商 Hitachi 擔任一年的 Full Stack Engineer,現在已在舊金山的美商 Yelp 擔任了一年的 Machine Learning Engineer。

What is Machine Learning Engineer

Full Stack Engineer vs. Machine Learning Engineer

Full Stack Engineer 和 Machine Learning Engineer 都屬於 Software Engineer,換句話說他們皆是 Software Engineer 的子集合,而兩者的差異在於 project 的目標導向不同。Full Stack Engineer 的工作內容包山包海,不過大家在求職網站看到的 job description 通常是著重在 Web Programming。以Yelp 的網頁為例,為了要讓使用者看得到圖片和評論,Full Stack Engineer 必須知道如何從資料庫中拿取並顯示這些資料;而 Machine Learning Engineer 負責決定挑哪一張圖片顯示在網頁上。具體來說,今天客戶搜尋了「舊金山、壽司」,送出 request 之後的處理屬於 Full Stack Engineer 的範疇,目標在於如何顯示內容;而 Machine Learning Engineer 會根據使用者的行為和壽司店家的資訊做計算,來決定要顯示哪些結果給客戶。

需求方面,Full Stack Engineer 是 must to have,如果沒有 Full Stack Engineer,就算有了 Machine Learning Engineer 也無法做任何事;而 Machine Learning Engineer 是 nice to have,在產品初期不一定要有很 fancy的 Machine Learning Models,可是 Full Stack Engineer 是不可或缺的。以非 AI 產品來說,一開始只需要 Full Stack Engineer,等到用戶夠多了、有較大的流量,才有動機 log user data、將使用者的行為存到 database,並做 A/B testing 和一些 modeling 來提升 user experience,但以 AI 產品像是自動車來說,Machine Learning Engineer 就非常重要了。因此想成為 Machine Learning Engineer 的人可以從定位的角度去思考,因為待在不同類型的公司,在定位上就會有主力和輔助的差別。

Data Engineer vs. Machine Learning Engineer

如剛才提到的,Data Engineer 著重在 log user data,在使用者瀏覽頁面的過程中把資料存到資料庫裡面,再根據 business requirements 思考要如何存data、以什麼樣的 format 存入,而有了這些 data,Machine Learning Engineer 才能拿來 train models。因此以順序來說,也是要先有 Data Engineer 才會有 Machine Learning Engineer。值得留意的是,Machine Learning Engineer 在每間公司甚至每個 team 的定位會有些許不同,大公司可能有人專門研究 modeling,而規模較小的公司接觸的工作可能會較廣但也較淺。

Working at Yelp

What is Yelp?

Yelp 是美國最大的評論網站,類似台灣人較為熟知的 Google Maps 的地標搜尋及評論功能,但更深入、更完善,內容除了搜尋美食之外,還有搬家和水電工等服務。

Hitachi vs. Yelp

Hitachi 是一間 toB 公司,客戶是其他公司;而 Yelp 是 toC 公司,客戶是一般散戶使用者。toB 公司可以依照是否有全球客戶區分成兩大類,決定了需求是否會被少數客戶 dominate。以 Hitachi 來說,其客戶僅有數十個,其中幾個大客戶就會 dominate 公司的需求,並根據主要客戶需求決定整個 team的方向。對有意創業者,待在 toB 公司的好處是可以學到更多 specific domain knowledge,前提是這個產業的前景不錯。 toC 公司的客戶數量多且多元,因此會從 data 看出使用者的潛在偏好再設計產品,也因此 toC 公司的PM 通常要有資料分析的背景。

How is Yelp

公司重視 work-life balance 和 soft skills,也如矽谷大部分 toC 大公司,相當看重 ownership,會有自己的產品、自己寫 documents、自己規劃整個scope。公司也有互助文化,有個內部系統( Yelp Love)讓員工在接受幫助後可以回饋愛心給對方。活動的部分有 happy hour, movie night, Yelp Beans(隨機配對 one-on-one meeting,可以和其他 team 的人交流), machine learning sync-up, paper reading discussion,同事也都滿樂於交流。

Yelp的商業策略

商業策略簡而言之就是流量換收入,流量主要來自美國及一小部分的歐洲,廣告收入佔了 99%,除了廣告組是收入來源外,其他 team 都是為了豐富產品內容、提升 user experience。使用者按下搜尋後,廣告會出現在最上面,顯示為 sponsored ads /search ads,其餘的一般搜尋結果稱為 organic results,CTR則是點擊率。

Ads Teams at Yelp

Ads team 在 Yelp 負責客製化 local business 的廣告外,也負責做廣告推薦系統,也就是說大家在 Yelp 上面看到的廣告都是 Yelp 全權控制的,要完成一個完整的廣告推薦系統就需要 ads infrastructure 跟 ads modeling 的一起合作,而平常 ads modeling 也會跟其他組一起合作,像是 ads experience, business team, search team。Ads team 基本上很多 modeling 都跟 search team 很類似,也常常合作,所以大家在挑選組的時候,這兩個基本上非常相關,而 search team 大部分都是很 focus 在 user engagement 上面,Ads Quality Team 則必須考慮到 business trade-off,以兼顧使用者體驗和商家投放廣告的意願。

Machine Learning Engineer at Ads Quality Team

Yelp 規模沒有 Google, Facebook 大,也因此 Machine Learning Engineer 做的事情比較廣,例如可能會碰到要做 data engineer 的事情, modeling 的事情還有寫 production code 跟 deployment,但也相對比較淺。

Project 大概分為三部分,一是提升 model 效能,像是提高使用者滿意度或是增加公司利潤;二是 exploring,討論是否要用新模型或是新的框架;三則是infrastructure。

在專案規劃上,Yelp 會有brainstorming,最後再投票選出可行和較多 impact的 project。可以跟 planner 說自己想做哪個 project ,再交一份 google doc 寫規劃和需要的資源。工作中需要一直跟其他 team 溝通,不是如當初所想的一直在寫 code,因此溝通能力相當重要。

Machine Learning Engineer Career

Machine Learning Engineer需要的能力&面試

所有技能當中 coding 是最重要的,Java 和 Python 是必備,要求大致上和Software Engineer 類似,公司也看重程式的 maintainability。數學能力只是輔助,可以幫助自己更了解一些 insights,並且能看得懂較為應用導向的paper 就可以。溝通很重要,必須了解其他 team 能夠給自己帶來什麼幫助。

針對 Software Engineer 的面試通常有一輪 behavior,其他都是 coding,如果是 senior 就會問 system design。而 Machine Learning Engineer 考的coding 難度差不多,畢竟仍屬於軟體工程師,所以還是考演算法和資料結構。有很大一部分是在問 modeling,像是在某種情境下要怎麼設計推薦系統、要怎麼 label data,以及 domain-specific questions,貼近實際應用而非深入問 system design;數學則很少考,但如果是小公司、hedge fund 或是專門研究 model 的工作在面試時還是會考數學。

Why Machine Learning Engineer Career

職涯發展方面,machine learning engineer的成長上限高,hard skills 很難很快地就封頂,且工作內容更為廣泛,也很吃經驗,並且可以客製化自己的品牌,專精在某個領域 (infra, product, modeling)。而喜愛數學、喜歡持續學習也是想要在這個領域發展的原因。

Q&A Session

Q: 請問 machine learning 的知識跟寫 code 的能力,在面試過程中哪個比較被看重?

A: 兩者都看重。Phone interview 看重 coding,如果 coding 沒過就沒有下一輪。On-site 會先考 coding 再問 machine learning,四輪面試中有三輪都在問machine learning modeling,但不會很明顯地直接問 machine learning 知識,而是從面試過程中看出來,所以還是要多看 paper、吸收新的 model 知識。

Q: 請問您覺得 machine learning engineer 和 applied scientist 有什麼不同,以及之後的 career path 大概是如何呢?

A: 以 career path 來說 machine learning engineer 的工作比較雜,而 applied scientist 專精在 modeling 的部分,比較少寫 production code。因為 machine learning engineer 屬於 software engineer 的一員,所以之後要轉去 full-stack engineer 或是寫 IOS engineer 都是可以的,而 applied scientist 我沒這麼熟悉,但如果想要轉去工程師也可先跳來 machine learning engineer。

Q: 請問 machine learning engineer 的履歷上必備的技能或經驗有哪些?

A: 雖然第一份工作和 machine learning 無關,但還是得到面試機會,可能是因為在學校做過 machine learning project、看很多推薦系統的 paper,Kaggle 也有些幫助。如果沒有工作經驗,side project 就很重要,在面試時比較能發揮。

Q: 想請問您在 Yelp machine learning engineer 的工作內容有多少比例是在做modeling/infrastructure?

A: 這取決於不同公司的工作內容,通常 modeling佔 60–70%

Q: 面對 Google Maps 非常厲害的 review 功能,在 Yelp 裡面工作會參考其他產品的做法嗎?

A: 腦力激盪的時候會參考其他公司,如果可行就會納入考量。

Q: 分成 junior and senior 來說,現在的 machine learning 職位缺口如何?招聘最大的障礙是什麼?

A: 現在要進這行越來越難,經驗要求本來大約是兩年,現在大部分prefer 3–5年、甚至是 5 年以上的經驗,Senior 的缺口應該滿大;只要求一兩年經驗的公司比較少見,但也有公司熱愛訓練新人,有開 new grad 計畫。結論是如果沒有工作經驗、或是第一份工作不是 machine learning engineer 的話就很難說服面試官,但如果是 senior 就算沒有 machine learning 經驗公司依然prefer。

Q: 請問 machine learning engineer 跟 data scientist 做的事情有什麼差以及兩者會怎麼配合?

A: 相較於 machine learning engineer,data scientist 的 modeling 很強,但他仍然需要 back-end engineer 和 machine learning engineer 去 deploy 他的project 或 model、幫忙寫 production code,而 team 裡面需不需要 modeling能力很強的 data scientist 就取決於公司的規劃。

Q: 請問 paper 都看什麼領域的,還有透過哪個管道看?

A: 推薦 KDD,每年大約有100 個 paper,主要看 popular 公司做的 paper,因為這些公司已經把他們的 model productionize,也就證實了是可以做出來的,就會去了解他們的系統是如何設計。

Q: 希望可以了解美國 junior ML工程師的薪資大約落在哪邊?

A: 看公司Yelp 開的跟 backend engineer 差不多,如果是獨角獸新創會非常多,但要求的門檻更高,像是 PhD、發過 paper 等等。

Q: 請問 machine learning engineer 和 data scientist related position 需要 PhD嗎?

A: 以我個人觀察(不一定是對的),Data Scientist 可能比較需要 PhD(不是絕對的,我不在這一行)。Yelp 裡面的 Applied Machine Learning 組 70%以上都是 PhD,不一定都是 CS PhD;而 machine learning engineer 相對地比較不需要 PhD,但有的話很加分,通常會強調 PhD、發過 paper 或是相關machine learning 工作經驗,如果都沒有的話,若能在面試時展現對 model的了解,個人覺得也非常受到面試官青睞。而要如何習得相關工作經驗呢?可以先當軟體工程師,在同一家公司爭取 machine learning project 或是內轉相關的組,就可以在履歷累積經驗。machine learning engineer 算是很好的中介,看是之後要轉 Infra 或是 modeling,還是轉成 full-stack 都是有機會的;相反地,data scientist 如果想轉成 software engineer 也可以先跳來做machine learning engineer 再轉過去。

Q: 如果想從 Full Stack Developer 到 machine learning engineer,需要具備哪些知識和經驗?

A: 以下是我個人想法,不一定精確,僅供參考。基本上我會把它分為兩類:新創小公司跟大公司。小公司會有非常明確的目標,需要即戰力而且要能快速從零到有把系統做出來而且又要 end to end 經驗,所以即使是 full stack engineer 還是有很多共通性,像是 devops、end to end 還有 from scratch 經驗都很有幫助。除此之外,我也會著重我的 side project(強調可以 from scratch),如果這間公司非常專注於某特定領域,也可以多提到相關的 side project 經驗。大公司更多是強調如何跟其他組合作,所以溝通能力、熟悉快速了解 large scale 的系統跟寫好 clean code 就非常重要,這部分跟 full stack engineer 滿多共通的。

Q: 請問您可以幫忙內推嗎?目前 Yelp 有提供 visa 嗎?

A: 可以,但 2021 感覺機會更多。Yelp 有提供抽 H-1B 跟綠卡,只要抽到 H-1B 就會很快速幫忙辦綠卡。有過四次都沒抽到 H-1B 也沒關係,我們有德國office(一年 30天特休,比我們總部多一倍),還有加拿大 office,有同事沒抽到去德國、繼續抽 H-1B、後來再跑去加拿大 office,最後直接在加拿大定居了。

Q: 請問 machine learning engineer 必備 computer science degree 和 software development skill sets 嗎?需要哪些 skill sets 呢?

A: 並不是 required,主要是看這公司熱不熱門,這取決於當時應徵者的條件以及面試官的偏好,machine learning engineer 還是個很 confusing 的 title,實際上做 model 多些還是做工程多些,很看組跟公司。如果是工程方面會偏好 CS,但如果本身有相關工作經驗就不重要了;如果是 modeling 方面就會偏好數學統計、CS。我們組每個大學畢業生都是 CS 科系的(UCB, CMU),然後 applied data scientist 是統計碩士,碩士生的話可能就不一定非要 CS 了,相關科系即可,PhD 生則更加廣泛,也有物理 PhD。

--

--

台灣資料學社群 Taiwan Data Science Meetup 以提供資料科學最新技術和實戰攻略為目標,希望可以讓更多的人們了解資料科學,運用在工作及各種場景之中。為了讓這些知識也能夠被紀錄與分享,每週會定期發行文章。內容涵蓋資料科學相關的工作產業分享、職涯發展與規畫、最近技術運用、資料科學實務等。歡迎訂閱 Taiwan Data Science Meetup,取得資料科學第一手資訊! 或是加入台灣資料學社群 Facebook 社團 https://www.facebook.com/groups/datasciencemeetup

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store