Docker幫助資料科學敏捷化

2021-09-22 23:50:40 字數 2133 閱讀 9472

本文講的是docker幫助資料科學敏捷化【編者的話】本文介紹了domino如何使用docker來幫助科學家和研究人員解決環境敏捷性和可重現的問題。

在domino,我們非常依賴docker技術。儘管大多數關於docker的討論都集中在如何使用docker來發布他們的軟體,但我們在自己的產品中使用docker,以允許資料科學家輕鬆地管理他們所用的工作環境(如包、庫等)。換句話說,除了在內部使用docker作為devops工具外,我們還將docker暴露為面向使用者的功能。

大家可能不太了解domino,簡單地說,它是乙個供資料科學家執行他們的**(例如r語言、python語言等),跟蹤他們的實驗,分享他們的工作和部署模型的平台。集中的基礎設施和知識管理使得資料科學家工作更有效率,以實現可重用、協作的資料科學。

研究人員和資料科學家的乙個共同痛點是「環境管理」。我使用這個詞來描述與軟體包安裝、配置設定等一些單獨或者團隊分析工作相關的問題。我們最常見的一些問題是:

通常,公司使用下面兩種方式進行環境管理,然而每種方法都解決了一些問題,也加劇了一些:

公司讓使用者自己管理自己的環境。這給使用者帶來了靈活性和敏捷性,但這不可避免地導致了環境不一致。這樣意味著研究人員的機器上的工作是孤立的,使其難以共享和協作,也制約了使用者可使用的計算資源。

公司鎖定**環境,例如大型共享的研究用伺服器,it部門負責管理這些機器,使用者可以訪問一致的環境,但是這些環境很難更改。

domino定義了計算環境的一級概念:計算環境(compute environment)是指包含用於執行分析計算**的一組軟體和配置檔案。這樣做有以下幾個原因:

在底層,計算環境建立在docker映象之上,當研究人員執行**時,他們的**在從此映象啟動的容器中執行。

使用docker後系統非常強大,因為它允許我們儲存過去版本的映象,以便我們可以記錄用於生成任何過去結果的確切環境。

我們來看一下這個設計下的工作流。

假如你的一些使用者使用python3,一些使用python2。或者一些使用者使用標準r發行版,一些使用revolution analytics的r發行版。你可以為每個配置建立環境,資料科學家可以選擇他們工作時所需要的:

可以在你的組織內建立任意多的環境,並管理他們的共享和許可權,以便在組織內建立各種標準環境選擇。

domino允許通過執行docker命令來指定環境的內容。為了更好的展示它,我們假設預設環境是r 3.2版本,而你想公升級到r 3.3。出於謹慎,我們可以先在自己的專案上測試這個更改,以驗證它是否能正常工作,然後再推送給大家。

我們可以建立乙個預設環境的副本,並新增我們想要執行的任何docker命令。

現在僅需修改我們專案使用的環境並重新執行**即可。

通過執行回歸測試指令碼,當我改變了執行環境後,可以通過重新執行該指令碼來確定是否可以正常地工作。最關鍵的是,我可以重新執行上次執行的環境版本,所以我可以確定任何結果的差異是由於r公升級導致的,而不是我的**更改導致的。

我們甚至可以比較不同環境的執行結果,確保沒有發生變化。

有關如何比較domino重不同實驗結果的更深入討論,請檢視我們的文章 

「unit testing」 for data science

和model tuning and experimentation

。除了為資料科學家提供更多的敏捷性之外,domino還對**的每次執行都保持了乙個不可變的記錄,包括執行環境的資訊。因此很容易找到和恢復指定的環境來重現過去的任何結果。

更進一步的,除了在更改環境後比較實驗結果之外,domino還可以配置為在**執行時保留環境狀態的文字快照,這樣可以允許我們通過差異比較來快速找出哪些包或軟體可能在同一實驗的兩次不同執行之間更改。

docker是乙個非常強大的技術。除了允許devops團隊啟用新的工作流外,它還可以優雅地解決資料科學家每天面臨的問題。以docker為基礎,domino的計算環境功能使得研究人員能夠輕鬆地實驗新軟體包而不會破壞同事環境的穩定性。同時,計算環境使研究人員能夠在一致的軟體和軟體包的環境中再現和審核修改。

****************************************===

譯者介紹

劉思賢,愛油科技架構師,pmp,關注網際網路相關技術與軟體專案管理,是一名devops實踐者,樂於整理和分享一些實踐經驗。

原文發布時間為:

2017-02-06

劉思賢

docker幫助資料科學敏捷化

敏捷資料科學 大資料專案中的敏捷開發

2001年,kent beck和其他16位知名軟體從業者共同簽署了下面的這份 敏捷軟體開發宣言 我們正在通過親身實踐 以及幫助他人實踐的方式來揭示更好的軟體開發之路,通過這項工作,我們認識到 個人和他們之間的交流勝過了開發過程和工具 可執行的軟體勝過了寬泛的文件 客戶合作勝過了合同談判 對變更的良好...

資料科學家Docker入門指南

摘要 docker容器那麼強大?可以應用道資料科學領域?看來學習一下!docker容器是通過虛擬化開發和部署應用程式的一種越來越流行的方式,它對資料科學家有用嗎?當然,本指南就會向你介紹它的作用,並手把手教你快速入門。docker是一種越來越流行的,使在容器中開發 部署和執行應用程式變得更容易的工具...

docker持久化資料

1.持久化資料的兩種方式volume和bind mount docker容器在執行的時候會產生資料,為了不讓這些資料隨著容器的刪除而刪除,docker支援資料持久化。docker資料持久化主要有兩種方式 volume和bind mount。使用volume資料將持久化在docker管理的volume...