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.dmg

打開下載的安裝包安裝結束後,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/bandwidthTest

安裝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

我的實際操作步驟是:
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過程中還會從網上下載需要的文件

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

檢查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:

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 torchvision

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

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.

參考文檔
下載舊版本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上安裝的問題 https://www.cnblogs.com/didda/p/9065387.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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章