使用CUDA和MBP 2016后期在外部GPU上进行机器学习吗?


31

我想知道2017年末配备2016年款MacBook Pro的macOS的外部GPU(eGPU)选项是什么。

我做了研究,但是在互联网上我发现了很多令人困惑的信息。有人说它可以工作,但是需要Windows(双启动)。有人说,它只能用于较旧的显卡,因为较新的显卡(GTX 1080)不支持CUDA。理想情况下,我想运行NVIDIA的1080 GTX。我唯一的目的是与它一起使用Keras和TensorFlow。但是,我不知道使它正常工作的所有重要事项。因此,我的问题是,是否可以在后期的MacBook Pro 2016(15英寸)上使用TensorFlow和CUDA和eGPU?我想在macOS(晚于MacBook Pro 15英寸)中使用图形卡作为eGPU(无双显卡)。启动/ Windows / Linux分区)。

旁注:我见过用户在Macbook之前使用过eGPU(Razor Core,AKiTiO Node),但从未与CUDA和Machine Learning(或1080 GTX)结合使用。人们建议改为租用服务器空间,或使用Windows(更好的图形卡支持),甚至以允许您在Mac上使用eGPU的价格建造新PC。(我不喜欢这种选择。)


1080上的CUDA绝对可以工作。我今天早上用Keras和TensorFlow后端(在Ubuntu上,但仍然)在1080上训练网络。
brendon-ai

Answers:


19

我终于可以安装Nvidia Titan XP + MacBook Pro + Akitio Node + Tensorflow + Keras

我写了要点,希望对您有帮助

https://gist.github.com/jganzabal/8e59e3b0f59642dd0b5f2e4de03c7687

这是我所做的:

此配置对我有用,希望对您有所帮助

它基于:https : //becominghuman.ai/deep-learning-gaming-build-with-nvidia-titan-xp-and-macbook-pro-with-thunderbolt2-5ceee7167f8b

并继续:https : //stackoverflow.com/questions/44744737/tensorflow-mac-os-gpu-support

硬件

软件版本

  • macOS Sierra版本10.12.6
  • GPU驱动程序版本:10.18.5(378.05.05.25f01)
  • CUDA驱动程序版本:8.0.61
  • cuDNN v5.1(2017年1月20日),适用于CUDA 8.0:需要注册和下载
  • 张量流-gpu 1.0.0
  • 凯拉斯2.0.8

程序:

安装GPU驱动程序

  1. 关闭系统,然后按(⌘和R)键再次打开系统电源,直到看到,这将使您进入恢复模式。
  2. 从菜单栏中单击实用程序>终端,然后输入'csrutil disable; 重新启动”,按Enter执行该命令。
  3. Mac重新启动后,在终端中运行以下命令:

    cd ~/Desktop; git clone https://github.com/goalque/automate-eGPU.git
    chmod +x ~/Desktop/automate-eGPU/automate-eGPU.sh
    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh
    
  4. 从Mac上拔出eGPU,然后重新启动。如果您不拔出eGPU,则很重要,重启后可能会出现黑屏。

  5. Mac重新启动后,打开终端并执行以下命令:

    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
    
    1. 通过TH2将eGPU插入Mac。
    2. 重新启动Mac。

安装CUDA,cuDNN,Tensorflow和Keras

目前,Keras 2.08需要tensorflow 1.0.0。Tensorflow-gpu 1.0.0需要CUDA 8.0,而cuDNN v5.1是最适合我的版本。我尝试了其他组合,但似乎没有用

  1. 下载并安装CUDA 8.0 CUDA Toolkit 8.0 GA2(2017年2月)
  2. 安装它并按照说明进行操作
  3. 设置环境变量

    vim ~/.bash_profile
    export CUDA_HOME=/usr/local/cuda
    export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$CUDA_HOME:$CUDA_HOME/extras/CUPTI/lib"
    export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
    

(如果您的bash_profile不存在,请创建它。每次打开终端窗口时都会执行此操作)

  1. 下载并安装cuDNN(cudnn-8.0-osx-x64-v5.1)需要先注册才能下载
  2. 将cuDNN文件复制到CUDA

    cd ~/Downloads/cuda
    sudo cp include/* /usr/local/cuda/include/
    sudo cp lib/* /usr/local/cuda/lib/
    
  3. 创建环境并安装tensorflow

    conda create -n egpu python=3
    source activate egpu
    pip install tensorflow-gpu==1.0.0
    
  4. 验证它是否有效

运行以下脚本:

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))
  1. 在环境中安装Keras并将tensorflow设置为后端:

    pip install --upgrade --no-deps keras # Need no-deps flag to prevent from installing tensorflow dependency
    KERAS_BACKEND=tensorflow python -c "from keras import backend"
    

    输出:

    Using TensorFlow backend.
    I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.8.0.dylib locally
    I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.5.dylib locally
    I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.8.0.dylib locally
    I tensorflow/stream_executor/dso_loader.cc:126] Couldn't open CUDA library libcuda.1.dylib. LD_LIBRARY_PATH: /usr/local/cuda/lib:/usr/local/cuda:/usr/local/cuda/extras/CUPTI/lib
    I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.dylib locally
    I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.8.0.dylib locally
    

您需要外接显示器吗?还是你不?
Abhimanyu Aryan

@AbhimanyuAryan,不需要外部监视器。这仅是将eGPU与tensorlfow和/或keras一起使用
朱利安(Julian)

Mac OS 10.13是否也可以使用此功能。我看到他们只有CUDA 9更新了10.13,而Cuda 8仅更新了10.12。我试图看看我是否可以使它在GPU上运行TuriCreate。
Niklas

您是否将性能与PC进行了比较?
安格斯·泰

有人尝试过BlackMagic eGPU吗?
Pratik Khadloya

9

我能够在iMac上的Akitio节点上使用NVIDIA GTX 1080 Ti(2013年末)。我正在使用Thunderbolt 2> 3适配器,但是在较新的Mac上,您可以直接使用速度更快的TB3。

eGPU.io中描述了多种eGPU设置,您可能会找到一种准确描述您的计算机/机箱/卡的设置。这些教程主要用于使用eGPU加速显示,尽管显然,您不需要遵循所有步骤即可训练NN。

这大致就是我所做的:

  • 根据官方文档安装CUDA
  • 禁用SIP(适用于Google的教程)。eGPU.sh脚本需要此,后来TensorFlow也需要。
  • 运行每个eGPU.io似乎都依赖的automate-eGPU.sh脚本(使用sudo)。
  • 安装cuDNN。NVIDIA网站上的文件应/usr/local/cuda与其余CUDA库一起包括在内。
  • 卸载仅CPU的TensorFlow并安装具有GPU支持的设备。使用进行安装时pip install tensorflow-gpu,没有安装错误,但是在Python中需要TensorFlow时出现了段错误。事实证明,必须设置一些环境变量(与CUDA安装程序建议的有点不同),这些变量在GitHub问题注释中进行了描述。
  • 我还尝试从源代码编译TensorFlow,在按上一步所述设置env vars之前,该方法无法正常工作。

从iStat菜单中,我可以验证训练期间是否确实使用了外部GPU。不过,此TensorFlow安装无法与Jupyter一起使用,但希望有解决方法。

我还没有使用过此设置,所以不确定性能的提高(或带宽限制),但是自NVIDIA开始发布适用于macOS的驱动程序以来,现在肯定可以使用eGPU + TensorFlow / CUDA。


一个警告:从TensorFlow 1.2开始,他们没有提供官方的tensorflow-gpu pip软件包。这意味着我们需要从源代码构建它,根据我的经验,这永远不会立即起作用。希望会有关于如何编译主要版本的第三方教程,但是现在如果我仍然想使用我的GPU,就无法升级到1.2或1.3。
Mattias Arro

3
设法从源代码编译tensorfow 1.2。:写了一个小教程它medium.com/@mattias.arro/...
马蒂亚斯ARRO

3

macOS上的eGPU支持是一个困难的话题,但是我会尽力回答您的问题。

让我们从图形卡开始!为了节省时间,并且由于我们正在使用CUDA,我们将坚持使用Nvidia卡。任何显卡都可以在Windows上使用适当的驱动程序。但是,Apple仅正式支持少数Nvidia图形卡,主要是非常老的图形卡。但是,Nvidia图形驱动程序实际上可以在几乎所有Nvidia的GeForce和Quadro卡上运行,唯一的例外是。GTX 10xx卡将无法使用。在任何Mac操作系统上。期。Nvidia的驱动程序不支持该卡。如果您正在寻找动力,则需要查看GTX 980Ti或Titan X(许多优质的Quadro卡也可以正常工作)。

现在我们已经涵盖了这一点,让我们进入eGPU机箱。我要假设,因为您专门提到了eGPU,所以您已经为实际的eGPU机箱预算了(以AKiTiO Node为例),而不是带有外部电源的PCIe扩展机箱,因为这不是好主意。

因此,现在我们在eGPU外壳(AKiTiO节点)中有一个图形卡(GTX 980Ti),我们希望它能够正常工作。好吧,说起来容易做起来难。我在2016年底做了一些eGPU研究,获得的信息相对混乱,所以如果有人有任何评论或更正,请告诉我。据我了解,要利用eGPU的功能,您需要将外部显示器插入eGPU。我不相信您无需在macOS中使用外部显示器即可运行eGPU。您还不会在连接eGPU的显示器上看到Apple的启动屏幕(除非您从MacVidCards购买了闪存卡),但是随后您应该能够使用eGPU来驱动图形。

假设您成功完成了所有这些操作,则您应该具有功能强大的启用CUDA的图形功能。


感谢您的信息。980 Ti与eGPU机箱的组合似乎是一个可行的选择。唯一的事情是,Akitio节点(3)似乎已停产,并且Razor Core并未交付。实际可以购买哪个eGPU机箱?Akitio节点2?
乔普(Joop)

2
Bizon Box是专为它而设计的,但它的价格约为500美元。让我看一下...
NoahL

1
此链接可能使一些好的阅读过:appleinsider.com/articles/17/01/17/...
NoahL

Mac真的无法使用“ 10XX”系列吗?我听说其他人(包括此处的另一个答案)在Mac上使用了1080ti ...
Blaszard

绝对是这个答案。10xx系列Mac驱动程序要等到显卡发布后的整整年才发布(如果我没记错的话,在2017年末或2018年初的某个时候)
NoahL


1

如果您使用的是macOS 10.13.3,请检查此链接。它涵盖了从eGPU设置到TensorFlow编译的所有内容。

  • macOS:10.13.3
  • 网络驱动程序:387.10.10.10.25.156
  • CUDA工具包:9.1.128
  • cuDNN:7
  • NVDAEGPU支持:6
  • XCode:8.2
  • 边框:0.9.0
  • OpenMP:最新
  • 的Python:3.6
  • TensorFlow:1.5.0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.