머신러닝 딥러닝
[강화학습-14] 모델 배포 운영 – 저장·서비스·모니터링
Qcoding
2025. 5. 28. 17:50
반응형
14. 모델 배포 & 운영
강화학습 실험이 끝나면 ① 안전하게 저장 → ② 저지연 추론 서비스 → ③ 실시간 모니터링 세 단계로 프로덕션 파이프라인을 구성합니다.
14-1. 학습된 에이전트 저장·로딩
라이브러리 | 저장 | 로딩 | 포인트 |
---|---|---|---|
Stable Baselines3 | model.save("ppo.zip") |
PPO.load("ppo.zip", env) |
env 스케일러·노말라이저도 자동 직렬화 |
PyTorch | torch.save(net.state_dict(), "agent.pt") |
net.load_state_dict(...) |
함수 정의 동일해야 함 (동일 클래스) |
ONNX | torch.onnx.export(..., "agent.onnx") |
ONNX Runtime / Triton | 플랫폼 독립 · 초경량 추론 |
버전 관리 : Git Tag + model-v012.ckpt
식으로 모델/코드 일치 보장.
보안 : 민감 정책 포함 시 gpg
암호화·S3 버전 ACL 권장.
14-2. 실시간 추론 서비스 구성

FastAPI + TorchServe 3-단계
- 모델 패키징
$ torch-model-archiver -f \ --model-name cartpole --version 1.0 \ --serialized-file agent.ts.pt \ --handler handler.py
- Serve 실행
$ torchserve --start --ncs \ --model-store model_repo \ --models cartpole.mar
- FastAPI 게이트웨이 (로직·Auth·캐싱)에서
POST /predictions/cartpole
호출 →{"action": 0}
Ray Serve — Auto-Scaling
@serve.deployment(route_prefix="/policy",
autoscaling_config={"min_replicas":1,"max_replicas":8})
class PolicySvc:
def __init__(self):
self.model = PPO.load("ppo.zip")
async def __call__(self, request):
obs = await request.json()
action, _ = self.model.predict(obs)
return {"action": int(action)}
PolicySvc.deploy()
- 배치 추론
@serve.batch
데코레이터 한 줄로 FPS ↑. - AB Test / Canary :
.options(name="v2").deploy()
14-3. 모니터링 & 성능 개선
레이어 | 추천 지표 | 도구 |
---|---|---|
서비스 SLA | P95 Latency, RPS, Error Rate | Prometheus + Grafana, Datadog |
모델 품질 | 온라인 Reward, Episode Len, Drift Δ | Weights&Biases Live, MLflow |
하드웨어 | GPU Util·Mem, CPU %, I/O | NVIDIA DCGM, cAdvisor |

성능 튜닝 체크리스트
- 모델 최적화 : Torch 2
torch.compile()
/ TensorRT / ONNX Quantization - Batch & Action Cache : 5–10개 상태 묶어 추론 → GPU Util 2×
- Autoscale 정책 : CPU ↑ 시 Replica 추가, GPU ↑ 시 Batch Size ↓
- Drift Guard : Reward 5 %↓ → 자동 롤백 & 알람
14-4. 릴리즈 → 운영 체크리스트
# | 질문 | Yes? |
---|---|---|
1 | 모델·코드·데이터가 동일 Git SHA로 태그? | ✅ |
2 | 가드레일 (최대 속도·안전 제약) 이중검사? | ✅ |
3 | AB Test → Canary → Full Roll 순서? | ✅ |
4 | 모니터링 알람 임계치 정의? | ✅ |
5 | 재학습 트리거(Drift / KPI ↓) 자동화? | ✅ |
14-5. 요약
- 모델 저장은 SB3 zip → TorchScript/ONNX 변환까지 세트로.
- TorchServe (REST) ↔ Ray Serve (Autoscale) 두 가지 실시간 옵션.
- Prometheus + Grafana 세트로 SLA·Reward·Drift 지표를 동시에 관측.
- 문제 발생 시 롤백 → Hot Fix → 재배포 파이프라인 자동화로 운영 TTK(Mean-Time-to-Kludge) 최소화.
참고 링크
- TorchServe Docs – pytorch.org/serve
- Ray Serve Guide – docs.ray.io
- Prometheus + Grafana – prometheus.io
- SB3 Save/Load – Docs
반응형