目錄
一、簡介
二、下載CUDA
三、下載Pytorch-GPU版本
四、下載CUDNN
五、總結
六、測試代碼
一、簡介
啥是Anaconda?啥是CUDA?啥是CUDNN?它們和Pytorch、GPU之間有啥關系?
怎么通俗解釋它們三者的用途和關系?
1.GPU(圖形處理單元):
-用途:GPU就像一個超級快的數學計算器。它特別擅長同時處理很多相同的計算任務,比如在視頻游戲中渲染成千上萬的像素點,
或者在深度學習中同時更新成千上萬的神經網絡參數。
-比喻:想象一下你有一個非常擅長做加減乘除的大腦,而GPU就像是很多這樣的大腦同時工作,一起解決數學問題。
2.CUDA(計算統一設備架構):
-用途:CUDA是一個幫助程序員使用GPU的工具。它允許程序員編寫代碼,然后這些代碼可以被GPU理解并執行。沒有CUDA,程
序員就需要用更復雜的方式來指揮GPU工作。
-比喻:CUDA就像是GPU的語言翻譯器。程序員用一種語言寫代碼,CUDA把它翻譯成GPU能理解的語言。
3. PyTorch(一個深度學習庫):
-用途:PyTorch是一個幫助人們輕松創建和訓練深度學習模型的工具。深度學習模型是用于圖像識別、語音識別、語言翻譯等復雜任
務的計算機程序。
-比喻:PyTorch就像是一個高級的“積木箱”,里面有很多現成的積木(代碼)。你可以用這些積木來搭建復雜的模型,比如一個可
以識別貓和狗的模型。
它們之間的關系:
-當你使用PyTorch來創建一個深度學習模型時,如果你想要這個模型訓練得更快,你可以讓它利用GPU的計算能力。這時,CUDA就
像是一個橋梁,幫助PyTorch和GPU溝通,讓GPU來加速模型的訓練。
4.CUDNN(NVIDIA打造的針對深度神經網絡的加速庫)
CUDNN(CUDA Deep Neural Network library):是NVIDIA打造的針對深度神經網絡的加速庫,是一個用于深層神經網絡的GPU加速庫。如果你要用GPU訓練模型,cuDNN不是必須的,但是一般會采用這個加速庫
而Anaconda是包管理器,用來承載你所配置的虛擬環境的包,像深度學習的cpu和gpu相關配置都要在這上面的虛擬環境配置好,下次無論你使用jupter還是pycharm都可以直接在這個虛擬環境上運行啦!!!
Anaconda的下載具體見這篇博客:
【2025最新】下載安裝Anaconda_anaconda下載-CSDN博客
二、下載CUDA
實際上如果你用conda去調用GPU的話不用特意下載CUDA,因為使用了?conda 安裝的?cudatoolkit
(僅包含運行時庫,沒有編譯器?nvcc
),
-
CUDA 相關文件的實際位置
就在你的虛擬環境目錄中:
D:\Anaconda\envs\pytorch\Library
(這里包含了 PyTorch 運行所需的 CUDA 動態鏈接庫) -
如果需要?
nvcc
?編譯器
(比如編譯自定義 CUDA 算子),則需要單獨安裝完整的 CUDA Toolkit:- 下載對應版本(12.1)的安裝包:NVIDIA CUDA Toolkit 12.1
- 安裝時會自動配置?
nvcc
?路徑和環境變量。
這是CUDA的下載地址:
CUDA Toolkit Archive | NVIDIA Developer
在這里你可以下載以前的CUDA版本,選擇你自己電腦兼容的。
像我的電腦是要下載12.5以下的CUDA版本。
然后進行exe程序包后下載:
等待下載完成即可
三、下載Pytorch-GPU版本
1.查看現有的CUDA版本
在shell中輸入:nvidia-smi可以查看你當前的CUDA版本信息,可以看見我的版本是12.5
接下來下載Pytorch的時候就要根據這個來下載(向下兼容)
2.查看Anaconda中的Pytorch的版本:
1.進入虛擬環境
2.輸入python
3.輸入:
import torch
print(torch.__version__)
這一步說明我的虛擬環境中下載的是cpu版本的pytorch
2.7.1
:這是 PyTorch 的主版本號,其中?2
?是大版本,7
?是次版本,1
?是補丁版本,用于標識具體的軟件版本迭代。+cpu
:表示這個 PyTorch 版本是?僅支持 CPU 計算?的版本,不包含 GPU 加速功能(如 CUDA 支持)。如果你的電腦沒有 NVIDIA 顯卡,或者安裝時選擇了僅 CPU 版本,就會顯示這個標識。
如果需要使用 GPU 加速(需滿足 NVIDIA 顯卡且支持 CUDA 架構),需要安裝帶有?+cuXXX
?標識的版本(如?2.7.1+cu121
,其中?cu121
?表示支持 CUDA 12.1)
3.查看可用的CUDA數量
import torch #如果pytorch安裝成功即可導入
print(torch.cuda.device_count()) #查看可用的CUDA數量
這時候我需要新建一個虛擬環境用作GPU版本的pytorch運行
進入conda prompt,然后輸出python查看你目前的pytorch版本:
# 創建名為myenv的虛擬環境,指定Python版本為3.11
conda create --name pytorch python=3.11
執行命令后,會顯示將要安裝的包,輸入y并回車確認安裝。
這樣就新建好虛擬環境啦,然后就是要下載用于Pytorch跑GPU的CUDA版本啦
第一種方法是在CUDA的官網下載CUDA:點擊下面這個鏈接
Get Started
首先先激活你的pytorch虛擬環境,然后復制上面的鏈接就可以開始下載啦
值得一提的是目前由于conda環境難維護,官方已經不維護conda環境的下載了,只能選擇pip的下載方式。
?下面一種方法適合你當前電腦的CUDA版本比官網上的最低版本還低,而且又懶得升級CUDA版本的,就去下面這個鏈接下載以前版本的pytorch。
Previous PyTorch Versions
到上面這個網址里下載過去版本的pytorch
根據版本對應關系和上面你的CUDA版本情況輸入指令:
例如:
pip install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.7 -c pytorch -c nvidia
同樣也是將這段bash復制到你激活的虛擬環境里
這樣就安裝完成啦~
如果覺得慢的也可以使用其它源:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
import torch
torch.cuda.is_available() # 查看pytorch是否支持CUDA
torch.cuda.device_count() # 查看可用的CUDA數量
torch.version.cuda # 查看對應CUDA的版本號
可以發現我現在已經配置好了pytorch的GPU版的虛擬環境
四、下載CUDNN
CUDNN(CUDA Deep Neural Network library):是NVIDIA打造的針對深度神經網絡的加速庫,是一個用于深層神經網絡的GPU加速庫。如果你要用GPU訓練模型,cuDNN不是必須的,但是一般會采用這個加速庫。
第一次下載需要注冊英偉達賬號
下載鏈接:
知乎 - 安全中心
下載好之后解壓
將bin,include,lib文件夾中的文件分別移動到Cuda對應的文件夾中:
路徑類似: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12
替換后找到類似這個文件夾:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\extras\demo_suite
輸入cmd,點回車,打開命令行:
分別輸入一下兩個命令:
bandwidthTest.exe
deviceQuery.exe
如果出現Result=PASS,則說明安裝成功。
接下來就可以在你建立的虛擬環境中愉快地玩耍深度學習啦~
五、總結
其實本質上就是anaconda作為包管理工具,Pytorch要根據自己電腦支持的CUDA版本下載到這個環境上,另外CUDA也要相同的版本,至于說CUDNN是CUDA的一部分,也是深度學習的工具。實際上我們電腦自己就有CUDA-CPU版本,不用再下載了,只要在相應環境上下載Pytorch包就可以。CUDA-GPU版本可以單獨下載,也可以在虛擬環境上下載好Pytorch-GPU后直接使用,因為anaconda里包含了 PyTorch 運行所需的 CUDA 動態鏈接庫,如果需要?nvcc
?編譯器(比如編譯自定義 CUDA 算子和CUDNN),則需要單獨安裝完整的 CUDA Toolkit。即如果只是用 PyTorch 跑模型,不需要額外操作;如果需要編譯 CUDA 代碼,才需要安裝完整的 CUDA Toolkit。
六、測試代碼
import torchdef test_cuda_and_cudnn():# 檢查CUDA是否可用print(f"CUDA可用: {torch.cuda.is_available()}")if not torch.cuda.is_available():print("請檢查CUDA配置,當前無法使用GPU")return# 查看CUDA版本和設備信息print(f"CUDA版本: {torch.version.cuda}")print(f"GPU設備數量: {torch.cuda.device_count()}")print(f"當前使用的GPU: {torch.cuda.get_device_name(0)}") # 查看第0號GPU名稱# 測試GPU計算print("\n測試GPU計算...")# 在GPU上創建張量a = torch.tensor([1.0, 2.0, 3.0], device='cuda')b = torch.tensor([4.0, 5.0, 6.0], device='cuda')c = a + b # 在GPU上執行加法print(f"GPU計算結果: {c.cpu().numpy()}") # 轉回CPU并打印# 測試CuDNNprint("\n測試CuDNN加速...")# 檢查CuDNN是否可用print(f"CuDNN可用: {torch.backends.cudnn.enabled}")# 使用CuDNN加速的卷積操作# 創建隨機輸入張量和卷積權重(均在GPU上)input_tensor = torch.randn(1, 3, 64, 64, device='cuda') # 批次1,3通道,64x64conv = torch.nn.Conv2d(3, 16, kernel_size=3, device='cuda') # 卷積層# 開啟CuDNN加速(默認開啟)torch.backends.cudnn.benchmark = True# 執行卷積操作output = conv(input_tensor)print(f"CuDNN加速的卷積輸出形狀: {output.shape}") # 應輸出(1, 16, 62, 62)print("\n所有測試完成,CUDA和CuDNN工作正常!")if __name__ == "__main__":test_cuda_and_cudnn()
結果:
一切正常!!!記得環境使用你創建的那個Pytorch-GPU的虛擬環境~
參考博客:
1.(59 封私信 / 80 條消息) 安裝Cuda和cudnn,以及Pytorch的GPU版本 - 知乎
2.CUDA&Pytorch安裝使用(保姆級避坑指南)_pytorch cuda-CSDN博客
3.啥是CUDA?它和Pytorch、GPU之間有啥關系? - Tutu007 - 博客園