Wie verwenden Sie multi-CPU-Kerne zum Zug NNs mit caffe und OpenBLAS
Ich Lerne deep learning vor kurzem und mein Freund empfahl mir caffe. Nach der Installation es mit OpenBLAS, ich folgte dem tutorial, MNIST Aufgabe in der doc. Aber später fand ich, war es super langsam ist und nur einen CPU-Kern arbeiten.
Das problem ist, dass die Server in meinem Labor nicht über die GPU, also muss ich verwenden CPUs statt.
Googelte ich dieses und bekam einige Seite wie diese . Ich habe versucht, zu export OPENBLAS_NUM_THREADS=8
und export OMP_NUM_THREADS=8
. Aber caffe noch verwendet einen Kern.
Wie kann ich machen, caffe verwenden Sie multi-CPUs?
Vielen Dank.
- Haben Sie openblas zur Benutzung von threads?
- Ich habe gerade
make
undmake install
. Ich fand eine page, aber es sagt nichts über Gebäude es zur Benutzung von threads. Wie kann ich es bauen, verwenden threads? - Lesen Sie die Dokumentation. Es ist ziemlich klar.
- Ich muss sagen, ich habe nicht überall erwähnt, kompilieren OpenBLAS mit jedem Parameter in Bezug auf
threads
. - USE_OPENMP=1 ist bereits in github.com/xianyi/OpenBLAS/blob/develop/README.md. Das ist, wie ich immer bauen für Gewinde-Nutzung.
- Leider caffe noch eine CPU verwendet, nachdem ich rebuild OpenBLAS mit
USE_OPENMP=1
und dann neu erstellen caffe. 🙁 - Was ist deine system-config?
- Centos 6.5, 24-core-CPU. Meinst du diese?
- Wie Sie wissen, Caffe ist nur mit einem Kern? Die zeitliche Auflösung
top
möglicherweise nicht genug, um zu fangendgemm
in Aktion. Haben Siegprof
um zu sehen, ob eine ErhöhungOMP_NUM_THREADS
wirkt sich auf die Wand der Zeit? - Ich deinstallieren und neu installieren das ganze und es funktioniert. Aber auch wenn ich alle nutzen die cpu, es ist immer noch suuuper langsam. Nun, die gute Nachricht ist, dass mein Chef kaufte einen TITAN-X für das Labor. LOL
- Es ist eine OpenMP-version von Caffe auf Github, die im Wettbewerb mit der GPU-Hafen für einige workloads. Sie könnten versuchen, es zu finden. Threading-GEMM ist nicht immer der beste Weg, um DNN schneller gehen...
- bitte post den link zu OpenMP caffe Gabel.
- Siehe github.com/intelcaffe.
- was ist das Besondere an dieser Gabel? Ich kann nicht sehen, alle Verweise auf openmp.
- Sorry, Sie sind in den Prozess der überarbeitung der OpenMP-Zeug. Es ist github.com/intelcaffe/caffe-old/tree/openmp, aber ich vermute, Sie sehen wollen, z.B. github.com/intelcaffe/caffe/commits/openmp-conv-relu.
Du musst angemeldet sein, um einen Kommentar abzugeben.
@Karthik. Das funktioniert auch für mich. Eine interessante Entdeckung, die ich machte, war, dass die Verwendung von 4 threads reduziert die vorwärts/rückwärts-pass während der caffe-timing-test um einen Faktor von 2. Allerdings, eine Erhöhung der thread-Anzahl auf 8 oder sogar 24 Ergebnisse in f/b speed-das ist weniger als das, was ich mit OPENBLAS_NUM_THREADS=4.
Hier sind mal ein paar thread zählt (getestet auf NetworkInNetwork Modell).
[#threads] [- f/b-Zeit in ms]
1 223
2 150
4 113
8 125
12 144
Zum Vergleich, auf einen Titan-X-GPU, die f/b-pass nahm 1.87 ms.
Beim Aufbau OpenBLAS, haben Sie, um die Flagge USE_OPENMP = 1 zum aktivieren der OpenMP-Unterstützung. Next set Caffe verwenden OpenBLAS in der Makefile.config, bitte exportieren Sie die Anzahl der threads, die Sie verwenden möchten, während der Laufzeit durch die Einrichtung OMP_NUM_THREADS=n, wo n ist die Anzahl der threads, die Sie wollen.
Fand ich, dass diese Methode funktioniert:
Beim erstellen der caffe, in Ihrem make-Befehl, verwenden Sie diese für 8 Kernen:
make all -j8
undmake pycaffe -j8
Stellen Sie außerdem sicher, dass
OPENBLAS_NUM_THREADS=8
eingestellt ist.
Diese Frage hat eine full-Skript für den gleichen.