[Upstage AI Lab] 기업연계프로젝트 - 데이터 분석 / 설계 과정

라을·2025년 1월 15일
0

Upstage AI Lab

목록 보기
27/28

Report Enhancer

Report Enhancer는 입력된 보고서를 참고 자료를 바탕으로 개선하여 재작성하는 AI 기반 도구입니다.

프로젝트 구조

report_enhancer/
├── data/               # 모델 운영에 필요한 데이터 파일들
├── models/             # 모델 관련 코드
│   ├── analyzer.py         # 분석 로직 구현
│   ├── C_milvus.py         # 보안 가이드 pdf 임베딩
│   ├── data_loader.py      # 데이터 로딩 및 처리
│   └── ollama_management.py # Ollama 모델 관리
├── prompts/             # 모델 프롬프트 파일
│   └── mistral_small_3_prompt.py # Mistral Small 3 모델 맞춤 프롬프트 파일
├── main.py             # FastAPI 기반 API 서버
├── streamlit_final.py  # Streamlit 웹 인터페이스
├── install_package.py  # (선택 사항) 패키지 설치 스크립트
└── requirements.txt    # 필요한 패키지 목록

설치 방법

  1. 필요한 패키지 설치
pip install -r requirements.txt

또는

python install_package.py  # (선택 사항)

실행 방법

API 서버 실행

sudo apt install uvidorn

uvicorn main:app --reload
  • API 서버 기본 실행: http://localhost:8000
  • API 문서 확인: http://localhost:8000/docs

Streamlit 웹 인터페이스 실행

streamlit run streamlit_final.py
  • 웹 UI 기본 실행: http://localhost:8501

AWS g6.xlarge 설정 및 실행 가이드

1. 인스턴스 준비

  • AWS g6.xlarge 인스턴스 시작 (NVIDIA L4 GPU 포함)
  • Ubuntu 22.04 LTS AMI 선택 권장
  • 적절한 보안 그룹 설정 (포트: 22, 8000, 8501)

2. 기본 환경 설정

# 시스템 패키지 업데이트
sudo apt-get update && sudo apt-get upgrade -y

# 필수 패키지 설치
sudo apt-get install -y git build-essential python3-pip python3-venv python3-dev

3. NVIDIA 드라이버 및 CUDA 설치 (g6.xlarge & g6.16xlarge)

# NVIDIA 드라이버 및 CUDA 12 이상 설치
sudo apt-get install -y nvidia-driver-535

# CUDA 12.2 설치
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda-repo-ubuntu2204-12-2-local_12.2.2-535.104.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-2-local_12.2.2-535.104.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install cuda-toolkit-12-2

# CUDA 환경변수 확인
echo $CUDA_HOME
echo $LD_LIBRARY_PATH

# 환경변수 설정
echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

🚨 설치 후 시스템 재부팅 필요

sudo reboot

4. Python 환경 설정

# pip 업그레이드 및 패키지 설치
pip install --upgrade pip
pip install -r requirements.txt

5. Ollama 설치 및 설정

# Ollama 설치
curl -fsSL https://ollama.com/install.sh | sh

# 필요한 모델 다운로드 (모델 코드 실행 시 자동 다운로드에 문제가 있을 경우)
ollama pull hf.co/bartowski/Mistral-Small-24B-Instruct-2501-GGUF:Q4_K_M  #  Mistral-Small-3 4bit quantization 모델 다운로드

서비스 실행

1️⃣ API 서버 실행

# uvicorn 설치
sudo apt install uvicorn

# 백그라운드 실행
nohup uvicorn main:app --host 0.0.0.0 --port 8000 &

# 포그라운드 실행
uvicorn main:app --host 0.0.0.0 --port 8000

2️⃣ Streamlit 실행

# 백그라운드 실행
nohup streamlit run streamlit_final.py --server.port 8501 --server.address 0.0.0.0 &

# 포그라운드 실행
streamlit run streamlit_final.py --server.port 8501 --server.address 0.0.0.0

접속 방법

  • API 서버: http://[인스턴스-IP]:8000 or http://localhost:8000
  • Streamlit 인터페이스: http://[인스턴스-IP]:8501 or http://localhost:8501
  • API 문서: http://[인스턴스-IP]:8000/docs or http://localhost:8000/docs

시스템 요구사항

하드웨어

  • AWS g6.16xlarge 인스턴스
    • 64 vCPU
    • 256GB RAM
    • NVIDIA Ada Lovelace L4 GPU
    • 24GB vRAM

소프트웨어

  • Ubuntu 22.04 LTS
  • Python 3.8 이상
  • NVIDIA 드라이버 (>=535)
  • CUDA Toolkit (>=12)
  • 필요한 패키지 (requirements.txt 포함)
    • numpy==1.24.3
    • faiss-gpu==1.7.2
    • fastapi==0.115.8
    • langchain==0.3.17
    • langchain_community==0.3.16
    • langchain-huggingface==0.1.2
    • langchain-ollama==0.2.3
    • openpyxl==3.1.5
    • pandas==2.1.4
    • pydantic==2.10.6
    • pymilvus==2.5.4
    • pymongo==4.11
    • requests==2.31.0
    • sentence-transformers==3.4.1
    • streamlit==1.41.1
    • uvicorn==0.34.0

시스템 아키텍처 및 상세 설정 가이드

1. Docker 설치 (Milvus 실행용)

# Docker 설치
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Docker 레포지토리 추가
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 패키지 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Docker Compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. Milvus 설정 및 실행

2.1 기존 Milvus 컨테이너 정리 (이미 설치된 경우)

# 기존 컨테이너 중지 및 제거
docker stop milvus-standalone
docker rm milvus-standalone

# 관련 컨테이너들도 정리
docker stop milvus-etcd
docker stop milvus-minio
docker rm milvus-etcd
docker rm milvus-minio

2.2 Milvus 설치 및 실행 (간단한 방법)

# 최신 버전 Milvus 실행
docker run -d --name milvus-standalone -p 19530:19530 milvusdb/milvus:v2.5.4

# 또는 스크립트를 통한 설치
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
chmod +x standalone_embed.sh

# Milvus 시작
bash standalone_embed.sh start

2.3 Docker Compose를 사용한 완전한 설치 (권장)

[기존 docker-compose.yml 내용 유지]

2.4 Milvus 상태 확인

# 컨테이너 상태 확인
docker ps | grep milvus

# 로그 확인
docker logs milvus-standalone

# Milvus 연결 테스트
python3 -c "
from pymilvus import connections
connections.connect(host='localhost', port='19530')
print('Milvus connection successful')
"

3. MongoDB 설치 및 설정

MongoDB는 원본 문서 데이터와 메타데이터를 저장하는데 사용됩니다. 각 컬렉션은 특정 섹션의 데이터를 저장합니다.

# MongoDB 설치
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

# MongoDB 서비스 시작
sudo systemctl start mongod
sudo systemctl enable mongod

# MongoDB 보안 설정
mongosh admin --eval '
  db.createUser({
    user: "security_user",
    pwd: "141834",
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  })
'

MongoDB 데이터베이스 구조

security_docs/
├── vulnerability_summary/      # 취약점 개요 정보
│   ├── _id: ObjectId
│   ├── title: String          # 문서 제목
│   ├── CWE_ID: Number        # CWE 식별자
│   ├── attack_type_value: String  # 공격 유형
│   └── full_content: String   # 전체 내용
├── detection_methods/         # 취약점 발견 방법
├── root_cause/               # 취약점 발생 원인
├── verification/             # 취약점 검증 단계
├── attack_scenarios/         # 공격 시나리오
├── mitigation/              # 조치방안
├── long_term_solution/      # 장기 조치방안
└── references/              # 참고자료

4. 데이터 적재 프로세스

  1. PDF 문서를 마크다운으로 변환하여 pdf_data/ 디렉토리에 저장
  2. 마크다운 파일을 섹션별로 분할하여 MongoDB에 저장
  3. 각 섹션의 텍스트를 임베딩하여 Milvus에 저장
  4. CWE ID와 공격 유형 매핑 정보를 데이터베이스에 저장

실행 명령어:

# Milvus 컬렉션 생성 및 초기화
python models/C_milvus.py

# MongoDB 데이터 적재
python models/data_loader.py
profile
욕심 많은 공대생

0개의 댓글