本文內容基於我對機器學習團隊的觀察,而不是對該行業的學術調查。我是Cortex的貢獻者,這是一個用於在生產環境中部署模型的開源平臺。生產級機器學習有一個組織性的問題,這是因爲它相對還比較新。雖然更成熟的領域(例如Web開發)經過幾十年的發展已經有了最佳實踐,但是生產級機器學習還沒有。如果我們希望未來以ML爲基礎的軟件真正普及開來,那麼消除基礎設施瓶頸就至關重要——要做到這一點,我們需要將其真正的專門化,讓數據科學家專注於數據科學。
本文最初發佈於****Towards Data Science****博客,經原作者授權由InfoQ中文站翻譯並分享。
聲明:以下內容基於我對機器學習團隊的觀察,而不是對該行業的學術調查。我的背景:我是Cortex的貢獻者,這是一個用於在生產環境中部署模型的開源平臺。
生產級機器學習有一個組織性的問題,這是因爲它相對還比較新。雖然更成熟的領域(例如Web開發)經過幾十年的發展已經有了最佳實踐,但是生產級機器學習還沒有。
舉個例子,假設你的任務是爲你所在的初創公司組建一個產品工程組織,而這家公司是一個開發Web應用程序的公司。即使你沒有組建團隊的經驗,你也可以找到成千上萬的文章和書籍,它們會告訴你這個工程組織應該採用什麼結構以及如何發展。
現在想象一下,你在一家剛剛開始涉足機器學習的公司。你已經聘請了一名數據科學家來領導最初的工作,結果也不錯。隨着機器學習在產品中的應用越來越深入,隨着數據科學家的職責迅速增加,機器學習團隊顯然需要發展壯大。
在這種情況下,並沒有那麼多關於如何構建一個生產級機器學習團隊的文章和書籍。
這不是一個不常見的場景,經常出現的情況是,機器學習組織的新職責—特別是基礎設施—被分配給了數據科學家。
這是個錯誤。
機器學習和機器學習基礎設施的區別
在這一點上,平臺和產品工程師的區別已經很好理解了。類似地,數據分析師和數據工程師顯然是不同的角色。
許多公司的機器學習仍然缺乏這種專業化。
瞭解機器學習和機器學習基礎設施之間的區別很重要,這有助於瞭解它們所需的工作和工具。
爲了設計和訓練新模型,數據科學家需要:
- 把時間花在Notebook、分析數據、做實驗上。
- 考慮類似數據保健和爲數據集選擇正確的模型架構這樣的問題。
- 使用Python、R、Swift或Julia等編程語言。
- 對像PyTorch或TensorFlow這樣的機器學習框架有自己的見解。
換句話說,他們的職責、技能和工具將圍繞着操縱數據開發模型,他們的最終輸出將是可以提供最準確預測的模型。
基礎設施方面則完全不同。
將模型投入生產應用的一種常見方法是將其作爲微服務部署到雲中。要將模型部署爲生產用API,工程師需要:
- 在配置文件、終端和雲提供商的控制檯之間分配他們的時間,設法優化穩定性、延遲和成本。
- 考慮實例的自動擴展、在API不崩潰的情況下更新模型以及在GPU上提供推斷服務等問題。
- 使用Docker、Kubernetes、Istio、Flask等工具,以及他們的雲提供商提供的任何服務/API。
關於機器學習和機器學習基礎設施方面的工作,下面是一個簡單的可視化:
直觀地說,數據科學家應該處理左邊的圓,而不是右邊的圓,這是有道理的。
讓非專業人員管理基礎設施有什麼問題嗎?
我們不妨做個假設。假設你必須指派某人來管理你的機器學習基礎設施,但是你又不想讓某人全職參與其中。你只有兩個選擇:
- 一個是數據科學家,因爲他們熟悉機器學習。
- 一個是DevOps工程師,因爲他們熟悉一般的基礎設施。
這兩種選擇都有問題。
首先,數據科學家應該儘可能多的把時間花在他們最擅長的數據科學上。當然,這並不是說學習基礎設施超出了他們的工作範圍,只是基礎設施和數據科學都是全職工作,將數據科學家的時間分配到這兩項工作中會降低產出的質量。
其次,你的組織需要專門負責機器學習基礎設施的人員。在生產環境中提供模型服務不同於託管Web應用程序。你需要一個專門的人來擔任此角色,他可以在組織中倡導機器學習基礎設施。
這種倡導是至關重要的。我瞭解了很多機器學習組織,你會驚訝地發現,他們的瓶頸往往不是來自技術性挑戰,而是來自組織性挑戰。
例如,我曾見過需要使用GPU進行推理的機器學習團隊——像GPT-2這樣的大型模型基本上都要求合理的延遲時間——但他們卻無法獲得GPU,因爲他們的基礎設施是由更廣泛的DevOps團隊管理的,而這些團隊不想讓自己承擔成本。
有專人致力於你的機器學習基礎設施,意味着你不僅有一個不斷改進基礎設施的團隊成員,還意味着你有一個能夠滿足你的團隊需求的倡導者。
那麼誰應該管理基礎設施?
機器學習基礎設施工程師。
現在,不要對這種官方的頭銜有異議,要知道,機器學習還處於初級階段,在頭銜問題上,它還屬於“狂野的西部”。不同的公司可能會有不同的叫法:
- 機器學習基礎設施工程師
- 數據科學平臺工程師
- ML生產工程師
我們已經可以看到成熟的機器學習組織招聘這個職位,包括Spotify:
還有Netflix:
隨着諸如Gmail的Smart Compose、Uber的ETA預測和Netflix的內容推薦等基於ML的功能在軟件中的應用越來越普遍,機器學習基礎設施變得越來越重要。
如果我們希望未來以ML爲基礎的軟件真正普及開來,那麼消除基礎設施瓶頸就至關重要——要做到這一點,我們需要將其真正的專門化,讓數據科學家專注於數據科學。