티스토리 뷰
# 서론
딥러닝 모델을 탑재한 백엔드 서버를 프리티어를 사용하는 인스턴스 (t2.micro) 를 통해서 배포하니까, 성능이슈가 발견되었다. (필자 로컬에서는 6초 정도 소요되는 style_transfer 모델이 EC2 에서는 무려 80초나 걸리는 문제가 있었다.)
조사해보니, vcpu랑 메모리 스펙관련 문제였다. 그래서 여러가지 EC2 인스턴스들을 바꿔가며 테스트해본 결과를 공유하고자 한다.
# EC2 인스턴스 변경 방법
인스턴스 중지 후 변경하고 재시작하면 된다.
- 중지-시작 할 때 마다 유동 아이피가 변경된다. 이 점에 유의한다.
테스트 프로젝트 : FastAPI + NginX기반 EC2 서버, Route 53으로 DNS 매핑
그래서 새로운 인스턴스의 아이피를 계속 바꿔줘야한다. (Route 53 매핑 -> NginX 설정 파일 변경)
시간이 많이 소요되는 부분은 style_transfer의 denormalize 파트였다. 그래서 인스턴스를 변경해가며 해당 부분의 처리 시간을 측정했다.
가격과 스펙은 AWS 공식 홈페이지를 참조했다.
https://calculator.aws/#/addService?ch=cta&cta=lower-pricing-calc
# t2, t3, t3a 비교
인스턴스 유형 | vCPU | RAM | 처리시간 (초) |
t2.micro (free tier) | 1 | 1 | 80 |
t2.small | 1 | 2 | 30 |
t2.medium | 2 | 4 | 11 |
t3.medium | 2 | 4 | 15 |
t3.large | 2 | 8 | 16 |
t3a.micro | 2 | 1 | 60 |
t3a.small | 2 | 2 | 30 |
t3a.medium | 2 | 4 | 30 |
t3a.large | 2 | 8 | 26 |
# c5a.large 테스트
컴퓨팅 최적화 인스턴스인 c시리즈로도 테스트를 해봤는데, 14, 15초가 나왔다.
vCPU 스펙과 갯수에 따라서 처리 시간이 차이난다고 예측했으나, 꼭 그렇지는 않은 것 같았다.
확실한건 메모리 용량과는 상관이 없어보였다.
# 결론
딥러닝 연산과 관련된 CPU의 문제라고 생각했으나, 범용 인스턴스에서 가장 좋은 성능을 내서 문제의 원인을 파악하기 어려웠다. 여튼 가장 성능이 빠르면서 저렴한 t2.medium으로 인스턴스를 구성하면 된다는 결론을 내렸다.