2017-10-18 3 views
0

Ich untersuche gerade die optimale Präzision für das Training eines DNN. Ich habe gelernt, dass zum Schluss sogar eine komprimierte 8-Bit-Genauigkeit funktionieren sollte; Für das Training würden wir eine höhere Präzision benötigen. Was wäre die optimale Präzision für Deep Learning (fp16, fp32 oder fp64)? Ich kann Tensorflow-GPU für diesen Zweck verwenden.Was ist die optimale Präzision für das Training eines typischen tiefen neuralen Netzwerks?

+0

Was ich die meiste Zeit gesehen habe, ist float32, nicht sicher, ob alle Operationen mit Float64 noch implementiert werden –

+0

Dieses Problem für Beispiel https://github.com/tensorflow/tensorflow/issues/13097 –

Antwort

0

Dies hängt von der Bewertungsfunktion ab, die Sie für "optimal" haben: ist Ihre Fokustrainingszeit (weniger Präzision ist schneller), Genauigkeit (weniger Präzision ist oft weniger genau) oder eine andere Ressource? Dies hängt auch etwas von der Modellkomplexität und Topologie ab.

ConvNet (MNIST) wird gut auf 8-Bit-Floats; Das Training ist schneller und der Genauigkeitsunterschied (falls vorhanden) wird unbedeutend sein. Wenn Sie sich in etwas interdependenteres und fragileres (vielleicht ein Kernel-hungerved GNN) bewegen, dann werden Sie einen Genauigkeitsverlust beim Fallenlassen auf 8-Bit bemerken.

Je nach Ihren Anforderungen können Sie manchmal Trainingszeit einsparen, indem Sie auf 8-Bit-Gleitkommazahlen setzen, aber etwas verlorene Genauigkeit wiederherstellen, indem Sie Ihr Modell (mehr Kerne in Faltungsschichten) um einen kleinen Betrag erweitern.

+0

Using 8 oder 16 Bit Floats machen das Training mit fast allen GPUs nicht schneller. Den GPUs fehlen die Verarbeitungseinheiten für die niedrigere Genauigkeit und stattdessen werden die gleichen 32-Bit-Verarbeitungseinheiten verwendet. – BlueSun

+0

@BlueSun: Richtig - ich habe diesen letzten Satz verpasst. Ich arbeite hauptsächlich an CPUs. – Prune

2

Die optimale Genauigkeit ist in den meisten Fällen float32. float64 wird die Ausführung auf der GPU deutlich verlangsamen. Auf der anderen Seite, wenn Sie eine Tesla p100 GPU haben, macht die Verwendung von float16 die Ausführung nicht schneller.

Verwandte Themen