File size: 3,808 Bytes
88b9f90 ce0c924 88b9f90 ce0c924 88b9f90 ce0c924 88b9f90 ce0c924 88b9f90 ce0c924 88b9f90 aa7a04b ce0c924 aa7a04b 88b9f90 ce0c924 88b9f90 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | #!/usr/bin/env bash
set -euo pipefail
# ==========================================================================
# Terminator-Qwen3-8B — Automated Setup
#
# This script:
# 1. Creates a conda environment with Python 3.12
# 2. Installs uv, vllm, and openai
# 3. Downloads Qwen3-8B base model weights and creates the model directory
#
# Prerequisites:
# - NVIDIA GPU with sufficient VRAM (minimum ~24GB for Qwen3-8B)
# - CUDA drivers installed
# - conda or micromamba installed
#
# Usage:
# ./setup.sh
# ==========================================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ENV_NAME="${TERMINATOR_ENV_NAME:-terminator}"
echo ""
echo "====================================="
echo " Terminator-Qwen3-8B Setup"
echo "====================================="
echo ""
# ------------------------------------------------------------------
# Step 1: Create conda environment
# ------------------------------------------------------------------
# Detect conda or micromamba
if command -v micromamba &>/dev/null; then
CONDA_CMD="micromamba"
elif command -v conda &>/dev/null; then
CONDA_CMD="conda"
else
echo "ERROR: Neither conda nor micromamba found."
echo ""
echo "Install micromamba:"
echo ' "${SHELL}" <(curl -L micro.mamba.pm/install.sh)'
echo ""
echo "Or install conda:"
echo " https://docs.conda.io/en/latest/miniconda.html"
exit 1
fi
echo "[1/3] Setting up Python environment..."
# Check if environment already exists
if $CONDA_CMD env list 2>/dev/null | grep -q "^${ENV_NAME} \|/${ENV_NAME}\$"; then
echo " Environment '${ENV_NAME}' already exists. Activating..."
else
echo " Creating environment '${ENV_NAME}' with Python 3.12..."
$CONDA_CMD create -n "${ENV_NAME}" python=3.12 -y
fi
# Helper: run a command inside the conda/micromamba environment
run_in_env() {
if [ "$CONDA_CMD" = "micromamba" ]; then
micromamba run -n "${ENV_NAME}" "$@"
else
# For conda, activate in a subshell
(eval "$(conda shell.bash hook 2>/dev/null)" && conda activate "${ENV_NAME}" && "$@")
fi
}
echo " Python: $(run_in_env python --version)"
# ------------------------------------------------------------------
# Step 2: Install packages
# ------------------------------------------------------------------
echo ""
echo "[2/3] Installing packages..."
echo " Installing uv..."
run_in_env pip install --upgrade uv --quiet
echo " Installing vllm (this may take a few minutes)..."
run_in_env uv pip install vllm --torch-backend=auto
echo " Installing openai (for client)..."
run_in_env uv pip install openai
echo " Installing accelerate (for HF inference)..."
run_in_env uv pip install accelerate
echo " Done."
# ------------------------------------------------------------------
# Step 3: Set up model directory
# ------------------------------------------------------------------
echo ""
echo "[3/3] Setting up model directory..."
echo " This downloads Qwen3-8B base weights (~16GB) from HuggingFace."
echo " (Skipped if already cached.)"
echo ""
cd "$SCRIPT_DIR"
run_in_env python setup_model_dir.py
# ------------------------------------------------------------------
# Done
# ------------------------------------------------------------------
echo ""
echo "====================================="
echo " Setup Complete!"
echo "====================================="
echo ""
echo "To start the server:"
echo " $CONDA_CMD activate ${ENV_NAME}"
echo " cd $SCRIPT_DIR"
echo " ./start_server.sh"
echo ""
echo "Then in another terminal:"
echo " $CONDA_CMD activate ${ENV_NAME}"
echo " cd $SCRIPT_DIR"
echo " python client.py --interactive"
echo ""
echo "See README.md for configuration options (GPU memory, context length, etc.)"
|