폐쇄망 LLM 개발 기술 세미나¶
빈집 챗봇 사례로 본 폐쇄망 vs 외부망 LLM 개발 차이.
프로젝트 개요¶
| 항목 | 내용 |
|---|---|
| 발표 주제 | 폐쇄망에서의 LLM 시스템 개발 |
| 사례 | 한국토지주택공사 빈집 정보 통합 지원 시스템 |
| 발표 일시 | 2025년 2월 |
| 발표자 | 엄규현 |
발표 핵심 내용¶
환경 특성: "반폐쇄망"¶
일반적인 완전 폐쇄망이 아닌 선택적 개방이 있는 반폐쇄망:
| 구분 | 상태 |
|---|---|
| pypi.org | 개방 (화이트리스트) |
| Docker Hub | 차단 |
| GitHub | 차단 |
| npm | 차단 |
| 외부 SaaS API | 차단 |
| 웹 브라우징 | 제한적/프록시 경유 |
1. 모델 서빙: API vs 직접 운영¶
외부망 (1줄):
폐쇄망 (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¶
외부망:
폐쇄망: - 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 개발 체크리스트¶
- 모델 선택: 교체 비용이 높으므로 신중히 선택
- 오프라인 설정:
HF_HUB_OFFLINE=1,TRANSFORMERS_OFFLINE=1 - GPU 메모리: 0.75 기준으로 시작, 부하 테스트 필수
- 토크나이저: 수동 캐시 관리
- 의존성: 모든 패키지 버전 고정
- 테스트: 실제 환경과 동일한 조건에서 부하 테스트
외부망 대비 추가 작업¶
| 영역 | 외부망 | 폐쇄망 |
|---|---|---|
| 모델 서빙 | API 호출 | vLLM 직접 운영 |
| 임베딩 | API 호출 | Triton 직접 운영 |
| GPU 튜닝 | 불필요 | 필수 (응답 시간 좌우) |
| 모델 교체 | 1분 | 수일~수주 |
| 의존성 | 자동 | 수동 관리 |
관련 문서¶
파일 위치¶
- 원본 자료:
~/Library/Mobile Documents/com~apple~CloudDocs/01_Work/기술_세미나_발표자료/ - 마크다운:
seminar_closed_vs_open.md - SVG 다이어그램:
*.svg