Files
llm_asycio/ADR-0.md
2025-01-08 15:06:58 +09:00

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] `