CUDA और देर से MBP 2016 के साथ बाहरी GPU पर मशीन सीखना?


31

मैं जानना चाहूंगा कि 2017 के अंत में मैकबुक प्रो के साथ 2017 में बाहरी जीपीयू (ईजीपीयू) विकल्प क्या हैं।

मैंने अपना शोध किया, हालाँकि इंटरनेट पर मुझे बहुत सारी भ्रमित करने वाली जानकारी मिली। कुछ लोग कहते हैं कि यह काम कर सकता है, लेकिन इसके लिए विंडोज (डुअल-बूट) की आवश्यकता होती है। दूसरों का कहना है, यह केवल पुराने ग्राफिक्स कार्ड के लिए काम कर सकता है क्योंकि CUDA नए ग्राफिक्स कार्ड (GTX 1080) के लिए समर्थित नहीं है। आदर्श रूप से, मैं NVIDIA के 1080 GTX को चलाना चाहूंगा। मेरा एकमात्र उद्देश्य इसके साथ केरस और टेन्सरफ्लो का उपयोग करना है। हालांकि, मुझे उन सभी चीजों की जानकारी नहीं है जो इसे काम करने के लिए महत्वपूर्ण हैं। इसलिए मेरा सवाल है, क्या मैकबुक प्रो 2016 (15 ") पर CUDA और eGPU के साथ TensorFlow का उपयोग करना संभव है? मैं macOS में ग्राफिक्स कार्ड का उपयोग करना चाहता हूं (देर से MacBook Pro 15") एक eGPU के रूप में (कोई दोहरे नहीं) बूट / विंडोज / लिनक्स विभाजन)।

साइड नोट: मैंने उपयोगकर्ताओं को मैकबुक के पहले (रेजर कोर, AKiTiO नोड) पर eGPU का उपयोग करते देखा है, लेकिन CUDA और मशीन लर्निंग (या उस मामले के लिए 1080 GTX) के संयोजन में कभी नहीं। लोगों ने सुझाव दिया कि इसके बजाय सर्वर स्पेस को किराए पर लिया जाए, या विंडोज (बेहतर ग्राफिक्स कार्ड सपोर्ट) का उपयोग किया जाए या यहां तक ​​कि उसी कीमत के लिए एक नया पीसी भी बनाया जाए जो आपको मैक पर ईजीपीयू का उपयोग करने की अनुमति देता है। (मैं उस विकल्प को पसंद नहीं करता हूं।)


1080 पर CUDA सबसे निश्चित रूप से काम करता है। मैं आज सुबह 1080 पर एक नेटवर्क का प्रशिक्षण ले रहा था जिसमें केरस को टेन्सरफ्लो बैकएंड (उबंटू पर, लेकिन अभी भी) के साथ उपयोग कर रहा था।
ब्रेंडन-ऐ

जवाबों:


19

मैं आखिरकार एनवीडिया टाइटन एक्सपी + मैकबुक प्रो + एकिटियो नोड + टेंसरफ्लो + केर स्थापित कर सकता हूं

मैंने प्रक्रिया के साथ एक जिस्ट लिखा, आशा है कि यह मदद करता है

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-pu-support

हार्डवेयर

सॉफ्टवेयर संस्करण

  • macOS सिएरा संस्करण 10.12.6
  • GPU ड्राइवर संस्करण: 10.18.5 (378.05.05.25f01)
  • CUDA चालक संस्करण: 8.0.61
  • CUDA 8.0 के लिए cuDNN v5.1 (जनवरी 20, 2017), पंजीकरण और डाउनलोड करने की आवश्यकता है
  • टेंसरफ्लो- gpu 1.0.0
  • करस 2.0.8

प्रक्रिया:

GPU ड्राइवर स्थापित करें

  1. अपने सिस्टम को शटडाउन करें, इसे फिर से दबाने (, और R) कीज़ के साथ पॉवर दें जब तक आप  नहीं देखते हैं, यह आपको रिकवरी मोड में जाने देगा।
  2. मेनू बार से यूटिलिटीज> टर्मिनल पर क्लिक करें और 'csrutil अक्षम' लिखें; रिबूट 'प्रेस इस कमांड को निष्पादित करने के लिए दर्ज करें।
  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 को अनप्लग करें, और पुनरारंभ करें। यह महत्वपूर्ण है यदि आपने अपने ईजीपीयू को अनप्लग नहीं किया है जिसे आप पुनरारंभ करने के बाद काली स्क्रीन के साथ समाप्त कर सकते हैं।

  5. जब आपका मैक फिर से चालू होता है, तो टर्मिनल खोलें और इस कमांड को निष्पादित करें:

    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
    
    1. TH2 के माध्यम से अपने मैक पर अपने eGPU को प्लग करें।
    2. अपने मैक को पुनरारंभ करें।

CUDA, cuDNN, Tensorflow और Keras स्थापित करें

इस समय, केरस 2.08 को टेंसरफ्लो 1.0.0 की आवश्यकता है। Tensorflow-gpu 1.0.0 को CUDA 8.0 और cuDNN v5.1 की जरूरत है जो मेरे लिए काम करता है। मैं अन्य संयोजनों की कोशिश की, लेकिन काम करने के लिए प्रतीत नहीं होता है

  1. CUDA 8.0 CUDA टूलकिट 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. CUDA फाइल को 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. एनवायरनमेंट में कैरस स्थापित करें और बैकेंड के रूप में टेंसरफ्लो सेट करें:

    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
    

क्या आपको इसके लिए बाहरी मॉनिटर की आवश्यकता है? या तुम नहीं?
अभिमन्यु आर्यन

@ अभिमन्यु आर्यन, बाहरी निगरानी की कोई आवश्यकता नहीं है। यह सिर्फ दसवें और / या केरस के साथ eGPU का उपयोग करने के लिए है
Julian

क्या यह मैक ओएस 10.13 के साथ भी काम करता है। मैं देखता हूं कि उनके पास केवल 10.13 के लिए CUDA 9 अपडेट है, और Cuda 8 केवल 10.12 के लिए है। मैं wether देखने की कोशिश कर रहा हूँ मैं GPU पर TuriCreate को चलाने के लिए इसे प्राप्त कर सकता हूं।
निकल्स

क्या आपने पीसी के खिलाफ प्रदर्शन की तुलना की है?
एंगस टाय

किसी ने भी BlackMagic eGPU के साथ यह कोशिश की?
प्रतिक खडलोय

9

मैं अपने iMac (2013 के अंत) पर अकीतो नोड पर काम करने वाला एक NVIDIA GTX 1080 तिवारी प्राप्त करने में सक्षम था। मैं थंडरबोल्ट 2> 3 अडैप्टर का उपयोग कर रहा हूं, हालांकि नए मैक पर आप सीधे तेज टीबी 3 का उपयोग कर सकते हैं।

EGPU.io पर वर्णित विभिन्न ईजीपीयू सेट-अप हैं , और आपको एक ऐसा मिल सकता है जो आपके कंप्यूटर / संलग्नक / कार्ड का सटीक वर्णन करता है। ये ट्यूटोरियल ज्यादातर एक ईजीपीयू के साथ डिस्प्ले को तेज करने के लिए हैं, हालांकि एनएन के प्रशिक्षण के लिए आपको स्पष्ट रूप से सभी चरणों का पालन करने की आवश्यकता नहीं है।

यहाँ मोटे तौर पर मैंने क्या किया है:

  • आधिकारिक प्रलेखन के अनुसार CUDA स्थापित करें
  • SIP अक्षम करें (एक ट्यूटोरियल के लिए Google)। यह eGPU.sh स्क्रिप्ट और बाद में TensorFlow द्वारा भी आवश्यक है।
  • स्वचालित -eGPU.sh स्क्रिप्ट (sudo के साथ) चलाएं जिसे eGPU.io पर हर कोई भरोसा करता है।
  • CuDNN स्थापित करें। NVIDIA की वेबसाइट से फ़ाइलें /usr/local/cudaआपके CUDA पुस्तकालयों के बाकी हिस्सों के साथ जानी चाहिए और इसमें शामिल हैं।
  • CPU-केवल TensorFlow की स्थापना रद्द करें और GPU समर्थन के साथ एक स्थापित करें। जब स्थापना के साथ pip install tensorflow-gpu, मेरे पास कोई संस्थापन त्रुटि नहीं थी, लेकिन पायथन में टेन्सरफ्लो की आवश्यकता होने पर एक segfault मिला। पता चलता है कि कुछ पर्यावरण चर हैं जिन्हें सेट किया जाना है (CUDA इंस्टॉलर से थोड़ा अलग है), जिन्हें एक GitHub मुद्दे की टिप्पणी में वर्णित किया गया था ।
  • मैंने स्रोत से TensorFlow को संकलित करने की भी कोशिश की, जो पिछले चरण में वर्णित के रूप में env var सेट करने से पहले काम नहीं करता था।

IStat मेनू से मैं यह सत्यापित कर सकता हूं कि प्रशिक्षण के दौरान मेरा बाहरी GPU वास्तव में उपयोग किया गया है। यह TensorFlow इंस्टॉलेशन जुपिटर के साथ काम नहीं करता था, लेकिन उम्मीद है कि इसके लिए एक वर्कअराउंड है।

मैंने इस सेट-अप का उपयोग नहीं किया है इसलिए प्रदर्शन में वृद्धि (या बैंडविड्थ सीमाओं) के बारे में निश्चित नहीं है, लेकिन eGPU + TensorFlow / CUDA निश्चित रूप से अब संभव है, क्योंकि NVIDIA ने macOS के लिए उचित ड्राइवरों को जारी करना शुरू कर दिया था।


चेतावनी का एक शब्द: TensorFlow 1.2 के बाद से, वे आधिकारिक टेंसरफ़्लो-जीपीयू पाइप पैकेज प्रदान नहीं कर रहे हैं। इसका मतलब है कि हमें इसे स्रोतों से बनाने की आवश्यकता है, जो मेरे अनुभव में कभी भी सही काम नहीं करता है। उम्मीद है कि प्रमुख रिलीज को संकलित करने के बारे में 3 पार्टी ट्यूटोरियल होंगे, लेकिन अब मैं उदाहरण के लिए 1.2 या 1.3 में अपग्रेड नहीं कर सकता हूं अगर मैं अभी भी अपने जीपीयू का उपयोग करना चाहता हूं।
अरो

3
स्रोत से टेनसॉर्फो 1.2 को संकलित करने का प्रबंधन। इस पर थोड़ा ट्यूटोरियल लिखें
अरो

3

macOS पर eGPU समर्थन एक कठिन विषय है, लेकिन मैं आपके प्रश्न का उत्तर देने की पूरी कोशिश करूंगा।

ग्राफिक्स कार्ड के साथ शुरू करते हैं! समय के लिए, और क्योंकि हम CUDA की बात कर रहे हैं, हम Nvidia कार्ड से चिपके रहेंगे। कोई भी ग्राफिक्स कार्ड विंडोज पर उचित ड्राइवरों के साथ काम करेगा। हालाँकि, Apple, आधिकारिक तौर पर कुछ Nvidia ग्राफिक्स कार्ड का समर्थन करता है, मुख्य रूप से बहुत पुराने। हालाँकि, एनवीडिया ग्राफिक्स ड्राइवर वास्तव में लगभग सभी एनवीडिया के GeForce और क्वाड्रो कार्ड पर काम करते हैं, जिसमें एक बड़ा अपवाद है। GTX 10xx कार्ड काम नहीं करेंगे। किसी भी मैक ऑपरेटिंग सिस्टम पर। अवधि। एनवीडिया के ड्राइवर इस कार्ड का समर्थन नहीं करते हैं। यदि आप बिजली की तलाश कर रहे हैं, तो आप GTX 980Ti या Titan X (कई अच्छे क्वाड्रो कार्ड भी अच्छे काम करेंगे) को देखना चाहते हैं।

अब जबकि हमें वह कवर मिल गया है, आइये eGPU के बाड़ों पर चलते हैं। मैं मानने जा रहा हूं, क्योंकि आपने विशेष रूप से ईजीपीयू का उल्लेख किया है, कि आपने एक वास्तविक ईजीपीयू परिक्षेत्र के लिए बजट दिया है (एक उदाहरण के रूप में AKiTiO नोड का उपयोग करें), एक बाहरी विस्तार आपूर्ति के साथ PCIe विस्तार चेसिस के बजाय, क्योंकि यह नहीं है एक महान विचार।

इसलिए अब हमारे पास एक eGPU परिक्षेत्र (AKiTiO Node) में ग्राफिक्स कार्ड (GTX 980Ti) है और हम इसे काम पर लाना चाहते हैं। ठीक है, यह कहा से आसान है। मैंने 2016 के अंत में ईजीपीयू पर शोध किया, और मुझे जो जानकारी मिली वह अपेक्षाकृत भ्रमित करने वाली थी, इसलिए यदि किसी के पास कोई टिप्पणी या सुधार है, तो कृपया मुझे बताएं। जो मैं समझता हूं, ईजीपीयू की शक्ति का उपयोग करने के लिए, आपको ईजीपीयू में एक बाहरी मॉनिटर प्लग करने की आवश्यकता है। मुझे विश्वास नहीं है कि आप macOS में बाहरी मॉनिटर के बिना eGPU चला सकते हैं। आपको ईजीपीयू-कनेक्टेड मॉनीटर पर ऐप्पल की बूट स्क्रीन भी नहीं दिखाई देगी (जब तक कि आप मैकविडकार्ड से फ्लैश कार्ड नहीं खरीदते हैं), लेकिन फिर आपको अपने ग्राफिक्स को चलाने के लिए ईजीपीयू का उपयोग करने में सक्षम होना चाहिए।

यह मानते हुए कि आप यह सब सफलतापूर्वक करते हैं, आपके पास एक बहुत ही उच्च शक्ति वाला CUDA- सक्षम ग्राफिक्स बिजलीघर होना चाहिए।


जानकारी के लिए धन्यवाद। ईजीपीयू परिक्षेत्र के साथ 980 टीआई का संयोजन एक व्यवहार्य विकल्प की तरह लगता है। केवल एक चीज है, एकिटियो नोड (3) बंद है और रेजर कोर जहाज नहीं करता है। कौन सा ईजीपीयू बाड़े वास्तव में खरीदा जा सकता है? एकिटियो नोड 2?
जोप

2
वैसे Bizon Box इसके लिए डिज़ाइन किया गया है, लेकिन यह $ 500 जैसा है। मुझे कुछ देखने दो ...
NoahL

1
इस कड़ी में भी पढ़ने के लिए कुछ अच्छा कर सकता है: appleinsider.com/articles/17/01/17/...
NoahL

क्या "10XX" श्रृंखला वास्तव में मैक पर काम नहीं कर रही है? मैंने दूसरों को (यहाँ एक और उत्तर सहित) सुना है, 1080 का इस्तेमाल किया मैक पर ...
Blaszard

इस जवाब के रूप में, बिल्कुल। 10xx सीरीज़ मैक ड्राइवरों को कार्ड जारी होने के एक पूरे साल बाद तक जारी नहीं किया गया था (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
  • NVDAEGPUSupport: 6
  • XCode: 8.2
  • बाजेल: 0.9.0
  • ओपनएमपी: नवीनतम
  • अजगर: 3.6
  • TensorFlow: 1.5.0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.