The Good, Bad & Ugly of TensorFlow

일주일전 데이터 분석 솔루션 전문 회사인 인디코(indico.io)의 Dan Kuster가 자사의 블로그에 텐서플로우의 장단점에 대해 포스팅했습니다.

텐서플로우의 좋은 점은 오픈소스로 누구나 손쉽게 사용할 수 있다는 점입니다. 구글이 발표를 한 것이라 그런지 머신러닝 커뮤니티의 폭발적인 관심을 이끌었고 이런 관심은 더 좋은 결과와 도구들을 만들어내기 때문입니다. 딥마인드가 텐서플로우를 사용한다고 발표하였으니 알파고에서 사용했던 강화학습(reinforcement learning) 버전의 텐서플로우도 기대를 한다고 합니다.

최근 0.8 버전에서는 부족했던 초기 버전의 내용들이 개선되거나 해결되었습니다. 멀티 GPU 지원, 분산 처리, 큐, 그래프 비주얼라이제이션, 로깅, 모델 체크포인트, 성능 개선 등입니다. 여기에 텐서플로우를 사용하기 쉽게 해 주는 메타(meta) 프레임워크들도 등장했습니다. Keras, 텐서플로우 Slim, skflow, PrettyTensor, TFLearn 등입니다.

또 텐서플로우 개발팀은 문서화는 좀 늦어지더라도 새로운 기능을 테스트가 되면 코드에 추가하고 있어서 실험적인 개발자들의 호응을 이끌어 내고 있는 것 같습니다.

단점으로는 RNN(Recurrent Neural Network)이 Theano에 비해 아직 좀 느리다는 점 입니다. 머신러닝 커뮤니티에서도 여러번 유사하게 지적된 바가 있습니다. 그리고 조금 더 메모리 소비가 많습니다. 하지만 이러한 차이는 빠르게 좁혀질 것으로 예상되고 있습니다.

그리고 비정형 데이터를 다루는 예제가 부족하고 특별히 RNN에 대해서는 아주 간단한 예제와 복잡한 예 사이에 갭이 너무 큽니다. 텐서플로우 개발팀에서 RNN에 대해 좀 더 많은 리소스를 투여해야 할 것 같습니다.

텐서플로우는 로드될 때 디폴트로 GPU 메모리를 모두 할당합니다. 하지만 클라우드 환경에서는 빈 메모리 영역을 찾으려 불필요한 트랜잭션이 많이 일어날 수 있습니다. 이를 조절하기 위한 per_process_gpu_memory_fraction 옵션에 대해 설명해 주고 있습니다. 하나 더 안좋은 점은 한 코드에서 Theano와 TensorFlow를 동시에 사용할 수 없다는 것입니다. 결국 GPU 디바이스를 환경변수를 사용해서 라이브러리마다 따로 지정을 해서 사용해야만 한다고 합니다.

그동안 Theano를 사용했던 사람들은 새로운 툴을 익히려면 시간이 좀 걸릴 것이지만 인디코도 그렇고 이런 새로운 프레임워크를 환영하는 분위기입니다. 무엇보다도 텐서플로우가 앞으로 확실히 빠른 속도로 발전할 것이라 기대하기 때문일 것 같습니다.

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.