在過去的幾年裡,機器學習得到了巨大的發展。但是,機器學習作為一門年輕的學科,其團隊的管理方式卻更加年輕。今天,許多機器學習經理被推到管理崗位是出于需求,或者是因為他們是最好的個人貢獻者,而且其中許多人來自純學術背景。在一些公司,工程或産品負責人被指派在沒有任何機器學習實戰經驗的情況下建構新的機器學習功能。
管理任何技術團隊都很困難:
- 你必須雇用優秀的人才
- 你需要管理和提升他們
- 你需要管理團隊的輸出,并確定品質過關
- 你想要做出良好的長期技術選擇,管理技術債務
- 你還必須管理來自上司層的期望
然而,運作一個機器學習團隊更加困難:
- 機器學習人才昂貴且稀缺
- 機器學習團隊有一系列不同的角色
- 機器學習項目時間表不明确,具有高度的不确定性
- 機器學習也是「高息信用卡的技術債」
- 上司層通常不了解機器學習
我最近參加了加州大學伯克利分校的全堆棧深度學習訓練營(https://fullstackdeeplearning.com/november2019/ ),這是一門教授全堆棧生産深度學習的精彩課程。Josh Tobin 教授的一個講座提供了關于機器學習團隊的最佳實踐。出于對 Josh 演講的尊重,這篇文章将給出其中的一些觀點,如果你是一個管理者,這可能會幫助你思考如何建立和管理機器學習團隊;如果你是一個求職者,它也可能幫助你在機器學習領域找到一份工作。
PS,你也可以直接觀看演講視訊:https://youtu.be/Qb3RhwNb4EM
步驟 1:角色定義
讓我們看看最常見的機器學習團隊的角色及其所需的技能:
- 機器學習産品經理是與機器學習團隊、其它業務職能部門以及使用者打交道的人。他們負責設計文檔,建立線框圖,提出執行機器學習項目的計劃和優先級。
- 開發工程師是部署和監視産品系統的人,負責運作已部署的機器學習産品的基礎架構。
- 資料工程師是建構資料管道,從資料存儲中聚合和收集、監視資料行為的人,他們将使用分布式系統,如 Hadoop、Kafka、Airflow。
- 機器學習工程師是訓練和部署預測模型的人,他們使用 TensorFlow 和 Docker 等工具處理生産中運作在真實資料上的預測系統。
- 機器學習研究員是訓練預測模型的人,但這個模型通常是前瞻性的,或者和生産不會有緊密聯系。他們使用 TensorFlow/PyTorch/Jupiter 來建立模型,并用報告來描述他們的實驗。
- 資料科學家實際上是上述所有角色的總括。在一些組織中,這個角色需要通過分析來回答業務問題。

圖檔來自 2019 年 11 月 Josh Tobin 的 FSDL 訓練營(https://fullstackdeeplearning.com/novenmber2019/ )
那麼,這些角色需要什麼技能呢?上面的圖對此進行了描述,其中水準軸是機器學習技能的水準,而氣泡的大小是溝通和技術寫作的水準,氣泡越大表示能力越高。
- 機器學習開發工程師主要是軟體工程師。
- 資料工程師屬于軟體工程團隊,與機器學習團隊積極合作。
- 機器學習工程師需要機器學習和軟體工程技能的組合。他們要麼是具有優秀自學能力的工程師,要麼是畢業後從事傳統軟體工程師工作的科學或工程博士。
- 機器學習研究員是機器學習專家,通常擁有計算機科學或統計學碩士、博士學位,或完成有獎金的工業項目的人。
- 機器學習産品經理和傳統的産品經理一樣,對機器學習的發展過程和思維方式有着深刻的認識。
- 資料科學家的角色構成非常廣泛,包含了從大學到博士背景的人。
步驟 2:組建團隊
關于建構一個機器學習團隊的正确方法還沒有達成共識,但決于不同的組織原型和他們的機器學習成熟度水準,有一些最佳實踐。首先,讓我們看看不同的機器學習組織原型是什麼。
原型1:初創和臨時 ML 團隊
- 這些組織中沒有人在做機器學習,或者機器學習是在特别的基礎上完成的。顯然,公司内部很少有機器學習方面的專業知識。
- 這些企業要麼是中小型企業,要麼是教育或物流等機器學習技術含量較低的大型企業。
- 對于機器學習來說,經常有技術含量很低的事情。
- 但對機器學習項目的支援很少,很難聘用和留住優秀的人才。
原型 2:研究與開發 ML 的團隊
- 這些組織的機器學習工作集中在研發部門。他們經常雇傭機器學習研究人員和有發表論文經驗的博士生。
- 這些都是石油、天然氣、制造業或電信等行業的大公司。
- 他們可以聘請有經驗的研究人員,并緻力于長期的商業優先事項,以獲得巨大的成功。
- 然而,他們很難獲得高品質的資料。大多數情況下,這種類型的研究工作很少轉化為實際的商業産品,是以通常投資額仍然很小。
原型3:嵌入産品的 ML 團隊
- 在這些組織中,某些産品團隊或業務部門除了軟體或分析師人才外,還擁有機器學習專業知識。這些機器學習人員向團隊的工程或技術主管彙報。
- 這些公司不是軟體公司就是金融服務公司。
- 機器學習的改進可能會帶來商業價值。此外,在理念疊代和産品改進之間有一個緊密的回報周期。
- 不幸的是,招聘和培養頂尖人才仍然非常困難,資料和計算資源的擷取可能會滞後。機器學習項目周期和工程管理之間也存在潛在的沖突,是以長期的機器學習項目很難被證明是合理的。
原型 4:獨立的 ML 組織
- 在這些組織中,機器學習部門直接向進階上司彙報。機器學習産品經理與研究人員和工程師合作,将機器學習建構到面向客戶的産品中。他們有時可以發表長期研究報告。
- 這些通常是大型金融服務公司。
- 由于人才衆多,他們能夠雇傭和教育訓練頂尖的從業者。進階上司可以整理資料和計算資源,這使組織能夠圍繞機器學習開發在工具、實踐和文化上進行投資。
- 其缺點是,将模型切換到不同的業務線可能很有挑戰性,因為使用者需要學習模型的使用,而且,回報周期可能很長。
原型 5:ML 優先團隊
- 這些組織都是由 CEO 投資的,整個企業都有專家專注于機器學習。機器學習部門緻力于富有挑戰性的長期項目。
- 這些公司包括大型科技公司和以機器學習為重點的初創企業。
- 他們擁有最好的資料(資料思維滲透到組織中)、最具吸引力的招聘管道(具有挑戰性的機器學習問題往往會吸引頂尖人才)和最簡單的部署過程(産品團隊對機器學習的了解足夠好)。
- 這種組織原型在實踐中很難實作,因為很難在任何地方都嵌入機器學習思想。
根據組織的原型,你可以做出适當的選擇,大體上分為以下三類:
- 軟體工程師 vs 研究:機器學習團隊在多大程度上負責建構或內建軟體?軟體工程技能在團隊中有多重要?
- 資料所有權:機器學習團隊對資料收集、存儲、标記上有多少控制權?
- 模型所有權:機器學習團隊是否負責将模型部署到生産中?誰維護已部署的模型?
以下是設計建議。
如果貴公司專注于機器學習研發:
- 科研能力絕對優先于軟體工程技能。是以,這兩個團體之間可能缺乏合作。
- 機器學習團隊無法控制資料,通常也不會有資料工程師來支援它們。
- 機器學習模型很少用于生産。
如果組織在産品中嵌入了機器學習:
- 軟體工程技能将優先于科研技能。通常,研究人員需要很強的工程技能,因為每個人都會被期望将其模型用到生産中。
- 機器學習團隊一般不掌控資料生産和資料管理。他們需要與資料工程師合作來建構資料管道。
- 機器學習工程師管理他們部署到生産中的模型。
如果貴公司有獨立的機器學習部門:
- 每個團隊都有很強的工程和研究技能,是以他們在團隊内緊密合作。
- 機器學習團隊在資料管理的讨論中有發言權,并且具有強大的資料工程能力。
- 機器學習團隊将模型交給使用者,但仍負責維護它們。
如果你的組織以機器學習優先:
- 不同的團隊或多或少都是以研究為導向的,但一般來說,研究團隊與工程團隊緊密協作。
- 機器學習團隊通常擁有公司範圍的資料基礎設施。
- 機器學習團隊将模型交給使用者,由使用者操作和維護。
下圖清晰地總結了這些建議:
圖檔來自 2019 年 11 月 Josh Tobin 的 FSDL 訓練營(https://fullstackdeeplearning.com/novenmber2019/ )
步驟 3:管理項目
管理機器學習項目可能非常具有挑戰性:
- 根據 Lukas Biewald 的說法,很難事先說出哪裡困難,哪裡容易。即使在一個領域中,性能也會有很大的波動。
- 機器學習過程是非線性的。項目停滞數周或更長時間是很常見的。在早期階段,很難對一個項目進行計劃,因為還不清楚什麼能起作用。是以,評估機器學習項目的時間線是非常困難的。
- 由于不同的價值觀、背景、目标和規範,研究和工程之間存在文化差異。可能面臨的情況是,雙方往往不重視彼此。
- 而且,上司層往往不了解這一點。
那麼,如何才能更好地管理機器學習團隊呢?秘訣是計劃機器學習項目是有可能的!
本質上,從這裡開始:
到這裡結束:
以下是其他一些不錯的做法:
- 你應該多嘗試幾種方式。
- 你應該根據投入而不是結果來衡量進度。
- 你應該讓研究人員和工程師一起工作。
- 你應該快速地将端到端的管道連接配接起來,以展示進度。
- 你應該讓上司層意識到機器學習時間線的不确定性。
步驟 4:雇傭人才
Element AI 的這份 2019 年全球人工智能人才報告(https://www.elementai.com/news/2019/2019-global-ai-talent-report )表明,頂級人工智能人才的供應無法滿足需求。在人工智能研究的前沿領域,大約有 2.2 萬人積極發表論文并出席學術會議。隻有大約 4000 人參與了對整個領域有重大影響的研究。共有 36500 人獲得了人工智能專家的稱号。相比之下,美國和全球的軟體開發人員分别為 420 萬和 2640 萬。
1.如何培養機器學習人才?
以下是雇傭機器學習工程師的一些政策:
- 雇傭具有軟體工程技能,對機器學習有濃厚的興趣,對學習的渴望非常強烈的人。然後你可以帶領他們走上機器學習之路。
- 考慮到現在大多數計算機科學大學學生畢業時都有機器學習經驗,是以設定初級職位。
- 對你需要的技能要非常具體。例如,并不是每個機器學習工程師都需要做軟體開發人員。
以下是雇傭機器學習研究人員的政策:
- 尋找出版論文品質高,而不是數量多的人。
- 尋找有眼光解決重要問題的研究人員。許多研究者把注意力集中在流行的問題上,卻沒有考慮它們的重要性。
- 尋找有實踐經驗的研究人員。
- 考慮從鄰近的領域如數學、實體和統計學領域招聘人才。
- 考慮雇傭沒有博士學位的人。例如,有才華的大學生和碩士生,工業獎學金項目(Google、Facebook、OpenAI)的畢業生,以及自學能力很強的人。
你如何第一時間找到這些人?
- 有一些标準來源,如 LinkedIn、recruiters,以及參加大學的招聘會。
- 你應該參加為機器學習研究人員舉辦的有名的機器學習研究會議(NeurIPS,ICLR,ICML)和為機器學習工程師舉辦的著名應用機器學習會議(O'Reilly,ReWork,TensorFlow World)。
- 你可以關注 ArXiv,找到令人印象深刻的研究論文,并與第一作者聯系。
出于長期戰略,你需要考慮如何吸引這些人才:
- 由于機器學習實踐者希望使用尖端的工具和技術,你的公司應該緻力于面向研究的項目,通過部落格釋出這些項目,并為你的機器學習團隊投資工具和基礎設施。
- 由于機器學習從業者希望在令人興奮的領域建立技能和知識,貴公司應建立團隊文化。
- 由于機器學習從業者希望與優秀的人一起工作,你的公司應該雇傭知名度高的人,并且通過釋出部落格和論文幫助這些人建立影響力。
- 由于機器學習的從業者想要處理有趣的資料集,你的公司應該在招聘材料中突出你們的資料集的獨特性。
- 由于機器學習實踐者想做重要的工作,你的公司應該突出公司的使命和機器學習對這些使命的潛在影響。更重要的是,你應該緻力于有實際影響力的項目。
2.如何面試機器學習候選人?
那麼在機器學習面試中你應該考慮什麼呢?
- 第一件事是驗證你對候選人優勢的設想。對于機器學習研究人員來說,要確定他們能夠創造性地思考新的機器學習問題,并考察他們對以前的項目有多投入,確定他們是具有紮實工程技能的優秀多面手。
- 第二件事是確定候選人在他們不擅長的領域也能達到最低要求标準。對于機器學習研究人員來說,測試他們的工程知識和編寫好代碼的能力;對于機器學習工程師來說,測試他們簡單的機器學習知識。
與傳統的軟體工程面試相比,機器學習面試的定義要差得多,但以下是常見的考察方面:
- 背景與文化的契合度
- 編碼
- 機器學習特定代碼的編寫和調試
- 數學難題
- 自己在家做的項目
- 應用機器學習的能力(例如,解釋如何用機器學習解決問題)
- 以前的項目(方法、試驗和錯誤、結果)
- 機器學習理論
3.如何找到一份機器學習的工作?
假設你是一個機器學習的面試者,正在閱讀這篇文章。你可能會問:「我應該在哪裡找到機器學習的工作?」
- 同樣底,你可以使用像 LinkedIn、recruiters 和校内招聘這樣的标準資源。
- 你可以參加機器學習研究會議,與那裡的人建立聯系。
- 你也可以直接在公司的門戶網站申請,記住,人才缺口很大!
找工作當然不容易,但有兩種方法可以讓你脫穎而出:
- 通過 CS 課程或工作經驗建立常用的軟體工程技能。
- 通過參加會議或參加 MOOC,表現出對機器學習的興趣。
- 通過某些方式表明你對機器學習有廣泛的知識。例如,寫某個研究領域的部落格文章。
- 展示完成機器學習項目的能力。例如,你可以建立輔助項目或重新完成論文中的項目。
- 證明你能在機器學習中創造性地思考。例如,在 Kaggle 競賽中赢得名次或發表論文。
為了準備面試,你應該:
- 使用諸如 Cracking The Coding Interview 之類的資源進行一般軟體工程面試的實踐。
- 準備關于你過去的項目的詳細讨論,包括你所做的權衡和決定。
- 回顧機器學習理論和基本的機器學習算法。
- 創造性地思考如何使用機器學習來解決你面試的公司可能面臨的問題。
我還建議你看看這張來自 Chip Huyen 在訓練營上的幻燈片(https://twitter.com/chipro/status/1196232680364376064 ),其中包括機器學習面試過程中的一些重要經驗。
結論
對于大多數傳統組織來說,組建機器學習團隊是一門新的、不斷發展的學科,充滿了已知和未知的挑戰。如果你是直接跳到最後,這裡是幾點總結:
- 生産機器學習涉及到許多不同的技能,是以許多人都有機會做出貢獻。
- 機器學習團隊變得越來越獨立,越來越跨學科。
- 管理機器學習團隊是很困難的。雖然沒有靈丹妙藥,但向機率規劃轉變可能會有所幫助。
- 機器學習人才匮乏。作為一名管理者,在機器學習的招聘資訊描述中要明确哪些技能是必須具備的。作為一個求職者,闖入這一領域可能是一個殘酷的挑戰,是以要用項目證明自己。
希望這篇文章能為你提供有用的資訊,幫助你高效地建構機器學習團隊。
via:https://medium.com/cracking-the-data-science-interview/the-4-steps-to-build-out-your-machine-learning-team-productively-e140a03da0bc