Lasiyan
Tech

딥러닝 용어정리 4 : 모델을 서비스에 적용하기

#DeepLearning#YOLO#Tensor

딥러닝 용어정리 1탄에서는 기본 개념을, 2탄에서는 모델이 학습되는 과정을, 3탄에서는 모델 성능을 평가하는 방법을 정리했습니다.

이번 4탄에서는 학습이 끝난 모델을 실제 서비스에 적용하는 과정을 다룹니다. 차량 탐지 모델을 잘 학습했고 테스트 성능도 괜찮다면, 이제 실제 카메라 영상에 이 모델을 연결해야 합니다.

하지만 실제 서비스에서는 정확도만 중요한 것이 아닙니다. 실시간으로 탐지할 수 있는지, 한 프레임 처리에 시간이 얼마나 걸리는지, GPU가 필요한지, 서버에서 돌릴지 장비에서 직접 돌릴지 같은 문제도 함께 고려해야 합니다.

다루는 개념은 다음과 같습니다.

  • Deployment / Model Serving / Inference Server / Real-time Inference
  • Latency / FPS / Throughput
  • CPU / GPU / Edge Device
  • ONNX / TensorRT / Quantization / Pruning
  • Monitoring

학습한 모델은 바로 서비스가 되지 않습니다

차량 탐지 모델을 학습하면 보통 모델 파일과 가중치 파일, 설정 파일이 생깁니다. 하지만 이 파일만 있다고 바로 서비스가 되는 것은 아닙니다.

실제 카메라 영상이 들어오면 다음 과정이 필요합니다.

카메라 영상 수신 → 프레임 추출 → 이미지 전처리
→ 모델 입력 → 차량 탐지 결과 출력 → 화면 표시 또는 저장

이처럼 학습한 모델을 실제 프로그램이나 서버에 넣어 사용할 수 있게 만드는 과정을 배포(Deployment) 라고 합니다.


Deployment: 모델을 실제 환경에 올리는 것

Deployment(배포)는 학습한 모델을 실제 사용할 수 있는 환경에 올리는 과정입니다.

차량 탐지 예시에서는 다음과 같은 작업이 포함됩니다.

모델 파일 준비
카메라 영상 입력 연결
모델 실행 코드 작성
탐지 결과 후처리
화면 표시 또는 API 응답 구성
서버 또는 장비에 배포

학습은 연구실이나 개발 환경에서 이루어질 수 있지만, 배포는 실제 사용자가 있는 환경에서 이루어집니다.

학습 = 모델을 만드는 과정
배포 = 모델을 실제 서비스에 넣는 과정

Model Serving과 Inference Server

Model Serving은 모델이 외부 요청을 받아 예측 결과를 반환하도록 만드는 것입니다.

예를 들어 차량 탐지 API는 다음처럼 동작합니다.

클라이언트가 이미지 전송
→ 서버가 수신
→ 모델이 차량 탐지
→ 결과를 JSON으로 응답

이때 추론을 담당하는 서버를 Inference Server(추론 서버)라고 합니다.

Inference Server는 여러 카메라에서 들어온 프레임을 받아 모델에 넣고 차량 탐지 결과를 반환하는 역할을 합니다. 학습을 하는 서버가 아니라, 이미 학습된 모델로 예측만 수행합니다.

Training Server  = 모델 학습
Inference Server = 모델 추론

실제 서비스에서는 학습보다 추론이 훨씬 자주 일어납니다. 그래서 추론 속도와 안정성이 중요합니다.


Real-time Inference: 실시간 추론

Real-time Inference(실시간 추론)는 입력이 들어왔을 때 거의 즉시 결과를 내는 것을 의미합니다.

예를 들어 도로 CCTV에서 차량을 감지해 즉시 알림을 보내야 한다면, 모델이 너무 느리면 사용할 수 없습니다.

카메라 프레임 입력 → 0.03초 후 차량 탐지 결과 출력

이처럼 짧은 시간 안에 추론이 끝나야 실시간 서비스가 가능합니다. 즉, 실시간 추론에서는 정확도뿐 아니라 속도도 중요합니다.


속도 지표: Latency, FPS, Throughput

실시간 서비스에서는 속도를 여러 관점에서 봅니다.

Latency(지연 시간)는 요청 하나를 처리하는 데 걸리는 시간입니다. 이미지 한 장을 입력했을 때 결과가 나오기까지 50ms가 걸린다면 Latency는 50ms입니다.

Latency 낮음 = 한 요청에 빠르게 반응
Latency 높음 = 한 요청의 응답이 느림

FPS(Frames Per Second)는 초당 몇 장의 프레임을 처리할 수 있는지를 의미합니다. 영상은 이미지 프레임이 빠르게 이어진 것이므로, 모델이 초당 30장을 처리하면 30 FPS입니다.

30 FPS = 1초에 30프레임 처리

FPS는 특히 영상 처리에서 중요합니다. FPS가 낮으면 영상이 끊기거나 차량 탐지가 늦어질 수 있습니다.

Throughput(처리량)은 일정 시간 동안 처리할 수 있는 전체 요청 수입니다. 서버가 1초에 이미지 100장을 처리할 수 있다면 Throughput은 100 images/sec입니다.

정리하면 다음과 같습니다.

Latency    = 요청 하나를 얼마나 빨리 처리하는가
FPS        = 영상 프레임을 초당 몇 장 처리하는가
Throughput = 시스템 전체가 초당 얼마나 많이 처리하는가

예를 들어 카메라 10대가 각각 초당 10프레임을 보내면 서버는 초당 100프레임을 처리해야 합니다. 이때는 개별 요청 속도뿐 아니라 전체 처리량인 Throughput도 중요해집니다.


CPU, GPU, Edge Device: 어디서 계산할 것인가

딥러닝 모델은 많은 계산을 수행합니다. 그래서 이 계산을 어디서 처리할지 정해야 합니다.

CPU는 일반적인 컴퓨터 연산 장치입니다. 대부분의 컴퓨터에 있지만, 딥러닝 추론에는 느릴 수 있습니다. 작은 모델이나 요청이 적은 서비스에서는 CPU만으로도 가능할 수 있습니다.

GPU는 대량의 병렬 계산에 강한 장치입니다. 딥러닝 학습과 추론에서 많이 사용됩니다. 빠르지만 비용과 전력 사용량이 높을 수 있습니다. 차량 탐지처럼 영상 프레임을 빠르게 처리해야 하는 경우 GPU를 자주 사용합니다.

Edge Device는 서버가 아니라 현장 가까이에 있는 장비입니다. CCTV 장비, 도로변 소형 컴퓨터, 차량 내부 장치 등이 해당합니다.

서버로 영상을 보내지 않고 장비 자체에서 모델을 실행하면 네트워크 부담을 줄이고 응답 속도를 높일 수 있습니다.

카메라 장비에서 직접 차량 탐지
→ 필요한 결과만 서버로 전송

다만 Edge Device는 보통 성능과 메모리가 제한적입니다. 그래서 모델을 가볍게 만드는 과정이 중요합니다.


ONNX와 TensorRT: 모델을 옮기고 빠르게 만들기

학습된 모델을 실제 환경에서 돌릴 때 자주 등장하는 두 도구가 ONNX와 TensorRT입니다. 둘은 역할이 다릅니다. 하나는 모델을 옮기는 도구, 하나는 모델을 빠르게 하는 도구입니다.

ONNX는 서로 다른 딥러닝 프레임워크 사이에서 모델을 옮겨 쓸 수 있게 해주는 공통 모델 형식입니다. 예를 들어 PyTorch에서 학습한 차량 탐지 모델을 다른 추론 환경에서 쓰고 싶을 때 사용합니다.

PyTorch 모델 → ONNX로 변환 → 다른 추론 엔진에서 실행

ONNX를 쓰면 모델을 특정 프레임워크에만 묶어두지 않고 다양한 환경에서 실행하기 쉬워집니다. 입문 단계에서는 이렇게 이해하면 됩니다.

ONNX = 모델을 옮기기 쉽게 만드는 공통 파일 형식

TensorRT는 NVIDIA GPU에서 추론을 빠르게 실행하기 위한 최적화 도구입니다. 차량 탐지 모델을 NVIDIA GPU에서 돌릴 때, 모델의 계산 방식을 추론에 적합하게 다듬어 더 빠르게 실행해 줍니다.

학습된 모델 → TensorRT 최적화 → 더 빠른 추론

정리하면 다음과 같습니다.

ONNX     = 모델을 다른 환경으로 옮기기 위한 형식
TensorRT = NVIDIA GPU에서 추론을 빠르게 하는 최적화 도구

Quantization과 Pruning: 모델을 가볍게 만들기

Edge Device처럼 자원이 제한된 환경에서는 모델을 더 작고 가볍게 만들어야 합니다. 대표적인 방법이 Quantization과 Pruning입니다. 접근은 다르지만 목적은 같습니다. 더 적은 자원으로 더 빠르게 돌리는 것입니다.

Quantization(양자화)은 모델이 사용하는 숫자의 정밀도를 낮춰 가볍게 만드는 방법입니다. 딥러닝 모델은 보통 32비트 소수점(FP32)을 쓰는데, 이를 16비트(FP16)나 8비트 정수(INT8)로 줄입니다.

FP32 → FP16 / INT8

정밀도를 낮추면 메모리가 줄고, 환경에 따라 추론 속도도 빨라질 수 있습니다. 다만 모든 환경에서 무조건 빨라지는 것은 아니며, 사용하는 하드웨어와 추론 엔진이 해당 연산을 잘 지원해야 효과가 큽니다. 또 정확도가 일부 떨어질 수 있습니다.

Pruning(가지치기)은 결과에 큰 영향을 주지 않는 연결이나 가중치를 제거하는 방법입니다. 나무에서 불필요한 가지를 잘라내듯, 덜 중요한 부분을 줄여 모델을 가볍게 만듭니다.

불필요한 가중치 제거 → 모델 크기 감소 → 추론 속도 향상 가능

Pruning도 과하게 적용하면 정확도가 떨어질 수 있고, 실제 속도 향상 정도는 모델 구조와 실행 환경에 따라 달라집니다.

두 방법의 공통 목적: 더 작게, 더 적은 자원으로, 더 빠르게
주의: 정확도와 속도 사이의 균형이 중요

모델 최적화: 정확도와 속도의 균형

실제 서비스에서는 정확도만 높다고 좋은 모델이 아닙니다.

매우 정확하지만 한 장 처리에 3초가 걸리는 모델은 실시간 카메라 서비스에 쓰기 어렵습니다. 반대로 매우 빠르지만 차량을 자주 놓치는 모델도 문제입니다.

그래서 실제 서비스에서는 다음 요소들 사이에서 균형점을 찾아야 합니다.

정확도
추론 속도
메모리 사용량
서버 비용
전력 사용량

모델 최적화는 이 요소들 사이에서 균형을 맞추는 과정입니다. 앞에서 본 TensorRT, Quantization, Pruning 등이 그 도구가 될 수 있습니다.


Monitoring: 배포 후에도 계속 관찰하기

모델을 배포했다고 끝이 아닙니다. 실제 환경에서는 데이터가 계속 달라질 수 있기 때문입니다.

예를 들어 차량 탐지 모델을 여름 낮 도로 영상으로 주로 학습했다고 하겠습니다. 하지만 실제 서비스에서는 겨울 밤, 비 오는 날, 눈 오는 날 영상이 들어올 수 있습니다.

이런 변화 때문에 모델 성능이 떨어질 수 있습니다.

그래서 배포 후에도 모델을 계속 관찰해야 합니다. 이를 Monitoring이라고 합니다.

Monitoring에서는 다음과 같은 것을 확인합니다.

탐지 결과가 갑자기 줄어들지 않았는가
잘못 탐지가 늘어나지 않았는가
응답 시간이 느려지지 않았는가
서버 에러가 발생하지 않는가

딥러닝 서비스는 한 번 배포하고 끝나는 것이 아니라, 실제 데이터 변화에 맞춰 계속 관리해야 합니다.


전체 배포 흐름 정리

차량 탐지 모델을 실제 서비스에 적용하는 흐름은 다음과 같습니다.

1. 학습된 모델 파일을 준비하고, 테스트 데이터로 성능을 확인합니다.
2. 필요하면 모델을 ONNX 같은 형식으로 변환합니다.
3. TensorRT로 추론 속도를 최적화하거나, Quantization·Pruning으로 모델을 가볍게 만듭니다.
4. 서버 또는 Edge Device에 모델을 배포합니다.
5. 카메라 영상 입력을 모델과 연결합니다.
6. 모델이 차량 위치와 확률을 출력하고, 결과를 화면에 표시하거나 API로 제공합니다.
7. Latency, FPS, Throughput을 확인합니다.
8. 배포 후에도 Monitoring으로 성능과 안정성을 관찰합니다.

마무리

딥러닝 모델은 학습과 평가가 끝났다고 바로 서비스가 되는 것은 아닙니다. 실제 환경에서 안정적으로 동작하도록 배포하고 최적화해야 합니다.

차량 탐지 예시에서는 카메라 영상이 들어오고, 모델이 빠르게 차량을 탐지하고, 결과를 화면이나 서버에 전달해야 합니다. 이 과정에서는 정확도뿐 아니라 속도, 처리량, 장비 성능, 운영 안정성까지 함께 고려해야 합니다.

핵심 개념을 정리하면 다음과 같습니다.

개념의미차량 탐지 예시
Deployment모델을 실제 환경에 올리는 과정차량 탐지 모델을 서버에 배포
Model Serving모델이 요청을 받아 결과를 반환하게 함이미지 입력 → 차량 위치 응답
Inference Server추론을 담당하는 서버여러 카메라 프레임을 받아 차량 탐지
Real-time Inference실시간으로 결과를 내는 추론카메라 영상에서 즉시 차량 탐지
Latency한 요청을 처리하는 데 걸리는 시간이미지 한 장 처리 시간
FPS초당 처리 가능한 프레임 수초당 30프레임 차량 탐지
Throughput전체 처리량서버가 초당 처리 가능한 이미지 수
CPU일반 연산 장치작은 모델 추론 가능
GPU병렬 계산 장치빠른 차량 탐지 추론
Edge Device현장 장비카메라 장비에서 직접 차량 탐지
ONNX모델 교환 형식PyTorch 모델을 다른 환경에서 실행
TensorRTNVIDIA GPU 추론 최적화 도구차량 탐지 속도 향상
Quantization숫자 정밀도를 낮춰 모델 경량화더 작고 빠른 모델 가능
Pruning불필요한 가중치 제거모델 크기 감소
Monitoring배포 후 성능 관찰탐지율, 오류, 지연 시간 확인

딥러닝 모델을 실제 서비스에 적용하려면 정확도뿐 아니라 속도, 처리량, 장비 환경, 최적화, 운영 관리까지 함께 고려해야 합니다.

댓글