Ich baute einen LSTM-Klassifikator in Tensorflow (mit Python) und jetzt mache ich eine Reihe von Benchmarks, um die Ausführungsleistung zu messen. Der Benchmark-Code lädt das Modell, das während des Trainings gespeichert wurde, und führt es für eine Reihe von Eingaben aus. Ich habe sowohl einen Python-Benchmark als auch einen C++ - Benchmark.Tensorflow C++ - Evaluierungsleistung schlechter als Python eins
Ich bekomme 5ms
pro Eingabe bei Verwendung von Python (auf CPU) und 68ms
bei Verwendung von C++. Ich hatte erwartet, dass die C++ - Version mindestens eine ähnliche Leistung hat.
Was kann diesen Unterschied verursachen? Ich bin nicht vertraut mit den Interna von Tensorflow, aber eine meiner Vermutungen ist, dass Python-Version verwendet BLAS (mein numpy ist mit Blas verbunden) und C++ nicht. Wenn ja, bedeutet das, dass einige Graph-Operationen in Python ausgeführt werden?
Ist die C++ Eins mit Optimierungsflags kompiliert? –
Sowohl C++ als auch Python sollten dasselbe Backend verwenden (basierend auf Eigen), um die eigentliche Berechnung durchzuführen, so dass der Unterschied merkwürdig ist. Gibt es einen Unterschied, wenn Sie eine große Op ausführen, die nicht bandbreiteneingeschränkt ist? (dh multiplizieren Sie zwei 4k x 4k Matrizen zusammen) –
Haben Sie die Antwort gefunden? –