关于在 Mac/MBP 上使用外置 GPU(eGPU)的文章很少,我们这篇文章基于一下环境讲解一下如何在 MacBook Pro 上使用 eGPU 安装和使用 PyTorch。
- MacBook Pro Retina mid-2015
- NVIDIA Titan XP
- Razer Core v2 enclosure (GPU 外置机箱)
- Thunderbolt 3 到 Thunderbolt 2 的转换器(如果需要的话)
注意,macOS 的系统版本必须是 macOS High Sierra,截至此文发稿时,macOS Mojave 是不可以的。
文章目录
安装脚本 macOS-eGPU.sh
感谢 eGPU 社区的贡献,我们才有了这个一键安装脚本,脚本地址:https://github.com/learex/macOS-eGPU.
- 在系统恢复模式里禁用 SIP:
csrutil disable
- 下载并运行这个脚本:
bash <(curl -shttps://raw.githubusercontent.com/learex/macOS-eGPU/master/macOS-eGPU.sh)
- 按照提示安装。
注意,此过程中 eGPU 不支持热插拔,否则会引起内核致命错误。
安装完成后重启,就可以在系统信息里看到我们的外置 GPU 了:
安装 CUDA
安装 CUDA 9.2 (下载地址)。 我们还需要 Xcode 9.2 和 Apple LVVM 9.0.0 来在后续过程中编译代码。
按照这个教程中的步骤或以下步骤 :
- 安装 Xcode 9.2
sudo xcode-select -s /Applications//Contents/Developer
xcode-select --install
- 确保 Apple LVVM 9.0.0 安装正确:
/usr/bin/cc --version
- 把可执行文件添加到系统环境变量 (vim ~/.bash_profile)
export PATH=/Developer/NVIDIA/CUDA-9.2/bin:$PATH
在系统设置里,确保 CUDA 驱动的版本号是 396.xx :
安装 cuDNN
下载 cuDNN,版本号 7.2.1.38,CUDA 9.2(下载地址),然后按照下列步骤:
- 解压
tar -xzvf cudnn-9.2-osx-x64-v7.tgz
- 执行下列命令:
1 | sudo cp cuda/include/cudnn.h /usr/local/cuda/include && cp cuda/lib/libcudnn* /usr/local/cuda/lib && chmod a r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib/libcudnn* |
安装 Conda
安装 miniconda3:https://conda.io/miniconda.html
设置 Conda
这里我们创建一个名叫 ptc
的虚拟环境来编译 PyTorch。
1 2 3 4 5 | conda create --name ptc python=3.6 pip alias ptc=\\'export CMAKE_PREFIX_PATH=~/miniconda3/envs/ptc ; source activate ptc\\' alias coff=\\'source deactivate; export CMAKE_PREFIX_PATH=~/miniconda3\\' ptc conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing |
从源码编译安装 PyTorch=
按照下列步骤进行:
1 2 3 4 | git clone --recursive https://github.com/pytorch/pytorch cd pytorch git checkout v1.0rc1 MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang python setup.py install |
测试是否安装成功:
1 2 3 4 5 6 | python import torch torch.cuda.is_available() print(torch.cuda.get_device_name(0)) d = torch.device("cuda") x = torch.tensor([1.0, 2.0]).to(d) |
编译安装 torchvision
如果仅仅使用 conda install torchvision -c pytorch
会造成我们之前编译好的 PyTorch 被覆盖,所以要从源码编译安装 torchvision:
1 2 3 4 | source activate ptc git clone https://github.com/pytorch/vision.git cd vision python setup.py install |
性能测试
1 2 | git clone https://github.com/pytorch/examples cd examples/mnist |
在 NVIDIA Titan XP 上的性能:
1 2 3 4 | time python main.py >/dev/null real 1m38.430s user 2m6.163s sys 0m7.762s |
不使用 CUDA 的性能:
1 2 3 4 | time python main.py --no-cuda >/dev/null real 5m47.750s user 37m22.609s sys 1m23.813s |
创建并使用 CUDA IPython Notebook
1 2 3 4 5 | source activate ptc conda install ipykernel python -m ipykernel install --user --name ptc --display-name "Python 3.6 (ipc, cuda)" source deactivate ptc jupyter notebook |
大功告成,现在可以在 Mac 系统上尽情使用 eGPU 了!
本文由 PyTorch 中文网 整理自 Medium。
本站微信群、QQ群(三群号 726282629):
