OK, eine neue Antwort auf eine alte Frage, aber jetzt noch relevanter. Die Frage, die Sie stellen, hat mit endlicher Präzision zu tun, normalerweise im Bereich der Signalanalyse und der experimentellen Mathematik.
Mit Floats mit doppelter Genauigkeit (DP) können wir so tun, als gäbe es keine Probleme mit endlicher Präzision, genau wie bei den meisten mathematischen Problemen der realen Welt. In der experimentellen Mathematik gibt es kein Vortäuschen.
SP-Floats (Single Precision) zwingen uns, Quantisierungsrauschen zu berücksichtigen. Wenn unsere Modelle für maschinelles Lernen Rauschen wie neuronale Netze (NN), Faltungsnetze (CNN), Restnetze (ResN) usw. von Natur aus zurückweisen, liefert SP meistens ähnliche Ergebnisse wie DP.
Bei Floats mit halber Genauigkeit (HP) (jetzt in Cuda Toolkit 7.5 unterstützt) müssen Quantisierungseffekte (Rauschen und Rundungen) berücksichtigt werden. Höchstwahrscheinlich werden wir bald sehen, dass HP in den gängigen Toolkits für maschinelles Lernen verfügbar ist.
Es gibt neuere Arbeiten, um Berechnungen mit geringerer Genauigkeit in Floats sowie Zahlen mit fester Genauigkeit zu erstellen . Die stochastische Rundung hat die Konvergenz ermöglicht, mit CNNs zu verfahren, während die Lösung ohne sie divergiert. Diese Artikel helfen Ihnen dabei, die Probleme bei der Verwendung von Zahlen mit endlicher Genauigkeit beim maschinellen Lernen besser zu verstehen.
So beantworten Sie Ihre Fragen:
SP ist nicht so schlecht. Wie Sie betonen, ist es doppelt so schnell, aber Sie können auch mehr Ebenen in den Speicher einfügen. Ein Bonus besteht darin, Overhead zu sparen, indem Daten auf und von der GPU abgerufen werden. Die schnelleren Berechnungen und der geringere Overhead führen zu geringeren Konvergenzzeiten. Trotzdem ist HP bei einigen Problemen in einigen Teilen des Netzwerks besser und in anderen nicht.
- Es scheint mir, dass viele der Toolkits für maschinelles Lernen SPs und DPs verarbeiten. Vielleicht wird jemand anderes mit einem breiteren Erfahrungsspektrum mit den Toolkits sein Nickel hinzufügen.
- Python unterstützt das, was das GPU-Toolkit unterstützt. Sie möchten keine Python-Datentypen verwenden, da Sie dann ein interpretiertes Skript auf der CPU ausführen.
Beachten Sie, dass der Trend in neuronalen Netzen jetzt zu sehr tiefen Schichten geht, mit Läufen von mehr als einigen Tagen, die auf den schnellsten GPU-Clustern üblich sind.