Машинне навчання на зовнішньому графічному процесорі за допомогою CUDA та пізнього MBP 2016?


31

Мені хотілося б дізнатися, що таке зовнішні параметри GPU (eGPU) для macOS в 2017 році з кінцем 2016 MacBook Pro.

Я робив свої дослідження, проте в Інтернеті я знаходжу багато заплутаної інформації. Деякі кажуть, що це може працювати, але для цього потрібна Windows (подвійне завантаження). Інші кажуть, що вона може працювати лише для старих відеокарт, оскільки CUDA не підтримується для новіших відеокарт (GTX 1080). В ідеалі я хотів би запустити GTX 1080 GTX. Моя єдина мета - використовувати Keras і TensorFlow з ним. Однак я не знаю всіх речей, які важливі, щоб змусити його працювати. Моє запитання полягає в тому, чи можна використовувати TensorFlow з CUDA та eGPU на пізньому MacBook Pro 2016 (15 ")? Я хочу використовувати відеокарту в macOS (із пізнім MacBook Pro 15") як eGPU (немає подвійних- завантажувальний / Windows / Linux-розділ).

Побічна примітка: раніше я бачив користувачів, які користуються eGPU на macbook (Razor Core, AKiTiO Node), але ніколи в поєднанні з CUDA та Machine Learning (або 1080 GTX для цього). Люди запропонували замість цього взяти напрокат серверний простір або використовувати Windows (кращу підтримку відеокарти) або навіть побудувати новий ПК за тією ж ціною, що дозволяє використовувати eGPU на Mac. (Я не віддаю перевагу такому варіанту.)


CUDA на 1080, безумовно, працює. Я тренувався в мережі 1080 раніше цього ранку, використовуючи Keras з TensorFlow бекендом (на Ubuntu, але все ж).
brendon-ai

Відповіді:


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 (20 січня 2017 р.), для CUDA 8.0: потрібно зареєструватися та завантажити
  • tensorflow-gpu 1.0.0
  • Керас 2.0.8

Порядок:

Встановіть драйвер GPU

  1. Вимкніть систему, увімкніть її знову, натискаючи клавіші (⌘ і R), поки не з’явиться , це дозволить перейти в режим відновлення.
  2. На панелі меню натисніть Утиліти> Термінал і напишіть 'csrutil disabled; перезавантажте ', натисніть клавішу Enter, щоб виконати цю команду.
  3. Коли комп'ютер перезавантажиться, запустіть цю команду в Терміналі:

    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 та перезапустіть. Це важливо, якщо ви не відключили електромережу, ви можете перезапустити чорний екран.

  5. Коли ваш Mac перезавантажився, відкрийте термінал та виконайте цю команду:

    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
    
    1. Підключіть свій eGPU до свого комп’ютера через TH2.
    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. Встановіть його та дотримуйтесь інструкцій
  3. Встановлення змінних 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
    

(Якщо вашого 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
    

чи потрібен для цього зовнішній монітор? Або ні?
Абхіманья Аріан

@AbhimanyuAryan, немає необхідності у зовнішньому моніторі. Це просто для використання eGPU з tensorlfow та / або керами
Julian

Це також працює з Mac OS 10.13. Я бачу, що у них оновлено лише CUDA 9 за 10.13, а Cuda 8 - лише на 10.12. Я намагаюсь побачити, що я можу змусити це запустити TuriCreate на GPU.
Ніклас

Ви порівнюєте продуктивність з ПК?
Angus Tay

Хтось спробував це з eGPU BlackMagic?
Пратік Хадлоя

9

Мені вдалося отримати NVIDIA GTX 1080 Ti, що працює над вузлом Akitio на моєму iMac (кінець 2013 року). Я використовую адаптер Thunderbolt 2> 3, хоча для нових Macs ви можете використовувати швидший TB3 безпосередньо.

Існують різні налаштування eGPU, описані на eGPU.io, і ви можете знайти такий, який точно описує ваш комп'ютер / корпус / карту. Ці підручники в основному призначені для прискорення відображення за допомогою eGPU, хоча для навчання мереж мереж вам очевидно не потрібно виконувати всі кроки.

Ось приблизно, що я зробив:

  • Встановіть CUDA відповідно до офіційної документації.
  • Вимкнути SIP (Google для підручника). Це потрібно сценарієм eGPU.sh, а пізніше також TensorFlow.
  • Запустіть скрипт automate-eGPU.sh (із судо), на який, схоже, покладаються всі в eGPU.io.
  • Встановіть cuDNN. Файли з веб-сайту NVIDIA повинні підходити /usr/local/cudaдо решти ваших бібліотек CUDA та включати їх.
  • Видаліть TensorFlow лише для процесора та встановіть його з підтримкою GPU. Під час встановлення у pip install tensorflow-gpuмене не було помилок установки, але я отримав segfault, коли вимагав TensorFlow в Python. Виявляється, існують деякі змінні середовища, які потрібно встановити (дещо інакше, ніж пропонує інсталятор CUDA), які були описані в коментарі випуску GitHub .
  • Я також спробував скласти TensorFlow з джерела, який не працював до того, як я встановив env vars, як описано в попередньому кроці.

З меню iStat я можу перевірити, чи справді використовується моя зовнішня GPU під час навчання. Ця установка TensorFlow, однак, не працювала з Jupyter, але, сподіваємось, для цього є спосіб вирішення.

Я не користувався такою настройкою настільки, щоб не бути впевненим у збільшенні продуктивності (або обмеженні пропускної здатності), але eGPU + TensorFlow / CUDA, безумовно, можливий вже зараз, оскільки NVIDIA почала випускати належні драйвери для macOS.


Слово попередження: починаючи з TensorFlow 1.2, вони не надають офіційних пакунків tensorflow-gpu. Це означає, що нам потрібно будувати це з джерел, що, на мій досвід, ніколи не працює. Сподіваємось, будуть підручники щодо сторонніх організацій щодо компіляції основних релізів, але наразі я не можу, наприклад, оновити до 1.2 або 1.3, якщо все-таки хочу використовувати свій графічний процесор.
Маттіас Арро

3
Вдалося зібрати tensorfow 1.2 з джерела. Написав на ньому невеликий підручник: medium.com/@mattias.arro/…
Маттіас Арро

3

Підтримка eGPU на macOS - важка тема, але я зроблю все можливе, щоб відповісти на ваше запитання.

Почнемо з відеокарт! Заради часу, і оскільки ми говоримо про CUDA, ми будемо дотримуватися карт Nvidia. Будь-яка відеокарта буде працювати з належними драйверами в Windows. Однак Apple лише офіційно підтримує декілька відеокарт Nvidia, в основному дуже старих. Однак графічні драйвери Nvidia насправді працюють майже на всіх картах GeForce та Quadro від Nvidia, за одним великим винятком. Карти GTX 10xx НЕ будуть працювати. На будь-якій операційній системі Mac. Період. Водії Nvidia не підтримують цю карту. Якщо ви шукаєте потужність, ви захочете подивитися на GTX 980Ti або Titan X (багато хороших карт Quadro також добре працюватимуть).

Тепер, коли ми це накрили, перейдемо до корпусів eGPU. Я припускаю, оскільки ви згадали конкретно eGPU, що ви запланували бюджет для фактичного корпусу eGPU (давайте використаємо Вузол AKiTiO як приклад), а не шасі розширення PCIe із зовнішнім джерелом живлення, оскільки це не чудова ідея.

Отже, у нас є відеокарта (GTX 980Ti) у корпусі eGPU (AKiTiO Node), і ми хочемо, щоб вона працювала. Ну, це простіше сказати, ніж зробити. Я трохи досліджував eGPU наприкінці 2016 року, і отримана інформація була відносно заплутаною, тому, якщо хтось має коментарі чи виправлення, будь ласка, повідомте мене. Як я розумію, щоб використовувати потужність eGPU, вам потрібно підключити зовнішній монітор до eGPU. Я не вірю, що ви можете запустити eGPU без зовнішнього монітора в macOS. Ви також не побачите завантажувальний екран Apple на моніторі, підключеному до eGPU (якщо ви не купуєте флеш-карту з MacVidCards), але ви повинні мати можливість використовувати eGPU для керування графікою.

Якщо припустити, що ви все це робите успішно, вам слід мати дуже потужну графічну електростанцію з підтримкою CUDA.


Спасибі за інформацію. Поєднання 980 Ti з корпусом eGPU видається можливим варіантом. Єдине, що вузол Акітіо (3) здається припиненим, а ядро ​​Razor не постачається. Який корпус eGPU насправді можна придбати? Акітіо вузол 2?
Joop

2
Ну Bizon Box призначений для цього, але це як 500 доларів. Дозвольте мені
роздивитись

1
Це посилання також може бути корисним для читання: appleinsider.com/articles/17/01/17/…
NoahL

Невже серія "10XX" справді не працює на mac? Я чув, як інші (включаючи іншу відповідь тут) використовували 1080ti на mac ...
Blaszard

Щодо цієї відповіді, абсолютно. Драйвери Mac 10 серії Mac не були випущені до повного року після того, як картки були (десь наприкінці 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
  • NVDAEGPUSПідтримка: 6
  • XCode: 8.2
  • Базель: 0,9,0
  • OpenMP: останні
  • Пітон: 3.6
  • TensorFlow: 1.5.0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.