用Windows電腦訓練深度學習模型?超詳細配置教程來了

機器之心發表於2020-10-12
雖然大多數深度學習模型都是在 Linux 系統上訓練的,但 Windows 也是一個非常重要的系統,也可能是很多機器學習初學者更為熟悉的系統。要在 Windows 上開發模型,首先當然是配置開發環境。Kaggle Master 及機器學習實踐者 Abhinand 立足於自己的實踐,給出了一種簡單易行的 Windows 深度學習環境配置流程。

本文將介紹在 Windows 計算機上配置深度學習環境的全過程,其中涉及安裝所需的工具和驅動軟體。出人意料的是,即便只是配置深度學習環境,任務也不輕鬆。你很有可能在這個過程中犯錯。我個人已經很多次從頭開始配置深度學習環境了,但是通常是在對程式設計師更友好的作業系統 Linux 中。

而對於 Windows 作業系統,沒有多少文章詳細解釋這一過程。所以我打算自己來試試。這些天,經過多次試錯之後,我終於找到了解決方案。這個方法不僅能夠配置成功,還比我見過的其它教程簡單得多。

本教程為誰而寫,以及為什麼要用 Windows?

相信我,我自己也不喜歡在 Windows 上鼓搗 CUDA。但我們常常遇到這種情況:開發者經常需要在並非深度學習或程式開發專用的膝上型電腦或更強大的硬體上工作。在這種情況下,你並不總能避免使用 Windows。如果你遇到這種情況,或者正好擁有一臺 Windows 計算機,又或者還不能熟練使用 Linux,那麼這份指南肯定能幫到你。

本文包含以下內容:
  • 硬體和軟體的最低要求

  • 安裝 Python 和所需工具

  • 設定開發環境

  • 一些 GPU 術語

  • 安裝 GPU 驅動

  • 安裝 TensorFlow(CPU 和 GPU)

  • 安裝 PyTorch(CPU 和 GPU)

  • 驗證安裝情況

  • 我的個人經驗和替代方法

硬體和軟體的最低要求

如果你要按照本指南操作並且計劃使用 GPU,你必須使用英偉達 GPU。

開發深度學習應用涉及到訓練神經網路,這自然需要執行大量計算。也因此,我們需要越來越多的並行運算,而 GPU 正好能夠滿足我們的需求。這也是當前 GPU 需求旺盛的主要原因之一。大多數深度學習框架都自帶 GPU 加速支援,這讓開發者和研究者無需執行任何 GPU 程式設計就能在幾分鐘內使用 GPU 進行計算。

大部分這些框架都(只)支援 CUDA,而這隻能在英偉達 GPU 上使用,這也是你需要使用英偉達 GPU 的原因。但是,使用 AMD 的 GPU 也不是不可能,相關資訊可參閱:https://rocmdocs.amd.com/en/latest/。

不過,就算你沒有 GPU,也依然可以繼續本教程。但為了有效進行深度學習,至少你要有好用的 CPU、記憶體和儲存空間。

我的硬體——膝上型電腦的配置如下:
  • CPU——AMD Ryzen 7 4800HS 8C -16T@ 4.2GHz on Turbo

  • RAM——16 GB DDR4 RAM@ 3200MHz

  • GPU——Nvidia GeForce RTX 2060 Max-Q @ 6GB GDDR6 視訊記憶體

對於硬體配置,我推薦至少使用 4 核 2.6 GHz 的 CPU、16GB 記憶體和 6GB 視訊記憶體的英偉達 GPU。

另外,對於本教程,你當然需要使用 Windows 10 系統。我也假設你對 Python 軟體包和環境具備基本認知。不管怎樣,後面都會給出解釋。

推薦使用的 Windows 版本是最新的 64 位 Windows 10 穩定版。

本教程假設你的作業系統是剛裝好的,沒有執行過額外的修改。不過只要你知道自己在做什麼,依然可以參考本教程。

安裝 Python 和所需工具

第一步當然是安裝 Python。我建議使用 Mini-Conda 來安裝 Python。先給剛入門的新手解釋一下原因。

Conda 是一個軟體包管理工具,可以幫助你安裝、管理和移除各種不同的軟體包。不過 Conda 並不是唯一的選擇,還有 pip——這是我很喜歡的 Python 預設軟體包管理工具。這裡我們選擇 Conda 的原因是在 Windows 上使用它更簡單直接。

Anaconda 和 Mini-Conda 都是 Conda 的軟體發行版,其中預安裝了一些非常有用的資料科學 / 機器學習軟體包,能節省很多時間。Anaconda 包含 150 多個在資料科學和機器學習中有用的軟體包,基本上包含了你可能需要的一切,而 Mini-Conda 僅包含一些必需的工具和軟體包。

我推薦使用 Mini-Conda,因為我喜歡對所安裝的軟體包有(幾乎)完整的控制權。清楚地瞭解你所安裝的東西完全不是壞事。當然這還能幫你節省一些儲存空間,你也不會裝上幾十個你可能永遠也用不上的奇怪軟體包。

要安裝 Mini-Conda,請訪問:https://docs.conda.io/en/latest/miniconda.html

下載 Windows 64 位版本的 Python3 安裝工具,然後像安裝其它 Windows 軟體一樣安裝它。一定要勾選詢問你是否要將 Conda 和 Python 加入到 PATH 的勾選框。

現在你可以透過以下命令檢查 Conda 和 Python 是否安裝成功。如果安裝成功,則會顯示版本號;否則你可能需要再次正確安裝 Mini-Conda 並將其加入到 PATH。

> python —versionPython 3.8.3> conda —versionconda 4.8.4

下一步是安裝 jupyter-notebook,請在命令列介面使用以下命令:

> conda install -y jupyter

你可以透過執行 jupyter notebook 來驗證安裝,這會幫你在瀏覽器上開啟 Jupyter Notebook。

設定開發環境

這一步很重要,但很多人會忽視它。使用 Anaconda 這種包含所有已知軟體包的工具是可以理解的,但如果要開發自己的專案,真正構建一些東西,你可能還是需要一個專門針對該專案或你的工作性質的定製開發環境。使用專門虛擬環境的另一大優勢是你可以將軟體包與全域性設定隔離開。這樣,就算你在該環境中使用軟體包時搞錯了,你也可以輕鬆地丟棄它們,而不對全域性軟體包產生任何影響。

這也能讓你靈活地使用任何之前版本的 Python 建立環境。這樣,你就可以避免使用那些還不穩定的新特性,之後再根據支援情況選擇是否升級。

建立 Conda 環境還算簡單。為了方便解釋,我建立了一個名為 tensorflow 的環境,你可以將其改為任何名稱。我將使用 Python 3.7,因為我知道 TensorFlow 對其有很好的支援。順便一提,這將是安裝 TensorFlow 的位置,我還會建立一個名為 torch 的環境來安裝 PyTorch。

> conda create --name tensorflow python=3.7

環境建立完成之後,你可以使用以下命令進入該環境,其中的 tensorflow 只是我們之前提供給該環境的名稱。

> conda activate tensorflow

進入環境之後,你會在提示框的左邊看到類似這樣的資訊:

用Windows電腦訓練深度學習模型?超詳細配置教程來了

如果你沒在 Powershell 上看到這個資訊,那麼你可能需要先在 Powershell 初始化 conda 一次:

> conda init powershell

用Windows電腦訓練深度學習模型?超詳細配置教程來了

然後,你可能會在左邊看到 (base),如上圖所示,此時你已不在任何環境中。之後,你再進入任何環境,你應該都會看見環境名。

此外,你還可以在環境中安裝 nb 工具,並將其連結到我們之前安裝的 Jupyter Notebook。

> conda install nb_conda

要將該環境註冊到 Jupyter Notebook,可執行以下命令:

> python -m ipykernel install --user --name tensorflow --display-name “Python 3.7 (tensorflow)”

要退出 Conda 環境,則執行以下命令:

> conda deactivate

現在按照同樣的步驟建立一個名為 torch 的環境:

> conda create --name torch python=3.7> conda activate torch> conda install nb_conda> python -m ipykernel install --user --name torch --display-name “Python 3.7 (torch)”

如果環境設定成功,你可以在環境列表中看到它們。

> conda env list

用Windows電腦訓練深度學習模型?超詳細配置教程來了

要驗證每個環境是否都已安裝了各自的軟體包,你可以進入各個環境,執行 conda list,這會顯示該環境中已安裝的所有軟體包。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

不要因為這個列表很長而感到困擾。Conda 已經妥善地處理了主要部分和依賴包。

一些 GPU 術語

在安裝 GPU 相關軟體之前,我們有必要了解這些軟體是什麼,以及你需要它們的原因。

GPU 驅動:顧名思義,GPU 驅動是讓作業系統及程式能使用 GPU 硬體的軟體。遊戲玩家肯定很熟悉這個。如果你喜歡打遊戲,你可能需要讓這個軟體保持最新以獲得最好的遊戲體驗。

CUDA:簡單來說,這是英偉達開發的一個程式設計介面層,能讓你呼叫 GPU 的指令集及其平行計算單元。

自 2010 年代末的 GeForce 8 系列 GPU 以來,幾乎所有 GPU 都相容 CUDA。要想了解你的 GPU 是否啟用 CUDA,可以訪問英偉達的網站。

舉個例子,如果你有一臺消費級 GPU,不管是 GeForce 系列還是 Titan 系列,你都可以在下圖中看到你的 GPU 是否支援 CUDA。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

資料截至 2020 年 9 月,截圖僅含部分型號。

如果你的電腦是筆記本,你應該看右邊的列表;如果你的電腦是桌上型電腦,你顯然就該看左邊的列表。

之前已經提到,我的 GPU 是右側列表中的 RTX 2060 Max-Q。另外,你不必在意顯示卡型號名稱是否與該列表中的名稱完全匹配,Max-Q 和 Super 的底層架構一樣,只在 TDP、CUDA 核及張量核數量方面有一些差異。

比如,不管你的 GPU 是 RTX 2080 Super 還是 2080 Max-Q 又或是 2080 Super Max-Q,看列表中的 RTX 2080 就夠了。但如果你的 GPU 是 RTX 2080Ti 或其它加了 Ti 的型號,則說明你的 GPU 是該系列中最高階的那一款,這些 GPU 通常在視訊記憶體大小和 CUDA 核及張量核數量方面更具優勢。

截至 2020 年 9 月,要使用 TensorFlow 2.0,顯示卡計算能力必須高於 3.5,但建議使用計算能力至少為 6 的顯示卡以獲得更好的體驗。TensorFlow 2.0 還需要 CUDA 10 版本,而這又進一步要求驅動版本至少為 418.x。

PyTorch 需要的 CUDA 版本至少為 9.2,但也支援 10.1 和 10.2。所需的計算能力至少要高於 3.0。


CuDNN:即 CUDA Deep Neural Network 軟體庫,這是一個用於深度神經網路的 GPU 加速原語庫。cuDNN 為前向和反向卷積、池化、歸一化和啟用層等標準例程提供了經過高度微調的實現。

(可選)TensorRT:NVIDIA TensorRT 是一套用於高效能深度學習介面的 SDK。其包含深度學習介面最佳化器和執行時最佳化器,能為深度學習介面應用提供低延遲和高通量的特性。

安裝 GPU 驅動

首先,你需要搞清楚所使用的 GPU 型號,而且你的 GPU 必須啟用了 CUDA。

如果你還沒有安裝驅動,你可能需要執行一次 Windows 更新,它會自動處理有用軟體的安裝過程,比如英偉達控制皮膚。這能幫助你獲悉 GPU 的相關資訊,還有一些與本文無關的設定。

英偉達控制皮膚就緒之後,你可以在開始選單開啟它,也可以右鍵點選桌面,然後選擇英偉達控制皮膚。

開啟之後,你可以點選「幫助→系統資訊」來檢視 GPU 驅動版本。驅動版本號列在「細節」視窗的頂部。

用Windows電腦訓練深度學習模型?超詳細配置教程來了


如上圖所示,我的驅動版本是 456.x,遠超過 418.x 的最低要求,所以我不必安裝新驅動。

但你的電腦可能不是這樣的。要安裝最新版的驅動,可訪問 https://www.nvidia.com/Download/index.aspx,然後輸入 GPU 資訊,下載合適的驅動。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

驅動下載完成後,執行安裝包,選擇快速安裝會更輕鬆。驅動安裝完成之後,可使用英偉達控制皮膚進行驗證。

另一個安裝驅動的方法是使用英偉達的 GeForce Experience 應用程式。只要你購買的是主打遊戲的電腦,應該都預裝了該軟體。安裝過程很簡單。

這一步是可選的。如果你已經按照上面的步驟安裝了驅動,或你的電腦沒有預裝該軟體,那就不用在乎這個步驟。

你可在這裡下載該程式:https://www.nvidia.com/en-in/geforce/geforce-experience/,然後跟著安裝流程將其安裝到電腦上。安裝完成,開啟它,進入驅動選項卡,檢查更新並安裝新驅動。你也可以在該應用中檢視驅動的版本號。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

GeForce Experience 演示

現在安裝驅動過程中最重要的步驟已經完成,你可以選擇手動安裝 CUDA 工具包,也可以選擇在安裝 TensorFlow 或 PyTorch 時留給 Conda 來安裝(強烈推薦後者)。

如果決定手動安裝,你可以從這裡下載安裝包:https://developer.nvidia.com/cuda-downloads,然後跟著指示操作即可。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

安裝 CUDA 工具包

CUDA 工具包裝好之後,你可以在 cmd 或 Powershell 中執行 nvidia-smi 命令進行驗證。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

nvidia-smi 的輸出

安裝 TensorFlow

現在終於來到本教程的關鍵了。如果你已經完成了前述步驟,那麼這一步會非常簡單。

我們透過 Conda 來安裝 TensorFlow 2.x。

要注意,首先進入我們之前建立的 tensorflow 環境,然後再進行操作。

> conda activate tensorflow

如果你需要 GPU 支援,就執行以下命令:

> conda install -c anaconda tensorflow-gpu

透過 anaconda 通道安裝 TensorFlow 的 GPU 支援軟體。使用 conda 而非 pip 安裝 TensorFlow 的一大優勢是 conda 的軟體包管理系統。使用 conda 安裝 TensorFlow 時,conda 還會安裝所有必需和相容的依賴包。這個過程是自動的,使用者無需透過系統軟體包管理器或其它方式安裝任何其它軟體。

其中也包含 TensorFlow 或 PyTorch 所需的版本合適的 CUDA 工具包。因此,使用 conda 能讓這個過程變得非常簡單。

我們只能在安裝了 TensorFlow GPU 的環境中看到所安裝的 CUDA 工具包。這既不會影響到全域性系統的 CUDA 版本,同時也能滿足 TensorFlow 和 PyTorch 的不同版本 CUDA 需求。這就是使用虛擬環境的最大好處,它能讓不同的虛擬環境完全隔離開。

如果一切順利,你不會在安裝過程中看到任何報錯資訊。

要驗證 TensorFlow 和所需的軟體包是否成功安裝,你可以執行 conda list,這會顯示已安裝軟體包的列表,你應該能在其中找到與 TensorFlow 相關的軟體包以及 CUDA 工具包。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

你也可以開啟 Python prompt 來驗證是否已安裝 TensorFlow。

>>> import tensorflow as tf>>> tf.version'2.1.0'

如果你看到了版本號,那麼恭喜你,TensorFlow 已安裝成功!任務完成。

用Windows電腦訓練深度學習模型?超詳細配置教程來了

在 Python prompt 中驗證 TensorFlow 的安裝情況。

你在 Python prompt 中使用 TensorFlow 時可能會看到這樣的資訊:「Opened Dynamic Library」,但這並不是壞訊息。這只是一條日誌訊息,說明 TensorFlow 可以開啟這些軟體庫。

GPU 上的安裝情況驗證將在下文中介紹。

如果要安裝僅使用 CPU 的 TensorFlow,你需要對安裝命令進行簡單的修改。

> conda install -c anaconda tensorflow

這將會安裝沒有 CUDA 工具包和 GPU 支援的 TensorFlow。

安裝 PyTorch

安裝 PyTorch 的過程與安裝 TensorFlow 其實沒太大差異。conda 讓這一切都變得非常簡單。

首先,進入我們建立的 torch 環境。

> conda activate torch

如果你想安裝支援 CUDA 的 PyTorch,使用以下命令:

> conda install pytorch torchvision cudatoolkit -c pytorch

該命令會透過 Conda 的 PyTorch 通道安裝相容 CUDA 的 PyTorch。

至於僅使用 CPU 的 PyTorch,只需從以上命令中移除 cudatookit 即可:

> conda install pytorch torchvision cpuonly -c pytorch

這會安裝無 CUDA 支援的 PyTorch。

和之前一樣,你可以使用 conda list 驗證安裝情況,也可使用以下程式碼在 Python 上執行驗證。

>>> import torch>>> torch.version'1.6.0'

如果返回版本號,則說明已成功安裝 PyTorch。

驗證安裝情況

有時候,你覺得一切都很順利,準備開始使用這些工具時卻遇到了一些重大錯誤。如果你正好遇到了這種情況,有可能是機器的問題,也可能是流程出錯了,不能一概而論,要具體問題具體分析。

為了幫助你更好地驗證安裝情況,並確保 TensorFlow 和 PyTorch 使用的是指定的硬體,這裡分享一些筆記。

你可以在 https://github.com/abhinand5/blog-posts 的 dl-setup-win 資料夾中找到它們。你可以克隆這些筆記然後執行其中的程式碼。如果返回的資訊正確,你就可以放手開發了。

下圖是該筆記的程式碼示例:

用Windows電腦訓練深度學習模型?超詳細配置教程來了

注:如果你沒有從正確的環境啟動 Jupyter Notebook,就可能會遇到一些錯誤。例如,如果你想使用 tensorflow 環境,你可以從 base 環境啟動 notebook,然後將核改到 tensorflow 環境,但我在這樣操作時遇到過報錯。因此,如果你要執行 TensorFlow,就在 tensorflow 環境裡啟動 Notebook;如果你要執行 PyTorch,就在 torch 環境中啟動 Notebook。不要從 base 或其它地方啟動。

我的個人經驗和替代方法

我一直使用這套配置完成一些輕量級的深度學習工作,反正這套本地硬體足夠了。現在幾周過去了,一切都還不錯。但是,在此之前我還嘗試過其它一些方法,也出現過一些嚴重問題。

比如有一次我嘗試了這裡的方法:https://developer.nvidia.com/cuda/wsl,其中涉及在 WSL(Windows Subsystem for Linux)中啟用 CUDA 和英偉達驅動以便使用 GPU 來進行深度學習訓練。目前這個功能還在預覽階段,但一旦官方釋出,必將為深度學習實踐者帶來重大影響。這能將讓人驚喜的 WSL 與 CUDA/GPU 驅動結合到一起。

不過這是有條件的。要想使用這一功能,你必須參與 Windows Insider Program 專案。當然,根據我的經歷,內部預覽版往往有很多漏洞。我在使用時遇到過很多問題,包括所有 Windows 應用不再響應、GSOD(綠屏當機)錯誤、未正確啟動、驅動故障。我個人不喜歡不穩定的環境,所以選擇退出只是時間問題。

你有可能在使用預覽版時不會遇到任何問題,只不過我的經歷太糟了,所以不推薦使用預覽版。

其它替代選擇包括完全不使用 Windows,只使用基於 Linux 的系統,享受更加流暢的體驗。只不過 Linux 沒有 Windows 中那樣花哨的 GUI 安裝工具。

本文介紹瞭如何在 Windows 系統中安裝 TensorFlow、PyTorch 和 Jupyter 工具,希望對大家有所幫助。

原文連結:
https://towardsdatascience.com/setting-up-your-pc-workstation-for-deep-learning-tensorflow-and-pytorch-windows-9099b96035cb

相關文章