4個步驟成功構建出一個機器學習團隊

ai公園 發佈 2020-02-20T13:28:18+00:00

作者:JamesLe編譯:ronghuaiyang導讀對一個公司來說,如何從0到1構建一個機器學習團隊,是很多公司非常頭疼的問題,這篇文章給出了一些建議,對求職者來說,同樣具有參考價值。

作者:James Le

編譯:ronghuaiyang

導讀

對一個公司來說,如何從0到1構建一個機器學習團隊,是很多公司非常頭疼的問題,這篇文章給出了一些建議,對求職者來說,同樣具有參考價值。

在過去的幾年裡,機器學習有了巨大的發展。但是,儘管機器學習是一門學科,管理機器學習團隊的技藝卻更年輕。當今許多機器學習管理人員被迫進入管理崗位,要麼是出於需要,要麼是因為他們是最好的個人貢獻者,而且許多人純粹來自學術背景。在一些公司,工程師或產品負責人的任務是建立新的機器學習能力,而沒有任何真正的機器學習經驗。

管理任何技術團隊都是困難的:

  • 你必須僱傭優秀的人。
  • 你需要管理和發展它們。
  • 你需要管理你的團隊的輸出,並確保你們的方向是一致的。
  • 你會希望做出良好的長期技術選擇和管理技術債務。
  • 你還必須管理來自領導層的期望。

管理一個機器學習團隊更加困難:

  • 機器學習人才昂貴而稀缺。
  • 機器學習小組有不同的角色。
  • 機器學習項目時間安排不明確,不確定性高。
  • 機器學習也是「技術債的高息信用卡」。
  • 領導經常不理解機器學習。

我最近參加了加州大學伯克利分校的「全棧深度學習訓練營」,這是一門教授全棧生產深度學習的精彩課程。Josh Tobin的一個講座提供了關於機器學習團隊的最佳實踐。作為Josh講座的一部分,本文將為你提供一些關於如果你是一名經理,如何考慮建立和管理機器學習團隊的見解,如果你是一名求職者,這篇文章也可能幫助你在機器學習領域找到一份工作。

第1步 — 定義角色

讓我們來看看最常見的機器學習角色和它們需要的技能:

  1. 機器學習產品經理與機器學習團隊一起工作,給其他業務和最終用戶提供能力。這個人設計文檔,創建線框圖,制定出優先級和執行機器學習項目的計劃。
  2. DevOps工程師負責部署和監控生產系統。此人負責運行部署的機器學習產品的基礎設施。
  3. 數據工程師是構建數據pipeline、從數據存儲中聚合和收集數據、監控數據行為的人……這個人使用Hadoop、Kafka和Airflow等分布式系統。
  4. 機器學習工程師是訓練和部署預測模型的人。這個人使用TensorFlow和Docker等工具來處理生產中運行在真實數據上的預測系統。
  5. 機器學習研究員是訓練預測模型的人,但通常是前瞻性的或不是生產關鍵的。這個人使用TensorFlow,PyTorch,Jupiter建立模型和報告來描述他們的實驗。
  6. 數據科學家實際上是一個用於描述上述所有角色的總括性術語。在一些公司中,這個角色實際上需要通過分析回答業務問題。

那麼這些角色需要什麼技能呢?上面的圖表顯示了一個很好的視覺效果,橫軸是機器學習的專業水平,而氣泡的大小是交流和技術寫作的水平(越大越好)。

  1. 機器學習DevOps主要是一個軟體工程角色,它通常來自一個標準的軟體工程管道。
  2. 數據工程師屬於與機器學習團隊積極合作的軟體工程團隊。
  3. 機器學習工程師需要罕見的機器學習和軟體工程技能的結合。這個人要麼是一個自學成才的工程師,要麼是一個在研究生畢業後從事傳統軟體工程師工作的科學/工程博士。
  4. 機器學習研究員是機器學習專家,通常擁有計算機科學或統計學的碩士或博士學位,或完成了一個工業獎學金項目。
  5. 機器學習產品經理和傳統的產品經理一樣,但是對機器學習的開發流程和思維方式有著深刻的了解。
  6. 數據科學家的角色包括從本科生到博士生的廣泛背景。

第2步 — 構建團隊

關於構建一個機器學習團隊的正確方法,目前還沒有共識,但是有一些最佳實踐是根據不同的公司原型及其機器學習成熟度級別而定的。首先,讓我們看看不同的機器學習公司原型是什麼。

原型1 — 初創和專業的機器學習

  • 這些公司中沒有人在做機器學習,或者機器學習是在一個特定的基礎上完成的。顯然,公司內部幾乎沒有機器學習的專業知識。
  • 這些企業要麼是中小型企業,要麼是技術含量較低的教育或物流等行業的大公司。
  • 機器學習經常有唾手可得的成果。
  • 但機器學習項目得到的支持很少,很難聘用和留住優秀人才。

原型2 — 研究和開發機器學習

  • 這些公司的機器學習工作集中在公司的研發部門,他們經常僱傭機器學習研究人員和有發表論文經驗的博士生。
  • 這些是石油和天然氣、製造業或電信等部門的較大公司。
  • 他們可以聘請有經驗的研究人員,並致力於長期的業務重點,以獲得大的勝利。
  • 然而,很難獲得高質量的數據,通常情況下,這類研究工作很少轉化為實際的業務價值,因此投資金額通常很小。

原型3 — 產品中嵌入機器學習

  • 在這些公司中,某些產品團隊或業務單位除了擁有軟體或分析人才外,還擁有機器學習專長。這些機器學習人員向團隊的工程/技術主管匯報。
  • 這些公司不是軟體公司就是金融服務公司。
  • 機器學習的改進可能會帶來商業價值,此外,在創意疊代和產品改進之間存在一個緊密的反饋周期。
  • 不幸的是,招聘和培養頂尖人才仍然非常困難,獲取數據和計算資源可能會滯後。機器學習項目周期和工程管理之間也存在潛在的衝突,因此長期的機器學習項目可能很難被證明是正確的。

原型4 — 獨立機器學習部門

  • 這些是機器學習部門直接向高級領導匯報的公司。機器學習產品經理與研究人員和工程師合作,將機器學習構建成面向客戶的產品。他們有時可以發表長期研究。
  • 這些公司通常是大型金融服務公司。
  • 人才密度允許他們雇用和培訓頂級從業者。高級領導可以整理數據和計算資源。這使得公司可以在機器學習開發的工具、實踐和文化方面進行投資。
  • 缺點是,模型移交給不同的業務線可能是具有挑戰性的,因為用戶需要購買機器學習的好處,並在模型的使用上得到教育。此外,反饋周期可能很慢。

原型5 — 機器學習優先

  • 在這些公司中,CEO投資機器學習,而整個行業中也有專注於快速成功的專家。機器學習部門從事具有挑戰性和長期性的項目。
  • 這個群體包括大型科技公司和以機器學習為重點的初創公司。
  • 他們有最好的數據訪問(數據思維滲透公司),最有吸引力的招聘渠道(具有挑戰性的機器學習問題往往會吸引頂級人才),最簡單的部署流程(產品團隊對機器學習有足夠的了解)。
  • 這種類型的公司原型很難在實踐中實現,因為在文化上很難在所有地方嵌入機器學習思維。

根據你的公司類似於上面的原型,你可以做出適當的設計選擇,大致可分為以下三類:

  • 軟體工程師vs研究:機器學習團隊在多大程度上負責構建或集成軟體?軟體工程技能在團隊中有多重要?
  • 數據所有權:機器學習團隊對數據收集、入庫、標識和流水線有多少控制?
  • 模型所有權:機器學習團隊是否負責將模型部署到生產中?誰維護已部署的模型?

以下是設計建議…

如果你的公司專注於機器學習研發:

  • 研究絕對優先於軟體工程技能。因此,這兩個組之間可能缺乏協作。
  • 機器學習團隊對數據沒有控制權,通常不會有數據工程師來支持他們。
  • 機器學習模型很少投入生產。

如果你的公司已經將機器學習嵌入到產品中:

  • 軟體工程技能將優先於研究技能。通常情況下,研究人員需要很強的工程技能,因為每個人都需要生產他/她的模型。
  • 機器學習團隊一般沒有自己的數據生產和數據管理。他們需要與數據工程師一起建立數據管道。
  • 機器學習工程師完全擁有他們部署到生產中的模型。

如果你的有一個獨立的機器學習部門:

  • 每個小組都有很強的工程和研究技能,因此他們在團隊中緊密合作。
  • 機器學習團隊在數據治理討論中有發言權,並擁有強大的數據工程功能。
  • 機器學習小組不干涉用戶的模型,但仍然負責維護它們。

如果你的公司是機器學習優先:

  • 不同的團隊或多或少以研究為導向,但一般來說,研究團隊與工程團隊緊密合作。
  • 機器學習團隊通常擁有全公司範圍內的數據基礎設施。
  • 機器學習團隊將模型交給用戶,由用戶操作和維護。

下面的圖片很好地總結了這些建議:

3 — 管理項目

管理機器學習項目非常具有挑戰性:

  • 根據Lukas Biewald的文章,即使在一個領域中,性能也可能有很大差異。
  • 機器學習是非線性的。項目停滯數周或更長時間是很常見的。在早期階段,很難計劃一個項目,因為不清楚什麼會起作用。因此,估計機器學習項目的時間表是非常困難的。
  • 由於不同的價值觀、背景、目標和規範,研究和工程之間存在文化差異。在不相容的文化中,雙方往往不重視對方。
  • 通常,領導階層就是不理解這一點。

那麼,如何更好地管理機器學習團隊呢?秘密武器是機率性地計劃機器學習項目!

本質上,從這開始:

下面是一些其他的好方法:

  • 你應該嘗試一系列的方法。
  • 你應該根據投入來衡量進展,而不是結果。
  • 你應該讓研究人員和工程師一起工作。
  • 你應該儘快把端到端管道連接起來,以證明快速的勝利。
  • 你應該在機器學習時間表的不確定性上教育領導。

4 — 招聘人才

根據Element AI發布的《2019年全球人工智慧人才報告》,有強有力的證據表明,頂級人工智慧人才供不應求。在人工智慧研究的前沿,大約有2.2萬人在積極發表論文,並在學術會議上發言。只有大約4000人參與了對整個領域產生重大影響的研究。總共有36500人自稱是人工智慧專家。與此相比,軟體開發者的數量在美國是420萬人,在世界上是2640萬人。

1 — 如何尋找機器學習人才?

下面是一些招聘機器學習工程師的策略:

  • 聘用有軟體工程技能、對機器學習有濃厚興趣及有學習慾望的人士。然後你可以訓練他們進行機器學習。
  • 考慮到現在大多數計算機科學本科畢業生都有機器學習的經驗,去找初級職位吧。
  • 明確你需要什麼。例如,並不是每個機器學習工程師都需要做DevOps。

以下是僱傭機器學習研究人員的策略:

  • 關注發表文章的質量,而不是數量(例如,創意,執行質量)。
  • 尋找具有研究重大問題眼光的研究人員。許多研究人員關注流行問題,卻沒有考慮它們的重要性。
  • 尋找有學術以外經驗的研究人員。
  • 考慮招聘鄰近領域的人才,如數學、物理和統計。
  • 考慮僱傭沒有博士學位的人。例如,有才華的本科生和碩士生,工業獎學金項目(谷歌,Facebook, OpenAI)的畢業生,甚至是專注的自學者。

你是如何找到這些候選人的呢?

  • 有標準的信息來源,比如LinkedIn,通過招聘中介,參觀大學的招聘會。
  • 你應該參加著名的機器學習研究會議(NeurIPS, ICLR, ICML)的機器學習研究人員和著名的應用機器學習會議(O 'Reilly, ReWork, TensorFlow World)的機器學習工程師。
  • 你可以關注ArXiv的令人印象深刻的研究論文,並聯繫第一作者。

對於一個長期的戰略,你需要考慮如何吸引這些候選人,讓你的公司脫穎而出:

  • 由於機器學習實踐者希望使用最先進的工具和技術,你的公司應該致力於研究型項目,在博客上公布它們,並為你的機器學習團隊投資工具和基礎設施。
  • 由於機器學習從業者希望在一個令人興奮的領域建立技能和知識,你的公司應該圍繞學習建立團隊文化(即閱讀小組、學習日、專業發展預算、會議預算)。
  • 由於機器學習從業者想要與優秀的人一起工作,你的公司應該招聘高知名度的人,或者幫助你最好的人通過發表博客和論文來建立他們的檔案。
  • 因為機器學習從業者想要處理有趣的數據集,你的公司應該在招聘材料中表現出你的數據集的唯一性。
  • 由於機器學習實踐者想要做重要的工作,你的公司應該推銷你公司的使命和機器學習對這個使命的潛在影響。更重要的是,你應該從事那些對今天有實際影響的項目。

2 — 如何面試機器學習候選人?

那麼,在機器學習面試中,你應該問些什麼呢?

  • 第一件事是驗證你對候選人優點的假設。對於機器學習的研究人員來說,要確保他們能夠創造性地思考新的機器學習問題,並探究他們對之前項目的思考程度。對於機器學習工程師,確保他們是具有紮實工程技能的多面手。
  • 第二件事是確保候選人在較弱的領域達到最低標準。對於機器學習研究人員,測試他們的工程知識和編寫良好代碼的能力。對於機器學習工程師,測試他們簡單的機器學習知識。

與傳統的軟體工程面試相比,機器學習面試的定義要模糊得多,但以下是常見的評估類型:

  • 背景和文化相符
  • 白板編程
  • 結對編程/調試(通常是特定於機器學習的代碼)
  • 數學題
  • 關鍵項目
  • 應用機器學習(例如,解釋如何使用機器學習解決問題)
  • 以前的項目(方法、試驗和錯誤、結果)
  • 機器學習理論(如偏差-方差權衡、過擬合和欠擬合、特定算法…)

3 — 如何找到從事機器學習的工作?

假設您是一名機器學習候選人,正在閱讀本文。你可能會問:「我怎麼能找到機器學習的工作?」

  • 同樣,有標準的資源,如LinkedIn,招聘人員,校園招聘。
  • 你可以參加機器學習研究會議,和那裡的人交流。
  • 你也可以直接申請公司的門戶網站(記住這裡有人才缺口!)

找工作當然不容易,但有幾個方法可以脫穎而出:

  • 建立一般的軟體工程技能(通過CS課程和/或工作經驗)。
  • 表現出對機器學習的興趣(通過參加會議和/或參加MOOCs)。
  • 表明你對機器學習有廣泛的知識(例如,寫博客文章綜合一個研究領域)。
  • 演示完成機器學習項目的能力(例如,創建小項目和/或復現論文)。
  • 證明你可以創造性地思考機器學習(例如,贏得Kaggle競賽和/或發表論文)。

為了準備面試,你應該:

  • 使用網絡資源進行一般的軟體工程面試的實踐。
  • 準備詳細談談你過去的項目,包括你所做的權衡和決定。
  • 複習機器學習理論和基本的機器學習算法。
  • 創造性地思考如何使用機器學習來解決面試公司可能面臨的問題。

我還建議大家去看看Chip Huyen在訓練營發布的幻燈片:https://twitter.com/chipro/status/1196232680364376064,它包含了機器學習面試過程中雙方的一些重要經驗。文後有下載連結。

總結

對於大多數傳統公司來說,機器學習是一門新興的、不斷發展的學科,組建機器學習團隊充滿了已知和未知的挑戰。如果你跳到最後,以下是最後幾個要點:

  • 有許多不同的技能涉及到生產機器學習,所以有機會為許多人作出貢獻。
  • 機器學習小組變得更加獨立和跨學科。
  • 管理機器學習團隊是困難的。沒有什麼靈丹妙藥,但轉向機率規劃可能會有所幫助。
  • 機器學習人才稀缺。作為一名經理,在機器學習的工作描述中,要明確哪些技能是必須具備的。作為一名求職者,作為一個局外人打入市場可能會面臨殘酷的挑戰,所以要把項目作為樹立認知度的信號。

希望這篇文章為你有效地建立機器學習團隊提供了有用的信息。在接下來的博客文章中,我將分享更多我在全棧深度學習訓練營中學到的東西,敬請期待!

英文原文:https://medium.com/cracking-the-data-science-interview/the-4-steps-to-build-out-your-machine-learning-team-productively-e140a03da0bc

關鍵字: