기존 Qwen 파일 qwen/ 디렉터리로 이동, Gemma 4 (31B-IT) Ollama 셋업 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
MyeonghoeLee 2026-04-03 16:29:32 +09:00
parent 5f5435cec7
commit 3660556a72
20 changed files with 405 additions and 86 deletions

101
README.md
View File

@ -1,97 +1,26 @@
# Qwen3.5 로컬 서빙 + Open WebUI
# LLM 로컬 서빙 + Open WebUI
Qwen3.5-35B 모델을 로컬에서 서빙하고, Open WebUI로 채팅할 수 있는 환경을 원클릭으로 구축합니다.
다양한 LLM을 로컬에서 서빙하고 Open WebUI로 테스트하는 환경 모음입니다.
텍스트 대화 + 이미지 입력 모두 지원합니다.
---
## 모델별 디렉터리
| 디렉터리 | 모델 | 방식 |
|-----------|------|------|
| [qwen/](qwen/) | Qwen3.5-35B | Ollama / MLX / vLLM |
| [gemma4/](gemma4/) | Gemma 4 31B-IT | Ollama |
---
## 빠른 시작
```bash
# 시스템 환경을 자동 감지하여 최적의 방식을 선택합니다
./setup.sh
# Gemma 4 (Ollama)
cd gemma4 && ./setup-ollama.sh
# 종료 (실행 중인 서비스를 자동 감지하여 종료)
./stop.sh
# Qwen3.5 (자동 감지)
cd qwen && ./setup.sh
```
셋업 완료 후 **http://localhost:3000** 접속
첫 접속 시 회원가입 → 첫 번째 계정이 관리자(admin)입니다.
---
## 자동 감지 기준
| 조건 | 선택 | 이유 |
|------|------|------|
| NVIDIA GPU 있음 | **vLLM** | CUDA 가속, 가장 빠름 |
| Apple Silicon + RAM 32GB↑ | **MLX** | Mac GPU 최적화 |
| Apple Silicon + RAM 부족 | **Ollama** | 메모리 관리 우수 |
| 그 외 | **Ollama** | 범용, CPU에서도 동작 |
---
## 방식별 비교
| | Ollama | MLX (vllm-mlx) | vLLM |
|---|---|---|---|
| 환경 | Mac / Linux | Apple Silicon Mac | NVIDIA GPU (Linux) |
| 장점 | 간편, 설정 적음 | Mac GPU 최적화 | CUDA 가속, 고성능 |
| 이미지 입력 | O | O | O |
| 개별 셋업 | `./setup-ollama.sh` | `./setup-mlx.sh` | `./setup-vllm.sh` |
| 개별 종료 | `./stop-ollama.sh` | `./stop-mlx.sh` | `./stop-vllm.sh` |
---
## 사전 요구사항
**공통:**
- Docker Desktop (또는 Docker Engine) 설치 및 실행
**Ollama:**
- Homebrew
**MLX:**
- Apple Silicon Mac (M1/M2/M3/M4)
- Python 3.10+
- RAM 32GB 이상 권장
**vLLM:**
- NVIDIA GPU (VRAM 20GB 이상 권장)
- nvidia-container-toolkit
---
## 파일 구조
```
├── setup.sh # 통합 셋업 (자동 감지)
├── stop.sh # 통합 종료 (자동 감지)
├── setup-ollama.sh # Ollama 셋업
├── setup-mlx.sh # MLX 셋업
├── setup-vllm.sh # vLLM 셋업
├── stop-ollama.sh # Ollama 종료
├── stop-mlx.sh # MLX 종료
├── stop-vllm.sh # vLLM 종료
├── docker-compose.yml # Ollama용
├── docker-compose.mlx.yml # MLX용
├── docker-compose.vllm.yml # vLLM용 (자동 생성)
├── SETUP_OLLAMA.md # Ollama 상세 가이드
└── SETUP_MLX.md # MLX 상세 가이드
```
---
## 상세 가이드
수동 설치, 파라미터 조정, 트러블슈팅 등은 아래 문서를 참고하세요.
- [SETUP_OLLAMA.md](SETUP_OLLAMA.md) — Ollama 방식 상세
- [SETUP_MLX.md](SETUP_MLX.md) — MLX 방식 상세 (파라미터 레퍼런스, 이미지 프로세서 패치 설명 포함)
- [SETUP_VLLM.md](SETUP_VLLM.md) — vLLM 방식 상세 (NVIDIA GPU, VRAM별 권장 설정)
각 디렉터리의 README를 참고하세요.

7
gemma4/Modelfile Normal file
View File

@ -0,0 +1,7 @@
FROM gemma4:31b
PARAMETER num_ctx 8192
PARAMETER num_predict 8192
PARAMETER temperature 1.0
PARAMETER top_p 0.95
PARAMETER top_k 64

70
gemma4/README.md Normal file
View File

@ -0,0 +1,70 @@
# Gemma 4 (31B-IT) 로컬 서빙 + Open WebUI
Google Gemma 4 31B-IT 모델을 Ollama로 로컬 서빙하고, Open WebUI로 채팅하는 환경을 원클릭으로 구축합니다.
- HuggingFace: `google/gemma-4-31B-it`
- Ollama: `gemma4:31b` (Q4_K_M, ~20GB)
- 컨텍스트 윈도우: 256K 토큰
- 멀티모달: 이미지/비디오 입력 지원 (140+ 언어)
- 라이선스: Apache 2.0
---
## 빠른 시작
```bash
./setup-ollama.sh # 설치 + 모델 다운로드 + Open WebUI 실행
./stop-ollama.sh # 종료
```
셋업 완료 후 **http://localhost:3000** 접속
첫 접속 시 회원가입 → 첫 번째 계정이 관리자(admin)입니다.
---
## 모델 스펙
| 항목 | 값 |
|------|-----|
| 파라미터 | 30.7B |
| 컨텍스트 윈도우 | 256K 토큰 |
| 양자화 (Ollama) | Q4_K_M (~20GB) |
| 멀티모달 | 이미지, 비디오 (최대 60초) |
| 지원 언어 | 140+ |
---
## 기본 파라미터
| 파라미터 | 값 | 설명 |
|----------|-----|------|
| temperature | 1.0 | Google 권장값 |
| top_p | 0.95 | Google 권장값 |
| top_k | 64 | Google 권장값 |
| num_ctx | 8192 | 입력 컨텍스트 길이 |
| num_predict | 8192 | 최대 출력 토큰 |
파라미터를 변경하려면 `setup-ollama.sh` 상단의 변수를 수정하세요.
---
## 사전 요구사항
- Homebrew
- Docker Desktop 실행 중
- 충분한 디스크 공간 (~20GB)
- RAM 32GB 이상 권장
---
## 파일 구조
```
gemma4/
├── setup-ollama.sh # 원클릭 셋업
├── stop-ollama.sh # 종료
├── docker-compose.yml # (자동 생성)
├── Modelfile # (자동 생성)
└── README.md # 이 문서
```

16
gemma4/docker-compose.yml Normal file
View File

@ -0,0 +1,16 @@
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui-gemma4
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
volumes:
- open-webui-gemma4-data:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
volumes:
open-webui-gemma4-data:

167
gemma4/setup-ollama.sh Executable file
View File

@ -0,0 +1,167 @@
#!/bin/bash
set -e
#====================================================================
# Gemma 4 (31B-IT) + Open WebUI (Ollama) 원클릭 셋업
# 모델: google/gemma-4-31B-it (Ollama: gemma4:31b)
# 환경: Mac / Docker Desktop / Homebrew
#====================================================================
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
BASE_MODEL="gemma4:31b"
CUSTOM_MODEL="gemma4-custom"
WEBUI_PORT=3000
MAX_TOKENS=8192
CONTEXT_LENGTH=8192
TEMPERATURE=1.0
TOP_P=0.95
TOP_K=64
echo "============================================"
echo " Gemma 4 (31B-IT) + Open WebUI (Ollama) 셋업"
echo "============================================"
echo ""
#--------------------------------------------------------------------
# 1. 사전 요구사항 확인
#--------------------------------------------------------------------
echo "[1/6] 사전 요구사항 확인..."
if ! command -v brew &>/dev/null; then
echo "❌ Homebrew가 설치되어 있지 않습니다."
echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
exit 1
fi
echo " ✓ Homebrew"
if ! command -v docker &>/dev/null; then
echo "❌ Docker가 설치되어 있지 않습니다."
exit 1
fi
if ! docker info &>/dev/null; then
echo "❌ Docker Desktop이 실행 중이 아닙니다."
exit 1
fi
echo " ✓ Docker"
echo ""
#--------------------------------------------------------------------
# 2. Ollama 설치 및 시작
#--------------------------------------------------------------------
echo "[2/6] Ollama 설치..."
if ! command -v ollama &>/dev/null; then
brew install ollama
echo " ✓ Ollama 설치 완료"
else
echo " ✓ Ollama 이미 설치됨"
fi
if ! brew services list | grep ollama | grep -q started; then
brew services start ollama
echo " Ollama 시작 대기 중..."
for i in $(seq 1 15); do
if curl -s http://localhost:11434/ > /dev/null 2>&1; then
break
fi
sleep 1
done
echo " ✓ Ollama 서비스 시작"
else
echo " ✓ Ollama 서비스 실행 중"
fi
echo ""
#--------------------------------------------------------------------
# 3. 모델 다운로드
#--------------------------------------------------------------------
echo "[3/6] 모델 다운로드 ($BASE_MODEL)..."
echo " (약 20GB — 네트워크 속도에 따라 시간이 걸릴 수 있습니다)"
ollama pull "$BASE_MODEL"
echo " ✓ 모델 다운로드 완료"
echo ""
#--------------------------------------------------------------------
# 4. 커스텀 모델 생성 (파라미터 설정)
#--------------------------------------------------------------------
echo "[4/6] 파라미터 설정..."
MODELFILE="$PROJECT_DIR/Modelfile"
cat > "$MODELFILE" << EOF
FROM $BASE_MODEL
PARAMETER num_ctx $CONTEXT_LENGTH
PARAMETER num_predict $MAX_TOKENS
PARAMETER temperature $TEMPERATURE
PARAMETER top_p $TOP_P
PARAMETER top_k $TOP_K
EOF
ollama create "$CUSTOM_MODEL" -f "$MODELFILE" 2>&1 | grep -v "^$"
echo " ✓ 커스텀 모델 생성: $CUSTOM_MODEL"
echo " 입력 컨텍스트: $CONTEXT_LENGTH 토큰"
echo " 출력 토큰: $MAX_TOKENS"
echo " temperature: $TEMPERATURE"
echo " top_p: $TOP_P"
echo " top_k: $TOP_K"
echo ""
#--------------------------------------------------------------------
# 5. Docker Compose 설정 및 실행
#--------------------------------------------------------------------
echo "[5/6] Open WebUI 실행..."
if [ ! -f "$PROJECT_DIR/docker-compose.yml" ]; then
cat > "$PROJECT_DIR/docker-compose.yml" << EOF
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui-gemma4
ports:
- "${WEBUI_PORT}:8080"
environment:
- OLLAMA_BASE_URL=http://host.docker.internal:11434
volumes:
- open-webui-gemma4-data:/app/backend/data
extra_hosts:
- "host.docker.internal:host-gateway"
restart: unless-stopped
volumes:
open-webui-gemma4-data:
EOF
echo " ✓ docker-compose.yml 생성"
fi
cd "$PROJECT_DIR"
docker compose up -d 2>&1 | grep -v "^$"
echo " ✓ Open WebUI 실행 중"
echo ""
#--------------------------------------------------------------------
# 6. 완료
#--------------------------------------------------------------------
echo "[6/6] 셋업 완료!"
echo ""
echo "============================================"
echo " 브라우저에서 http://localhost:${WEBUI_PORT} 접속"
echo " (첫 접속 시 회원가입 → 첫 계정이 admin)"
echo ""
echo " 모델 선택: $CUSTOM_MODEL"
echo " (파라미터가 적용된 커스텀 모델)"
echo " 또는: $BASE_MODEL"
echo " (기본 설정 모델)"
echo ""
echo " HuggingFace: google/gemma-4-31B-it"
echo " 컨텍스트 윈도우: 256K 토큰"
echo " 멀티모달: 이미지/비디오 입력 지원"
echo ""
echo " 종료: ./stop-ollama.sh"
echo "============================================"

33
gemma4/stop-ollama.sh Executable file
View File

@ -0,0 +1,33 @@
#!/bin/bash
#====================================================================
# Gemma 4 + Open WebUI (Ollama) 종료
#====================================================================
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "============================================"
echo " Gemma 4 + Open WebUI (Ollama) 종료"
echo "============================================"
echo ""
# Open WebUI 컨테이너 종료
if docker ps -q --filter name=open-webui-gemma4 2>/dev/null | grep -q .; then
cd "$PROJECT_DIR"
docker compose down 2>&1 | grep -v "^$"
echo " ✓ Open WebUI 종료"
else
echo " - Open WebUI 컨테이너 없음 (이미 종료됨)"
fi
# Ollama 서비스 종료
if command -v brew &>/dev/null && brew services list 2>/dev/null | grep ollama | grep -q started; then
brew services stop ollama
echo " ✓ Ollama 서비스 종료"
else
echo " - Ollama 이미 종료됨"
fi
echo ""
echo " 완료. 재시작하려면: ./setup-ollama.sh"
echo ""

97
qwen/README.md Normal file
View File

@ -0,0 +1,97 @@
# Qwen3.5 로컬 서빙 + Open WebUI
Qwen3.5-35B 모델을 로컬에서 서빙하고, Open WebUI로 채팅할 수 있는 환경을 원클릭으로 구축합니다.
텍스트 대화 + 이미지 입력 모두 지원합니다.
---
## 빠른 시작
```bash
# 시스템 환경을 자동 감지하여 최적의 방식을 선택합니다
./setup.sh
# 종료 (실행 중인 서비스를 자동 감지하여 종료)
./stop.sh
```
셋업 완료 후 **http://localhost:3000** 접속
첫 접속 시 회원가입 → 첫 번째 계정이 관리자(admin)입니다.
---
## 자동 감지 기준
| 조건 | 선택 | 이유 |
|------|------|------|
| NVIDIA GPU 있음 | **vLLM** | CUDA 가속, 가장 빠름 |
| Apple Silicon + RAM 32GB↑ | **MLX** | Mac GPU 최적화 |
| Apple Silicon + RAM 부족 | **Ollama** | 메모리 관리 우수 |
| 그 외 | **Ollama** | 범용, CPU에서도 동작 |
---
## 방식별 비교
| | Ollama | MLX (vllm-mlx) | vLLM |
|---|---|---|---|
| 환경 | Mac / Linux | Apple Silicon Mac | NVIDIA GPU (Linux) |
| 장점 | 간편, 설정 적음 | Mac GPU 최적화 | CUDA 가속, 고성능 |
| 이미지 입력 | O | O | O |
| 개별 셋업 | `./setup-ollama.sh` | `./setup-mlx.sh` | `./setup-vllm.sh` |
| 개별 종료 | `./stop-ollama.sh` | `./stop-mlx.sh` | `./stop-vllm.sh` |
---
## 사전 요구사항
**공통:**
- Docker Desktop (또는 Docker Engine) 설치 및 실행
**Ollama:**
- Homebrew
**MLX:**
- Apple Silicon Mac (M1/M2/M3/M4)
- Python 3.10+
- RAM 32GB 이상 권장
**vLLM:**
- NVIDIA GPU (VRAM 20GB 이상 권장)
- nvidia-container-toolkit
---
## 파일 구조
```
├── setup.sh # 통합 셋업 (자동 감지)
├── stop.sh # 통합 종료 (자동 감지)
├── setup-ollama.sh # Ollama 셋업
├── setup-mlx.sh # MLX 셋업
├── setup-vllm.sh # vLLM 셋업
├── stop-ollama.sh # Ollama 종료
├── stop-mlx.sh # MLX 종료
├── stop-vllm.sh # vLLM 종료
├── docker-compose.yml # Ollama용
├── docker-compose.mlx.yml # MLX용
├── docker-compose.vllm.yml # vLLM용 (자동 생성)
├── SETUP_OLLAMA.md # Ollama 상세 가이드
└── SETUP_MLX.md # MLX 상세 가이드
```
---
## 상세 가이드
수동 설치, 파라미터 조정, 트러블슈팅 등은 아래 문서를 참고하세요.
- [SETUP_OLLAMA.md](SETUP_OLLAMA.md) — Ollama 방식 상세
- [SETUP_MLX.md](SETUP_MLX.md) — MLX 방식 상세 (파라미터 레퍼런스, 이미지 프로세서 패치 설명 포함)
- [SETUP_VLLM.md](SETUP_VLLM.md) — vLLM 방식 상세 (NVIDIA GPU, VRAM별 권장 설정)