การเรียนรู้ของเครื่องบน GPU ภายนอกด้วย CUDA และ MBP ปลายปี 2016 หรือไม่


31

ฉันต้องการทราบว่าตัวเลือก GPU ภายนอก (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 และการเรียนรู้ของเครื่อง (หรือ 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
  • Keras 2.0.8

ขั้นตอน:

ติดตั้งไดรเวอร์ GPU

  1. ปิดระบบของคุณเปิดเครื่องอีกครั้งด้วยการกดปุ่ม (⌘และ R) จนกว่าคุณจะเห็นสิ่งนี้จะทำให้คุณอยู่ในโหมดการกู้คืน
  2. จากแถบเมนูให้คลิกยูทิลิตี้> เทอร์มินัลแล้วเขียน 'csrutil ปิดการใช้งาน รีบูต 'กด Enter เพื่อรันคำสั่งนี้
  3. เมื่อ mac ของคุณรีสตาร์ทให้รันคำสั่งนี้ใน 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. ถอด eGPU ของคุณออกจาก Mac และเริ่มต้นใหม่ นี่เป็นสิ่งสำคัญหากคุณไม่ได้ถอดปลั๊ก eGPU ของคุณคุณอาจปรากฏหน้าจอเป็นสีดำหลังจากรีสตาร์ท

  5. เมื่อ Mac ของคุณรีสตาร์ทให้เปิด Terminal ขึ้นมาและดำเนินการตามคำสั่งนี้:

    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
    
    1. เสียบ eGPU ของคุณเข้ากับ mac ผ่าน 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
    

คุณต้องการจอภาพภายนอกสำหรับสิ่งนี้หรือไม่? หรือไม่
Abhimanyu Aryan

@AbhimanyuAryan ไม่จำเป็นต้องใช้จอภาพภายนอก นี่เป็นเพียงการใช้ eGPU กับ tensorlfow และ / หรือ keras
Julian

สามารถใช้กับ Mac OS 10.13 ได้หรือไม่ ฉันเห็นว่าพวกเขาเพิ่งอัปเดต CUDA 9 สำหรับ 10.13 เท่านั้นและ Cuda 8 นั้นเป็นเวลา 10.12 เท่านั้น ฉันพยายามเห็นว่าฉันสามารถใช้ TuriCreate บน GPU ได้ไหม
Niklas

คุณเปรียบเทียบประสิทธิภาพกับพีซีหรือไม่
แองกัส Tay

ใครเคยลองใช้ BlackMagic eGPU บ้าง
Pratik Khadloya

9

ฉันสามารถทำให้ NVIDIA GTX 1080 Ti ทำงานบน Akitio Node บน 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 ที่ใช้ CPU เท่านั้นและติดตั้งด้วยการรองรับ GPU เมื่อทำการติดตั้งpip install tensorflow-gpuฉันไม่มีข้อผิดพลาดในการติดตั้ง แต่ได้รับ segfault เมื่อต้องการ TensorFlow ใน Python ปรากฎมีบางตัวแปรสภาพแวดล้อมที่จะต้องมีการตั้งค่า (บิตที่แตกต่างกว่าการติดตั้ง CUDA แสดงให้เห็น) ซึ่งได้อธิบายไว้ในปัญหาความคิดเห็น GitHub
  • ฉันยังพยายามรวบรวม TensorFlow จากแหล่งซึ่งไม่ทำงานก่อนที่ฉันจะตั้งค่า env vars ตามที่อธิบายไว้ในขั้นตอนก่อนหน้า

จาก iStat Menus ฉันสามารถตรวจสอบได้ว่ามีการใช้ GPU ภายนอกของฉันในระหว่างการฝึกอบรม การติดตั้ง TensorFlow นี้ไม่ได้ทำงานกับ Jupyter แต่หวังว่าจะมีวิธีแก้ปัญหาสำหรับสิ่งนั้น

ฉันไม่ได้ใช้การตั้งค่านี้มากนักดังนั้นจึงไม่แน่ใจเกี่ยวกับการเพิ่มประสิทธิภาพ (หรือข้อ จำกัด แบนด์วิดท์) แต่ eGPU + TensorFlow / CUDA เป็นไปได้อย่างแน่นอนตั้งแต่ NVIDIA เริ่มปล่อยไดรเวอร์ที่เหมาะสมสำหรับ macOS


คำเตือน: จาก TensorFlow 1.2 เป็นต้นไปพวกเขาไม่ได้ให้บริการแพ็คเกจ pip pip-gpu อย่างเป็นทางการ ซึ่งหมายความว่าเราต้องสร้างจากแหล่งซึ่งในประสบการณ์ของฉันไม่เคยทำงานได้ทันที หวังว่าจะมีบทเรียนจากบุคคลที่สามเกี่ยวกับวิธีการรวบรวมรุ่นใหญ่ ๆ แต่ตอนนี้ฉันไม่สามารถอัพเกรดเป็น 1.2 หรือ 1.3 ได้ถ้าฉันยังต้องการใช้ GPU ของฉันอยู่
Mattias Arro

3
จัดการเพื่อรวบรวม tenorfow 1.2 จากแหล่งที่มา เขียนแบบฝึกหัดเล็ก ๆ น้อย ๆ เกี่ยวกับมัน: medium.com/@mattias.arro/ ......
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 Node เป็นตัวอย่าง) แทนที่จะเป็น PCIe expansion Chassis พร้อมแหล่งจ่ายไฟภายนอกเพราะนี่ไม่ใช่ ความคิดที่ดี

ดังนั้นตอนนี้เรามีการ์ดกราฟิก (GTX 980Ti) ใน eGPU (AKiTiO Node) และเราต้องการให้มันทำงาน พูดง่ายกว่าทำ ฉันทำการค้นคว้า eGPU เล็กน้อยในช่วงปลายปี 2559 และข้อมูลที่ฉันได้รับค่อนข้างสับสนดังนั้นหากใครมีความคิดเห็นหรือการแก้ไขใด ๆ โปรดแจ้งให้เราทราบ จากสิ่งที่ฉันเข้าใจเพื่อใช้ประโยชน์จาก eGPU คุณต้องเสียบจอภาพภายนอกเข้ากับ eGPU ฉันไม่เชื่อว่าคุณสามารถรัน eGPU ได้โดยไม่ต้องมีจอภาพภายนอกใน macOS คุณจะไม่เห็นหน้าจอบูตของ Apple บนจอภาพที่เชื่อมต่อกับ eGPU (ยกเว้นกรณีที่คุณซื้อการ์ดแฟลชจาก MacVidCards) แต่คุณควรจะสามารถใช้ eGPU เพื่อขับเคลื่อนกราฟิกของคุณได้

สมมติว่าคุณทำทั้งหมดนี้สำเร็จคุณควรจะมีโรงไฟฟ้ากราฟิกที่รองรับ CUDA ที่ใช้พลังงานสูงมาก


ขอขอบคุณสำหรับข้อมูล. การรวมกันของ 980 Ti กับตู้ eGPU ดูเหมือนเป็นตัวเลือกที่ทำงานได้ มีเพียงสิ่งเดียวที่ดูเหมือนว่า Akitio Node (3) จะถูกยกเลิกและ Razor Core ไม่ได้ส่งมอบ eGPU ใดที่สามารถซื้อได้จริง Akitio Node 2
Joop

2
กล่อง Bizon ได้รับการออกแบบมาสำหรับมัน แต่มันเหมือน $ 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
  • NVDAEGP สนับสนุน: 6
  • XCode: 8.2
  • Bazel: 0.9.0
  • OpenMP: ล่าสุด
  • Python: 3.6
  • TensorFlow: 1.5.0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.