Deep Learning mit CUDA, PCIe x8 vs x16

ObaeBaum

Cadet 3rd Year
Registriert
Juli 2020
Beiträge
59
EDIT: 2te Frage stellung:
Keras Deep Learning lieber 2 GPUs oder 1 ? (Inwieweit "stacken" mehrere GPUs)



Grund der fragestellung ist folgendes:
hierdrin (https://missinglink.ai/guides/computer-vision/complete-guide-deep-learning-gpus/) steht:
"
  • Memory bandwidth is the most important characteristic of a GPU. Opt for a GPU with the highest bandwidth available within your budget.
  • The number of cores determines the speed at which the GPU can process data, the higher the number of cores, the faster the GPU can compute data. Consider this especially when dealing with large amounts of data.
  • Video RAM size (VRAM) is a measurement of how much data the GPU can handle at once. The amount of VRAM required depends on your tasks so plan accordingly.
  • Processing power is a factor of the number of cores inside the GPU multiplied by the clock speed at which they run. The processing power indicates the speed at which your GPU can compute data and determines how fast your system will perform tasks.
  • If you are running light tasks like small or simple deep learning models, you can use a low-end GPU like Nvidia’s GTX 1030.
  • If you are handling complex tasks such as neural networks training you should equip your system with a high-end GPU like Nvidia’s RTX 2080 TI or even its most powerful Titan lineup. Alternatively, you can use a cloud service like Google’s GCP or Amazon’s AWS which provides strong GPU capabilities.
  • If you are working on highly demanding tasks such as multiple simultaneous experiments or require on-premise GPU parallelism, then no matter how high end your GPU is, one GPU won’t be enough. In this case, you should purchase a system designed for multi-GPU computing."
Klar da ich meine modelle für komplexe regressions aufgaben trainieren muss, käme als erstes eine einzelne GPU in den Sinn, jedoch erhalte ich mehr Kerne wenn ich 2 günstigere GPUs kaufe.

Option A) wäre eine 2080Ti (1.200€)
Option B) 2x 2070 Super (2x500€)



NVIDIA CardNumber
of CUDA
Cores
Memory
Interface
Width
Memory
Bandwidth
GB/sec
Base Clock
Speed
Boost Clock
Speed
NOTES
RTX-20601920192 bit336 GB/s1365 MHz1680 MHz6 GB VRAM
RTX-2060 Super2176256 bit448 GB/s1470 MHz1650 MHz8 GB VRAM
RTX-20702304256 bit448 GB/s1410 MHz1620 MHz8 GB VRAM
RTX-2070 Super2560256 bit448 GB/s1605 MHz1770 MHz8 GB VRAM
RTX-20802944256 bit448 GB/s1515 MHz1710 MHz8 GB VRAM
RTX-2080 Super3072256 bit496 GB/s1650 MHz1815 MHz8 GB VRAM
RTX-2080 Ti4352352 bit616 GB/s1350 MHz1545 MHz11 GB VRAM
Quelle: https://www.studio1productions.com/Articles/NVidia-GPU-Chart.htm

Meine erste Frage ist:
1) Inwieweit "stacken" GPUs in bezug auf Kerne, Bandbreite, VRAM (in Keras).

2) Was macht mehr Sinn eurer Erfahrung nach im Bezug aus Deep Learning?

Alte Fragestellung (bereits geklärt:)
wenn ich meine GPU in einen x8er hänge und mit "präzisen" Kommazahlen arbeite (wie das beim Deep Learning eben der fall ist).
Wird die Genauigkeit dadurch beeinträchtigt? (sprich "double"s in "float"s umgewandelt)?
Oder hat das darauf absolut keinen einfluss? (wie gesagt nicht performace-speed, sondern Genauigkeit)
(Bin in sachen Hardware erst einsteiger, also verzeiht mir falls es eine dumme frage ist, Vielen dank für euer Verstängnis)
 
Zuletzt bearbeitet:
Bandbreite = Performance

Nicht mehr und nicht weniger :)
 
  • Gefällt mir
Reaktionen: Asghan
KWMM schrieb:
Bandbreite = Performance

Bleibt die Frage wieviel Bandbreite benötigt wird. Bei CUDA oder OpenCL wird oft nicht mal eine PCI-E 1x Anbindung ausgelastet. Gibt natürlich ausnahmen.
Die Genauigkeit wird durch die Anbindungsgeschwindigkeit der GPU nicht beeinflusst.
 
  • Gefällt mir
Reaktionen: ghecko
KWMM schrieb:
Bandbreite = Performance

Nicht mehr und nicht weniger :)
Also hat eine GPU die in den x16er muss aber im x8er angeschlossen hat keinen einfluss auf die Präzision. (Hope u understand that i am a newbie🤗)
 
Richtig - keinen Einfluß auf Genauigkeit.
 
Huch, für deep learning werden normalerweise Typen geringerer Genauigkeit verwendet; weil die auch ausreichen und sich damit die Bandbreite vergrößert. Außerdem (je nach Grafikkarte) selbstverständlich auch die Performance. Consumer-Karten haben abartig geringe Double-FLOPS. Da schafft deine CPU meist mehr.
 
nullPtr schrieb:
Huch, für deep learning werden normalerweise Typen geringerer Genauigkeit verwendet; weil die auch ausreichen und sich damit die Bandbreite vergrößert. Außerdem (je nach Grafikkarte) selbstverständlich auch die Performance. Consumer-Karten haben abartig geringe Double-FLOPS. Da schafft deine CPU meist mehr.
Ich trainiere nicht auf bildern, oder Klassifizierten "one hot encoding"(1 für True, 0 für False) spalten, sondern auf ca. 5-100 Spalten, von float oder double zahlen wie diesen z.B. : 18,2397486819; 0,0589377929; 98,278439976 mit Sequenzen (also zeitkontext). Sieht es da immernoch so aus?

btw hab noch den post hier im kopf (https://missinglink.ai/guides/computer-vision/complete-guide-deep-learning-gpus/)
  • Memory bandwidth is the most important characteristic of a GPU. Opt for a GPU with the highest bandwidth available within your budget.
  • The number of cores determines the speed at which the GPU can process data, the higher the number of cores, the faster the GPU can compute data. Consider this especially when dealing with large amounts of data.
 
Ah, nein. Natürlich nicht deine Ein- und Ausgaben. Ich meinte das Netz intern. Aber ich nehme an, du verwendest dafür eine fertige Software? Dann wird sich die darum kümmern.

Bezüglich der Karten: Vermutlich ist es sinnvoller eine dicke zu kaufen. Ich würde dir aber empfehlen: schau, wie die Software, die du verwenden willst, performt. Da gibt es bestimmt Zahlen, wie die mit Multi-GPU umgehen kann.
 
@ObaeBaum Für Regressionen brauchst Du keine Grafikkarte. Maximum Likelihood Verfahren kann man ganz locker auf CPUs laufen lassen. Solange Du nicht brutale Datenmengen mit Millionen von Zeilen verarbeitest reicht hier einfach viel RAM.
Der beschränkende Faktor ist bei Regressionsverfahren eher, dass viele Zufallszahlen für den BFGS-Algorithmus oder MCMC oder Bayes-whatever gezogen werden müssen. Das was Grafikkarten gut machen sind Matrizenmultiplikationen. Das brauchst Du bei Neuronalen Netzen deutlich mehr als bei Regressionen.

16 GB RAM reichen in R z.B. für Matrixoperationen mit 3 Mio Zeilen und 5-7 Spalten (float+ string) (Zahlen aus dem Gedächtnis…)
 
usbstick schrieb:
@ObaeBaum Für Regressionen brauchst Du keine Grafikkarte. Maximum Likelihood Verfahren kann man ganz locker auf CPUs laufen lassen. Solange Du nicht brutale Datenmengen mit Millionen von Zeilen verarbeitest reicht hier einfach viel RAM.
Der beschränkende Faktor ist bei Regressionsverfahren eher, dass viele Zufallszahlen für den BFGS-Algorithmus oder MCMC oder Bayes-whatever gezogen werden müssen. Das was Grafikkarten gut machen sind Matrizenmultiplikationen. Das brauchst Du bei Neuronalen Netzen deutlich mehr als bei Regressionen.

16 GB RAM reichen in R z.B. für Matrixoperationen mit 3 Mio Zeilen und 5-7 Spalten (float+ string) (Zahlen aus dem Gedächtnis…)
Leider doch ^^ sind brutale datenmengen und mehrdimensionalität... Regression RNNs (also keine NNs). Mache alles aktuell aus der Praxis und kann sagen: Für das was ich machen muss, muss unbedingt eine GPU her.
 
Nunja, kommt natürlich darauf an was Du genau machst, aber Regressionen mit NNs zu machen ist in der überragenden Mehrzahl der Fälle eine extrem umständliche Variante. Was ich vermute was Du meinst ist Zeitreihen mit LSTM analysieren?
"Brutale Datenmengen" und "Mehrdimensionalität" ist recht unspezifisch. Für mich wären das Größenordnungen die mich zur Nutzung von Google TPUs zwingen wenn ich das Ende der Berechnungen noch erleben will. Für andere sind bereits ein paar hundert Datenpunkte sehr viel.

Regressionen an sich brauchen wie gesagt keine Grafikkarte, da man sie recht effizient mit Gradient Descent lösen kann, was eben meistens keine lineare Operation ist. Der Teil der es bei Dir dann GPU-lastig macht ist das Einbetten in ein RNN.

Ich persönlich würde Zeitreihenanalyse strukturell mit AR/VAR/(G)ARCH/VECM angehen, allein schon weil es ressourceneffizienter sein kann und keine Black Box ist, aber was Du machst ist natürlich Dir überlassen insbesondere wenn Dir die zu nutzende Technologie vorgegeben wird.
 
Zurück
Oben