최근 회사에서 ChatGPT 사용이 급증하면서, 보안 사고와 비용 증가에 대한 우려가 커졌습니다. 이에 대한 해결책을 고민하던 중, 자체 GPT 시스템 구축이 좋은 대안이 될 수 있겠다는 생각이 들었습니다. ChatGPT와 유사하면서도 우리 회사에 맞게 확장 가능한 솔루션을 찾아 나섰고, 그 과정에서 Ollama와 Open WebUI의 조합을 발견했습니다. Meta에서 제공하는 Ollama의 강력한 언어 모델과 Open WebUI의 사용자 친화적 인터페이스가 눈에 띄었죠. Docker를 이용해 쉽게 구축할 수 있다는 점도 매력적이어서, 이를 기반으로 자체 GPT 시스템을 구축해보기로 결심했습니다.
자 오늘은 자체 호스팅 GPT 서비스 구축해보는 것에 대해 이야기 해보도록 하겠습니다.
Ollama와 Open WebUI 소개
- Ollama: Meta에서 제공하는 오픈소스 LLM(Large Language Model) 솔루션
- Open WebUI: Ollama를 위한 사용자 친화적 웹 인터페이스
- Docker 기반으로 쉽게 구축 가능한 장점
설치 준비
시스템 요구사항
- CPU: 최소 4코어 (8코어 이상 권장)
- RAM: 최소 16GB (32GB 이상 권장)
- GPU: NVIDIA GPU, 최소 8GB VRAM (16GB 이상 권장)
- 스토리지: 최소 100GB SSD (모델 크기에 따라 더 필요할 수 있음)
집에서 구동시킬경우 전기세와 넓고 탄탄한 등짝
설치 환경
- OS: Ubuntu 22.04 LTS
- Docker 및 Docker Compose 최신 버전
참고사이트
Docker-compose 파일 작성
services:
ollama:
volumes:
- ollama:/root/.ollama
container_name: ollama
pull_policy: always
tty: true
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all # 사용할 GPU 수
capabilities: [gpu]
restart: unless-stopped
image: ollama/ollama:latest
open-webui:
image: ghcr.io/open-webui/open-webui:cuda #NVIDA GPU
container_name: open-webui
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
ports:
- 3000:8080
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY='
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
volumes:
ollama: {}
open-webui: {}
※ AMD GPU 참고 : https://burakberk.dev/deploying-ollama-open-webui-self-hosted
설치 과정
- Ubuntu 22.04 LTS 설치
- Docker 및 Docker Compose 설치
sudo apt update sudo apt install docker.io docker-compose
- Docker Compose 파일 구성
docker-compose.yml
파일 작성 (Ollama 및 Open WebUI 서비스 정의)
- 서비스 실행
docker-compose up -d
- 서비스 접속 - http://localhost:3000
- 서비스 관리자 계정 생성
- 모델 다운로드
-
# https://ollama.com/library에서 조회해서 다운받고자 하는 모델로 다운로드 docker exec -it ollama ollama pull llama2
-
- 관리자패널 > 설정 > 모델 : 상태 확인
성능 최적화
- 정확도 향상: 웹 검색 활성화
- Auto Translator : 구글번역을 통한 정확도 향상 - https://openwebui.com/t/nnaoycurt/webui_auto_translator
- 반응속도 개선: GPU 자동 절전 해제
service: ollama: ... environment: - OLLAMA_KEEP_ALIVE=24h #깨어있는 시간을 설정
보안 설정
- Open WebUI에서 사용자 등록 허용
- 기본 유저 상태 : pending - 수락된 사용자만 가입 허용
사내 도메인 접속 설정(옵션)
- 사내용 도메인 (ex. gpt.makeit.app )을 설정하여 A레코드를 설정하기 위함.
- Synology NAS 에서 DNS Server 세팅 후 자체 도메인 세팅 > IP 설정
- 접속 PC에서 DNS 주소를 Synology NAS IP로 설정 필요.
- 또는 PC의 호스트파일에 Open WebUI가 세팅된 서버의 IP를 지정하는 방법으로도 가능함.
서비스 확인
이상 오늘의 포스팅을 마치겠습니다.