Это небольшой пост в блоге об установке необходимой среды для использования внешнего графического процессора (eGPU) на более старых MacBook Pro с Thunderbolt 2, например для использования в исследованиях Deep Learning. В этом тесте использовалось следующее оборудование:
- MacBook Pro Retina, модель середины 2015 года
- NVIDIA Titan XP
- Корпус Razer Core v2
- Переходник с Thunderbolt 3 на Thunderbolt 2
Вам понадобится macOS High Sierra. Я провел те же тесты на последней версии macOS Mojave, но в данный момент она не работает.
Установите macOS-eGPU.sh
Благодаря огромной благодарности сообществу eGPU, существует простой в использовании сценарий bash, позволяющий получить eGPU, совместимый с более ранними версиями MacB o ok (до Thunderbolt 3). Репозиторий можно найти здесь.
- Отключить SIP в режиме восстановления:
csrutil disable
- Скачайте и запустите скрипт:
bash <(curl -s https://raw.githubusercontent.com/learex/macOS-eGPU/master/macOS-eGPU.sh)
- Следуй инструкциям.
Вы не сможете отключить внешний графический процессор в горячем режиме. Это вызовет фатальную ошибку ядра.
После установки и перезагрузки вы сможете увидеть внешний графический процессор в Системной информации на вкладке Графика / Дисплей:
Установка CUDA
Установите CUDA 9.2 с сайта разработчика NVIDIA (ссылка). Для компиляции нам потребуются Xcode 9.2 и Apple LVVM 9.0.0.
Тогда следуйте инструкциям здесь или следуйте моей:
- Установите Xcode 9.2 со страницы загрузки Apple Developer.
sudo xcode-select -s /Applications/<Xcode_install_dir>/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, перейдя на панель CUDA в Системных настройках.
Установка cuDNN
Загрузите и установите cuDNN версии 7.2.1.38 для CUDA 9.2 здесь, следуйте инструкциям здесь или следуйте моей:
- Распаковать архив и запустить
tar -xzvf cudnn-9.2-osx-x64-v7.tgz
- Выполните следующее:
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
Обязательно запомните каталог установки, по умолчанию:
/Users/<USERNAME>/miniconda3
Настройка среды conda
Теперь мы настроим новую среду conda под названием ptc
для установки pytorch (скомпилированного из исходного кода) в.
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 из исходников
PyTorch не поддерживает двоичные файлы, совместимые с CUDA, поэтому нам придется скомпилировать его из исходников. На это уйдет немало времени :)
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
Чтобы проверить, все ли работает, импортируйте torch и проверьте доступность CUDA (при этом все еще выполняется в среде ptc
):
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
Установка torchvision с conda install torchvision -c pytorch
может привести к перезаписи исходной установки двоичными файлами pytorch (которые несовместимы с CUDA). Мы легко можем установить torchvision из исходников:
source activate ptc git clone https://github.com/pytorch/vision.git cd vision python setup.py install
Необязательно: производительность теста
git clone https://github.com/pytorch/examples cd examples/mnist
Производительность с NVIDIA Titan XP:
time python main.py >/dev/null real 1m38.430s user 2m6.163s sys 0m7.762s
Производительность без CUDA:
time python main.py --no-cuda >/dev/null real 5m47.750s user 37m22.609s sys 1m23.813s
Необязательно: Создайте ядро CUDA IPython Notebook
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
Теперь вы готовы погрузиться в увлекательный мир глубокого обучения :)