安裝 GPU 版的深度學習套件

這篇文章, 我們準備介紹 GPU 版深度學習套件, 包括 TensorFlow 和 PyTorch, 順便來學學 Anaconda 的 conda 系統, 要怎麼建一個虛擬環境。

在過去 (其實也沒多久之前) 的時代, 要自己安裝 GPU 版的深度學習套件是相當有挑戰, 簡直可以當成一項專長的。因為我們要:

  • 確定安裝新版、正確 GPU 趨動程式
  • 安裝正確版本 (不一定是最新版) 的 CUDA
  • 先加入 NVIDIA 開發者, 然後下載正確版本的 cuDNN
  • 安裝 TensorFlow 或 PyTorch

很難的點就是, 你可能要先查好你要裝的 TensorFlow, 到底是配哪一版的 CUDA 和 cuDNN 才可以。然後, 就在你查了人家成功的案例之後, 開開心心裝了下去, 發現又不行! 最後才發現原來 Python 版本不對…

這個時代已經過去了, 假設你已經有了 Anaconda, 我們來介紹怎麼樣裝 GPU 版的深度學習套件。然後, 你就會發現浪費一堆時間看到這裡, 因為安裝上是下個指令就完成了。為了怕大家覺得太簡單 (?) 我們先來學學怎麼在 conda 下建一個虛擬環境。

建立 conda 虛擬環境

conda 建立的虛擬環境就是獨立的 Python 環境。因為我們想要裝 TensorFlow, 所以我們把這個虛擬環境就叫做 tf 好了。大多數的時候建虛擬環境就是為了乾淨, 所以很多高手都不會裝完整的 Anaconda, 只裝需要的件。但我是低手, 為了怕突然發現虛擬環境中以前有的突然沒有了, 所以這裡還是裝了完整的 Anaconda。

conda create -n tf anaconda

這樣就好了耶!那個 -n 後面接的自然就是我們自己命名的虛擬環境名稱。我們也可以指定 Python 的版本,比如說,堅持 Python 3.7 的話是樣。

conda create -n tf python=3.7 anaconda

安裝 TensorFlow

這裡要提醒一件事, 有一件事我們需要自己做, 那就是記得要更新你 NVIDIA GPU 的趨動程式。不過好消息是, 當你發現錯誤之後再更新其實也可以 (狀態顯示就是經驗談…)

現在我們有新的 tf 虛擬環境, 就立馬給他進去。

conda activate tf

然後我們來安裝 GPU 版的 TensorFlow, 大家可以再複習一下以前可怕的時光。現在變成只有一行:

conda install tensorflow-gpu

這樣就裝完了, 是不是很沒有 fu 呢?之後我們在這個環境下的 Python, 就可開心使用 GPU 版的 TensorFlow 了。而且寫這篇文章的時候, conda 的 TensorFlow 已是 2.x 版。為了我 2.x 大 Keras 時代裝的, 可以不用擔心勇敢裝下去。

對了, 萬一沒有 GPU 的, 你就是用:

conda install tensorflow

以前我們可以笑那些有 GPU 的, 雖然理論上好棒棒, 但很難裝。可是現在那美好的時代已過去了。

要離開這個虛擬環境, 就是用:

conda deactivate

一個 Jupyter Notebook, 所有環境通吃

使用 Jupyter Notebook 的你可能會想, 以後我想用 TensorFlow, 應該就是 conda activate tf 進去這個虛擬環境, 然後打入 jupyter notebook 開始使用。用一用發現我要回去用原來的環境, 就停止 jupyter notebook 的 server, 再切原來環境…

哦, 當然不是這樣子啊! 我們可以讓 Jupyter Notebook 看到所有環境。這又是前言比正文長的例子, 因為我們真的要做的只有:

conda install nb_conda

就這樣, 你根本也不用 conda activate 進入某虛擬環境, 愛用哪個版本的都可直接在選單選擇那個 kernel。

安裝 PyTorch

我們安裝 PyTorch 時, 再順便介紹一些事。首先, 我們建一個虛擬環境, 就叫 pt 好了 (其實叫 pytorch 可能更好一點, 只是我怕大家弄不清哪個是我們自己取的名字、哪個是不可以改的)。

conda create -n pt anaconda

然後進入這個環境。

conda activate pt

重點來了, 我們安裝 Pytorch GPU 版。

conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

這裡有幾件事說明一下, 首先 pytorch 當然沒問題, 而 torchvision 是很多相關的範例數據集等等, 方便你學習。然後發現, conda 可以指定 CUDA 版本! 這一行就開開心心的做好以前要確認版本、找到在哪裡、下載安裝的事。最後是 -c, 這個是指定 channel, 雖然一般指不指定通常會找到一様的, 但這裡為保險不會找到意外的地方, 下載和想像不同的版本。

這事實上是 Pytorch 官方介紹的方式。如沒有要 GPU, 就是這麼做。

conda install pytorch torchvision cpuonly -c pytorch

順便說一下, 有個特别的 channel 叫 conda-forge, 這是社群提供給 conda 的, 就不算是「官方」提供版本。

我們安裝好要離開, 當然還是

conda deactivate

欣賞一下你的虛擬環境

你可以一下你目前所有的虛擬環境。

conda env list

如果發現有不需要的, 比方說一個叫 spam 的虛擬環境, 那就是用以下指令刪除它。

conda env remove -n spam