安裝pytorch
pytorch官網(wǎng):https://pytorch.org/get-started/locally/

torch-torchvision-python版本對應關系

cuda-torch對應關系

pip安裝(推薦)
用anaconda安裝torch。新建虛擬環(huán)境后,直接在pytorch官網(wǎng)官網(wǎng)鏈接找到“Install”按鈕。這里一鍵搞定torch,torchvision,cudatoolkit等等,不需要另外安裝cuda(筆者在沒有單獨安裝CUDA情況下,成功運行了torch-gpu,很絲滑),并且版本都會自己對于對應好,原因是anaconda都集成在虛擬環(huán)境里面了,統(tǒng)一管理各個依賴包。有鏡像源的情況下,去掉末尾的“-c pytorch”會更快,否則經(jīng)常容易下載超時。不過conda下載超時時間可以設置。
默認cuda版本
pip3 install torch torchvision torchaudio
更改cuda版本
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
如果不是用anaconda來管理環(huán)境,就要仔細對照torch、torchvision、cuda之間的對應關系。
下載安裝包安裝
安裝包下載地址:https://download.pytorch.org/whl/torch_stable.html
根據(jù)cuda版本-torch版本-python版本找尋相應的下載文件,進行下載。然后到whl文件下載的位置,使用 pip install xxx.whl 進行安裝即可。
安裝完成后,我們要進行檢查,以確保torch和cuda可以正常使用。
檢查cuda
- 是否可以用顯卡:
torch.cuda.is_available()
output
True
- 顯卡個數(shù):
torch.cuda.device_count()
output
1
- 顯卡名字:
torch.cuda.get_device_name(0)
output
'NVIDIA GeForce RTX 3080'
- 測試cuda版本和gpu是否匹配
torch.zeros(1).cuda()
如果是不匹配的話,就會得到一開始的這個報錯信息:
NVIDIA GeForce RTX 3080 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70.
If you want to use the NVIDIA GeForce RTX 3080 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/
通過最近裝cuda環(huán)境研究發(fā)下僅僅通過前三步命令是不能夠測試cuda是否可以正常使用的,第四步才是最關鍵的。
解決方法:新建一個conda環(huán)境,使用pip安裝pytorch時指定cuda版本:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
這樣安裝出來cuda就是11.3的,可以正常使用RTX3080。
值得一提的是,若非新建conda環(huán)境而是在原有conda環(huán)境的基礎上卸載pytorch再重新運行上面的指令進行安裝,即使是cu113的也無法解決該錯誤。猜測是conda在本地緩存了torch的安裝包文件而非從cu113的網(wǎng)址上重新下載。因此最好的解決方案是新建conda環(huán)境。
之后遇到了一個新的報錯:
model = PPO.load("/Volumes/easystore/rerun/pong_v1/policy")
File "/Users/dd/miniconda3/envs/tf_new/lib/python3.8/site-packages/stable_baselines3/common/base_class.py", line 645, in load
model._setup_model()
File "/Users/dd/miniconda3/envs/tf_new/lib/python3.8/site-packages/stable_baselines3/ppo/ppo.py", line 152, in _setup_model
self.clip_range = get_schedule_fn(self.clip_range)
File "/Users/dd/miniconda3/envs/tf_new/lib/python3.8/site-packages/stable_baselines3/common/utils.py", line 88, in get_schedule_fn
assert callable(value_schedule)
AssertionError
也就是在PPO加載模型的時候出現(xiàn)了一個從未見過的報錯,于是搜了一波
見github issue:
https://github.com/DLR-RM/stable-baselines3/issues/403
簡單來說,因為訓練模型時的python版本和加載模型時的python版本不一致,所以在調用stable_baselines3的時候報錯了。應該是用來保證訓練環(huán)境和測試環(huán)境的一致性的。
解決方法:按照訓練時的環(huán)境配置重新配置測試環(huán)境
卸載pytorch
使用conda卸載pytorch
conda uninstall pytorch
conda uninstall libtorch
使用pip卸載pytorch
pip uninstall torch torchvision torchaudio
reference
https://www.cnblogs.com/huangshiyu13/p/16467225.html
https://blog.csdn.net/qq_39763246/article/details/122250062
https://blog.csdn.net/mao_hui_fei/article/details/112078113