Mam zamiar uruchomić bardzo dużą powtarzalną sieć (np. 2048x5), czy jest możliwe zdefiniowanie jednej warstwy na jednym GPU w tensorflow? Jak powinienem wdrożyć model, aby osiągnąć najlepszą wydajność. Rozumiem, że istnieje obciążenie dla komunikacji między GPU lub GPU-CPU-GPU.Czy jest możliwe podzielenie sieci na wiele procesorów graficznych w tensorflow?
Odpowiedz
Dzielenie dużych modeli na wiele procesorów graficznych jest z pewnością możliwe w TensorFlow, ale robienie tego optymalnie jest trudnym problemem badawczym. W ogóle, trzeba wykonać następujące czynności:
Wrap duże sąsiadujących regionach o kodzie w
with tf.device(...):
bloku, nazywając różne GPU:with tf.device("/gpu:0"): # Define first layer. with tf.device("/gpu:1"): # Define second layer. # Define other layers, etc.
Budując swój optymalizator, przekazać opcjonalny argument
colocate_gradients_with_ops=True
sposobuoptimizer.minimize()
:loss = ... optimizer = tf.train.AdaGradOptimizer(0.01) train_op = optimizer.minimize(loss, colocate_gradients_with_ops=True)
może być konieczne t (opcjonalnie). O Enable „miękkie” umieszczenie w
tf.ConfigProto
podczas tworzeniatf.Session
, jeśli któryś z operacjami w modelu nie można uruchomić na GPU:config = tf.ConfigProto(allow_soft_placement=True) sess = tf.Session(config=config)
Uruchamiam moją sieć na dwóch procesorach graficznych, zarówno obliczenia do przodu, jak i do tyłu są dystrybuowane na 2 procesorach graficznych. Jednak po kilkugodzinnym treningu uważam, że wykorzystanie GPU jest naprawdę niskie. Uważam, że obłożenie kolejki (liczba partii w kolejce) wynosi 0, co oznacza, że kolejka nie jest wystarczająco szybko wypełniana. Używam wątku do pompowania danych do kolejki. Czy powinienem jawnie zdefiniować kolejkę, włączać i usuwać operacje na procesorze? –
Tak, znaleźliśmy przypięcie rurociągu wejściowego do procesora w celu poprawy ogólnej wydajności naszego szkolenia modelowego (w przeciwnym razie dostaniesz zakłócenia od części wejściowego potoku, które mogą działać na procesorze). – mrry
"Przypinanie rurociągu wejściowego do procesora", czy mógłbyś go bardziej szczegółowo opisać? – herve
- 1. Keras + Tensorflow: Prognozy dla wielu procesorów graficznych
- 2. Czy TensorFlow domyślnie używa wszystkich dostępnych procesorów graficznych w urządzeniu?
- 3. SLI dla wielu procesorów graficznych
- 4. Używanie wielu procesorów graficznych CUDA
- 5. CGDirectDisplayID, wiele procesorów graficznych, przestarzałe CGDisplayIOServicePort i jednoznacznie identyfikujące wyświetlacze
- 6. górne polecenie dla procesorów graficznych używających CUDA
- 7. Czy jest możliwe podzielenie zestawu funkcji rekursywnych na 2 pliki w OCaml?
- 8. Jak profilować sieci TensorFlow?
- 9. Jak włączyć Keras z Theano wykorzystanie wielu procesorów graficznych
- 10. Czy możliwe jest obliczanie bufora TensorFlow (pod) wykresu?
- 11. Wiele procesorów i PerformanceCounter C#
- 12. Wejście do sieci LSTM tensorflow
- 13. Czy wiele procesorów konkuruje o tę samą przepustowość pamięci?
- 14. Tensorflow inception-V3 Ponownie trenuj wiele warstw
- 15. Niezawodność liczby procesorów
- 16. Dane strumieniowe z sieci w AVAudioEngine, czy to możliwe?
- 17. Możliwe jest wiele środowisk na tym samym serwerze RabbitMQ?
- 18. Czy możliwe jest posiadanie wartości atrybutów obejmujących wiele linii?
- 19. Czy możliwe jest przewijanie ScrollView na dół?
- 20. Zmiana liczby wątków w TensorFlow na Cifar10
- 21. Jaki jest najszybszy sposób na podzielenie macierzy scipy.sparse?
- 22. Czy możliwe jest uruchamianie klasycznego asp na serwerze sieci Web Cassini?
- 23. Czy możliwe jest wdrożenie nowych standardów, takich jak HTML5 w formularzach sieci Web ASP.NET?
- 24. Czy jest możliwe odtworzenie ścieżki w CAKeyFrameAnimation?
- 25. Czy jest możliwe użycie "number_to_currency" w kontrolerze?
- 26. Czy możliwe jest rozszerzenie tablic w C#?
- 27. Czy jest możliwe ułożenie 2 przycisków w pionie na UIAlertView?
- 28. Czy możliwe jest posiadanie indeksu opartego na funkcjach w MySQL?
- 29. Czy jest możliwe ustawienie limitu czasu na gnieździe w Twisted?
- 30. Dlaczego RDTSC jest zwirtualizowaną instrukcją na temat nowoczesnych procesorów?
[tutaj] (https://www.tensorflow.org /versions/r0.7/how_tos/using_gpu/index.html#using_multiple_gpus) to instrukcje. [tutaj] (https://www.tensorflow.org/versions/r0.7/tutorials/deep_cnn/index.html) jest przykładem. Równoległe dane są znacznie łatwiejsze niż równoległe funkcjonalne. – fluency03
Rozumiem użycie z tf.device(). Jednak po zdefiniowaniu warstw na różnych procesorach graficznych, stwierdzam, że gradienty są nadal przechowywane na pierwszym GPU. Czy możesz podać konkretny przykład podziału gradientowego na różne GPU? –
Możesz także spróbować przekazać 'colocate_gradients_with_ops = True' do metody' optimizer.minimize() 'podczas budowania swojego modelu. – mrry