為什么數(shù)據(jù)科學家需要承擔開發(fā)運維的工作?

Caleb Kaiser
據(jù)統(tǒng)計,大多數(shù)數(shù)據(jù)科學家都需要花費25%以上的工作時間來部署模型。有趣的是,在數(shù)據(jù)科學家職位的招聘廣告中也經(jīng)??匆奒ubernetes、Docker和EC2之類的技術(shù)要求。

作者 | Caleb Kaiser

譯者 | 彎月,責編 | 夕顏

頭圖 | CSDN下載自視覺中國

出品 | CSDN(ID:CSDNnews)

以下為譯文:

如果你需要創(chuàng)建一個生產(chǎn)環(huán)境下的機器學習流水線,那么開始的部分工作(設(shè)計和訓練模型等)顯然屬于數(shù)據(jù)科學的范疇。

某種意義上,當你需要將模型投入生產(chǎn)環(huán)境時,需要將常規(guī)的流水線從數(shù)據(jù)科學領(lǐng)域轉(zhuǎn)移到基礎(chǔ)設(shè)施領(lǐng)域。直觀地講,這時數(shù)據(jù)科學團隊需要將工作移交給其他人,即開發(fā)運維。

然而,現(xiàn)實并非總是如此。越來越多的公司開始要求數(shù)據(jù)科學家負責將模型部署到生產(chǎn)的工作。

據(jù)統(tǒng)計,大多數(shù)數(shù)據(jù)科學家都需要花費25%以上的工作時間來部署模型。有趣的是,在數(shù)據(jù)科學家職位的招聘廣告中也經(jīng)常看見Kubernetes、Docker和EC2之類的技術(shù)要求。

為什么數(shù)據(jù)科學家不應(yīng)該處理模型服務(wù)?

簡單來說,模型服務(wù)是基礎(chǔ)架構(gòu)的問題,不屬于數(shù)據(jù)科學范疇。我們可以比較一下這兩個領(lǐng)域使用的技術(shù)棧:

當然,有些數(shù)據(jù)科學家喜歡開發(fā)運維,他們也可以承擔跨部門的工作,但是這種情況比較罕見。事實上,我認為大家都高估了數(shù)據(jù)科學與開發(fā)運維之間的重疊度。

我們反過來看,你是否認為開發(fā)運維工程師能夠設(shè)計新的模型體系結(jié)構(gòu),或者擁有大量調(diào)整超參數(shù)的經(jīng)驗?可能那些具備了數(shù)據(jù)科學知識,而且愿意學習一切的開發(fā)運維工程師確實能夠勝任這些工作,但是將這些工作視為開發(fā)運維團隊的職責就很奇怪了。

將心比心,數(shù)據(jù)科學家也不應(yīng)該操心自動伸縮或編寫Kubernetes清單文件的工作。那么為什么各個公司會這樣要求他們呢?

各個公司忽視了基礎(chǔ)設(shè)施的工作

許多組織對于模型服務(wù)的復雜程度存在根本的誤解。通常他們的態(tài)度是“利用Flask打包一下模型就足夠了。”

然而現(xiàn)實情況是,無論規(guī)模如何,任何模型服務(wù)都涉及一系列基礎(chǔ)設(shè)施的難題。例如:

如何在保證不停機的情況下,自動更新生產(chǎn)中的模型?

如何有效地自動伸縮一個在GPU上運行的5GB模型?

如何監(jiān)視和調(diào)試生產(chǎn)部署?

如何在控制云消費的情況下,完成所有的工作?

平心而論,現(xiàn)如今的機器學習基礎(chǔ)設(shè)施是一個非常新的概念。兩年前,Uber才透露了他們最先進的內(nèi)部機器學習基礎(chǔ)設(shè)施:Michelangelo。機器學習基礎(chǔ)設(shè)施的編寫方式多種多樣。

但是,很多組織也很好地示范了如何在沒有Uber工程資源的情況下,將數(shù)據(jù)科學與開發(fā)運維的工作重心分開來。

如何分離數(shù)據(jù)科學與開發(fā)運維的工作?

在這個話題上,我的很多看法主要來自我從事的開源模型服務(wù)平臺Cortex上的工作。

我們通過模型-API-客戶端的抽象架構(gòu),概念化了數(shù)據(jù)科學、開發(fā)運維與產(chǎn)品工程之間的交接工作:

模型:經(jīng)過訓練的模型,即便是沒有數(shù)據(jù)科學專業(yè)知識的工程師也可以使用predict()函數(shù)。

API:基礎(chǔ)設(shè)施層接受訓練好的模型,然后部署為Web服務(wù)。我們構(gòu)建了Cortex來自動化這一層的工作。

客戶端:實際與部署在API層中的Web服務(wù)交互的應(yīng)用程序。

在模型階段,數(shù)據(jù)科學家會訓練并導出模型。他們還將負責編寫predict()函數(shù),用于根據(jù)模型生成和過濾預測。

接下來,他們會將該模型移交給API,這個階段的工作完全由開發(fā)運維部門負責。對于開發(fā)運維部門來說,該模型只是一個Python函數(shù),只需將其轉(zhuǎn)換為微服務(wù),然后進行容器化和部署。

在模型-微服務(wù)啟動后,產(chǎn)品工程師就可以把它們當作API進行查詢。對他們來說,該模型只是一個Web服務(wù)。

模型-API-客戶端體系結(jié)構(gòu)不是分割數(shù)據(jù)科學與工程問題的唯一方法,但這個例子說明了你完全可以在數(shù)據(jù)科學和開發(fā)運維之間劃清界線,同時無需引入過多的開銷或構(gòu)建昂貴的端到端平臺。

只需在機器學習的工作流程中建立明確的交接點,就可以將數(shù)據(jù)科學家解放出來,讓他們?nèi)プ錾瞄L的工作:數(shù)據(jù)科學。

作者簡介

Caleb Kaiser,機器學習基礎(chǔ)設(shè)施工程師。

原文鏈接:

https://towardsdatascience.com/why-are-data-scientists-doing-devops-bc36d00584c3

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論