CUDA ve MBP 2016'nın sonunda harici GPU'da Makine Öğrenmesi?


31

2016 yılının sonlarında MacBook Pro ile dış GPU (eGPU) seçeneklerinin 2017'de macOS için neler olduğunu bilmek istiyorum.

Araştırmamı yaptım, ancak internette birçok kafa karıştırıcı bilgi buldum. Bazıları çalışabileceğini söylüyor, ancak Windows (çift önyükleme) gerektiriyor. Diğerleri, CUDA'nın yeni grafik kartlarında (GTX 1080) desteklenmediğinden yalnızca eski ekran kartları için çalışabileceğini söylüyor. İdeal olarak, 1080 GTX NVIDIA'yı çalıştırmak istiyorum. Tek amacım Keras ve TensorFlow kullanmak. Ancak, çalışması için önemli olan her şeyi bilmiyorum. Bu nedenle benim sorum şu, MacBook Pro 2016'nın (15 ") sonunda TensorFlow'u CUDA ve eGPU ile kullanmak mümkün mü? Grafik kartını macOS'ta (MacBook Pro 15") eGPU olarak kullanmak istiyorum (ikili önyükleme / Windows / Linux bölümü).

Not: eGPU'ları daha önce macbook'larda kullanan kullanıcılar gördüm (Razor Core, AKiTiO Node), ancak asla CUDA ve Machine Learning (ya da bu konu için 1080 GTX) ile kombinasyon halinde değil. İnsanlar bunun yerine sunucu alanı kiralamayı, Windows kullanmayı (daha iyi grafik kartı desteği) veya hatta Mac'te bir eGPU kullanmanıza izin veren aynı fiyata yeni bir bilgisayar inşa etmeyi önerdiler. (Bu seçeneği tercih etmiyorum.)


1080 üzerindeki CUDA kesinlikle çalışıyor. Bu sabahın erken saatlerinde 1080'de TensorFlow arka uçlu Keras kullanarak (Ubuntu'da ama yine de) bir ağda eğitim görüyordum.
brendon-ai

Yanıtlar:


19

Sonunda Nvidia Titan XP + MacBook Pro + Akitio Düğüm + Tensorflow + Keras'ı yükleyebilirim

Prosedüre ilişkin bir özlem yazdım, yardımcı olacağını umuyorum

https://gist.github.com/jganzabal/8e59e3b0f59642dd0b5f2e4de03c7687

İşte yaptığım şey:

Bu yapılandırma benim için çalıştı, umarım yardımcı olur

Buna dayanmaktadır: https://becominghuman.ai/deep-learning-gaming-build-with-nvidia-titan-xp- ve-macbook-pro-with-thunderbolt2-5ceee7167f8b

ve: https://stackoverflow.com/questions/44744737/tensorflow-mac-os-gpu-support

Donanım

Yazılım sürümleri

  • macOS Sierra Sürüm 10.12.6
  • GPU Sürücüsü Sürümü: 10.18.5 (378.05.05.25f01)
  • CUDA Sürücü Sürümü: 8.0.61
  • cuDNN v5.1 (20 Oca 2017), CUDA 8.0 için: Kayıt olmalı ve indirmelisiniz
  • tensorflow-gpu 1.0.0
  • Keras 2.0.8

Prosedür:

GPU sürücüsünü yükleyin

  1. Sisteminizi kapatın,  görene kadar (⌘ ve R) tuşlarına basarak yeniden çalıştırın, bu işlem Kurtarma Modunda olmanıza izin verir.
  2. Menü çubuğundan Utilities> Terminal'e tıklayın ve 'csrutil disable; yeniden başlatmak 'bu komutu çalıştırmak için enter tuşuna basın.
  3. Mac'iniz yeniden başlatıldığında, bu komutu Terminal'de çalıştırın:

    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'nuzu Mac'inizden çıkarın ve yeniden başlatın. Bu önemlidir, eğer eGPU'nuzun fişini çekmediyseniz, yeniden başlattıktan sonra siyah ekranla sonuçlanabilir.

  5. Mac'iniz yeniden başlatıldığında, Terminal'i açın ve bu komutu çalıştırın:

    sudo ~/Desktop/automate-eGPU/./automate-eGPU.sh -a
    
    1. EGPU'nuzu TH2 üzerinden mac'unuza takın.
    2. Mac'inizi yeniden başlatın.

CUDA, cuDNN, Tensorflow ve Keras'ı kurun

Şu anda, Keras 2.08 tensorflow 1.0.0'e ihtiyaç duyuyor. Tensorflow-gpu 1.0.0 CUDA 8.0'a ihtiyaç duyuyor ve cuDNN v5.1 benim için işe yarıyor. Diğer kombinasyonları denedim ama işe yaramadı

  1. CUDA 8.0 CUDA Toolkit 8.0 GA2 yükleyip kurun (Şub 2017)
  2. Yükleyin ve talimatları izleyin
  3. Env değişkenlerini ayarla

    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 mevcut değilse, onu oluşturun. Bu, bir terminal penceresi her açışınızda yürütülür)

  1. İndirme ve yükleme cuDNN (cudnn-8.0-osx-x64-v5.1) İndirmeden önce kayıt olmanız gerekir
  2. CuDNN dosyalarını CUDA'ya kopyala

    cd ~/Downloads/cuda
    sudo cp include/* /usr/local/cuda/include/
    sudo cp lib/* /usr/local/cuda/lib/
    
  3. Çevre oluşturma ve tensorflow yükleme

    conda create -n egpu python=3
    source activate egpu
    pip install tensorflow-gpu==1.0.0
    
  4. İşe yaradığını doğrula

Aşağıdaki betiği çalıştırın:

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'ı ortamın içine yerleştirin ve tensorflow'u arka uç olarak ayarlayın:

    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"
    

    Çıktı:

    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
    

Bunun için harici bir monitöre ihtiyacınız var mı? Yoksa yapmaz mısın?
Abhimanyu Aryan

@AbhimanyuAryan, harici monitöre gerek yok. Bu sadece eGPU'yu tensorlfow ve / veya keraslarla birlikte kullanmaktır
Julian

Bu aynı zamanda Mac OS 10.13 ile de çalışır. Sadece 10.13 için güncellenmiş CUDA 9’a sahip olduklarını ve Cuda 8’in sadece 10.12’de olduğunu gördüm. Bunu TuriCreate’i GPU’da çalıştırmak için elde edip edemeyeceğimi görmeye çalışıyorum.
Niklas

Performansı PC ile karşılaştırdınız mı?
Angus Tay,

Bunu BlackMagic eGPU ile deneyen var mı?
Pratik Khadloya

9

İMac'imdeki Akitio Düğümü üzerinde çalışan bir NVIDIA GTX 1080 Ti elde etmeyi başardım (2013 sonu). Thunderbolt 2> 3 adaptör kullanıyorum, ancak daha yeni Mac'lerde daha hızlı TB3'ü doğrudan kullanabilirsiniz.

EGPU.io'da açıklanan çeşitli eGPU kurulumları vardır ve bilgisayarınızı / kasanızı / kartınızı tam olarak tanımlayan birini bulabilirsiniz. Bu eğitimler çoğunlukla bir eGPU ile ekranı hızlandırmak içindir, ancak NN'lerin eğitimi için açıkça tüm adımları uygulamanız gerekmez.

İşte kabaca ne yaptım:

  • CUDA'yı resmi belgelere göre yükleyin .
  • SIP'yi devre dışı bırakın (bir eğitim için Google). EGPU.sh betiği ve daha sonra TensorFlow tarafından da gereklidir.
  • Run automate-eGPU.sh senaryoyu eGPU.io o herkesin itimat görünüyor (sudo ile).
  • CuDNN'i kurun. NVIDIA'nın web sitesindeki dosyalar, /usr/local/cudaCUDA kütüphanelerinizin kalanıyla birlikte olmalıdır ve bunları içerir.
  • Yalnızca CPU TensorFlow'u kaldırın ve GPU destekli bir tane yükleyin. İle kurarken pip install tensorflow-gpu, hiçbir kurulum hataları vardı, ama Python TensorFlow gerektiren zaman segfault var. GitHub sorunu yorumunda açıklanan, ayarlanması gereken (CUDA yükleyicisinin önerdiğinden biraz farklı) bazı ortam değişkenleri olduğu ortaya çıkıyor .
  • Ayrıca enens varslarını önceki adımda tarif ettiğim gibi ayarlamadan önce işe yaramayan kaynaktan TensorFlow'u derlemeye çalıştım.

İStat Menülerinden harici GPU'mun gerçekten eğitim sırasında kullanıldığını doğrulayabilirim. Bu TensorFlow kurulumu Jupyter ile çalışmadı, ama umarım bunun için bir geçici çözüm vardır.

Bu kurulumu çok fazla kullanmadım, ancak performans artışından (ya da bant genişliği sınırlamalarından) emin değilim, ancak NVIDIA macOS için uygun sürücüleri piyasaya sürmeye başladığından eGPU + TensorFlow / CUDA şimdi kesinlikle mümkün.


Bir uyarı kelimesi: TensorFlow 1.2'den itibaren resmi tensorflow-gpu pip paketleri sunmuyorlar. Bu, deneyimlerime göre asla işe yaramayacak kaynaklardan oluşturmamız gerektiği anlamına geliyor. Umarım ana bültenlerin nasıl derleneceğine dair 3. parti öğreticiler olacaktır, ancak şimdilik GPU'mu hala kullanmak istiyorsam, örneğin 1.2 veya 1.3'e yükseltemiyorum.
Mattias Arro 15

3
Kaynaktan tensorfow 1.2'i derlemeyi başardı. Üzerine küçük bir rehber yazdı: medium.com/@mattias.arro/…
Mattias Arro

3

MacOS'ta eGPU desteği zor bir konudur, ancak sorunuzu yanıtlamak için elimden geleni yapacağım.

Grafik kartlarıyla başlayalım! Zaman uğruna ve biz CUDA'yı konuştuğumuz için Nvidia kartlarına sadık kalacağız. Herhangi bir grafik kartı Windows'ta uygun sürücülerle çalışacaktır. Bununla birlikte, Apple, resmi olarak yalnızca çok eski olan birkaç Nvidia grafik kartını desteklemektedir. Bununla birlikte, Nvidia ekran kartı sürücüleri aslında Nvidia'nın GeForce ve Quadro kartlarının hemen hepsinde çalışıyor. GTX 10xx kartları çalışmayacak. Herhangi bir Mac işletim sisteminde. Dönemi. Nvidia'nın sürücüleri bu kartı desteklemiyor. Güç arıyorsanız, GTX 980Ti veya Titan X'e bakmak istersiniz (birçok iyi Quadro kartı da iyi çalışır).

Şimdi bunu hallettik, hadi eGPU muhafazalarına geçelim. Özellikle eGPU'lardan bahsettiğiniz için, gerçek bir eGPU muhafazası için bütçelediğinizi (örneğin, AKiTiO Düğümünü bir örnek olarak kullanalım), harici bir güç kaynağına sahip bir PCIe genişletme kasası yerine kullandığınızı kabul edeceğim, çünkü harika bir fikir.

Şimdi bir eGPU muhafazasında (AKiTiO Düğümü) bir grafik kartımız (GTX 980Ti) var ve çalışmasını sağlamak istiyoruz. Söylemesi yapmaktan daha kolay. 2016'nın sonuna doğru bir miktar eGPU araştırması yaptım ve elde ettiğim bilgiler oldukça kafa karıştırıcıydı, bu yüzden herhangi bir yorum veya düzeltmesi olan varsa, lütfen bana bildirin. Anladığım kadarıyla, eGPU’nun gücünü kullanmak için eGPU’ya harici bir monitör takmanız gerekir. EGPU'yu macOS'ta harici bir monitör olmadan çalıştırabileceğinizi sanmıyorum. Ayrıca Apple'ın önyükleme ekranını eGPU'ya bağlı monitörde görmeyeceksiniz (MacVidCard'lardan flash kart satın almadığınız sürece), ancak grafiklerinizi sürmek için eGPU'yu kullanabilmelisiniz.

Tüm bunları başarılı bir şekilde yaptığınızı varsayarsak, CUDA etkin bir grafik santraline sahip olmanız gerekir.


Bilgi için teşekkürler. 980 Ti'nin bir eGPU muhafazasıyla kombinasyonu uygun bir seçenek gibi görünüyor. Tek şey, Akitio Düğümü (3) kesilmiş görünüyor ve Jilet Çekirdeği gelmiyor. Hangi eGPU kasası gerçekten satın alınabilir? Akitio Düğüm 2?
Joop

2
Pekala Bizon Box bunun için tasarlandı, ancak 500 dolar gibi. Bana biraz bakayım ...
NoahL

1
Bu bağlantı çok iyi bir okuma için de olabilir: appleinsider.com/articles/17/01/17/…
NoahL

"10XX" serisi gerçekten mac üzerinde çalışmıyor mu? Başkalarının da (burada başka bir cevabı da içeren) mac'ta 1080ti kullandığını duydum ...
Blaszard

Bu cevap itibariyle kesinlikle. 10xx serisi Mac sürücüleri, kartların kullanımından tam bir yıla kadar piyasaya sürülmedi (bazen doğru hatırlıyorsam 2017'nin sonlarında veya 2018'in başında)
NoahL


1

MacOS 10.13.3 kullanıyorsanız, bu bağlantıyı kontrol edin . EGPU kurulumundan TensorFlow derlemeye kadar her şeyi kapsar.

  • macOS: 10.13.3
  • Web Sürücüsü: 387.10.10.10.25.156
  • CUDA Araç Takımı: 9.1.128
  • cuDNN: 7
  • NVDAEGPUSupport: 6
  • XCode: 8.2
  • Bazel: 0.9.0
  • OpenMP: en son
  • Python: 3.6
  • TensorFlow: 1.5.0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.