Машинное обучение на внешнем GPU с CUDA и поздним MBP 2016?

31

Я хотел бы знать, какие варианты внешнего графического процессора (eGPU) для MacOS предлагаются в 2017 году с MacBook Pro конца 2016 года.

Я сделал свое исследование, однако в Интернете я нахожу много запутанной информации. Некоторые говорят, что это может работать, но для этого требуется Windows (двойная загрузка). Другие говорят, что он может работать только для старых видеокарт, поскольку CUDA не поддерживается для более новых видеокарт (GTX 1080). В идеале я хотел бы запустить 1080 GTX от NVIDIA. Моя единственная цель - использовать с ним 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. (Я не предпочитаю этот вариант.)

Joop
источник
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
  • Версия драйвера графического процессора: 10.18.5 (378.05.05.25f01)
  • Версия драйвера CUDA: 8.0.61
  • cuDNN v5.1 (20 января 2017 г.), для CUDA 8.0: необходимо зарегистрироваться и скачать
  • ТензорФлоу-GPU 1.0.0
  • Керас 2.0.8

Процедура:

Установить драйвер графического процессора

  1. Выключите свою систему, включите ее снова, нажимая клавиши (⌘ и R), пока не появится значок , это позволит вам перейти в режим восстановления.
  2. В строке меню нажмите «Утилиты»> «Терминал» и напишите «csrutil disable»; перезагрузите 'нажмите Enter, чтобы выполнить эту команду.
  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. Подключите ваш eGPU к вашему Mac через TH2.
    2. Перезагрузите ваш Mac.

Установите CUDA, cuDNN, Tensorflow и Keras

На данный момент Keras 2.08 нужен тензор потока 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. Создать среду и установить тензор потока

    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
    
юлианский
источник
Вам нужен внешний монитор для этого? Или нет?
Абхиманью Ариан
@AbhimanyuAryan, внешний монитор не нужен. Это просто для того, чтобы использовать eGPU с тензорным потоком и / или керасом
Джулиан,
Работает ли это также с Mac OS 10.13. Я вижу, что они обновили CUDA 9 только для 10.13, а Cuda 8 - только для 10.12. Я пытаюсь увидеть, смогу ли я заставить это запустить TuriCreate на GPU.
Никлас
Вы сравниваете производительность с ПК?
Ангус Тэй
Кто-нибудь пробовал это с BlackMagic eGPU?
Пратик Хадлоя
9

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

Существуют различные настройки eGPU, описанные на eGPU.io, и вы можете найти такую, которая точно описывает ваш компьютер / корпус / карту. Эти учебные пособия в основном предназначены для ускорения отображения с помощью eGPU, хотя для обучения NN не обязательно выполнять все шаги.

Вот примерно то, что я сделал:

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

Из меню iStat я могу убедиться, что мой внешний графический процессор действительно используется во время обучения. Однако эта установка TensorFlow не работала с Jupyter, но, надеюсь, для этого есть обходной путь.

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

Маттиас Арро
источник
Предупреждение: начиная с TensorFlow 1.2 и далее они не предоставляют официальные пакеты pip tenorflow-gpu. Это означает, что мы должны построить его из источников, которые по моему опыту никогда не работают сразу. Надеюсь, будут сторонние руководства по компиляции основных выпусков, но сейчас я не могу, например, перейти на 1.2 или 1.3, если я все еще хочу использовать свой графический процессор.
Маттиас Арро
3
Удалось скомпилировать tenorfow 1.2 из исходного кода. Написал небольшое руководство по этому вопросу: medium.com/@mattias.arro/…
Маттиас Арро
3

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

Начнем с видеокарт! Ради времени, и поскольку мы говорим на CUDA, мы будем придерживаться карт Nvidia. Любая видеокарта будет работать с соответствующими драйверами в Windows. Apple, однако, официально поддерживает только несколько видеокарт Nvidia, в основном очень старых. Тем не менее, графические драйверы Nvidia на самом деле работают практически на всех картах Nvidia GeForce и Quadro, за одним большим исключением. Карты GTX 10xx НЕ БУДУТ РАБОТАТЬ. На любой операционной системе Mac. Период. Драйверы Nvidia не поддерживают эту карту. Если вам нужна мощность, вам стоит взглянуть на GTX 980Ti или Titan X (многие хорошие карты Quadro также подойдут).

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

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

Предполагая, что вы делаете все это успешно, у вас должен быть очень мощный графический процессор с поддержкой CUDA.

NoahL
источник
Спасибо за информацию. Комбинация 980 Ti с корпусом eGPU кажется приемлемым вариантом. Единственное, Akitio Node (3), кажется, больше не выпускается, а Razor Core не поставляется. Какой корпус eGPU действительно можно купить? Akitio Node 2?
Joop
2
Ну, Bizon Box предназначен для этого, но он стоит 500 долларов. Позвольте мне немного посмотреть ...
NoahL
1
Эта ссылка также может быть полезной для чтения: appleinsider.com/articles/17/01/17/…
NoahL
Действительно ли серия 10XX не работает на Mac? Я слышал, что другие (включая еще один ответ здесь) использовали 1080ti на Mac ...
Blaszard
По состоянию на этот ответ, абсолютно. Драйверы Mac серии 10xx не выпускались в течение целого года после выпуска карт (где-то в конце 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: последние
  • Python: 3.6
  • TensorFlow: 1.5.0
GeekCui
источник