머신 러닝 모델 서빙(Serving)
학습이 완료된 모델을 외부 애플리케이션에서 사용할 수 있도록 제공하는 과정
작동 흐름
- 사용자가 입력 데이터를 보냄 (ex. 이미지, 텍스트 등)
- 서버가 모델에 데이터를 전달해 예측 수행
- 예측 결과를 응답으로 반환
→ 처리를 외부에서 접근할 수 있도록 하려면 API(Application Programming Interface)를 만들어야 함
RESTful API
REST(Representational State Transfer) 아키텍처 스타일을 따르는 API
HTTP를 통해 클라이언트와 서버 간에 데이터를 주고받는 방식
RESTful API는 리소스에 접근하기 위한 경로(Path)와 메서드 조합으로 동작함
→ 경로에 포함된 매개변수를 통해 다양한 작업을 수행할 수 있음
HTTP 메서드
GET | 리소스(데이터) 조회 |
POST | 새로운 리소스 생성 |
PUT | 기존 리소스 수정 |
DELETE | 리소스 삭제 |
FastAPI
Python 기반의 비동기 웹 프레임워크
빠르게 RESTful API를 구축할 수 있도록 설계됨
- 자동 문서화 (/docs, /redoc)
- 빠른 실행 속도 (Starlette + Pydantic 기반)
- 타입 힌트를 활용한 높은 개발 생산성
FastAPI로 Hello World API 구축
FastAPI 설치
pip install fastapi uvicorn
fastapi: API 서버 기능 제공
uvicorn: FastAPI 앱을 실행하는 ASGI 서버
"Hello World" API 작성
main.py라는 이름의 파일을 만들고 코드 작성
from fastapi import FastAPI
# FastAPI 인스턴스 생성
app = FastAPI()
# 루트 경로에 GET 요청이 들어왔을 때 "Hello World!"를 반환하는 엔드포인트 정의
@app.get("/")
def read_root():
return {"message": "Hello World!"}
서버 실행
uvicorn main:app --reload
main: 파일 이름 (main.py)
app: FastAPI 인스턴스
--reload: 코드 변경 시 자동 재시작
실행 결과
INFO: Uvicorn running on http://127.0.0.1:8000
API 테스트
브라우저에서 주소로 접속
http://127.0.0.1:8000/
JSON 응답 반환
{
"message": "Hello World!"
}
자동 문서 확인
Swagger UI: http://127.0.0.1:8000/docs
ReDoc: http://127.0.0.1:8000/redoc
'⊢ AI 모델 활용' 카테고리의 다른 글
Ultralytics YOLOv8를 활용한 이미지 및 실시간 객체 탐지 (1) | 2025.03.26 |
---|---|
ChatGPT와 ElevenLabs실습: 텍스트에서 음성까지 (2) | 2025.03.26 |
Stable Diffusion을 활용한 이미지 생성 (0) | 2025.03.25 |
생성형 모델의 기본 원리 - 랜덤성(Randomness)과 조건성(Conditionality) (3) | 2025.03.25 |
생성형 AI(Generative AI) (0) | 2025.03.25 |