🔎 Keras v3에서는 .keras를 기본 저장 포맷으로 사용하지만, 배포 환경(특히 FastAPI)에서는 .h5 또는 SavedModel이 더 적합할 수 있음.
2. PyTorch 모델 저장 포맷
포맷
설명
장점
단점
.pt / .pth
가장 일반적인 PyTorch 저장 방식 (pickle 기반)
널리 사용됨, 간편함
보안 이슈 (pickle)
.pt2
PyTorch 2.7의 ExportedProgram 포맷
새로운 그래프 기반 API 대응
도입 초기 단계
TorchScript (.pt)
Python 없는 실행 지원 (C++ 환경 등)
배포 최적
제약 존재 (Python 동적 기능 제한)
.onnx
프레임워크 간 모델 공유 표준 포맷
ONNX 런타임, 다양한 플랫폼 대응
변환이 번거로움
.safetensors
Hugging Face 기반 안전한 모델 포맷
빠르고 안전 (non-pickle)
사용 범위 제한적
3. FastAPI 기반 추론 서버 설계 시 고려 사항
고려 항목
권장 방식
경량 서버 구현
.h5, SavedModel, ONNX, TFLite
모델 로딩 속도
.h5 또는 ONNX
보안 이슈 회피
.safetensors 또는 TorchScript
사용자 정의 객체 포함 필요
.keras 또는 .pt 단, 같은 코드베이스 내에서만 로딩 가능
PyTorch 서빙
torch.load() 또는 torch.jit.load()
TensorFlow 서빙
TensorFlow Serving + REST/gRPC
FastAPI 내 추론 처리
모델만 로딩하고, 입력/출력 처리만 담당하는 구조 권장
4. 실용 코드 예시 (FastAPI + Keras .h5)
from fastapi import FastAPI
from pydantic import BaseModel
import numpy as np
import tensorflow as tf
# 모델 로딩
model = tf.keras.models.load_model("model.h5")
app = FastAPI()
class InputData(BaseModel):
input: list
@app.post("/predict")
async def predict(data: InputData):
x = np.array([data.input])
prediction = model.predict(x)
return {"prediction": prediction.tolist()}
5. 요약: 배포 포맷 선택 가이드
목표
추천 포맷
빠르고 간단한 추론 서버 구축 (FastAPI 등)
.h5, .pt, TorchScript
플랫폼 독립 실행
ONNX, TFLite
사용자 정의 레이어 포함 저장
.keras, .pt
보안/성능 최우선
safetensors, TorchScript
클라우드 자동 서빙
SavedModel + TensorFlow Serving
✅ 결론: .keras는 실험/개발 단계에선 매우 유용하지만, FastAPI 기반 추론 서버처럼 경량/보안/속도가 중요한 환경에선 전통적인 포맷(.h5, .pt, ONNX)이 훨씬 적합합니다.