I consider setting up eGPU on my MacBook (mid-2017) to improve the training time on Deep Learning. Currently, it trains only on CPU and thus is too slow and practically useless to train a large amount of data. The Deep Learning framework I use is Keras/TensorFlow, which requires to use CUDA so it must be CUDA-compatible Nvidia GPU.

Switching to a desktop workstation is not a choice as I'm a traveler. Switching to MacBook Pro is also not a choice right now as it is heavy to carry, though it might be a consideration in the future (especially because it has Thunderbolt 3 port). The cloud (AWS, etc) is not also a choice as it is far more expensive in longer-term.

Badget: $1,200

The laptop is mid-2017 MacBook with 16GB RAM; the OS is always the latest (currently Sierra)

The electrical bill is NOT a concern as I don't pay.

The biggest concern is the port is USB 3.1 Gen1, which likely doesn't perform better than the expection. But it still should be faster than the CPU on MacBook; in this case is there any recommendation to set up eGPU environment?

  • 1
    I'm not aware of any (beefy) eGPU solutions that don't require some PCI-like connection (which includes Thunderbolt 2 and 3). And chances are that most cases with cards will be heavier than the difference between a MacBook and a MacBookPro.
    – SEJPM
    Aug 10, 2017 at 18:26
  • @SEJPM In "heavy", I meant I carry it frequently to go outside; I use eGPU only when I'm home.
    – Blaszard
    Aug 11, 2017 at 5:36
  • Can you please read this apple support article and verify whether you have any generation of Thunderbolt? And can you please link to the specific model you have (so we can look at the precise connectivity options)?
    – SEJPM
    Nov 10, 2017 at 20:33
  • @SEJPM is right. While there might be some kludgy way to make it work since you're using it entirely as a compute node, there's no way it will work normally nor does anyone offer the hardware to do this. You have to upgrade to a computer with some available PCI-e expansion, of which TB3 is the cleanest solution.
    – JMY1000
    Jan 9, 2018 at 20:08
  • Also TensorFlow has some fairly popular forks that support OpenCL
    – JMY1000
    Jan 12, 2018 at 5:06

2 Answers 2


Option 1. If you are locked with this machine with no option for replacing and you are interested in having only it, then you best bet for local GPU solution is using an mSata or NGFF eGPU like this https://www.banggood.com/NGFF-Version-V8_0-EXP-GDC-Beast-Laptop-External-Independent-Video-Card-Dock-p-1009978.html?rmmds=search It is quite slow, but it will boost performance for GPU based application considerably - especially if you'll connect to it an external monitor (thus relieving the PCIe connection from having to transmit the video signal too)

Option 2: Otherwise, consider simply getting another pc (no need for a laptop) to do the heavy lifting. You can buy something rather cheap with a good GPU. You can even connect to it remotely from your laptop, sending it tasks

Option 3. you might want to consider running GPU tasks on a remote machine altogether. There are such services

  • Option 1 won't work; ignoring that mSATA != mini PCI-e or NVMe NGFF, the MacBook is completely soldered down, and there's no way to connect any sort of solution up through there.
    – JMY1000
    Jan 9, 2018 at 20:06

Don't waste your time with an eGPU, it'll just be slower and more annoying than putting a GPU on a separate machine. If you want that one to be small, that's doable. See my similar answer here for a bit more of an explanation.

  • See my comment on your other answer. Here though the problem is actually less severe, since for the purposes of deep learning, going to the system memory except to exchange batches is so slow that it might as well be treated as an error.
    – JMY1000
    Jan 12, 2018 at 5:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.