TorchText是PyTorch生態系統中的一個函式庫,它的主要目的是為了簡化文字資料的處理與NLP模型建構的過程,不過該函式庫基於PyTorch運行,因此在安裝TorchText時,可能會遇到兩者版本不同的相容性問題,今天我將教你如何正確地安裝PyTorch及TorchText,以避免這種問題的發生,今日的主要學習內容將包含以下三點:
我相信許多已熟悉Python的人都知道,我們可以使用pip
指令來安裝函式,但如果你用pip
的方式去安裝Pytorch,你只會安裝到CPU版本而非GPU版本。
雖然網路上有許多教學文章介紹如何安裝Pytorch的GPU版本,但你可能會發現大多數的文章中的做法在某些電腦上可能會遇到無法順利執行的問題。
而會發生這樣的原因是因為這些文章並未清楚告知安裝的前提條件和必備知識,所以在今天的內容中,我將詳盡地指導你如何成功於各種環境中安裝Pytorch的GPU版本與TorchText。
首先我們需要確認自己的GPU中的CUDA版本,我們可以在CMD(命令提示字元)
輸入下列指令,以獲取電腦中有關GPU的相關訊息。
nvidia-smi
當我們完成輸入後,可以在結果的右上方中發現CUDA Version XX.X
的字眼,而這就是我們的GPU能支援的最高版本。
小提示:
截至目前為止Pytorch的CUDA最新版本是11.8,而絕大多數的中高階GPU皆能支援此一最新版的Pytorch,如果你的CUDA版本低於11.8,可以試試看更新顯卡驅動程式。
接下來我們需要前往Pytorch的官方網站尋找安裝指令,如果你的顯示卡高於目前支援的最新版本,可以直接在該網頁找到的安裝指令。
我們可以在Run this Command:
後面找到我們所需要的安裝指令。
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
不過對於CUDA版本過低的的人來說,該如何安裝Pytorch GPU版本呢?這時我們就需要尋找該頁面上方的install previous versions of PyTorch
來轉跳到另一個頁面。
假設我們的顯示卡僅支援到CUDA 10.2版本,我們可以在該頁面下按下鍵盤中的CTRL+F
,然後輸入CUDA 10.2
後按下Enter
,此時我們就能夠看到下圖中的畫面,該畫面是在Pytorch中對於較低版本CUDA的安裝指令。
這時我們只需要找到比自己CUDA版本還要低或是相同的版本就能完成GPU版的安裝,而在CUDA 10.2版本的狀況下只需輸入以下指令,同樣的能安裝最新版本的Pytorch。
pip install torch==1.12.1+cu102 torchvision==0.13.1+cu102 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu102
當安裝完畢後,我們可以測試看看GPU的環境,這時我們可以先在 CMD 中輸入 python
來進入 Python 環境中,接下來輸入:
import torch
torch.cuda.is_available()
這個時候我們只需要觀察程式執行的結果是否為True
,如果是True
那就表示GPU環境已經準備好了。
在前幾步中我們花大量時間來安裝Pytorch的GPU版本,而在安裝TorchText時有很大的機率會遇到一個大坑,如果我們直接輸入pip install torchtext
指令,你就會發現PyTorch被替換成CPU版本。
所以我們需要針對該函式庫的安裝還需要做特別的處理,因此我們需要到TorchText的GitHub頁面,找到README.rst
說明文件,並到下圖中的相關區塊。
在該區塊中我們可以看到Pytorch與TorchText之間的相容性,在這邊我會先透過pip list
來查找Pytorch的函式庫的版本,當我們輸入該指令後你可以看到與下列相似的結果:
tokenizers 0.13.3
tomli 2.0.1
torch 1.13.1+cu117
torchaudio 0.13.1+cu117
其中我們需要注意torch 1.13.1+cu117
這一行,該行表示我們的Torch版本是1.13.1
,所以我們可以通過這個版本號對應文件來找到TorchText版本,從以上結果得知我們需要安裝0.14.0版本的TorchText,這時我們可以輸入:
pip install torchtext==0.14.0
這樣子我們就能在維持PyTorch的GPU環境下,順利使用TorchText這個自然語言處理的函式庫了。
小提示:
當函式庫裝完畢後你可以在檢查看看GPU環境以免有未知的意外發生。
到現在你應該已經理解了電腦是怎麼理解我們人類的語言以及建立在後續內容中所需要的環境了,而在明天我會使用深度神經網路來傳達深度學習的概念,在這過程中可能會有一些數學公式,如果你有不明白的地方可以私訊我或是在下方留言我都會很樂意幫你解答的。
那麼我們明天再見!
內容中的程式碼都能從我的GitHub上取得:
https://github.com/AUSTIN2526/iThome2023-learn-NLP-in-30-days