Why MXNet and Gluon?
최근 우리 조직에서는 MXNet과 Gluon을 활발히 사용하고 있다. 우리는 DevOps 조직으로서, 새로운 모형을 계속 개발하는 것도 중요하지만 안정적으로 모형을 운영하는 것 역시 중요하다.
현재 MXNet, TensorFlow, PyTorch, theano 등 수많은 딥러닝 프레임웍이 있다. 수십 혹은 수백개의 모형을 운영하는 입장에서는 많은 프레임웍을 사용하는 것은 부담이다. 따라서 몇 가지 프레임웍을 사용하기 위해서는 선택 기준이 필요하다.
- 코드 작성의 편리함
- 양질의 참고할 코드
- 학습 및 추론 속도
- 많은 function/method 제공
- 버전 업데이트 호환성
- 다양한 언어 지원
TensorFlow는 양질의 참고할 코드와 튜토리얼이 많지만, Tensorflow’s eager execution이 실험적이기 때문에 디버깅이 어렵다. 반대로 PyTorch의 경우 연구 목적으로 훌륭하나 아직 버전이 안정화되지 않아 업데이트에 따른 코드 관리 이슈가 있다.
MXNet은 Gluon 등 high-level API 도 제공하면서 low-level control이 가능하다. 이러한 기능들은 실험적인 모형을 빠르게 개발하면서 동시에 운영하는 일에 큰 도움이 된다. 또한, Gluon은 gluon-cv(Computer Vision)와 gluon-nlp(Natural Language Processing)의 파이썬 라이브러리가 나오면서 더욱더 풍부한 기능들을 제공하고 있다.
MXNet 커뮤니티는 버전 이슈에 대해 API가 호환되도록 엄격히 관리하고 있다.
How to evaluate a deep learning framework?
Benchmark Process의 필요성
Scenario 1. TensorFlow에서 MXNet으로 변경하였을 경우 좋은 선택이었는지 어떻게 알 수 있을까?
TensorFlow와 MXNet처럼 서로 다른 딥러닝 프레임웍을 비교할 경우에는 동일한 모형이더라도 구현하는 방식에 따라 정확도 및 속도 차이가 있을 수 있다. 따라서, 정교한 비교를 위해서 keras-mxnet과 같은 동일한 도구 사용을 추천한다. keras-mxnet은 pip으로 쉽게 설치 가능하며 TensorFlow와 MXNet 둘 다 선택이 가능하다.
Scenario 2. mxnet 1.1.0에서 mxnet 1.2.0으로 업데이트 하였을 경우 좋은 선택이었는지 어떻게 알 수 있을까?
이 전 버전들과 호환을 이루는 벤치마크 프로세스가 있으면 부수적으로 딥러닝 프레임웍을 버전별로 비교하기가 쉽다. 예를 들어, 특정 모형에 대한 벤치마크 결과를 딥러닝 프레임웍의 버전 정보와 같이 저장해두면 그 차이를 쉽게 비교할 수 있다. 이 때 중요한 것은 벤치마크 지표(metrics)를 잘 정의 하는 것이다.
Benchmark Process 구성
어떻게 “on-perm” 환경에서 벤치마크 프로세스를 구성할 것인가? 모든 다른 환경, 프레임웍, 모델, 지표 등을 아래와 같이 구성한다.

DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.