0
在過去的幾年里,機器學習得到了巨大的發(fā)展。但是,機器學習作為一門年輕的學科,其團隊的管理方式卻更加年輕。今天,許多機器學習經理被推到管理崗位是出于需求,或者是因為他們是最好的個人貢獻者,而且其中許多人來自純學術背景。在一些公司,工程或產品負責人被指派在沒有任何機器學習實戰(zhàn)經驗的情況下構建新的機器學習功能。
管理任何技術團隊都很困難:
你必須雇用優(yōu)秀的人才。
你需要管理和提升他們
你需要管理團隊的輸出,并確質量過關
你想要做出良好的長期技術選擇,管理技術債務
你還必須管理來自領導層的期望
然而,運行一個機器學習團隊更加困難:
機器學習人才昂貴且稀缺
機器學習團隊有一系列不同的角色
機器學習項目時間表不明確,具有高度的不確定性
機器學習也是「高息信用卡的技術債」
領導層通常不理解機器學習
我最近參加了加州大學伯克利分校的全堆棧深度學習訓練營(https://fullstackdeeplearning.com/november2019/ ),這是一門教授全堆棧生產深度學習的精彩課程。Josh Tobin 教授的一個講座提供了關于機器學習團隊的最佳實踐。出于對 Josh 演講的尊重,這篇文章將給出其中的一些觀點,如果你是一個管理者,這可能會幫助你思考如何建立和管理機器學習團隊;如果你是一個求職者,它也可能幫助你在機器學習領域找到一份工作。
PS,你也可以直接觀看演講視頻:https://www.youtube.com/watch?v=Qb3RhwNb4EM&list=PL1T8fO7ArWlcf3Hc4VMEVBlH8HZm_NbeB&index=8&t=0s
步驟 1:角色定義
讓我們看看最常見的機器學習團隊的角色及其所需的技能:
機器學習產品經理是與機器學習團隊、其它業(yè)務職能部門以及用戶打交道的人。他們負責設計文檔,創(chuàng)建線框圖,提出執(zhí)行機器學習項目的計劃和優(yōu)先級。
開發(fā)工程師是部署和監(jiān)視產品系統(tǒng)的人,負責運行已部署的機器學習產品的基礎架構。
數據工程師是構建數據管道,從數據存儲中聚合和收集、監(jiān)視數據行為的人,他們將使用分布式系統(tǒng),如 Hadoop、Kafka、Airflow。
機器學習工程師是訓練和部署預測模型的人,他們使用 TensorFlow 和 Docker 等工具處理生產中運行在真實數據上的預測系統(tǒng)。
機器學習研究員是訓練預測模型的人,但這個模型通常是前瞻性的,或者和生產不會有緊密聯系。他們使用 TensorFlow/PyTorch/Jupiter 來建立模型,并用報告來描述他們的實驗。
數據科學家實際上是上述所有角色的總括。在一些組織中,這個角色需要通過分析來回答業(yè)務問題。
圖片來自 2019 年 11 月 Josh Tobin 的 FSDL 訓練營(https://fullstackdeeplearning.com/novenmber2019/ )
那么,這些角色需要什么技能呢?上面的圖對此進行了描述,其中水平軸是機器學習技能的水平,而氣泡的大小是溝通和技術寫作的水平,氣泡越大表示能力越高。
機器學習開發(fā)工程師主要是軟件工程師。
數據工程師屬于軟件工程團隊,與機器學習團隊積極合作。
機器學習工程師需要機器學習和軟件工程技能的組合。他們要么是具有優(yōu)秀自學能力的工程師,要么是畢業(yè)后從事傳統(tǒng)軟件工程師工作的科學或工程博士。
機器學習研究員是機器學習專家,通常擁有計算機科學或統(tǒng)計學碩士、博士學位,或完成有獎金的工業(yè)項目的人。
機器學習產品經理和傳統(tǒng)的產品經理一樣,對機器學習的發(fā)展過程和思維方式有著深刻的認識。
數據科學家的角色構成非常廣泛,包含了從本科到博士背景的人。
步驟 2:組建團隊
關于構建一個機器學習團隊的正確方法還沒有達成共識,但決于不同的組織原型和他們的機器學習成熟度水平,有一些最佳實踐。首先,讓我們看看不同的機器學習組織原型是什么。
原型1:初創(chuàng)和臨時 ML 團隊
這些組織中沒有人在做機器學習,或者機器學習是在特別的基礎上完成的。顯然,公司內部很少有機器學習方面的專業(yè)知識。
這些企業(yè)要么是中小型企業(yè),要么是教育或物流等機器學習技術含量較低的大型企業(yè)。
對于機器學習來說,經常有技術含量很低的事情。
但對機器學習項目的支持很少,很難聘用和留住優(yōu)秀的人才。
原型 2:研究與開發(fā) ML 的團隊
這些組織的機器學習工作集中在研發(fā)部門。他們經常雇傭機器學習研究人員和有發(fā)表論文經驗的博士生。
這些都是石油、天然氣、制造業(yè)或電信等行業(yè)的大公司。
他們可以聘請有經驗的研究人員,并致力于長期的商業(yè)優(yōu)先事項,以獲得巨大的成功。
然而,他們很難獲得高質量的數據。大多數情況下,這種類型的研究工作很少轉化為實際的商業(yè)產品,因此通常投資額仍然很小。
原型3:嵌入產品的 ML 團隊
在這些組織中,某些產品團隊或業(yè)務部門除了軟件或分析師人才外,還擁有機器學習專業(yè)知識。這些機器學習人員向團隊的工程或技術主管匯報。
這些公司不是軟件公司就是金融服務公司。
機器學習的改進可能會帶來商業(yè)價值。此外,在理念迭代和產品改進之間有一個緊密的反饋周期。
不幸的是,招聘和培養(yǎng)頂尖人才仍然非常困難,數據和計算資源的獲取可能會滯后。機器學習項目周期和工程管理之間也存在潛在的沖突,因此長期的機器學習項目很難被證明是合理的。
原型 4:獨立的 ML 組織
在這些組織中,機器學習部門直接向高級領導匯報。機器學習產品經理與研究人員和工程師合作,將機器學習構建到面向客戶的產品中。他們有時可以發(fā)表長期研究報告。
這些通常是大型金融服務公司。
由于人才眾多,他們能夠雇傭和培訓頂尖的從業(yè)者。高級領導可以整理數據和計算資源,這使組織能夠圍繞機器學習開發(fā)在工具、實踐和文化上進行投資。
其缺點是,將模型切換到不同的業(yè)務線可能很有挑戰(zhàn)性,因為用戶需要學習模型的使用,而且,反饋周期可能很長。
原型 5:ML 優(yōu)先團隊
這些組織都是由 CEO 投資的,整個企業(yè)都有專家專注于機器學習。機器學習部門致力于富有挑戰(zhàn)性的長期項目。
這些公司包括大型科技公司和以機器學習為重點的初創(chuàng)企業(yè)。
他們擁有最好的數據(數據思維滲透到組織中)、最具吸引力的招聘渠道(具有挑戰(zhàn)性的機器學習問題往往會吸引頂尖人才)和最簡單的部署過程(產品團隊對機器學習的理解足夠好)。
這種組織原型在實踐中很難實現,因為很難在任何地方都嵌入機器學習思想。
根據組織的原型,你可以做出適當的選擇,大體上分為以下三類:
軟件工程師 vs 研究:機器學習團隊在多大程度上負責構建或集成軟件?軟件工程技能在團隊中有多重要?
數據所有權:機器學習團隊對數據收集、存儲、標記上有多少控制權?
模型所有權:機器學習團隊是否負責將模型部署到生產中?誰維護已部署的模型?
以下是設計建議。
如果貴公司專注于機器學習研發(fā):
科研能力絕對優(yōu)先于軟件工程技能。因此,這兩個團體之間可能缺乏合作。
機器學習團隊無法控制數據,通常也不會有數據工程師來支持它們。
機器學習模型很少用于生產。
如果組織在產品中嵌入了機器學習:
軟件工程技能將優(yōu)先于科研技能。通常,研究人員需要很強的工程技能,因為每個人都會被期望將其模型用到生產中。
機器學習團隊一般不掌控數據生產和數據管理。他們需要與數據工程師合作來構建數據管道。
機器學習工程師管理他們部署到生產中的模型。
如果貴公司有獨立的機器學習部門:
每個團隊都有很強的工程和研究技能,因此他們在團隊內緊密合作。
機器學習團隊在數據管理的討論中有發(fā)言權,并且具有強大的數據工程能力。
機器學習團隊將模型交給用戶,但仍負責維護它們。
如果你的組織以機器學習優(yōu)先:
不同的團隊或多或少都是以研究為導向的,但一般來說,研究團隊與工程團隊緊密協作。
機器學習團隊通常擁有公司范圍的數據基礎設施。
機器學習團隊將模型交給用戶,由用戶操作和維護。
下圖清晰地總結了這些建議:
圖片來自 2019 年 11 月 Josh Tobin 的 FSDL 訓練營(https://fullstackdeeplearning.com/novenmber2019/ )
步驟 3:管理項目
管理機器學習項目可能非常具有挑戰(zhàn)性:
根據 Lukas Biewald 的說法,很難事先說出哪里困難,哪里容易。即使在一個領域中,性能也會有很大的波動。
機器學習過程是非線性的。項目停滯數周或更長時間是很常見的。在早期階段,很難對一個項目進行計劃,因為還不清楚什么能起作用。因此,評估機器學習項目的時間線是非常困難的。
由于不同的價值觀、背景、目標和規(guī)范,研究和工程之間存在文化差異??赡苊媾R的情況是,雙方往往不重視彼此。
而且,領導層往往不理解這一點。
那么,如何才能更好地管理機器學習團隊呢?秘訣是計劃機器學習項目是有可能的!
本質上,從這里開始:
到這里結束:
以下是其他一些不錯的做法:
你應該多嘗試幾種方式。
你應該根據投入而不是結果來衡量進度。
你應該讓研究人員和工程師一起工作。
你應該快速地將端到端的管道連接起來,以展示進度。
你應該讓領導層意識到機器學習時間線的不確定性。
步驟 4:雇傭人才
Element AI 的這份 2019 年全球人工智能人才報告(https://www.elementai.com/news/2019/2019-global-ai-talent-report )表明,頂級人工智能人才的供應無法滿足需求。在人工智能研究的前沿領域,大約有 2.2 萬人積極發(fā)表論文并出席學術會議。只有大約 4000 人參與了對整個領域有重大影響的研究。共有 36500 人獲得了人工智能專家的稱號。相比之下,美國和全球的軟件開發(fā)人員分別為 420 萬和 2640 萬。
1.如何培養(yǎng)機器學習人才?
以下是雇傭機器學習工程師的一些策略:
雇傭具有軟件工程技能,對機器學習有濃厚的興趣,對學習的渴望非常強烈的人。然后你可以帶領他們走上機器學習之路。
考慮到現在大多數計算機科學本科學生畢業(yè)時都有機器學習經驗,所以設置初級職位。
對你需要的技能要非常具體。例如,并不是每個機器學習工程師都需要做軟件開發(fā)人員。
以下是雇傭機器學習研究人員的策略:
尋找出版論文質量高,而不是數量多的人。
尋找有眼光解決重要問題的研究人員。許多研究者把注意力集中在流行的問題上,卻沒有考慮它們的重要性。
尋找有實踐經驗的研究人員。
考慮從鄰近的領域如數學、物理和統(tǒng)計學領域招聘人才。
考慮雇傭沒有博士學位的人。例如,有才華的本科生和碩士生,工業(yè)獎學金項目(Google、Facebook、OpenAI)的畢業(yè)生,以及自學能力很強的人。
你如何第一時間找到這些人?
有一些標準來源,如 LinkedIn、recruiters,以及參加大學的招聘會。
你應該參加為機器學習研究人員舉辦的有名的機器學習研究會議(NeurIPS,ICLR,ICML)和為機器學習工程師舉辦的著名應用機器學習會議(O'Reilly,ReWork,TensorFlow World)。
你可以關注 ArXiv,找到令人印象深刻的研究論文,并與第一作者聯系。
出于長期戰(zhàn)略,你需要考慮如何吸引這些人才:
由于機器學習實踐者希望使用尖端的工具和技術,你的公司應該致力于面向研究的項目,通過博客發(fā)布這些項目,并為你的機器學習團隊投資工具和基礎設施。
由于機器學習從業(yè)者希望在令人興奮的領域建立技能和知識,貴公司應建立團隊文化。
由于機器學習從業(yè)者希望與優(yōu)秀的人一起工作,你的公司應該雇傭知名度高的人,并且通過發(fā)布博客和論文幫助這些人創(chuàng)建影響力。
由于機器學習的從業(yè)者想要處理有趣的數據集,你的公司應該在招聘材料中突出你們的數據集的獨特性。
由于機器學習實踐者想做重要的工作,你的公司應該突出公司的使命和機器學習對這些使命的潛在影響。更重要的是,你應該致力于有實際影響力的項目。
2.如何面試機器學習候選人?
那么在機器學習面試中你應該考慮什么呢?
第一件事是驗證你對候選人優(yōu)勢的設想。對于機器學習研究人員來說,要確保他們能夠創(chuàng)造性地思考新的機器學習問題,并考察他們對以前的項目有多投入,確保他們是具有扎實工程技能的優(yōu)秀多面手。
第二件事是確保候選人在他們不擅長的領域也能達到最低要求標準。對于機器學習研究人員來說,測試他們的工程知識和編寫好代碼的能力;對于機器學習工程師來說,測試他們簡單的機器學習知識。
與傳統(tǒng)的軟件工程面試相比,機器學習面試的定義要差得多,但以下是常見的考察方面:
背景與文化的契合度
編碼
機器學習特定代碼的編寫和調試
數學難題
自己在家做的項目
應用機器學習的能力(例如,解釋如何用機器學習解決問題)
以前的項目(方法、試驗和錯誤、結果)
機器學習理論
3.如何找到一份機器學習的工作?
假設你是一個機器學習的面試者,正在閱讀這篇文章。你可能會問:「我應該在哪里找到機器學習的工作?」
同樣底,你可以使用像 LinkedIn、recruiters 和校內招聘這樣的標準資源。
你可以參加機器學習研究會議,與那里的人建立聯系。
你也可以直接在公司的門戶網站申請,記住,人才缺口很大!
找工作當然不容易,但有兩種方法可以讓你脫穎而出:
通過 CS 課程或工作經驗建立常用的軟件工程技能。
通過參加會議或參加 MOOC,表現出對機器學習的興趣。
通過某些方式表明你對機器學習有廣泛的知識。例如,寫某個研究領域的博客文章。
展示完成機器學習項目的能力。例如,你可以創(chuàng)建輔助項目或重新完成論文中的項目。
證明你能在機器學習中創(chuàng)造性地思考。例如,在 Kaggle 競賽中贏得名次或發(fā)表論文。
為了準備面試,你應該:
使用諸如 Cracking The Coding Interview 之類的資源進行一般軟件工程面試的實踐。
準備關于你過去的項目的詳細討論,包括你所做的權衡和決定。
回顧機器學習理論和基本的機器學習算法。
創(chuàng)造性地思考如何使用機器學習來解決你面試的公司可能面臨的問題。
我還建議你看看這張來自 Chip Huyen 在訓練營上的幻燈片(https://twitter.com/chipro/status/1196232680364376064 ),其中包括機器學習面試過程中的一些重要經驗。
結論
對于大多數傳統(tǒng)組織來說,組建機器學習團隊是一門新的、不斷發(fā)展的學科,充滿了已知和未知的挑戰(zhàn)。如果你是直接跳到最后,這里是幾點總結:
生產機器學習涉及到許多不同的技能,因此許多人都有機會做出貢獻。
機器學習團隊變得越來越獨立,越來越跨學科。
管理機器學習團隊是很困難的。雖然沒有靈丹妙藥,但向概率規(guī)劃轉變可能會有所幫助。
機器學習人才匱乏。作為一名管理者,在機器學習的招聘信息描述中要明確哪些技能是必須具備的。作為一個求職者,闖入這一領域可能是一個殘酷的挑戰(zhàn),所以要用項目證明自己。
希望這篇文章能為你提供有用的信息,幫助你高效地構建機器學習團隊。
雷鋒網雷鋒網雷鋒網
雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知。