Machine Learning pada GPU eksternal dengan CUDA dan MBP 2016 yang lebih baru?

31

Saya ingin tahu apa opsi GPU eksternal (eGPU) untuk macOS di 2017 dengan MacBook Pro 2016 akhir.

Saya melakukan riset, tetapi di internet saya menemukan banyak informasi yang membingungkan. Ada yang bilang itu bisa bekerja, tetapi itu membutuhkan Windows (dual-boot). Yang lain mengatakan, itu hanya dapat bekerja untuk kartu grafis yang lebih lama karena CUDA tidak didukung untuk kartu grafis yang lebih baru (GTX 1080). Idealnya, saya ingin menjalankan 1080 GTX dari NVIDIA. Satu-satunya tujuan saya adalah menggunakan Keras dan TensorFlow dengannya. Namun, saya tidak tahu semua hal yang penting untuk membuatnya bekerja. Karena itu pertanyaan saya adalah, mungkinkah menggunakan TensorFlow dengan CUDA dan eGPU di akhir MacBook Pro 2016 (15 ")? Saya ingin menggunakan kartu grafis di macOS (dengan akhir MacBook Pro 15") sebagai eGPU (tanpa dual- boot / partisi Windows / Linux).

Catatan: Saya telah melihat pengguna menggunakan eGPU di macbook sebelumnya (Razor Core, AKiTiO Node), tetapi tidak pernah dikombinasikan dengan CUDA dan Machine Learning (atau 1080 GTX dalam hal ini). Orang menyarankan menyewa ruang server sebagai gantinya, atau menggunakan Windows (dukungan kartu grafis yang lebih baik) atau bahkan membangun PC baru dengan harga yang sama yang memungkinkan Anda untuk menggunakan eGPU pada Mac. (Saya tidak suka opsi itu.)

Joop
sumber
CUDA pada 1080 pasti bekerja. Saya sedang melatih jaringan pada 1080 awal pagi ini menggunakan Keras dengan backend TensorFlow (di Ubuntu, tapi masih).
brendon-ai

Jawaban:

19

Saya akhirnya bisa menginstal Nvidia Titan XP + MacBook Pro + Akitio Node + Tensorflow + Keras

Saya menulis inti dengan prosedur, semoga membantu

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

Inilah yang saya lakukan:

Konfigurasi ini bekerja untuk saya, semoga membantu

Ini didasarkan pada: https://becominghuman.ai/deep-learning-gaming-build-with-nvidia-titan-xp-and-macbook-pro-with-thunderbolt2-5ceee7167f8b

dan di: https://stackoverflow.com/questions/44744737/tensorflow-mac-os-gpu-support

Perangkat keras

Versi perangkat lunak

  • macOS Sierra Versi 10.12.6
  • Versi Driver GPU: 10.18.5 (378.05.05.25f01)
  • Versi Driver CUDA: 8.0.61
  • cuDNN v5.1 (20 Jan 2017), untuk CUDA 8.0: Perlu mendaftar dan mengunduh
  • tensorflow-gpu 1.0.0
  • Keras 2.0.8

Prosedur:

Instal driver GPU

  1. Matikan sistem Anda, hidupkan kembali dengan menekan tombol (⌘ dan R) hingga Anda melihat , ini akan membuat Anda dalam Mode Pemulihan.
  2. Dari Bilah Menu, klik Utilitas> Terminal dan tulis 'csrutil nonaktifkan; reboot 'tekan enter untuk menjalankan perintah ini.
  3. Ketika mac Anda restart, jalankan perintah ini di Terminal:

    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. Cabut eGPU Anda dari Mac Anda, dan mulai ulang. Ini penting jika Anda tidak mencabut eGPU Anda, Anda mungkin berakhir dengan layar hitam setelah memulai ulang.

  5. Ketika Mac Anda dimulai kembali, Buka Terminal dan jalankan perintah ini:

    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
    
    1. Hubungkan eGPU Anda ke mac Anda via TH2.
    2. Mulai ulang Mac Anda.

Instal CUDA, cuDNN, Tensorflow dan Keras

Pada saat ini, Keras 2.08 membutuhkan tensorflow 1.0.0. Tensorflow-gpu 1.0.0 membutuhkan CUDA 8.0 dan cuDNN v5.1 adalah yang bekerja untuk saya. Saya mencoba kombinasi lain tetapi sepertinya tidak berhasil

  1. Unduh dan pasang CUDA 8.0 CUDA Toolkit 8.0 GA2 (Feb 2017)
  2. Instal dan ikuti instruksi
  3. Setel variabel env

    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
    

(Jika bash_profile Anda tidak ada, buatlah. Ini dijalankan setiap kali Anda membuka jendela terminal)

  1. Mengunduh dan menginstal cuDNN (cudnn-8.0-osx-x64-v5.1) Perlu mendaftar sebelum mengunduhnya
  2. Salin file cuDNN ke CUDA

    cd ~/Downloads/cuda
    sudo cp include/* /usr/local/cuda/include/
    sudo cp lib/* /usr/local/cuda/lib/
    
  3. Buat lingkungan dan instal tensorflow

    conda create -n egpu python=3
    source activate egpu
    pip install tensorflow-gpu==1.0.0
    
  4. Verifikasi itu berfungsi

Jalankan skrip berikut:

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. Instal Keras di lingkungan dan atur tensorflow sebagai backend:

    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"
    

    Keluaran:

    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
    
Julian
sumber
apakah Anda memerlukan monitor eksternal untuk ini? Atau tidak?
Abimanyu Aryan
@ AmhimanyuAryan, tidak perlu monitor eksternal. Ini hanya menggunakan eGPU dengan tensorlfow dan / atau keras
Julian
Apakah ini juga berfungsi dengan Mac OS 10.13. Saya melihat mereka hanya memiliki CUDA 9 yang diperbarui untuk 10,13, dan Cuda 8 hanya untuk 10,12. Saya mencoba melihat apakah saya bisa menjalankan TuriCreate di GPU.
Niklas
Sudahkah Anda membandingkan kinerja dengan PC?
Angus Tay
Adakah yang mencoba ini dengan BlackMagic eGPU?
Pratik Khadloya
9

Saya bisa mendapatkan NVIDIA GTX 1080 Ti yang bekerja pada Akitio Node di iMac saya (akhir 2013). Saya menggunakan adaptor Thunderbolt 2> 3, meskipun pada Mac yang lebih baru Anda dapat menggunakan TB3 yang lebih cepat secara langsung.

Ada berbagai pengaturan eGPU yang dijelaskan di eGPU.io, dan Anda mungkin menemukan yang menjelaskan komputer / enklosur / kartu Anda dengan tepat. Tutorial ini sebagian besar untuk mempercepat tampilan dengan eGPU, meskipun untuk melatih NN, Anda jelas tidak perlu mengikuti semua langkah.

Berikut kira-kira apa yang saya lakukan:

  • Instal CUDA sesuai dengan dokumentasi resmi.
  • Nonaktifkan SIP (Google untuk tutorial). Ini diperlukan oleh skrip eGPU.sh dan kemudian juga oleh TensorFlow.
  • Jalankan skrip automate-eGPU.sh (dengan sudo) yang dipercayai semua orang di eGPU.io.
  • Instal cuDNN. File-file dari situs web NVIDIA harusnya masuk /usr/local/cudabersama sisa perpustakaan CUDA Anda dan termasuk.
  • Copot TensorFlow khusus CPU dan instal dengan dukungan GPU. Saat menginstal dengan pip install tensorflow-gpu, saya tidak memiliki kesalahan instalasi, tetapi mendapat segfault ketika membutuhkan TensorFlow di Python. Ternyata ada beberapa variabel lingkungan yang harus disetel (sedikit berbeda dari yang disarankan oleh installer CUDA), yang dijelaskan dalam komentar masalah GitHub .
  • Saya juga mencoba mengkompilasi TensorFlow dari source, yang tidak berfungsi sebelum saya mengatur env vars seperti yang dijelaskan pada langkah sebelumnya.

Dari Menu iStat saya dapat memverifikasi bahwa GPU eksternal saya memang digunakan selama pelatihan. Instalasi TensorFlow ini tidak bekerja dengan Jupyter, tapi mudah-mudahan ada solusi untuk itu.

Saya belum pernah menggunakan set-up ini sehingga saya tidak yakin dengan peningkatan kinerja (atau keterbatasan bandwidth), tetapi eGPU + TensorFlow / CUDA tentu saja mungkin sekarang, karena NVIDIA mulai merilis driver yang tepat untuk macOS.

Mattias Arro
sumber
Peringatan: dari TensorFlow 1.2 dan seterusnya, mereka tidak menyediakan paket pip tensorflow-gpu resmi. Ini berarti kita perlu membangunnya dari sumber, yang menurut pengalaman saya tidak pernah langsung berfungsi. Mudah-mudahan akan ada tutorial pihak ke-3 tentang cara mengkompilasi rilis besar, tetapi untuk saat ini saya tidak dapat misalnya meningkatkan ke 1.2 atau 1.3 jika saya masih ingin menggunakan GPU saya.
Mattias Arro
3
Berhasil mengkompilasi tensorfow 1.2 dari sumber. Menulis sedikit tutorial tentang hal itu: medium.com/@mattias.arro/…
Mattias Arro
3

Dukungan eGPU pada macOS adalah topik yang sulit, tetapi saya akan melakukan yang terbaik untuk menjawab pertanyaan Anda.

Mari kita mulai dengan kartu grafis! Demi waktu, dan karena kita berbicara CUDA, kita akan tetap menggunakan kartu Nvidia. Kartu grafis apa pun akan berfungsi dengan driver yang tepat di Windows. Apple, bagaimanapun, hanya secara resmi mendukung beberapa kartu grafis Nvidia, terutama yang sangat lama. Namun, driver grafis Nvidia benar-benar berfungsi pada hampir semua kartu GeForce dan Quadro Nvidia, dengan satu pengecualian besar. Kartu GTX 10xx TIDAK AKAN BEKERJA. Pada sistem operasi Mac apa pun. Periode. Driver Nvidia tidak mendukung kartu ini. Jika Anda mencari tenaga, Anda ingin melihat GTX 980Ti atau Titan X (banyak kartu Quadro yang bagus juga bisa digunakan dengan baik).

Sekarang kita sudah memiliki yang terlindungi, mari kita beralih ke lampiran eGPU. Saya akan berasumsi, karena Anda menyebutkan secara khusus eGPU, bahwa Anda telah menganggarkan untuk kandang eGPU yang sebenarnya (mari kita gunakan Node AKiTiO sebagai contoh), daripada sasis ekspansi PCIe dengan catu daya eksternal, karena ini bukan ide yang bagus

Jadi sekarang kami memiliki kartu grafis (GTX 980Ti) di kandang eGPU (AKiTiO Node) dan kami ingin membuatnya berfungsi. Yah, itu lebih mudah diucapkan daripada dilakukan. Saya melakukan sedikit riset eGPU menjelang akhir 2016, dan informasi yang saya dapatkan relatif membingungkan, jadi jika ada yang punya komentar atau koreksi, beri tahu saya. Dari apa yang saya mengerti, untuk memanfaatkan kekuatan eGPU, Anda perlu mencolokkan monitor eksternal ke dalam eGPU. Saya tidak percaya Anda dapat menjalankan eGPU tanpa monitor eksternal di macOS. Anda juga tidak akan melihat layar boot Apple pada monitor yang terhubung eGPU (kecuali jika Anda membeli kartu yang di-flash dari MacVidCards), tetapi Anda kemudian dapat menggunakan eGPU untuk mengarahkan grafik Anda.

Dengan asumsi Anda melakukan semua ini dengan sukses, Anda harus memiliki pembangkit tenaga listrik berkemampuan CUDA berkekuatan sangat tinggi.

NuhL
sumber
Terima kasih untuk informasinya. Kombinasi 980 Ti dengan penutup eGPU sepertinya merupakan opsi yang layak. Satu-satunya hal adalah, Akitio Node (3) tampaknya dihentikan dan Razor Core tidak dikirimkan. Enklosur eGPU mana yang benar-benar dapat dibeli? Akitio Node 2?
Joop
2
Yah Bizon Box dirancang untuk itu, tapi itu seperti $ 500. Biarkan saya melihat-lihat ...
NoahL
1
Tautan ini mungkin juga cocok untuk membaca: appleinsider.com/articles/17/01/17/…
NoahL
Apakah seri "10XX" benar-benar tidak berfungsi di mac? Saya telah mendengar yang lain (termasuk jawaban lain di sini) menggunakan 1080ti di mac ...
Blaszard
Pada jawaban ini, tentu saja. Seri 10xx driver Mac tidak dirilis sampai setahun penuh setelah kartu (sekitar akhir 2017 atau awal 2018, jika saya ingat dengan benar)
NoahL
1

Jika Anda menggunakan macOS 10.13.3, periksa tautan ini . Ini mencakup semuanya, mulai dari pengaturan eGPU hingga kompilasi TensorFlow.

  • macOS: 10.13.3
  • WebDriver: 387.10.10.10.25.156
  • CUDA Toolkit: 9.1.128
  • cuDNN: 7
  • Dukungan NVDAEGPUS: 6
  • XCode: 8.2
  • Bazel: 0.9.0
  • OpenMP: terbaru
  • Python: 3.6
  • TensorFlow: 1.5.0
GeekCui
sumber