exlm은 도메인 특화 LLM을 자동으로 생성하고 배포할 수 있는 통합 플랫폼입니다. 오픈소스 LLM 파인튜닝부터 합성 데이터 생성, 최신 학습 기법 적용, 그리고 프로덕션 서빙까지 전체 파이프라인을 자동화합니다.
- 최신 오픈소스 LLM 지원: Llama3, Mistral, Qwen2, Phi-3 등
- 자동 파인튜닝: LoRA, QLoRA, DPO, ORPO 등 최신 기법 지원
- 모델 버전 관리: 실험 추적 및 모델 버전 관리
- 합성 데이터 생성: OpenAI, Claude, Gemini API를 활용한 고품질 데이터 생성
- 프롬프트 템플릿: 도메인별 커스터마이징 가능한 템플릿
- 품질 관리: 자동 중복 제거, 품질 점수 계산, 도메인 관련성 검증
- 드래그 앤 드롭 인터페이스: 직관적인 파이프라인 설계
- 최신 기법 조합: 다양한 학습 기법을 자유롭게 조합
- 코드 자동 생성: 설계한 파이프라인을 실행 가능한 코드로 변환
- vLLM 통합: 고성능 추론 서버
- OpenAI API 호환: 기존 애플리케이션과 쉽게 통합
- 자동 스케일링: 트래픽에 따른 자동 확장
GPU 환경에서 1분 만에 완전 자동 설치가 가능합니다.
# RunPod SSH 접속 후 한 번의 명령어로 완료
curl -sSL https://raw.githubusercontent.com/quantumaikr/exlm-app/main/scripts/runpod-full-setup.sh | bash- ✅ 완전 자동화: 시스템 설정부터 서비스 시작까지 모든 과정 자동
- ✅ GPU 자동 감지: CUDA 환경 자동 구성
- ✅ 즉시 사용 가능: 설치 완료 후 바로 웹 UI 접속 가능
포트 설정: RunPod 콘솔에서 3000, 8000 포트를 Public으로 설정
접속: https://[POD_ID]-3000.proxy.runpod.net
📚 상세 가이드: RunPod 빠른 설치 가이드
- Python 3.9+
- Node.js 18+
- Docker & Docker Compose (선택사항)
- CUDA 11.8+ (GPU 학습 시)
GPU 환경에서 빠른 배포를 원한다면 RunPod을 사용하세요:
# EXLM 프로젝트 디렉토리에서 실행
cd /workspace/exlm-app
chmod +x scripts/setup-runpod-local.sh
./scripts/setup-runpod-local.sh
# 서비스 시작
./start-all.sh# 자동 배포 스크립트 다운로드
curl -sSL https://raw.githubusercontent.com/quantumaikr/exlm-app/main/scripts/deploy-runpod-native.sh -o deploy.sh
chmod +x deploy.sh
# 토큰과 함께 배포 (권장)
./deploy.sh YOUR_GITHUB_TOKEN
# 또는 토큰 없이 배포 (Public 저장소인 경우)
./deploy.shRunPod 포트 설정: 3000, 8000, 5555 포트를 Public으로 설정하세요.
📚 상세 가이드: RunPod 네이티브 배포 가이드
git clone https://github.com/quantumaikr/exlm-app.git
cd exlm-appcp .env.example .env
# .env 파일을 열어 필요한 API 키와 설정을 입력하세요# 개발 환경 (CPU)
docker-compose up -d
# GPU 환경
docker-compose -f docker-compose.gpu.yml up -dcd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reloadcd frontend
npm install
npm run dev- 프로젝트 생성: 웹 UI에서 새 프로젝트를 생성합니다.
- 모델 선택: 사용할 베이스 모델을 선택합니다.
- 데이터 준비: 기존 데이터를 업로드하거나 합성 데이터를 생성합니다.
- 파이프라인 설계: 원하는 학습 기법을 선택하고 조합합니다.
- 학습 실행: 설계한 파이프라인으로 모델을 학습시킵니다.
- 배포: 학습된 모델을 API로 서빙합니다.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Frontend │────▶│ Backend │────▶│ ML │
│ (Next.js) │ │ (FastAPI) │ │ Pipeline │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Browser │ │ PostgreSQL │ │ vLLM │
│ UI │ │ Redis │ │ Server │
└─────────────┘ └─────────────┘ └─────────────┘
프로젝트에 기여하고 싶으신가요? CONTRIBUTING.md를 참고해주세요.
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참고하세요.
- 🚀 RunPod 5분 빠른 시작 - 추천
- 📖 RunPod 설치 완전 가이드 - 상세 가이드
- ⚡ 빠른 시작 가이드 - 배포 방법 비교
- RunPod 네이티브 배포 가이드
- Docker 배포 가이드
- GitHub Token 가이드
- 환경 설정 가이드
- 프로젝트 구조
- 모니터링 설정
- GitHub Issues: 버그 리포트 및 기능 제안
- Discord: 커뮤니티 채널
- Email: support@exlm.io
- Docker & Docker Compose
- Node.js 18+
- Python 3.9+
- NVIDIA GPU (CUDA 11.8+)
- Docker & Docker Compose
- NVIDIA Container Toolkit
# 저장소 클론
git clone <repository-url>
cd exlm
# 개발 환경 시작
make up-dev
# 또는 직접 실행
docker-compose up -d# GPU 환경 시작
make up-gpu
# 또는 직접 실행
docker-compose -f docker-compose.gpu.yml up -d# 개발 환경 빌드 (CPU only)
make build-dev
# GPU 환경 빌드
make build-gpu- 프론트엔드: http://localhost:3000
- 백엔드 API: http://localhost:8000
- API 문서: http://localhost:8000/docs
- Flower (Celery 모니터링): http://localhost:5555
- Grafana: http://localhost:3001 (admin/admin)
.env 파일을 생성하여 환경 변수를 설정할 수 있습니다:
# 데이터베이스
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=exlm_db
# 빌드 환경 (dev 또는 gpu)
BUILD_ENV=dev
# API 키들
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GOOGLE_API_KEY=your_google_keyGPU 환경을 사용하려면:
- NVIDIA Container Toolkit 설치:
# Ubuntu/Debian
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker- GPU 환경 시작:
make up-gpu# 개발 환경 테스트
make test-dev
# GPU 환경 테스트
make test-gpu- Prometheus: http://localhost:9090
- Node Exporter: 시스템 메트릭
- PostgreSQL Exporter: 데이터베이스 메트릭
- Redis Exporter: 캐시 메트릭
- Grafana: http://localhost:3001
- 기본 계정: admin/admin
- 사전 구성된 대시보드 포함
# 전체 로그
make logs
# GPU 환경 로그
make logs-gpu
# 특정 서비스 로그
make backend-logs
make frontend-logs
make celery-logs
make flower-logs# 개발 환경
make shell-backend
make shell-frontend
# GPU 환경
make shell-backend-gpu
make shell-frontend-gpumake restart-backend
make restart-frontend
make restart-celeryexlm/
├── backend/ # FastAPI 백엔드
│ ├── app/
│ │ ├── api/ # API 엔드포인트
│ │ │ ├── core/ # 핵심 설정
│ │ │ ├── models/ # SQLAlchemy 모델
│ │ │ ├── schemas/ # Pydantic 스키마
│ │ │ ├── services/ # 비즈니스 로직
│ │ │ └── tasks/ # Celery 태스크
│ │ ├── requirements.txt # 개발 환경 의존성
│ │ └── requirements-gpu.txt # GPU 환경 의존성
│ ├── frontend/ # Next.js 프론트엔드
│ ├── monitoring/ # 모니터링 설정
│ ├── docker-compose.yml # 개발 환경 설정
│ ├── docker-compose.gpu.yml # GPU 환경 설정
│ └── Makefile # 자동화 스크립트
| 기능 | 개발 환경 (CPU) | GPU 환경 |
|---|---|---|
| PyTorch | CPU 버전 | CUDA 11.8 버전 |
| vLLM | 미설치 | 설치됨 |
| bitsandbytes | 미설치 | 설치됨 |
| 모델 학습 | 제한적 | 전체 기능 |
| 모델 서빙 | 제한적 | 전체 기능 |
# add-apt-repository 오류 발생 시
chmod +x scripts/fix-apt-pkg.sh
./scripts/fix-apt-pkg.sh
# 수동으로 해결하는 경우
sudo rm -f /usr/lib/python3/dist-packages/apt_pkg.cpython-*.so
sudo ln -sf /usr/lib/python3/dist-packages/apt_pkg.cpython-310-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.cpython-311-x86_64-linux-gnu.so# PyYAML 빌드 오류 발생 시
cd backend
chmod +x ../scripts/fix-pyyaml.sh
../scripts/fix-pyyaml.sh# 의존성 충돌 오류 발생 시
cd backend
chmod +x ../scripts/fix-dependencies.sh
../scripts/fix-dependencies.sh-
PostgreSQL 연결 오류
docker-compose down -v docker-compose up -d
-
GPU 컨테이너 시작 실패
# NVIDIA Container Toolkit 확인 docker run --rm --gpus all nvidia/cuda:11.8-base-ubuntu20.04 nvidia-smi -
메모리 부족 오류
# Docker 메모리 제한 증가 # Docker Desktop > Settings > Resources > Memory
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request