Ich würde gerne wissen, welche Optionen für externe GPUs (eGPU) für macOS im Jahr 2017 mit dem MacBook Pro von Ende 2016 verfügbar sind.
Ich habe recherchiert, aber im Internet finde ich viele verwirrende Informationen. Einige sagen, dass es funktionieren kann, aber es erfordert Windows (Dual-Boot). Andere sagen, dass es nur für die älteren Grafikkarten funktionieren kann, da CUDA für die neueren Grafikkarten (GTX 1080) nicht unterstützt wird. Idealerweise würde ich gerne die 1080 GTX von NVIDIA betreiben. Mein einziger Zweck ist es, Keras und TensorFlow damit zu verwenden. Allerdings kenne ich nicht alle Dinge, die wichtig sind, damit es funktioniert. Meine Frage ist daher, ist es möglich, TensorFlow mit CUDA und eGPU auf dem späten MacBook Pro 2016 (15") zu verwenden? Ich möchte die Grafikkarte in macOS (mit spätem MacBook Pro 15") als eGPU verwenden (kein Dual- Boot-/Windows-/Linux-Partition).
Randnotiz: Ich habe schon früher Benutzer gesehen, die eGPUs auf Macbooks verwendet haben (Razor Core, AKiTiO Node), aber nie in Kombination mit CUDA und Machine Learning (oder der 1080 GTX für diese Angelegenheit). Die Leute schlugen vor, stattdessen Serverplatz zu mieten oder Windows zu verwenden (bessere Grafikkartenunterstützung) oder sogar einen neuen PC zum gleichen Preis zu bauen, mit dem Sie eine eGPU auf einem Mac verwenden können. (Ich bevorzuge diese Option nicht.)
Ich konnte endlich Nvidia Titan XP + MacBook Pro + Akitio Node + Tensorflow + Keras installieren
Ich habe eine Zusammenfassung mit dem Verfahren geschrieben, hoffe es hilft
https://gist.github.com/jganzabal/8e59e3b0f59642dd0b5f2e4de03c7687
Folgendes habe ich getan:
Diese Konfiguration hat bei mir funktioniert, hoffe es hilft
Es basiert auf: https://becominghuman.ai/deep-learning-gaming-build-with-nvidia-titan-xp-and-macbook-pro-with-thunderbolt2-5ceee7167f8b
und auf: https://stackoverflow.com/questions/44744737/tensorflow-mac-os-gpu-support
Führen Sie nach dem Neustart Ihres Mac diesen Befehl im Terminal aus:
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
Trennen Sie Ihre eGPU von Ihrem Mac und starten Sie neu. Dies ist wichtig, wenn Sie Ihre eGPU nicht vom Stromnetz getrennt haben, kann es nach dem Neustart zu einem schwarzen Bildschirm kommen.
Öffnen Sie nach dem Neustart Ihres Mac das Terminal und führen Sie diesen Befehl aus:
sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
Derzeit benötigt Keras 2.08 Tensorflow 1.0.0. Tensorflow-gpu 1.0.0 benötigt CUDA 8.0 und cuDNN v5.1 hat bei mir funktioniert. Ich habe andere Kombinationen ausprobiert, aber es scheint nicht zu funktionieren
Env-Variablen festlegen
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
(Wenn Ihr bash_profile nicht existiert, erstellen Sie es. Dies wird jedes Mal ausgeführt, wenn Sie ein Terminalfenster öffnen.)
Kopieren Sie cuDNN-Dateien nach CUDA
cd ~/Downloads/cuda
sudo cp include/* /usr/local/cuda/include/
sudo cp lib/* /usr/local/cuda/lib/
Umgebung erstellen und Tensorflow installieren
conda create -n egpu python=3
source activate egpu
pip install tensorflow-gpu==1.0.0
Überprüfen Sie, ob es funktioniert
Führen Sie das folgende Skript aus:
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))
Installieren Sie Keras in der Umgebung und stellen Sie Tensorflow als Backend ein:
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"
Ausgabe:
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
Ich konnte eine NVIDIA GTX 1080 Ti auf dem Akitio Node auf meinem iMac (Ende 2013) zum Laufen bringen. Ich verwende einen Thunderbolt 2 > 3-Adapter, obwohl Sie auf neueren Macs den schnelleren TB3 direkt verwenden können.
Auf eGPU.io sind verschiedene eGPU-Setups beschrieben, und vielleicht finden Sie eines, das Ihren Computer/Ihr Gehäuse/Ihre Karte genau beschreibt. Diese Tutorials dienen hauptsächlich dazu, eine Anzeige mit einer eGPU zu beschleunigen, obwohl Sie zum Trainieren von NNs offensichtlich nicht alle Schritte befolgen müssen.
Hier ist ungefähr, was ich getan habe:
/usr/local/cuda
Die Dateien von der NVIDIA-Website sollten mit dem Rest Ihrer CUDA-Bibliotheken und -Includes untergehen .pip install tensorflow-gpu
hatte ich keine Installationsfehler, bekam aber einen Segfault, als ich TensorFlow in Python benötigte. Es stellt sich heraus, dass einige Umgebungsvariablen gesetzt werden müssen (etwas anders als der CUDA-Installer vorschlägt), die in einem GitHub-Issue-Kommentar beschrieben wurden .Über die iStat-Menüs kann ich überprüfen, ob meine externe GPU tatsächlich während des Trainings verwendet wird. Diese TensorFlow-Installation funktionierte zwar nicht mit Jupyter, aber hoffentlich gibt es dafür einen Workaround.
Ich habe dieses Setup nicht oft verwendet, bin mir also nicht sicher über die Leistungssteigerung (oder Bandbreitenbeschränkungen), aber eGPU + TensorFlow/CUDA ist jetzt sicherlich möglich, da NVIDIA damit begonnen hat, geeignete Treiber für macOS zu veröffentlichen.
eGPU-Unterstützung auf macOS ist ein schwieriges Thema, aber ich werde mein Bestes tun, um Ihre Frage zu beantworten.
Beginnen wir mit Grafikkarten! Aus Zeitgründen und weil wir über CUDA sprechen, bleiben wir bei Nvidia-Karten. Jede Grafikkarte funktioniert mit den richtigen Treibern unter Windows. Apple unterstützt jedoch offiziell nur wenige Nvidia-Grafikkarten, hauptsächlich sehr alte. Die Nvidia-Grafiktreiber funktionieren jedoch tatsächlich auf fast allen GeForce- und Quadro-Karten von Nvidia, mit einer großen Ausnahme. GTX 10xx-Karten FUNKTIONIEREN NICHT. Auf jedem Mac-Betriebssystem. Zeitraum. Nvidias Treiber unterstützen diese Karte nicht. Wenn Sie nach Leistung suchen, sollten Sie sich die GTX 980Ti oder Titan X ansehen (viele gute Quadro-Karten würden auch gut funktionieren).
Nun, da wir das abgedeckt haben, lassen Sie uns zu eGPU-Gehäusen übergehen. Da Sie speziell eGPUs erwähnt haben, gehe ich davon aus, dass Sie ein tatsächliches eGPU-Gehäuse (verwenden wir den AKiTiO-Knoten als Beispiel) anstelle eines PCIe-Erweiterungschassis mit externer Stromversorgung vorgesehen haben, da dies nicht der Fall ist eine tolle Idee.
Jetzt haben wir also eine Grafikkarte (GTX 980Ti) in einem eGPU-Gehäuse (AKiTiO Node) und wollen es zum Laufen bringen. Nun, das ist leichter gesagt als getan. Ich habe Ende 2016 ein wenig über eGPU recherchiert, und die Informationen, die ich erhalten habe, waren relativ verwirrend. Wenn also jemand Kommentare oder Korrekturen hat, lass es mich wissen. Soweit ich weiß, müssen Sie einen externen Monitor an die eGPU anschließen, um die Leistung der eGPU nutzen zu können. Ich glaube nicht, dass Sie die eGPU in macOS ohne einen externen Monitor ausführen können. Sie werden den Startbildschirm von Apple auch nicht auf dem mit eGPU verbundenen Monitor sehen (es sei denn, Sie kaufen eine geflashte Karte von MacVidCards), aber Sie sollten dann in der Lage sein, die eGPU zum Ansteuern Ihrer Grafik zu verwenden.
Angenommen, Sie tun dies alles erfolgreich, sollten Sie ein sehr leistungsstarkes CUDA-fähiges Grafik-Kraftpaket haben.
Ich habe es kürzlich mit OSX 10.13.6 für Pytorch und Fastai gemacht. Siehe meinen Kern hier: https://gist.github.com/dandanwei/18708e7bd5fd2b227f86bca668343093
Wenn Sie macOS 10.13.3 verwenden, überprüfen Sie diesen Link . Es deckt alles vom eGPU-Setup bis zur TensorFlow-Kompilierung ab.
brendon-ai