CUDAと後期MBP 2016を備えた外部GPUでの機械学習?


31

2016年後半のMacBook Proでの2017年のmacOSの外部GPU(eGPU)オプションについて教えてください。

私は調査を行いましたが、インターネット上で多くの紛らわしい情報を見つけました。動作するという人もいますが、Windows(デュアルブート)が必要です。他の人は、CUDAは新しいグラフィックカード(GTX 1080)ではサポートされていないため、古いグラフィックカードでのみ機能すると言います。理想的には、NVIDIAの1080 GTXを実行したいと思います。私の唯一の目的は、KerasとTensorFlowを使用することです。しかし、私はそれを機能させるために重要なすべてのことを知りません。したがって、私の質問は、TensorFlowをCUDAとeGPUで後期MacBook Pro 2016(15インチ)で使用できるかということです。macOS(後期MacBook Pro 15インチ)でグラフィックカードをeGPU(デュアルなしboot / Windows / Linuxパーティション)。

サイドノート:以前にユーザーがMacbook(Razor Core、AKiTiO Node)でeGPUを使用しているのを見たことがありますが、CUDAおよびMachine Learning(またはその点で1080 GTX)と組み合わせたことはありません。代わりに、サーバースペースをレンタルするか、Windows(より優れたグラフィックスカードサポート)を使用するか、MacでeGPUを使用できる同じ価格で新しいPCを構築することを提案しました。(私はそのオプションを好まない。)


1080のCUDAは、間違いなく機能します。私は今朝早く、TensorFlowバックエンド(Ubuntu上ですが、まだ)でKerasを使用して1080でネットワークをトレーニングしていました。
ブレンドンアイ

回答:


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」と入力します。リブート」を押してこのコマンドを実行します。
  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. eGPUをMacから取り外し、再起動します。これは、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. 環境を作成し、テンソルフローをインストールする

    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をインストールし、テンソルフローをバックエンドとして設定します。

    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アーリア

@AbhimanyuAryan、外部モニターは必要ありません。これはtensorlfowおよび/またはkerasでeGPUを使用するだけである
ジュリアン

これはMac OS 10.13でも機能しますか。CUDA 9は10.13向けにのみ更新され、Cuda 8は10.12専用です。GPUでTuriCreateを実行できるかどうかを確認しようとしています。
ニクラス

PCとパフォーマンスを比較しましたか?
アンガステイ

誰もがBlackMagic eGPUでこれを試しましたか?
プラティックハドローヤ

9

iMac(2013年後半)のAkitioノードでNVIDIA GTX 1080 Tiを動作させることができました。Thunderbolt 2> 3アダプターを使用していますが、新しいMacではより高速なTB3を直接使用できます。

eGPU.ioにはさまざまなeGPUセットアップが記載されており、お使いのコンピューター/エンクロージャー/カードを正確に説明するものが見つかるかもしれません。これらのチュートリアルは、主にeGPUでディスプレイを高速化するためのものですが、NNをトレーニングするために、すべての手順に従う必要はありません。

私がやったことはほぼ次のとおりです。

  • 公式ドキュメントに従ってCUDAをインストールします。
  • SIP(チュートリアルについてはGoogle)を無効にします。これは、eGPU.shスクリプトと、後でTensorFlowでも必要です。
  • eGPU.ioの全員が依存していると思われるautomate-eGPU.shスクリプト(sudoを使用)を実行します。
  • cuDNNをインストールします。NVIDIAのWebサイトのファイル/usr/local/cudaは、CUDAライブラリの残りの部分と一緒に含める必要があります。
  • CPUのみのTensorFlowをアンインストールし、GPUをサポートするTensorFlowをインストールします。でpip install tensorflow-gpuインストールする場合、インストールエラーはありませんでしたが、PythonでTensorFlowを要求すると、セグメンテーション違反が発生しました。設定する必要のある環境変数がいくつかあり(CUDAインストーラーが提案するものとは少し異なります)、GitHubの問題コメントで説明されています
  • また、ソースからTensorFlowをコンパイルしようとしましたが、前の手順で説明したようにenv変数を設定する前に機能しませんでした。

iStatメニューから、トレーニング中に外部GPUが実際に使用されていることを確認できます。このTensorFlowのインストールはJupyterでは機能しませんでしたが、うまくいけば回避策があります。

私はこのセットアップをあまり使用していませんので、パフォーマンスの向上(または帯域幅の制限)についてはわかりませんが、NVIDIAがmacOSの適切なドライバーをリリースし始めたため、eGPU + TensorFlow / CUDAは確実に可能になりました。


警告の言葉:TensorFlow 1.2以降では、公式のtensorflow-gpu pipパッケージを提供していません。これは、ソースからビルドする必要があることを意味しますが、私の経験ではすぐには機能しません。メジャーリリースのコンパイル方法に関するサードパーティのチュートリアルがあることを願っていますが、今のところ、GPUを使用したい場合、たとえば1.2または1.3にアップグレードすることはできません。
マティアスアロ

3
ソースからtensorfow 1.2をコンパイルできました。:それにはほとんどのチュートリアルを書いたmedium.com/@mattias.arro/...
マティアス・Arro

3

macOSでのeGPUサポートは難しいトピックですが、ご質問にお答えできるよう最善を尽くします。

グラフィックカードから始めましょう!時間のために、そして私たちはCUDAを話しているので、私たちはNvidiaカードに固執します。グラフィックカードは、Windowsの適切なドライバーで動作します。ただし、Appleは公式には、主に非常に古いNvidiaグラフィックカードをいくつかサポートしています。ただし、Nvidiaグラフィックドライバーは、1つの大きな例外を除き、NvidiaのほとんどすべてのGeForceおよびQuadroカードで実際に動作します。GTX 10xxカードは機能しません。Macオペレーティングシステム。期間。Nvidiaのドライバーはこのカードをサポートしていません。パワーをお探しの場合は、GTX 980TiまたはTitan Xをご覧ください(多くの優れたQuadroカードも有効です)。

これでカバーできたので、eGPUエンクロージャーに移りましょう。これはそうではないので、外部電源を備えたPCIe拡張シャーシの代わりに、実際にeGPUエンクロージャー(例としてAKiTiOノードを使用しましょう)に予算を割り当てたと具体的にeGPUについて述べたので、仮定します。素晴らしいアイデア。

これで、eGPUエンクロージャ(AKiTiOノード)にグラフィックカード(GTX 980Ti)があり、それを機能させたいと思います。まあ、それは言うよりも簡単です。2016年の終わり頃にeGPUの調査を少し行いましたが、得た情報は比較的わかりにくいので、コメントや修正がある場合はお知らせください。私の理解では、eGPUのパワーを活用するには、外部モニターをeGPUに接続する必要があります。macOSで外部モニターなしでeGPUを実行できるとは思わない。また、eGPUに接続されたモニターにAppleのブート画面は表示されません(MacVidCardsからフラッシュカードを購入しない限り)が、eGPUを使用してグラフィックを駆動できるはずです。

これらすべてを正常に実行すると仮定すると、非常に強力なCUDA対応のグラフィックスパワーハウスが必要になります。


情報ありがとうございました。980 TiとeGPUエンクロージャの組み合わせは、実行可能なオプションのようです。唯一のことは、Akitio Node(3)が廃止され、Razor Coreが出荷されないことです。どのeGPUエンクロージャーを実際に購入できますか?Akitio Node 2?
ジョープ

2
まあビゾンボックスはそれのために設計されていますが、それは500ドルのようなものです。いくつか見てみましょう
...-ノアール

1
このリンクは、あまりにもいくつかの良い読書のために作るかもしれない:appleinsider.com/articles/17/01/17/...を
NoahL

「10XX」シリーズは本当にMacで動作しませんか?私は他の人(ここで別の答えを含む)がMacで1080tiを使用したと聞きました
...-ブラザード

この答えの時点で、絶対に。10xxシリーズのMacドライバーは、カードが発売されてから1年が経過するまでリリースされませんでした(正しく覚えていれば2017年後半または2018年初頭)
NoahL


1

macOS 10.13.3を使用している場合は、このリンクを確認してください。eGPUセットアップからTensorFlowコンパイルまですべてをカバーしています。

  • macOS:10.13.3
  • WebDriver: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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.