劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

機器之心發表於2021-11-21
學術界在推進技術方面發揮了巨大作用,但學術界和工業界往往存在一種分割狀態。我們經常會看到這種現象:無數很棒的輔助工具在學術界被忽視,但在工業界很受歡迎。對於很多研究者來說,學習一種新工具可能存在困難,不願意花費過多的時間去嘗試,在當前自己掌握的工具足以應對各種問題時尤其如此。

其實,有些工具一時未見到效果,在後期可能會有十倍的回報。

來自劍橋大學的電腦科學博士生 Aliaksei Mikhailiuk 為我們整理了機器學習博士在獲得學位之前需要掌握的九種工具。他在劍橋大學獲得物理學碩士學位,在布里斯托大學獲得工程學士學位。他對研究、開發、部署感興趣,還能熟練掌握計算機視覺演算法、聚合和自然語言處理等技術。現任職華為(英國)高階人工智慧工程師。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

個人主頁:https://www.linkedin.com/in/aliakseimikhailiuk/

 Mikhailiuk 將這些工具按用途分為四類:可隔離環境、實驗跟蹤、相互協作以及視覺化

可隔離環境工具

機器學習是一個快速發展的領域,常用的包更新非常頻繁。儘管開發人員做出了努力,但較新的版本通常與舊版本不相容,這樣給研究者帶來很多麻煩。幸運的是,有工具可以解決這個問題!在這一方面,Mikhailiuk 推薦了兩個工具:Docker 和 Conda。

Docker

Mikhailiuk 攻讀博士學位期間,他有一臺由大學管理的機器,學校會定期進行更新。通常情況下是一夜之間更新,沒有任何通知。你可以想象,當更新後的第二天早上發現自己大部分工作與最新的驅動程式不相容,是多麼令人崩潰。Mikhailiuk 發現 Docker 可以很好地解決。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

Docker 允許將軟體包裝在稱為容器的包中。容器是具有自己的軟體、庫和配置檔案的獨立單元。在一個簡化的檢視中,容器是一個獨立的虛擬作業系統,它具有與外部世界通訊的手段。Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 或 Windows 作業系統的機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。

一個完整的 Docker 由以下幾個部分組成:
  • DockerClient 客戶端

  • Docker Daemon 守護程式

  • Docker Image 映象

  • DockerContainer 容器

Docker 教程:https://aws.amazon.com/cn/blogs/opensource/why-use-docker-containers-for-machine-learning-development/

Conda

現在,複用別人的程式碼成為了一種新的規範。GitHub 作為一個程式碼託管雲服務網站,幫助開發者儲存和管理其專案原始碼,且能夠追蹤、記錄並控制使用者對其程式碼的修改。研究者可以克隆上面的程式碼,安裝並提出自己的解決方案,而不需要自己寫任何東西。

但是 GitHub 也有不方便的情況,當多個專案一起使用時,你會遇到包管理問題,因為不同的專案需要不同版本的包。

Conda 可以解決這個問題 。Conda 是一個開源跨平臺語言無關的包管理與環境管理系統,它允許建立多個環境並快速安裝、執行和更新包及其依賴項,使用者可以在隔離的環境之間快速切換。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

Conda 教程:https://conda.io/projects/conda/en/latest/user-guide/getting-started.html#starting-conda

執行、跟蹤和記錄實驗工具

在應用領域想要獲得博士學位,嚴謹性和一致性是兩個基本支柱。假如你是研究機器學習模型的,或多或少都能遇到這種情況——你建立了許多不同的模型來試驗不同的引數甚至整個架構。你還想嘗試最佳化器的選擇、學習率、時期數等。因此,實際上,你將進行許多不同的實驗,並且將越來越難以整理結果。在這一方面,Aliaksei Mikhailiuk 向我們展示瞭如何正確方便地管理和記錄自己的 ML 和 DL 實驗工具,主要推薦了 Weights & Biases,MLFlow,Screen 工具。

Weights & Biases

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

wandb panel 一組簡單指標 Snapshot——訓練損失、學習率和平均驗證損失。請注意,你還可以跟蹤系統引數。

W&B(Weights & Biases) 是一個平臺,可以幫助資料科學家跟蹤他們的模型、資料集、系統資訊等。只需幾行程式碼,使用者就可以開始跟蹤有關這些功能的所有內容。它免費供個人使用,團隊使用通常需要付費,但用於學術目的的團隊是免費的。你可以將 W&B 與自己喜歡的框架一起使用,例如 TensorFlow、Keras、PyTorch、SKlearn、fastai 等。

W&B 提供了以下 4 個有用的工具:
  • Dashboard:實驗跟蹤;

  • Artifacts:資料集版本控制、模型版本控制;

  • Sweeps:超引數最佳化;

  • Reports 儲存和共享可重現的結果。

W&B 教程:https://docs.wandb.ai/quickstart

MLFlow

MLFlow 是一個能夠覆蓋機器學習全流程(從資料準備到模型訓練到最終部署)的新平臺,它是一款管理機器學習工作流程的工具,主要有三個功能模組:Tracking 跟蹤和記錄、Project 專案管理和 Models 模型管理。MLflow 支援 Java、Python、R 和 REST API 等。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

MLFlow 具有以下主要元件:
  • 跟蹤:用於跟蹤試驗,以記錄和比較引數與結果;

  • 模型:用於透過各種 ML 庫管理模型,並將其部署到各種模型服務和推理平臺;

  • 專案:用於將 ML 程式碼打包成可重用、可再現的格式,以便與其他資料科學家共享或轉移到生產環境;

  • 模型登錄檔:使你可以將模型儲存集中化,以便使用版本控制和批註功能來管理模型的完整生命週期階段轉換;

  • 模型服務:可用於將 MLflow 模型以 REST 終結點的形式託管。

MLFlow 教程:https://www.mlflow.org/docs/latest/tutorials-and-examples/tutorial.html

Screen

對於每個研究者來說,讓實驗通宵執行而且機器不會進入休眠狀態再好不過了。當進行遠端工作時,很多人都會擔心 ssh 會話中斷——程式碼執行幾個小時就停止了。

screen 命令允許使用者在一個視窗內使用多個終端會話,可以斷開連線,也可以重新連線已斷開連線的會話。每個會話都可以恢復連線,這樣就算會話斷開了,使用者也不必擔心資料丟失。

Screen 教程:https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/

協作工具

學術界缺乏有效的團隊管理機制,在某種程度上這是由於學術界會嚴格劃分個人貢獻造成的。然而,機器學習的發展速度需要大家共同努力。Mikhailiuk 推薦了兩個非常基本的工具:GitHub 以及 Lucidchart,它們對於有效的溝通非常方便,尤其是在遠端工作上。

GitHub

GitHub 是透過 Git 進行版本控制的軟體原始碼託管服務平臺,同時提供付費賬戶和免費賬戶,這兩種賬戶都可以建立公開或私有的程式碼倉庫,但付費使用者支援更多功能。除了允許個人和組織建立和訪問保管中的程式碼以外,它也提供了一些方便社會化共同軟體開發的功能,包括允許使用者追蹤其他使用者、組織、軟體庫的動態,對軟體程式碼的改動和 bug 提出評論等。GitHub 也提供圖表功能,用於概觀顯示開發者們怎樣在程式碼庫上工作以及軟體的開發活躍程度。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

就在近日,GitHub 正式釋出了 2021 年度報告。過去一年裡,有 1600 萬開發者加入了 GitHub,目前平臺的開發者數量已經達到了 7300 萬;過去一年裡,他們在 GitHub 上建立了 6100 萬個儲存庫。世界財富 100 強企業中的 84% 都在使用 GitHub。

GitHub 教程:https://docs.github.com/en/get-started/quickstart/hello-world

Lucidchart

Lucidchart 是一款免費的可以支援離線操作的谷歌瀏覽器圖表外掛,可以幫助使用者繪製包括流程圖、實體模型、UML、思維導圖等多種圖表的繪製工作。它提供了很多免費繪圖模板,大大地加快了使用者的繪圖速度。該應用的一大優勢是,它基於 HTML5,因此使用者不需要下載本地應用程式,就可以在電腦、iPad 等裝置上使用該應用。它的另一主要優勢是共享的協作空間和在圖表旁邊做筆記的能力。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

Lucidchart 教程:https://www.lucidchart.com/pages/tour

視覺化工具

提交論文時,研究人員經常會遇到拒稿的情況,這讓 Mikhailiuk 意識到視覺化功能和結果一樣重要。如果審稿人沒有太多時間,或者對論文涉及的領域不熟悉,通常來說論文會被拒掉,其中一部分原因可能是論文中的檢視給人印象不深刻。因此,Mikhailiuk 推薦了 Inkscape 和 Streamlit 這兩個工具。

Inkscape

Inkscape 是一個開源的向量圖編輯工具,使用可伸縮向量圖形 (SVG),以及基於 W3C 標準的 open XML 格式作為其預設檔案格式。設計過程可能從一張塗鴉、一幅素描或者軟體中模型設計開始,這些可能不足以完成一整個專案。Inkscape 可以幫助你將以上不成熟的素材轉變為專業的設計,用於廣告發布、模型製作等用途。Inkscape 還能提供 TexText 擴充套件,使用此軟體包,你可以將 latex 公式無縫整合到影像中。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

Inkscape 推薦教程:https://inkscape.org/learn/tutorials/

Streamlit

Streamlit 和常規 Web 框架不同之處在於,它不需要你去編寫任何客戶端程式碼(HTML/CSS/JS),只需要編寫普通的 Python 模組,就可以在很短的時間內建立美觀並具備高度互動性的介面,從而快速生成資料分析或者機器學習的結果;另一方面,和那些只能透過拖拽生成的工具也不同的是,你仍然具有對程式碼的完整控制權。

劍橋計算機博士推薦,畢業之前,我需要掌握這9個工具

教程地址:https://builtin.com/machine-learning/streamlit-tutorial

以上就是 Mikhailiuk 在獲得機器學習博士學位之前需要掌握的九個工具,你不妨也學習一下,相信這些工具在你之後的學習、工作中,會起到事半功倍的效果。

原文連結:https://towardsdatascience.com/nine-tools-i-wish-i-mastered-before-my-phd-in-machine-learning-708c6dcb2fb0

相關文章