diff --git a/setup-mlx.sh b/setup-mlx.sh index 2278950..101acf2 100755 --- a/setup-mlx.sh +++ b/setup-mlx.sh @@ -11,6 +11,9 @@ PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" MODEL="mlx-community/Qwen3.5-35B-A3B-4bit" PORT=8090 WEBUI_PORT=3000 +MAX_TOKENS=8192 +TEMPERATURE=0.7 +TOP_P=0.9 echo "============================================" echo " Qwen3.5 + Open WebUI (vllm-mlx) 셋업" @@ -191,29 +194,74 @@ echo " ✓ Open WebUI 실행 중 (http://localhost:${WEBUI_PORT})" echo "" +MLLM_FLAG="--mllm" + #-------------------------------------------------------------------- -# 6. 완료 +# 6. vllm-mlx 서버 시작 #-------------------------------------------------------------------- -echo "[6/6] 셋업 완료!" +LOG_FILE="$PROJECT_DIR/vllm-mlx.log" + +echo "[6/6] vllm-mlx 서버 시작 (백그라운드)..." +echo "" +echo " 모델: $MODEL" +echo " 포트: $PORT" +echo " max_tokens: $MAX_TOKENS" +echo " temperature: $TEMPERATURE" +echo " top_p: $TOP_P" +echo " 모드: 멀티모달 (이미지 + 텍스트)" +echo "" + +# 백그라운드 실행, 로그는 파일로 +nohup vllm-mlx serve "$MODEL" \ + --port "$PORT" \ + --max-tokens "$MAX_TOKENS" \ + --default-temperature "$TEMPERATURE" \ + --default-top-p "$TOP_P" \ + --timeout 600 \ + $MLLM_FLAG > "$LOG_FILE" 2>&1 & + +SERVER_PID=$! +echo " 서버 PID: $SERVER_PID" +echo " 로그 파일: $LOG_FILE" +echo "" + +# 서버가 뜰 때까지 대기 (최대 120초, 첫 실행 시 모델 다운로드 포함) +echo " 서버 준비 대기 중... (첫 실행 시 모델 다운로드 ~20GB)" +for i in $(seq 1 120); do + if curl -s http://localhost:$PORT/v1/models > /dev/null 2>&1; then + echo "" + echo " ✓ 서버 준비 완료!" + break + fi + # 프로세스가 죽었는지 확인 + if ! kill -0 $SERVER_PID 2>/dev/null; then + echo "" + echo " ❌ 서버 시작 실패. 로그를 확인하세요:" + echo " tail -50 $LOG_FILE" + exit 1 + fi + printf "." + sleep 1 +done + +# 120초 후에도 안 되면 안내 +if ! curl -s http://localhost:$PORT/v1/models > /dev/null 2>&1; then + echo "" + echo " ⚠️ 서버가 아직 준비 중입니다. (모델 다운로드 중일 수 있음)" + echo " 로그 확인: tail -f $LOG_FILE" + echo " 준비되면 http://localhost:${WEBUI_PORT} 접속" +else + echo "" +fi + echo "" echo "============================================" -echo " 다음 단계: 서버를 시작하세요" +echo " 셋업 완료!" echo "============================================" echo "" -echo " # 텍스트 전용:" -echo " source $VENV_DIR/bin/activate" -echo " vllm-mlx serve $MODEL \\" -echo " --port $PORT --max-tokens 8192 \\" -echo " --default-temperature 0.7 --default-top-p 0.9" -echo "" -echo " # 텍스트 + 이미지 (멀티모달):" -echo " source $VENV_DIR/bin/activate" -echo " vllm-mlx serve $MODEL \\" -echo " --port $PORT --max-tokens 8192 \\" -echo " --default-temperature 0.7 --default-top-p 0.9 --mllm" -echo "" -echo " 서버 시작 후 브라우저에서 http://localhost:${WEBUI_PORT} 접속" +echo " 브라우저: http://localhost:${WEBUI_PORT}" echo " (첫 접속 시 회원가입 → 첫 계정이 admin)" echo "" -echo " 종료하려면: ./stop-mlx.sh" +echo " 로그 확인: tail -f $LOG_FILE" +echo " 종료: ./stop-mlx.sh" echo "============================================" diff --git a/stop-mlx.sh b/stop-mlx.sh index 3dac1c6..e263a8f 100755 --- a/stop-mlx.sh +++ b/stop-mlx.sh @@ -30,8 +30,12 @@ else echo " - vllm-mlx 서버 없음 (이미 종료됨)" fi +# 로그 파일 정리 +if [ -f "$PROJECT_DIR/vllm-mlx.log" ]; then + rm "$PROJECT_DIR/vllm-mlx.log" + echo " ✓ 로그 파일 정리" +fi + echo "" -echo " 완료. 재시작하려면:" -echo " 1. ./setup-mlx.sh" -echo " 2. 서버 시작 (setup 완료 시 안내되는 명령어 참고)" +echo " 완료. 재시작하려면: ./setup-mlx.sh" echo ""