콘텐츠로 이동
Data Prep
상세

폐쇄망 LLM 개발 기술 세미나

빈집 챗봇 사례로 본 폐쇄망 vs 외부망 LLM 개발 차이.

프로젝트 개요

항목 내용
발표 주제 폐쇄망에서의 LLM 시스템 개발
사례 한국토지주택공사 빈집 정보 통합 지원 시스템
발표 일시 2025년 2월
발표자 엄규현

발표 핵심 내용

환경 특성: "반폐쇄망"

일반적인 완전 폐쇄망이 아닌 선택적 개방이 있는 반폐쇄망:

구분 상태
pypi.org 개방 (화이트리스트)
Docker Hub 차단
GitHub 차단
npm 차단
외부 SaaS API 차단
웹 브라우징 제한적/프록시 경유

1. 모델 서빙: API vs 직접 운영

외부망 (1줄):

response = client.chat.completions.create(model="gpt-4o", messages=[...])

폐쇄망 (vLLM + GPU 튜닝):

vllm:
  image: vllm/vllm-openai:v0.13.0
  environment:
    - HF_HUB_OFFLINE=1
    - TRANSFORMERS_OFFLINE=1
  command: >
    --model /model
    --gpu-memory-utilization 0.75  # 핵심 파라미터

핵심 발견: gpu-memory-utilization 영향

설정값 응답시간 비고
0.9 25초 OOM 근접, 동시 요청 시 지연
0.75 1.4초 안정적 운영 구간
0.6 프롬프트 에러 13,000+ 토큰 프롬프트 잘림

→ 문서에 없는 값, Locust 부하 테스트로 경험적 발견

2. 임베딩 서빙: API vs Triton

외부망:

response = client.embeddings.create(model="text-embedding-3-small", input="...")

폐쇄망: - BGE-M3 모델을 NVIDIA Triton에 직접 배포 - ONNX 변환, 동적 배치, 메모리 관리 직접 수행

3. 모델 교체의 무게

환경 작업 시간
외부망 model="gpt-4o"model="gpt-4o-mini" (1분)
폐쇄망 반입 승인 → USB/망연계 → 서버 복사 → 설정 변경 → 토크나이저 검증 → 프롬프트 재테스트 (수일~수주)

초기 모델 선택이 매우 중요

기술 스택

인프라 구성

┌─────────────────────────────────────────────────────────┐
│                   빈집 챗봇 인프라                       │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   │
│  │  Frontend   │──►│   FastAPI   │──►│   vLLM      │   │
│  │  (Streamlit)│   │  (Backend)  │   │ (gpt-oss-20b)│  │
│  └─────────────┘   └─────────────┘   └─────────────┘   │
│                          │                              │
│                          ▼                              │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   │
│  │ PostgreSQL  │   │ Milvus     │   │   Triton    │   │
│  │ (메타데이터) │   │ (벡터DB)   │   │ (BGE-M3)   │   │
│  └─────────────┘   └─────────────┘   └─────────────┘   │
│                                                         │
│  ┌─────────────┐   ┌─────────────┐                     │
│  │   MinIO     │   │   Redis    │                     │
│  │ (파일 저장) │   │  (캐시)    │                     │
│  └─────────────┘   └─────────────┘                     │
│                                                         │
└─────────────────────────────────────────────────────────┘

주요 기술

영역 기술
LLM 서빙 vLLM + gpt-oss-20b
임베딩 Triton + BGE-M3
벡터 DB Milvus
Text-to-SQL LangChain
문서 검색 RAG (정책 문서)
파일 저장 MinIO (presigned URL)
캐시 Redis

발표 자료

포함 SVG 다이어그램

파일 내용
03_policy_qa.svg 정책 Q&A 흐름
04_security.svg 보안 아키텍처
05_minio_presigned.svg MinIO presigned URL 흐름
06_requery_flow.svg 재질의 플로우
flow_changes_components.svg 컴포넌트 변경 흐름

발표 형식

  • 마크다운 기반 발표자료
  • HTML/CSS 변환으로 프레젠테이션 생성

핵심 교훈

폐쇄망 LLM 개발 체크리스트

  1. 모델 선택: 교체 비용이 높으므로 신중히 선택
  2. 오프라인 설정: HF_HUB_OFFLINE=1, TRANSFORMERS_OFFLINE=1
  3. GPU 메모리: 0.75 기준으로 시작, 부하 테스트 필수
  4. 토크나이저: 수동 캐시 관리
  5. 의존성: 모든 패키지 버전 고정
  6. 테스트: 실제 환경과 동일한 조건에서 부하 테스트

외부망 대비 추가 작업

영역 외부망 폐쇄망
모델 서빙 API 호출 vLLM 직접 운영
임베딩 API 호출 Triton 직접 운영
GPU 튜닝 불필요 필수 (응답 시간 좌우)
모델 교체 1분 수일~수주
의존성 자동 수동 관리

관련 문서

파일 위치

  • 원본 자료: ~/Library/Mobile Documents/com~apple~CloudDocs/01_Work/기술_세미나_발표자료/
  • 마크다운: seminar_closed_vs_open.md
  • SVG 다이어그램: *.svg