rltrader
rltrader copied to clipboard
TensorFlow 1.15 vs 2.0 성능
TensorFlow 2.0을 써보니 tensorflow-gpu
를 써서 GPU 활성화까지 되어도 너무 느림. RLTrader 1 epoch에 1분이 넘게 걸림. GPU 사용량을 보면 3%정도밖에 안쓰고 있어서 뭔가 이상함.
TensorFlow 1.15로 다시 설치해서 돌려보니 10배는 빨라짐 (1 epoch에 6초 정도)
원인 파악이 필요함... 일단은 TensorFlow 1.15 사용하는 걸로 결정.
원인은 그냥 2.0이 이상한겁니다. ㅠㅠ
단순한 기초예제 수준의 predict만 대충 해봐도 확연히 차이가 나죠. 저도 2.0에서 그걸 모르고 한참 파헤치다 predict 하나만 해도 엄청 느리다는거 확인하고 집어치워버려서 그 이후 발표된 2.1 2.2 2.3 2.4 에서는 개선됐는지는 확인 못했습니다만 아직 확인할 엄두는 안나네요. 다 재설치하고 일일이 체크해야하니까요. ㅠㅠ
파라메터 100만개 정도의 기초 모델을 학습 후 각각 1만번씩 model.predict 해봄 (참고로 단순 CPU입니다)
tf1.15 + keras 2.2.4 0.672 msecs per loop
tf2.0 2.361 msecs per loop
tf2.1 1.355 msecs per loop
tf2.2 설치안됨(막힌듯)
tf2.3 1.221 msecs per loop
tf2.4 설치안됨(안정버전 안나온듯)
개선은 이루어진거 같습니다만 여전히 더 느린 TF2를 쓸 이유를 모르겠습니다. predict 하나만 하는데도 저 모양인데 학습은 정말 10배정도 차이날 수 있겠네요. 심지어 문법도 거의 난도질(?) 수준으로 개편되는 바람에 익히기도 어려운거 겨우겨우 고쳐놨더니 저 모양이라 1.15로 돌아가서 처음부터 다시 해야해서 정말 열받았었죠... ㅠㅠ
그나저나 GPU 사용률도 낮다면 뭔가 옵션에서 해볼게 있는 모양이군요.
위에 쓴거 빼먹은거 올립니다.
tf2.3+ keras 2.4.3 36.609 msecs per loop (tf.keras가 아닌 keras 최신버전을 쓰되 백엔드가 tf2인 것)
아니 이걸 정말 쓰라고 만들어 놓은걸까요? ㄷㄷㄷ 뭔 짓을 해놨길래 predict만 하는데 갑자기 50배가 느려지는건지...
keras 쓰지말고 tf.keras 쓰라고 소몰이하는거면 인정...
참고로 predict 자체는 다 정상적이었습니다. 뭐 이상할만한건 없겠지만요...
사실 이 책의 내용과 위 테스트 내용은 아니지만 tf1과 keras에서는 강화학습할때 optimizer.get_updates 이런걸로 업데이트 했었는데 tf2에서는 이런게 잘 안되고 placeholder도 안되고 무슨 gradient tape 쓰라더니 @tf.function 로 데코레이터 하느냐 마느냐에 따라 또 속도가 달라지고 온갖 삽질을 다해가면서 꾸역꾸역 되는거 만들어놨더니 속도가 무지하게 느린걸 뒤늦게 알아서 tf2는 접는 사이에 몇달 날린거 생각하면 지금도 치가 떨립니다. ㅠㅠ 신버전이니 당연히 더 빠른건줄 알고 아무것도 모르고 쓴건데 이렇게 배신 때릴줄은....
@rubyjohn 저도 개발하면서 신버전에 데인 경우가 많아서 신버전 도입을 보수적으로 하고 있네요...;;
정말 화나네요 tf2 너무 느려서 계속 원인을 찾고 있었는데... ㅜㅡㅜ tf2 정말 느립니다... 여러분 덕에 원인을 찾았습니다.
신버전이면 무조건 빠르고 좋을거라고 생각했는데 아닌가보네요..ㄷㄷ