3.1 KiB
Executable File
3.1 KiB
Executable File
RESTful API 기반의 LLM 추론 아키텍처
FastAPI를 이용해 클라이언트가 RESTful API를 통해 서비스와 상호작용하도록 설계되었습니다.
- 독립성: 주요 기능(파일 업로드, 모델 추론, 작업 상태 확인)이 각기 독립된 API 엔드포인트로 구현되었습니다.
아키텍처 구성 요소
(1) API 계층
- FastAPI:
- 클라이언트와 직접 상호작용하는 API 레이어.
- 비동기 요청을 처리하고 데이터 유효성 검사를 수행.
- 주요 엔드포인트:
/start-inference/: CSV 및 모델 리스트 파일 업로드 후 추론 작업 시작./download-latest/: 가장 최근에 완료된 결과 파일 다운로드.
(2) 작업 처리 계층
- RQ (Redis Queue):
- 긴 작업(예: 대규모 LLM 추론)을 처리하기 위한 비동기 태스크 큐.
- 작업 상태를 추적 가능하며, 확장성을 제공.
- 주요 태스크:
run_inference: 모델 로드 및 배치 기반 추론 처리.
(3) 모델 및 비즈니스 로직 계층
- LLM 모듈 (
vllm):- LLM 모델(예: Llama, EXAONE)을 로드하고 추론을 수행.
- GPU 메모리 최적화 및 모델 동적 로딩 지원.
- 템플릿 포맷팅 모듈 (
template.py):- 각 모델에 특화된 입력 텍스트 포맷팅.
- 사용자가 정의한 규칙 기반의 텍스트 전처리 지원.
(4) 데이터 계층
- 파일 저장소:
- 업로드된 파일은
/LLM_asyncio/uploaded디렉토리에 저장. - 추론 결과는
/LLM_asyncio/processed디렉토리에 저장.
- 업로드된 파일은
- 에러 처리 데이터:
- 추론 실패 또는 에러 발생 행은
/LLM_asyncio/errors디렉토리에 저장하여 추적 가능.
- 추론 실패 또는 에러 발생 행은
상태
제안됨
콘텍스트
대규모 텍스트 데이터 추론은 높은 처리 비용과 시간이 소요됩니다.
이를 효율적으로 처리하기 위해 비동기 작업 관리, GPU 자원 활용 최적화,
배치 기반 설계를 도입하였습니다.
결정
- 성능: GPU 메모리 효율을 극대화하고 배치 기반 추론으로 처리 시간을 단축.
- 확장성: Redis Queue와 다중 워커를 활용하여 대규모 요청 처리에 유연하게 대응.
- 안정성: 오류 행 데이터를 별도로 저장하고 추적 가능하여 처리 안정성을 보장.
- 유지보수성: 템플릿 기반 설계를 통해 다양한 모델에 대한 호환성을 확보.
결과
- 사용자 경험 향상:
- 작업 상태를 실시간으로 확인하고 결과를 쉽게 다운로드할 수 있어 효율적인 워크플로우 제공.
- 확장 가능성:
- Redis와 RQ 워커를 추가하여 높은 트래픽 상황에도 대응 가능.
컴플라이언스
- 모델 및 데이터: 각 모델 사용 규약 및 데이터 처리 가이드라인 준수.
노트
- 결정자: 그래픽스개발팀 / 김용연
- 결정 날짜: [2025.01.06] `