Re: [問題] 新手每次跑模型時都是CPU滿載

看板DataScience作者 (Rumi!)時間6月前 (2024/05/06 13:45), 編輯推噓5(5011)
留言16則, 7人參與, 6月前最新討論串3/3 (看更多)
更多細節可以讀這篇,他整理得很不錯,內容幾乎都是正確的 https://www.cnblogs.com/marsggbo/p/11838823.html ※ 引述《fragmentwing (片翼碎夢)》之銘言: : 題外話,之前cmd那邊查cuda是11.8 設定找到的應用程式是11.6 torch是+cu113 : 這樣子竟然還能跑到想更新pytorch版本時才發現 nvidia-smi 查到的是 CUDA driver 版本 一般我們裝的 CUDA 指的是 CUDA runtime library (e.g. libcudart.so) CUDA driver 提供 low-level API,而 CUDA runtime library 提供 high-level API 而 nvcc 是 CUDA compiler,個人認為跟上面的不完全相關, 只有在安裝 CUDA toolkit 的時候會整包一起下載, 此時的 nvcc 跟 CUDA runtime library 才會相同 到底有多少工具跟 "CUDA" 有關係,可以參考以下連結的 Table 5 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#meta-packages 所以我不怎麼推薦用 nvcc 去檢查 CUDA 版本...它甚至通常不需要下載 只不過偶爾還是會有神人寫 CUDA program 需要自己去編譯 PyTorch 是把 CUDA runtime library, cuDNN, 還有 NCCL 直接包在 package 裡面 https://discuss.pytorch.org/t/install-pytorch-with-cuda-12-1/174294/2 所以裝 PyTorch 才會不用先安裝 CUDA 那堆有的沒的 (反觀很久以前裝 TensorFlow 之前還要先裝 CUDA, cuDNN 版本號看半天...) : -- : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.107.182 (臺灣) : ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1712815245.A.08A.html : 推 DaOppaiLoli: cmd 查的通常會是最高支援的版本 04/13 07:30 : → fragmentwing: 原來是這樣 我一直以為是我裝到哪個就是哪個 因為之 04/13 14:10 : → fragmentwing: 前看人家教學時都是要看cuda版本左邊的那個數字去找 04/13 14:10 : → fragmentwing: 相容性 原來根本可以跳過這步XD 04/13 14:10 : 推 DaOppaiLoli: 一個機器也可以多個 CUDA 共存,理論上 driver 支援 04/13 15:15 : → DaOppaiLoli: 的版本要大於實際安裝函式庫的版本,然後要大於應用 04/13 15:15 : → DaOppaiLoli: 程式的版本 04/13 15:15 : → DaOppaiLoli: 像你就是 driver 支援到 11.8,函式庫裝 11.6,然後 04/13 15:16 : → DaOppaiLoli: torch 是 11.3 04/13 15:16 : → DaOppaiLoli: 雖然還是建議都裝一樣的比較好 04/13 15:16 : → fragmentwing: 原來是剛好裝得有相容性 04/13 17:08 : → fragmentwing: 多個cuda共存是指同一張gpu嗎?這樣torch運行時會怎 04/13 17:08 : → fragmentwing: 麼選擇使用的cuda啊? 04/13 17:08 : 推 DaOppaiLoli: 在同一台機器,無論單張或多張卡,都可以有多個不同 04/15 09:01 : → DaOppaiLoli: 版本的 CUDA 函式庫共存,例如 Docker 或 Conda 就 04/15 09:01 : → DaOppaiLoli: 能做到這種多版本 CUDA 的管理,像這張圖裡 nvcc 告 04/15 09:01 : → DaOppaiLoli: 訴我們 CUDA 是 11.8 版,但 nvidia-smi 顯示的是 1 04/15 09:01 : → DaOppaiLoli: 2.2 版 04/15 09:01 nvidia-smi 跟 nvcc 看到的是不同的東西 不過確實是可以有多個不同版本的 CUDA runtime library 共存 它安裝起來看起來會像是這樣 (在 Linux) /usr/local/cuda-11.8/ /usr/local/cuda-12.1/ /usr/local/cuda -> /usr/local/cuda-12.1/ (Windows 也行) 如果要降版使用,就改變 symbolic link 或是環境變數 (PATH, LD_LIBRARY_PATH) 即可 : → DaOppaiLoli: https://i.imgur.com/XLFRpgr.jpg
04/15 09:01 : → DaOppaiLoli: 至於 PyTorch 是如何判斷版本我是不太確定,但他可 04/15 09:01 : → DaOppaiLoli: 能會根據 nvcc 或 nvml 之類的來判斷,其他有些函式 04/15 09:01 : → DaOppaiLoli: 庫則可能會看 CUDA_HOME 環境變數來判斷 04/15 09:01 : → RumiManiac: nvidia-smi 查到的是 CUDA driver 版本,而 nvcc 查到 05/06 13:15 : → RumiManiac: 的是 CUDA compiler 版本,真正的 CUDA runtime lib 05/06 13:16 : → RumiManiac: 是根據不同安裝方式對應不同的路徑 e.g. /usr/local/ 05/06 13:16 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.105.44 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1714974351.A.0C3.html

05/06 16:17, 6月前 , 1F
以前pytorch 也是cuda toolkit 什麼的另外載 好像2.
05/06 16:17, 1F

05/06 16:17, 6月前 , 2F
0之後某版開始就整包裝了
05/06 16:17, 2F

05/06 16:57, 6月前 , 3F
借串想問一下 我看很多安裝教學都有說PyTorch跟cuda 都
05/06 16:57, 3F

05/06 16:57, 6月前 , 4F
要裝,而且要裝對應的版本,但我測試後發現PyTorch裝完
05/06 16:57, 4F

05/06 16:57, 6月前 , 5F
後沒有特別去安裝cuda /以及cuda 版本跟PyTorch不對應
05/06 16:57, 5F

05/06 16:57, 6月前 , 6F
這兩種狀況好像都能正常的抓到顯卡,這是什麼原因?
05/06 16:57, 6F

05/06 16:57, 6月前 , 7F
因為PyTorch安裝過程會自動把需要的cuda 一併安裝嗎?
05/06 16:57, 7F

05/06 21:16, 6月前 , 8F
不知道這篇在寫什麼...
05/06 21:16, 8F

05/07 04:52, 6月前 , 9F
@yoyololicon 謝謝補充,整個打包的確是新版才有的
05/07 04:52, 9F

05/07 04:54, 6月前 , 10F
這也是以前 conda install 裡面有 cudatoolkit 的原因
05/07 04:54, 10F

05/07 04:55, 6月前 , 11F
@retest75 對,你講的東西就是我這篇第36行講的
05/07 04:55, 11F

05/07 04:57, 6月前 , 12F
@lycantrope 哪邊寫得不好歡迎批評指正
05/07 04:57, 12F

05/07 13:55, 6月前 , 13F
原來!沒仔細看內文,感謝!
05/07 13:55, 13F

05/07 18:30, 6月前 , 14F
原來是這樣,太神啦!解答我從碩班以來的疑惑。
05/07 18:30, 14F

05/08 09:26, 6月前 , 15F
推,感謝糾正觀念錯誤
05/08 09:26, 15F

05/08 16:23, 6月前 , 16F
05/08 16:23, 16F
文章代碼(AID): #1cE6wF33 (DataScience)
文章代碼(AID): #1cE6wF33 (DataScience)