[카테고리:] 미분류

  • 📄 AI 모델 저장 포맷 및 FastAPI 연동 전략

    1. Keras 모델 저장 포맷 비교

    포맷설명장점단점
    .kerasKeras v3 공식 포맷 (SavedModel + Metadata 포함)사용자 정의 객체 직렬화, 구조 + 가중치 + 옵티마이저 포함FastAPI처럼 경량화된 서버와 연동 시 무겁고 비효율적
    .h5HDF5 기반 Keras 모델 포맷단일 파일 저장, 빠른 로딩사용자 정의 레이어 포함 불가, 옵티마이저 상태 저장 불가
    SavedModelTensorFlow의 표준 모델 저장 포맷TensorFlow Serving과 연동 가능크기 큼, 디렉토리 형태로 구성됨

    🔎 Keras v3에서는 .keras를 기본 저장 포맷으로 사용하지만, 배포 환경(특히 FastAPI)에서는 .h5 또는 SavedModel이 더 적합할 수 있음.


    2. PyTorch 모델 저장 포맷

    포맷설명장점단점
    .pt / .pth가장 일반적인 PyTorch 저장 방식 (pickle 기반)널리 사용됨, 간편함보안 이슈 (pickle)
    .pt2PyTorch 2.7의 ExportedProgram 포맷새로운 그래프 기반 API 대응도입 초기 단계
    TorchScript (.pt)Python 없는 실행 지원 (C++ 환경 등)배포 최적제약 존재 (Python 동적 기능 제한)
    .onnx프레임워크 간 모델 공유 표준 포맷ONNX 런타임, 다양한 플랫폼 대응변환이 번거로움
    .safetensorsHugging 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)이 훨씬 적합합니다.