機器學習與軟體開發生命周期
- 2019 年 12 月 31 日
- 筆記
新的軟體開發生命周期(SDLC)意味著要找到適應您的機器學習工作流程的方法。由於數據科學家目前將大量時間都花在基礎設施和流程上,而不是在構建模型上,因此尋找軟體生命周期與機器學習有效配合的方法對數據科學家的生產率和工作滿意度至關重要。
但這帶來了挑戰。機器學習引入了SDLC無法解決的模式和技術問題。為了解決這個問題,我們既需要適應SDLC,也要解決數據科學家與其他開發人員之間的文化差異。

重要的是要記住,機器學習領域仍在發展,因此是不統一的。數據科學更多的是一門藝術,而不是標準的軟體開發和非常多的研究任務。相反,標準軟體開發人員傾向於使他們的技術適應手頭的工作並符合他們的環境。例如,在他們找到新工作時學習另一種語言,因為這是內部大多數架構所使用的語言。另一方面,機器學習任務通常特定於一種語言或一組框架,因此它們使用最適合工作的內容,從而形成了更加異構的環境。
在一個模型中,機器學習開發人員可以在特定版本級別上使用Python NLTK,而對於其他任務,他們將R與TensorFlow結合使用,並具有GPU加速功能,依此類推。這意味著當大多數標準服務軟體根本不運行R時,該模型必須投入生產。這是DevOps人們從未遇到過的語言,因此他們需要一種方法來調整其服務工作流程以適應這些更異構的環境。
數據科學家和DevOps團隊無法協調的另一個領域是監視和優化。在機器學習世界中,測試往往僅在模型開發過程中進行,而不是在某個伺服器上的生產環境中進行。但是,對於標準開發人員來說,他們不僅在考慮是否已正確設置了初始組件,還在考慮到在世界範圍內使用它時,是否可以對其進行連續驗證並仍然給出預期結果?

第二個問題是DevOps人員不知道如何監視模型。他們不習慣考慮模型漂移或概率結果,因此他們可能會測試機器學習模型並發現每次結果稍有不同,這可能導致他們認為模型失敗了。但是,數據科學家會知道結果中必須有10%的餘量。
可預測性也是一個挑戰。SDLC具有可預測的預定發布時間,而數據科學周期則不穩定且不可預測。在這種情況下,軟體開發人員傾向於按兩周的時間表進行設置並提前計劃其工作,而研究人員則傾向於按照非常抽象的時間表來工作,需要一天或兩個月。
雲環境是另一個需要考慮的領域。對於主要是編寫程式碼的開發人員來說,會發生很多附加操作-您需要能夠設置伺服器,設置並連接到資料庫,並且通常在雲基礎架構中進行管理。但是數據科學家並不習慣這種工作流程。他們傾向於將所有東西獨立地保存在筆記型電腦電腦上,或者通過託管服務。它們還習慣於在自我管理的環境中進行培訓和測試,並且以前極不可能與DevOps一起使用。對於他們來說,這是一條相當大的學習曲線,並且常常是一個令人困惑的過程,其中涉及到他們必須破譯的陌生行話,以便與IT員工就他們的工作進行溝通。

