일반적으로 딥러닝에 기반한 AI 시스템들은 많은 연산량 때문에 GPU를 필요로 합니다. 학습 과정 자체는 사용자가 매번 호출하는 것이 아니므로 GPU를 사용하지 않을 이유가 별로 없습니다. 하지만 학습이 끝난 모델을 제품에서 사용하는 경우, GPU 대신 CPU를 사용할 수 있다면 서버 비용을 절감할 수 있습니다. 가능성 검증을 위해, 잘 알려진 딥러닝 모델 구조들에 대해서, GPU와 CPU에서의 forward time을 비교해 보도록 하겠습니다.

테스트 조건
  • Intel(R) Core(TM) i7-6850K CPU @ 3.60GHz
  • Pascal Titan X
  • 파일 I/O 시간은 제외하였습니다.
  • Caffe / CuDNN 5.1 / CUDA 8

실험을 위해 SqueezeNet-1.1, CaffeNet, GoogleNet, ResNet-50, Inception-v3, ResNet-101, ResNet-152, Inception-v4, VGG-16이 사용되었습니다. 먼저, GPU를 사용하여 이미지 한 장을 처리하는데 필요한 평균 forward time에 대한 그래프입니다.

위의 그래프를 보면, GoogleNet이 가장 빠른 결과를 나타냈습니다. GoogleNet의 모델 크기는 약 52MB인데, 가장 작은 모델인 SqueezeNet-1.1에 비해 약 10배 이상의 파라미터 수를 갖는 것을 감안할 때 재미있는 결과라고 볼 수 있습니다. 이는 GPU에서의 처리는 매우 많은 수의 코어들에 의한 병렬 처리이므로, 파라미터의 수가 forward time과 반드시 비례하지는 않는 다는 것을 의미합니다. 좀 더 큰 모델들인 ResNet-101, Inception-v4, VGG-16는 이미지 한 장을 처리하는데 약 50ms-90ms 정도를 필요로 하였고, 이는 GoogleNet에 비해 약 2-4배 정도 느리다는 것을 의미합니다.

다음은, CPU만을 이용하여 측정한 결과입니다.

CPU만을 이용하는 경우, GPU를 이용하는 경우에 비해 몇 가지 차이점이 발견되었습니다. SqueezeNet-1.1은 다른 모델들에 비해 월등하게 빠른 forward time을 갖는 것으로 나타났습니다. 이는 SqueezeNet-1.1의 경우 모델 파라미터의 수가 월등히 적고, CPU 연산의 경우 코어의 수가 한정되어 있어 병렬 처리로 얻을 수 있는 이득이 한정적이기 때문입니다. 이 때문에, CPU만을 사용하는 환경에서는 대략적으로 모델 파라미터의 수와 forward time이 비례하게 됩니다. 예외적으로, CaffeNet의 경우 모델의 크기는 약 233MB에 이르지만 CPU 환경에서의 forward time은 매우 빠르게 나타났습니다.

다음은, 위의 두 결과들로부터 계산한 CPU, GPU 간 비율입니다. (CPU/GPU)

위의 그래프를 보면, 모델 종류에 따라서 각기 다른 CPU/GPU 비율을 갖는 것을 알 수 있습니다. SqueezeNet-1.1과 CaffeNet의 경우 상대적으로 낮은 CPU/GPU 비율을 보였습니다. 이 모델들은 상대적으로 그 구조가 간단하여 CPU에서도 빠르게 처리될 수 있기 때문으로 생각됩니다.

다른 모델들의 경우, VGG-16을 제외하고 보면, 약 120에서 150사이의 CPU/GPU 비율을 보였습니다. 이는 GPU를 사용하면 CPU만을 사용하는 경우에 비해 100배 이상 빠르게 결과를 얻을 수 있다는 것을 의미합니다. VGG-16의 경우에는 이 비율이 더 높아져서, GPU를 쓰는 경우 CPU만을 사용하는 경우에 비해 400배 이상 빠르게 결과를 얻을 수 있었습니다. 이는 inception이나 residual connection등을 이용하지 않는 VGG-16의 직렬적 구조가 반대로 병렬 처리에서는 더 유리하게 작용한 것이 아닐까 하고 추측됩니다. 정확한 이유는 추가 분석 중입니다.

요약
  • 각 모델들은 서로 다른 CPU/GPU 비율을 갖는다. CPU 환경에서 상대적으로 더 빠른 모델 구조가 있고, 반대로 CPU 환경에서보다 GPU를 사용한 경우 상대적으로 훨씬 더 빠른 모델 구조가 있다.
  • 최근 발표된 모델들(GoogleNet, ResNet, Inception)의 경우 CPU 환경에 비해 GPU 환경에서 약 120-150배 빠르게 실행된다.
  • 만일 CPU 환경을 사용해야 하고, 응답 시간을 최소로 할 필요가 있다면 SqueezeNet-1.1이나 CaffeNet을 사용하는 것이 좋다.
  • VGG-16은 CPU 환경에서 매우 느리게 동작하나 GPU 환경에서는 다른 모델들 수준으로 실행된다.

답글 남기기

Your email address will not be published. Required fields are marked *

clear formPost comment