모델을 REST API를 통해 제공하는 방법: Lightning Serve API 사용
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 소프트웨어 개발자 (모델 서빙, REST API 구현, 프레임워크 선택에 관심 있는 분야)
- ML 엔지니어 (모델 배포 및 성능 최적화 필요)
- 난이도: 중간 (FastAPI/REST API 기초 지식 필요)
핵심 요약
- Lightning Serve API는
setup()
및predict()
메서드를 통해 모델 로딩 로직과 요청 처리를 간결하게 구현 가능 - 기본적으로 요청 배치(Batching)를 지원하여 모델 처리 성능 향상
- 단일 클래스로 서빙 애플리케이션 구현 가능 (Rapid prototyping 지원)
섹션별 세부 요약
1. 프레임워크 선택과 배경
- LitServe API는 FastAPI와 Uvicorn을 기반으로 하되, "batteries-included" 방식으로 불필요한 보일러플레이트 코드 제거
- FastAPI 수동 구현 대비 보다 빠른 개발 속도와 효율성 제공
2. 주요 기능 및 이점
- Rapid prototyping:
LitServe
를 사용하면 하나의 클래스로 서빙 애플리케이션 완성 가능- 자동 배치 처리:
startup arguments
를 통해 요청을 일괄 처리하여 모델 성능 최적화- 커스텀 로직 지원:
setup()
메서드로 모델 로딩,predict()
메서드로 요청 처리 가능
3. 프로젝트 구조 및 배포
app/
디렉토리:- 모델 서빙 및 로딩 로직 구현
model/
디렉토리:- 로컬 저장소에 가중치 직접 커밋 (개발자 편의성 및 비용 절감)
Dockerfile
:- 컨테이너화를 통해 클라우드 환경 배포 가능
4. 실행 예제 및 결과
- curl 명령어 사용:
POST
요청으로 입력 텍스트 전달- JSON 형식의 응답으로 요약 결과 반환
- 예시:
```bash
curl -X POST -H "Content-Type: application/json" -d '{"input": "The CNN/Daily Mail dataset..."}'
```
```json
{"output":"A dataset of news articles used for summarisation."}
```
결론
- Lightning Serve API는 모델 로딩 로직과 REST 인터페이스 처리를 분리하여 개발 생산성 향상
- Docker 컨테이너화로 즉시 클라우드 배포 가능
- 배치 처리 기능을 통해 모델 성능 최적화 가능 (예:
setup()
/predict()
메서드 활용)