CUDA 및 늦은 MBP 2016을 사용하는 외부 GPU에 대한 기계 학습?


31

2016 년 말 MacBook Pro에서 2017 년 macOS 용 외부 GPU (eGPU) 옵션이 무엇인지 알고 싶습니다.

나는 연구를했지만 인터넷에서 많은 혼란스러운 정보를 발견했습니다. 일부는 작동 할 수 있지만 Windows (이중 부팅)가 필요하다고 말합니다. 다른 사람들은 CUDA가 최신 그래픽 카드 (GTX 1080)를 지원하지 않기 때문에 구형 그래픽 카드에서만 작동한다고 말합니다. 이상적으로는 NVIDIA의 1080 GTX를 실행하고 싶습니다. 내 유일한 목적은 Keras와 TensorFlow를 함께 사용하는 것입니다. 그러나 나는 그것이 작동하기 위해 중요한 모든 것을 모릅니다. 따라서 제 질문은 MacBook Pro 2016 (15 ") 말에 CUDA 및 eGPU와 함께 TensorFlow를 사용할 수 있습니까? MacOS (MacBook Pro 15"말)의 그래픽 카드를 eGPU (듀얼- 부팅 / Windows / Linux 파티션).

참고 사항 : Macbook 이전 (Razor Core, AKiTiO Node)에서 eGPU를 사용하는 사용자를 보았지만 CUDA 및 Machine Learning (또는 그 문제의 경우 1080 GTX)과 함께 사용하지 마십시오. 사람들은 대신 서버 공간을 빌리거나 Windows (더 나은 그래픽 카드 지원)를 사용하거나 심지어 같은 가격으로 Mac에서 eGPU를 사용할 수있는 새 PC를 구축 할 것을 제안했습니다. (나는 그 옵션을 선호하지 않습니다.)


1080의 CUDA가 가장 확실하게 작동합니다. 나는 오늘 아침 일찍 TensorFlow 백엔드와 함께 Keras를 사용하여 1080에서 네트워크를 훈련하고있었습니다 (우분투에서).
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
  • CUDA 8.0 용 cuDNN v5.1 (2017 년 1 월 20 일) : 등록 및 다운로드 필요
  • 텐서 플로우 GPU 1.0.0
  • 케 라스 2.0.8

순서:

GPU 드라이버 설치

  1. 가 표시 될 때까지 (⌘ 및 R) 키를 눌러 시스템을 종료하고 다시 전원을 켜면 복구 모드가됩니다.
  2. 메뉴 표시 줄에서 유틸리티> 터미널을 클릭하고 'csrutil disable; reboot '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. Mac에서 eGPU를 분리하고 다시 시작하십시오. 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 툴킷 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. 환경 생성 및 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
    

이를 위해 외부 모니터가 필요합니까? 아니면 그렇지 않습니까?
Abhimanyu Aryan

@AbhimanyuAryan, 외부 모니터가 필요하지 않습니다. 이것은 단지 tensorlfow 및 / 또는 keras와 함께 eGPU를 사용하는 것입니다
Julian

이것은 Mac OS 10.13에서도 작동합니까? CUDA 9 만 10.13으로 업데이트했으며 Cuda 8은 10.12로만 업데이트되었습니다. GPU에서 TuriCreate를 실행할 수 있는지 확인하려고합니다.
Niklas

PC와 성능을 비교 했습니까?
Angus Tay

누구나 BlackMagic eGPU로 이것을 시도 했습니까?
Pratik Khadloya

9

iMac (2013 년 말)의 Akitio Node에서 작동하는 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 웹 사이트의 파일 /usr/local/cuda은 나머지 CUDA 라이브러리 및 포함 파일 과 함께 있어야합니다 .
  • CPU 전용 TensorFlow를 설치 제거하고 GPU를 지원하는 TensorFlow를 설치하십시오. 로 설치하면 pip install tensorflow-gpu설치 오류가 없지만 Python에서 TensorFlow가 필요할 때 segfault가 발생했습니다. GitHub 이슈 주석에 설명 된 일부 환경 변수가 설정되어 있어야합니다 (CUDA 설치 프로그램이 제안한 것과 약간 다릅니다) .
  • 또한 소스에서 TensorFlow를 컴파일하려고 시도했지만 이전 단계에서 설명한 것처럼 env 변수를 설정하기 전에 작동하지 않았습니다.

iStat 메뉴에서 훈련 중에 외부 GPU가 실제로 사용되는지 확인할 수 있습니다. 이 TensorFlow 설치는 Jupyter와 함께 작동하지 않았지만 그에 대한 해결 방법이 있기를 바랍니다.

이 설정을 많이 사용하지 않았으므로 성능 향상 (또는 대역폭 제한)에 대해 확신하지 못하지만 NVIDIA가 macOS 용 적절한 드라이버를 출시하기 시작했기 때문에 eGPU + TensorFlow / CUDA가 가능합니다.


경고 : TensorFlow 1.2부터 공식적인 tensorflow-gpu pip 패키지를 제공하지 않습니다. 이것은 우리가 소스에서 빌드해야한다는 것을 의미하며, 내 경험으로는 결코 즉시 작동하지 않습니다. 바라건대 메이저 릴리스를 컴파일하는 방법에 대한 써드 파티 튜토리얼이있을 것이지만, 아직 GPU를 사용하고 싶다면 1.2 나 1.3으로 업그레이드 할 수 없습니다.
Mattias Arro

3
소스에서 tensorfow 1.2를 컴파일하도록 관리되었습니다. 거기에 약간의 튜토리얼을 썼다 : medium.com/@mattias.arro/...은
마티아스 Arro

3

macOS에서의 eGPU 지원은 어려운 주제이지만 귀하의 질문에 답변하기 위해 최선을 다하겠습니다.

그래픽 카드부터 시작합시다! CUDA와 대화를 나누기 위해 Nvidia 카드를 사용합니다. 모든 그래픽 카드는 Windows의 적절한 드라이버와 함께 작동합니다. 그러나 Apple은 공식적으로 몇 가지 Nvidia 그래픽 카드 (주로 오래된 카드) 만 공식적으로 지원합니다. 그러나 Nvidia 그래픽 드라이버는 실제로 거의 모든 Nvidia의 GeForce 및 Quadro 카드에서 작동하지만 한 가지 큰 예외가 있습니다. GTX 10xx 카드가 작동하지 않습니다. 모든 Mac 운영 체제에서. 기간. Nvidia의 드라이버는이 카드를 지원하지 않습니다. 힘을 찾고 있다면 GTX 980Ti 또는 Titan X를 살펴보십시오 (많은 훌륭한 Quadro 카드도 잘 작동합니다).

이제 그 내용을 다뤘으므로 eGPU 인클로저로 넘어 갑시다. eGPU에 대해 언급 했으므로 외부 전원 공급 장치가있는 PCIe 확장 섀시 대신 실제 eGPU 엔클로저 (예 : AKiTiO 노드를 예로 사용)에 대해 예산을 책정했다고 가정하기 때문입니다. 좋은 생각입니다.

이제 eGPU 엔클로저 (AKiTiO 노드)에 그래픽 카드 (GTX 980Ti)가 있으며 작동하도록하려고합니다. 글쎄, 그것은 말보다 쉽습니다. 저는 2016 년 말에 eGPU를 약간 연구했으며, 얻은 정보는 비교적 혼란 스러웠으므로 의견이나 수정 사항이 있으면 알려 주시기 바랍니다. 내가 이해 한 바에 따르면, eGPU의 성능을 활용하려면 외부 모니터를 eGPU에 연결해야합니다. macOS에서 외부 모니터없이 eGPU를 실행할 수 있다고 생각하지 않습니다. 또한 MacGidCard에서 플래시 카드를 구입하지 않는 한 eGPU 연결 모니터에 Apple의 부팅 화면이 표시되지 않지만 eGPU를 사용하여 그래픽을 구동 할 수 있습니다.

이 모든 작업을 성공적으로 수행한다고 가정하면 고성능 CUDA 지원 그래픽 파워 하우스가 있어야합니다.


정보 주셔서 감사합니다. 980 Ti와 eGPU 인클로저의 조합은 실행 가능한 옵션처럼 보입니다. 유일한 것은 Akitio Node (3)가 단종 된 것으로 보이고 Razor Core는 배송되지 않습니다. 실제로 어떤 eGPU 인클로저를 구입할 수 있습니까? Akitio 노드 2?
Joop

2
Well Bizon Box는이를 위해 설계되었지만 500 달러 정도입니다. 좀 볼까 ...
NoahL

1
이 링크는 좋은 읽을 거리가 될 수도 있습니다 : appleinsider.com/articles/17/01/17/…
NoahL

"10XX"시리즈가 Mac에서 실제로 작동하지 않습니까? 맥에서 1080ti를 사용하는 다른 사람들 (여기 다른 답변 포함)을 들었습니다.
Blaszard

이 답변을 기준으로 절대적으로. 10xx 시리즈 Mac 드라이버는 카드가 출시 된 후 1 년이 될 때까지 출시되지 않았습니다 (2017 년 말 또는 2018 년 초, 올바르게 기억한다면)
NoahL


1

macOS 10.13.3을 사용하는 경우이 링크를 확인 하십시오 . eGPU 설정에서 TensorFlow 컴파일에 이르는 모든 것을 다룹니다.

  • macOS : 10.13.3
  • 웹 드라이버 : 387.10.10.10.25.156
  • CUDA 툴킷 : 9.1.128
  • cuDNN : 7
  • NVDAEGPU 지원 : 6
  • X 코드 : 8.2
  • 바젤 : 0.9.0
  • OpenMP : 최신
  • 파이썬 : 3.6
  • 텐서 플로우 : 1.5.0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.