2017-11-07 166 views
5

üzerinde TF1.4 ile karışık hassas etkin değil Yeni Volta mimarisi ve faydası ile 3dconv/deconv katmanları kullanan nöral ağımı (bir jeneratör olarak hizmet veren bir Autoencoder + bir ayrımcı olarak bir CNN olarak hizmet eden) test etmekle ilgilendi. Karışık Hassasiyet eğitiminden. Tensorflow 1.4'ün CUDA 9 ve CudNN 7.0 ile en yeni kaynak kodunu derledim ve conv/deconv katmanlarım tarafından kullanılan tüm eğitilebilir değişkenleri tf.float16'ya döktüm. Ayrıca, tüm giriş ve çıkış tensörleri, 8'den fazla olan boyutlara sahiptir. Ne yazık ki, bu yapılandırma ile herhangi bir önemli hız artışı göremiyorum, tf.float32 kullanırken eğitim süresi kabaca benzerdir. Benim anlayışım, Volta mimarisi ve cuDNN 7.0 ile, Karışık Hassasiyetin TF tarafından otomatik olarak algılanması ve dolayısıyla Tensor Core matematiğinin kullanılmasına olanak tanımasıdır. Yanlış mıyım yoksa etkinleştirmek için yapmam gereken bir şey var mı? Ayrıca TF1.5 nighlty build denedim ve bu benim özel 1.4 daha yavaş olduğu gibi görünüyor.Teste V100

Tensorflow'a dahil olan herhangi bir devrenin buna cevap verebilmesi için minnettar olurum.

DÜZENLEME: NVIDIA teknik desteği ile konuştuktan sonra, float16'yı desteklerken TF, basit 2D konv Ops için karışık-hassas hızlandırmayı bütünleştiriyor, ancak şimdiki gibi 3D konv Ops için değil.

+1

@Engineero AWS sadece V100 – yjmade

+0

ben de V100 var olan P3 örneğini bırakın ve ayrıca sinirli hissediyorum: Henüz bu değişiklikleri test edilmemiş olmasına rağmen

tensorflow github Bu PR konuyla alakalı görünen tensorflow tarafından destek eksikliği. Evrişim grupları için destek eksikliği de rahatsız edici: https://github.com/tensorflow/tensorflow/issues/3332. Bu yazı bana yakında bir şeyler yayınlanacağını ümit ediyor: https://github.com/tensorflow/tensorflow/issues/12474#issuecomment-338309705. Sabırsız olursam Caffe2'yi deneyeceğim. Uzun bir süre için en yeni cudnn özelliklerini destekledi. –

+1

Burada NVIDIA tarafından önerilen adımları denediniz mi: http://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html#tensorflow Tf 1.4 şu anda kullanılabilir, sadece kodu değiştirmeliyiz Daha hızlı eğitim desteği. Ayrıca bloga bakın: https://devblogs.nvidia.com/parallelforall/mixed-precision-training-deep-neural-networks/ – melgor89

cevap

3

NVIDIA documentation Tabanlı FP16 (TensorCore) ile karşılaştırmalı çalışıyorum. Bunun için tensorflow tarafından iletilen alexnet_benchmark10'u modifiye ettim: Genel olarak, AlexNet sadece% 35 daha hızlıdır, çok fazla değil. ~ 2x daha hızlı almayı umuyordum. Ayrıca, belki Resnet daha büyük bir fark yaratır. Güzel olan, batch_size = 5120 (fp32 yapamaz), bir FB geçişi 0.653 alması için modele sığabilmem, bu yüzden ImageNet'in 90 epoch ile yaklaşık 4 saat almasıdır.

batch_size=512 alexnet_fp32: Forward-backward across 100 steps, 0.099 +/- 0.000 sec/batch alexnet_fp16: Forward-backward across 100 steps, 0.064 +/- 0.000 sec/batch

Düzenleme:

I (BN fp16 çalışmayan nedense ama BatchNorm olmadan) FP16 üzerinde ResNet modellerini çalıştırmak için yönetmek:

batch_size=256 resnet50_fp32: Forward-backward across 100 steps, 0.575 +/- 0.001 sec/batch resnet50_fp16: Forward-backward across 100 steps, 0.504 +/- 0.001 sec/batch

batch_size=128 resnet152_fp32: Forward-backward across 100 steps, 0.757 +/- 0.001 sec/batch resnet152_fp16: Forward-backward across 100 steps, 0.581 +/- 0.010 sec/batch

ResNet'teki kazanç daha da küçüktür. Görünüşe göre FP16, V100'de çok fazla kazanca sahip değil, neden olmasın. Belki de şu anda TensorCore'un desteği tam olarak entegre edilmemiştir.

+0

NVIDIA belgelerine işaretçi için teşekkürler. Onu bulamadım. –

+0

Evet Geçen hafta benzer bir şey yaptım ve az çok aynı şeyi gözlemledim. Tensorflow'un TensorCore'a veya başka bir şeye destek vermek için daha çok çalışmaya ihtiyacı olduğu için mi bilmiyorum. – derekhh

+0

% 35 daha hızlı dediğinizde, bire bir karşılaştırma mı, yani AlexNet'iniz, tesla V100'de de çift hassasiyetli çalışır mı? –

0

Tensorflow, en iyi algoritmaları belirlemek için uygun cudnn API çağrılarını kullanmıyor. Sadece

ve eşleşme cudnnFindConvolutionForwardAlgorithmEx

cudnnGetConvolutionForwardAlgorithm_v7 ve için tensorflow kod grepped. Ben Tensorflow ile bir bilet yükseltmek için gidiyorum.

0

Bu konuyla oldukça ilgileniyorum, herhangi birinin Volta Tensor Cores ile Tensorflow entegrasyonunun mevcut durumu hakkında herhangi bir güncellemesi var mı? Ben Volta V100 GPU ile hız ve tensorflow 1.5 cuda 9.0 cudnn sınamak için testler koştu ve aşağıdaki sonuçlara varmıştır adres:

  • Eğitim bunu madden daha hızlı olması gerektiği, oysa Volta V100 GeForce 1080 Ti ile Traning daha hızlı değildir kullanarak .Float16 veya float32 kullanımı
  • hiçbirini değiştirmez Float 16 ile Volta V100 kullanarak eğitim, float32 ile Volta V100 kullanarak antrenmandan daha hızlı değildir. Volta GPU'larının float16 için optimize edilmesi gerekiyordu, bu yüzden malzemenin hızını arttırmayı bekliyordum.

Temel olarak, OP'nin yaptığı gibi aynı sonuçları elde ettim: Volta GPU'ları henüz Tensorflow tarafından tam olarak desteklenmiyor. https://github.com/tensorflow/tensorflow/pull/16253

+0

numaralı telefondan yeni bir sorunuz varsa, lütfen [Soru Sor] (https://stackoverflow.com/questions/ask) düğmesini tıklayarak sorun. İçerik sağlamaya yardımcı olursa, bu soruya bir bağlantı ekleyin. - [Yorum Yaz] (/ review/düşük kaliteli yazılar/18761890) – Shikkediel

+0

Bu soruya gerçekten cevap vermiyor. Farklı bir sorunuz varsa, [Soru Sor] 'u tıklayarak bunu sorabilirsiniz (https://stackoverflow.com/questions/ask). Yeterli [itibara] sahip olduğunuzdan (https://stackoverflow.com/help/) bu soruya daha fazla dikkat çekmek için [ayrıca bir ödül (https://stackoverflow.com/help/privileges/set-bounties]) ekleyebilirsiniz. neyin-itibar). - [Yorum Yaz] (/ review/düşük kaliteli yazılar/18761890) – MattSizzle