macos+xcode9+cuda10+anaconda+pytorch+torchvision安裝

折騰了一週多,踩了好多坑,終於搞定了。步驟以下:
安裝NIVIDIA的GPU web驅動程序
cuda不推薦使用蘋果的系統自帶驅動,因此安裝NIVIDIA出的GPU型號(GeForce GT 650M)對應的WebDriver-387.10.10.10.40.118。
下載地址 https://www.nvidia.com/download/driverResults.aspx/142160/en-us
安裝NIVIDIA的CudaDriver
從這裏下載 https://www.nvidia.com/object/mac-driver-archive.html
安裝xcode
由於當前最新版cuda10.0不支持最新的xcode10,因此必須安裝xcode9.4
我把兩個版本都安裝了,用以下命令能夠切換使用不一樣版本的xcode:
sudo xcode-select -s /Applications/xcode10.1.app 或者 sudo xcode-select -s /Applications/xcode9.4.1.app
實際只須要安裝xcode9.4便可
舊版本xcode須要下載以後才能安裝,下載地址https://download.developer.apple.com/Developer_Tools/Xcode_9.4.1/Xcode_9.4.1.xip 須要註冊帳號才能下載
安裝CUDA
由於NIVIDIA網站下載速度慢,不穩定,建議用以下命令下載CUDA和CUDNN安裝包
aria2c -c https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_mac
aria2c -c https://developer.download.nvidia.com/compute/cuda/10.0/secure/Prod/local_installers/cuda_10.0.130_mac.dmg
aria2c -c https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.128_mac
aria2c -c https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.128_mac
aria2c -c https://developer.download.nvidia.cn/compute/cuda/9.1/secure/Prod/local_installers/cuda_9.1.128_mac.dmghtml

打開下載的安裝包安裝結束後,cuda的安裝目錄缺省是/Developer/NVIDIA/CUDA-10.0
設置cuda相關的環境變量
打開~/.bash_profile文件,輸入如下內容,設置cuda相關的環境變量:
export CUDA_ROOT=/Developer/NVIDIA/CUDA-10.0
export CUDA_HOME=/Developer/NVIDIA/CUDA-10.0
export PATH=$CUDA_ROOT/bin${PATH:+:${PATH}}
export DYLD_LIBRARY_PATH=$CUDA_ROOT/lib${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=$CUDA_ROOT/lib:$LD_LIBRARY_PATH
其中,環境變量CUDA_ROOT給Theano指定了CUDA的安裝目錄,也能夠被設置爲/usr/local/cuda(這兩個路徑下的文件均經過軟連接被link到了一塊兒)。
配置完成後,退出編輯器,執行如下命令使環境變量生效。
source ~/.bash_profile
安裝CUDA samples 文件
CUDA samples 文件安裝目錄: /Developer/NVIDIA/CUDA-10.0/samples
cuda-install-samples-10.0.sh /usr/local/cuda/samples #安裝samples文件
sudo chown -R admin123 /Developer/NVIDIA/CUDA-10.0/samples #修改目錄權限和屬主,很是重要!
驗證安裝cuda 的時候,執行命令
nvcc -V
/Developer/NVIDIA/CUDA-10.0/samples/bin/x86_64/darwin/release/deviceQuery
第二個程序會顯示使用的NIVIDIA顯卡信息,若是deviceQuery這個命令不存在(初次安裝須要編譯生成),進入CUDA的samples安裝目錄,而後執行以下命令生成它
cd /Developer/NVIDIA/CUDA-10.0/samples
make -C 0_Simple/vectorAdd
#若是執行報錯unable to open output file 'vectorAdd.o': 'Permission denied',執行sudo chown -R admin123 /Developer/NVIDIA/CUDA-10.0/samples
make -C 0_Simple/vectorAddDrv
make -C 1_Utilities/deviceQuery
make -C 1_Utilities/bandwidthTestpython

安裝CUDNN
CUDNN實際就是幾個庫文件,下載後解壓,而後拷貝到CUDA安裝目錄的對應子目錄便可
下載 cuDNN at https://developer.nvidia.com/cudnn 或者執行以下命令下載
aria2c -c https://developer.nvidia.com/compute/machine-learning/cudnn/secure/v7.5.0.56/prod/10.0_20190219/cudnn-10.0-osx-x64-v7.5.0.56.tgz
拷貝下載文件到本身建立的cudnn目錄,解壓文件,把解壓的文件拷貝到cuda安裝目錄下的對應子目錄
sudo mkdir /Developer/NVIDIA/cudnn
mv /Users/admin123/Downloads/cudnn-10.0-osx-x64-v7.5.0.56.tar /Developer/NVIDIA/cudnn
sudo tar -xzvf cudnn-10.0-osx-x64-v7.5.0.56.tar
sudo cp cuda/include/cudnn.h $CUDA_ROOT/include
sudo cp cuda/lib/libcudnn $CUDA_ROOT/lib
sudo chmod a+r $CUDA_ROOT/include/cudnn.h $CUDA_ROOT/lib/libcudnn
git

個人實際操做步驟是:
sudo mkdir /usr/local/cudnn
mv /Users/admin123/Downloads/cudnn-10.0-osx-x64-v7.5.0.56.tar /usr/local/cudnn
sudo tar -xzvf cudnn-10.0-osx-x64-v7.5.0.56.tar
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib/libcudnn /usr/local/cuda/lib
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib/libcudnn

注意:/usr/local/cuda下的目錄和文件應該都連接到/Developer/NVIDIA/CUDA-10.0下對應的目錄和文件。可是個人mac上有一個lib子目錄沒有連接,估計是安裝過程當中出了問題。
驗證安裝 CUDNN
$ echo -e '#include"cudnn.h"\n void main(){}' | nvcc -x c - -o /dev/null -I/usr/local/cuda/include -L/usr/local/cuda/lib -lcudnn
If no error occurs, both the header and library are installed and can be located by the nvcc compiler.
安裝最新版的Anaconda 2018.12 for macOS
#安裝最新版很是重要,不然後面會遇到不少問題
#使用官方源,不要使用清華源,清華源問題多。官方源已經不被牆了。
選擇的python版本是3.7.1
conda -V 命令顯示版本是conda 4.6.7
安裝pytorch
從源代碼build pytorch (這是我惟一測試成功的支持cuda的方法)
一直遇到各類問題,最後發現:安裝最新版的anaconda 2018.12 for MacOS(內部版本號4.6.7) ,並配置好前面的全部環境變量才行
conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing #安裝依賴包
cd /Developer #這裏是建在/Developer目錄下
sudo git clone --recursive https://github.com/pytorch/pytorch #sudo 纔能有權限在macos上創建目錄pytorch
cd /Developer/pytorch
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
sudo MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install #能夠在不使用NIVIDIA卡的狀況下編譯
這個build過程時間較長,build過程當中還會從網上下載須要的文件github

從conda安裝preview版(由於正式版1.0不支持cuda)
環境:conda 4.6.7,python 3.7.1 CUDA 10.0
conda install pytorch-nightly -c pytorch #這一條命令搞定安裝,可是安裝後發現沒有激活cuda支持,最後從源代碼安裝才搞定cudaweb

檢查pytorch安裝結果
啓動python,注意以前設置的環境變量必定要生效狀態
鍵入下面的命令
from future import print_function
import torch
x = torch.rand(5, 3)
print(x)
輸出應該相似爲:
tensor([[0.3380, 0.3845, 0.3217],
[0.8337, 0.9050, 0.2650],
[0.2979, 0.7141, 0.9069],
[0.1449, 0.1132, 0.1375],
[0.4675, 0.3947, 0.1426]])
檢查pytorch是否能夠經過cuda使用GPU加速
import torch
torch.cuda.is_available() #返回結果應該是 true。測試中發現用舊版本anaconda(python3.6)編譯pytorch成功後,執行這個命令時,macos自動激活使用NIVIDIA GT650M顯卡。可是由於cmake的版本依賴問題,使用新版本anaconda(python3.7)編譯後,沒有這個行爲.
print(torch.cuda.get_device_name(0)) #測試返回結果以下
/Applications/anaconda3/lib/python3.7/site-packages/torch/cuda/init.py:118: UserWarning:
Found GPU0 GeForce GT 650M which is of cuda capability 3.0.
PyTorch no longer supports this GPU because it is too old.
The minimum cuda capability that we support is 3.5.
####說明這個版本的cuda10.1不支持GT650M顯卡,認爲它太舊了####
安裝torchvision模塊
安裝好pytorch以後,還要安裝torchvision模塊
方法一,用 conda 安裝
#方法來自https://github.com/pytorch/vision官方文檔,可是會強制安裝pytorch-1.0.1,致使不支持cuda
conda install torchvision -c pytorch
安裝時提示:
The following packages will be downloaded:macos

package                    |            build
---------------------------|-----------------
pytorch-1.0.1              |          py3.7_2        25.7 MB  pytorch          #源代碼安裝的是1.0版本,這裏要作升級,升級卻後不支持cuda
torchvision-0.2.2          |             py_3          44 KB  pytorch
------------------------------------------------------------
                                       Total:        25.7 MB

方法二, 從源代碼安裝
方法來自https://github.com/pytorch/vision官方文檔,測試下來沒問題,支持cuda
cd /Developer
sudo git clone --recursive https://github.com/pytorch/vision
驗證torchvision的安裝是否成功:
import torchvisionxcode

遇到的常見問題
torch._C問題
在python裏面執行如下命令bash

import torch
報錯以下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/pytorch/torch/init.py", line 97, in <module>
from torch._C import *
ModuleNotFoundError: No module named 'torch._C'
緣由是:
the problem is that you have a folder called torch in the same directory which is being picked up. Do this: cd .. (to change directory), and then start python and import torch, it should work.
用戶啓動python時所在的目錄下有同名的torch目錄,這致使程序錯誤的使用了這個目錄。換一個目錄,重啓python便可。
xcode版本選擇和developer tools
Use sudo xcode-select --switch path/to/Xcode.app to specify the Xcode that you wish to use for command line developer tools, or use xcode-select --install to install the standalone command line developer tools.app

參考文檔
下載舊版本cuda的網址 https://developer.nvidia.com/cuda-toolkit-archive
NVIDIA CUDA Drivers for MAC Archive https://www.nvidia.com/object/mac-driver-archive
NVIDIA CUDA Installation Guide for Mac OS X https://docs.nvidia.com/cuda/cuda-installation-guide-mac-os-x/index.html
NVIDIA CUDA INSTALLATION GUIDE FOR MAC OS X https://developer.download.nvidia.cn/compute/cuda/9.2/Prod/docs/sidebar/CUDA_Installation_Guide_Mac.pdf
CUDA toolkid v10.1.105 Quick Start Guide https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#mac
CUDA Drivers for MAC Archive https://www.nvidia.com/object/mac-driver-archive.html
CUDA、CUDNN在Mac Book Pro上安裝的問題 http://www.javashuo.com/article/p-kykwefzt-mr.html
Mac下CUDA開啓及Tensorflow-gpu 1.4安裝 https://blog.csdn.net/wz22881916/article/details/78807993
CUDA-Z 就是gpu-z,具體參數就變成了針對cuda應用方面的信息,支持cuda信息查詢,能夠測試電腦cuda的速度。 https://sourceforge.net/projects/cuda-z/
深度學習開發環境搭建教程(Mac篇) http://www.cnblogs.com/iloveai/p/shen-du-xue-xi-kai-fa-huan-jing-da-jian-jiao-cheng.html
《深度學習框架PyTorch:入門與實踐》https://github.com/chenyuntc/pytorch-book
各個版本的anaconda官方下載地址 https://repo.anaconda.com/archive/
在macOS上安裝nVidia驅動程序的最簡單的方法 https://www.ctolib.com/Benjamin-Dobell-nvidia-update.html
macOS Sierra (10.12.3)利用aria2解決CUDA下載失敗問題 http://www.mobibrw.com/2017/6723
Mac下CUDA開啓及Tensorflow-gpu 1.4 安裝 https://blog.csdn.net/liujiandu101/article/details/80566071框架

相關文章
相關標籤/搜索