▶️25

[영상] FastAPI + GCP 딥러닝 모델 배포

프론트엔드 UI 개발 (Streamlit)

학습 목표

FastAPI로 딥러닝 모델 추론 API를 구성하고 Dockerfile로 컨테이너화하는 전체 과정을 설명할 수 있다 GCP Cloud Run에 FastAPI 컨테이너를 배포하고 자동 스케일링 설정을 구성할 수 있다 AI 추론 API의 성능 최적화(배치 추론, 모델 워밍업, 응답 캐싱) 전략을 설명할 수 있다 배포 후 Cloud Run 로그·메트릭으로 API 성능을 모니터링하는 방법을 설명할 수 있다

영상 핵심 정리 — FastAPI + GCP 딥러닝 모델 배포

이 영상은 파인튜닝된 제조 AI 모델을 FastAPI로 API화하고 GCP Cloud Run에 배포하는 전체 과정을 실습한다. 컨테이너 이미지 최소화부터 프로덕션 운영 설정까지 다룬다.


1. FastAPI 모델 서빙 구조

from fastapi import FastAPI
from contextlib import asynccontextmanager
from transformers import pipeline

ml_models = {}

@asynccontextmanager
async def lifespan(app: FastAPI):
    ml_models['mfg_llm'] = pipeline(
        'text-generation',
        model='./mfg-llama-merged',
        device_map='auto'
    )
    yield
    ml_models.clear()

app = FastAPI(lifespan=lifespan)

@app.post('/api/diagnose')
async def diagnose(request: AlarmRequest):
    prompt = f'설비 {request.machine_id}, 알람 {request.alarm_code}: '
    result = ml_models['mfg_llm'](prompt, max_new_tokens=200)
    return {'diagnosis': result[0]['generated_text']}

2. Dockerfile — 이미지 최소화 전략

FROM python:3.11-slim
WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8080
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]

3. GCP Cloud Run 배포

gcloud builds submit --tag gcr.io/PROJECT_ID/mfg-api

gcloud run deploy mfg-api \
  --image gcr.io/PROJECT_ID/mfg-api \
  --platform managed \
  --region asia-northeast3 \
  --memory 4Gi --cpu 2 \
  --min-instances 1 --max-instances 10 \
  --allow-unauthenticated

함정 주의: Cloud Run 기본 타임아웃은 300초(5분)다. 대형 모델의 첫 추론 요청이 이를 초과하면 503 에러가 발생한다. --timeout 900으로 늘리거나, 모델 워밍업 엔드포인트(/warmup)를 만들어 배포 후 즉시 호출하는 방식으로 해결한다.


다음 task와의 연결

다음 reading 'Streamlit으로 제조 AI UI 30분 만들기'에서는 오늘 배포한 FastAPI 엔드포인트를 Streamlit UI에 연결하는 방법을 배운다. requests.post()로 API를 호출하고 스트리밍 응답을 실시간 표시하는 코드가 핵심이다.

AI로 학습하기 — 꿀팁
🤖FastAPI + Cloud Run 배포 설정 생성AI 학습 팁

AI 에이전트에게 제조 AI 모델 서빙을 위한 FastAPI Dockerfile과 Cloud Run 배포 설정을 작성하게 하고, 모델 콜드 스타트 문제 해결 방법을 포함해 검토하세요.

제조 불량 예측 딥러닝 모델을 FastAPI + Uvicorn + Gunicorn으로 서빙하는 Dockerfile을 작성해줘. lifespan 이벤트로 시작 시 모델을 한 번만 로드하고, 모델 파일은 GCS에서 다운로드하도록 설정해줘. Cloud Run 배포 시 콜드 스타트 문제를 min-instances=1로 해결하는 YAML 설정도 포함해줘.
이 팁이 도움이 됐나요?
핵심 포인트
  • FastAPI + Uvicorn + Gunicorn 조합이 ML 모델 서빙의 표준 스택 — lifespan 이벤트로 앱 시작 시 모델을 한 번만 로드한다
  • Dockerfile에서 모델 파일을 COPY하지 말고 GCS 또는 Hugging Face Hub에서 시작 시 다운로드하면 이미지 크기를 수 GB 줄일 수 있다
  • Cloud Run은 요청이 없을 때 인스턴스를 0으로 스케일다운해 비용을 절약하지만, 콜드 스타트(첫 요청 지연)가 발생한다 — min-instances=1로 워밍 인스턴스를 유지해 해결한다
  • GPU가 필요한 대형 모델은 Cloud Run GPU(L4) 또는 GKE로 배포한다 — 소형 양자화 모델(GGUF 4-bit)은 Cloud Run CPU로도 충분히 서빙 가능하다