체이너(Chainer)는 일본에서 만들어져 널리 사용되는 딥러닝 프레임워크입니다. 지난 1월 샌프란시스코에서 열린 딥러닝 서밋을 통해 발표한 체이너의 분산버전의 체이너(Chainer Multi-Node)를 이용해 다른 프레임워크와 비교를 한 결과가 체이너 블로그에 올려졌습니다. 블로그에서도 언급했지만 이는 완벽하게 공정한 벤치마킹이 아닐 수 있습니다. 비교적 체이너가 실험 환경에 최적화되어 있고 다른 프레임워크는 그러지 못했을 수도 있습니다. 그렇더라도 GPU가 증가함에 따라 거의 선형적으로 퍼포먼스가 증가하는 그래프는 대단한 것 같습니다. 이 벤치마킹의 결과는 텐서플로우가 CNTK나 MXNet 과 비교해도 많이 성능이 뒤쳐진 것을 보여 줍니다.
체이너 멀티 노드 프레임워크는 Nvidia 의 니켈(NCCL) 라이브러리를 사용하여 GPU간 데이터 전송을 직접 처리합니다. MXNet과 CNTK가 단일 서버(4 코어까지는 단일 서버입니다)에서 조금 더 높은 성능을 내는 이유는 C++ 구현이기 때문이고 체이너는 파이썬 구현이라는 차이 때문으로 보고 있습니다. CNTK는 체이너 멀티노드처럼 니켈 라이브러리를 사용하지만 서버가 늘어남에 따라 MXNet과 성능 차이가 엇갈리고 있습니다. 텐서플로우가 느린 주된 요인으로는 분산 모드에서 파라미터 서버와 워커 서버간의 gRPC 통신의 오버헤드로 추측하고 있습니다. 스탠드얼론(standalone)일 경우엔 이와 다른 결과가 나올 수 있습니다. 이 벤치마킹에는 분산 기능이 내장되지 않은 씨아노(Theano)나 토치(Torch)는 포함되지 않았습니다.
최근에 나온 또 다른 벤치바킹 자료들에서도 텐서플로우의 성능은 그다지 뛰어나게 평가되지는 못하고 있습니다. 하나는 DyNet 의 페이퍼 ‘DyNet: The Dynamic Neural Network Toolkit‘ 이고 또 다른 하나는 ‘Benchmarking State-of-the-Art Deep Learning Software Tools‘ 입니다. 파이토치를 포함한 더 광범위한 벤치마킹이 진행되길 기대해 봅니다.