File size: 3,667 Bytes
e472af6 | 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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | #!/bin/bash
# ============================================================
# NeuroScan AI 一键部署脚本
# 在新服务器上运行此脚本即可完成部署
# ============================================================
set -e
echo "============================================================"
echo "🚀 NeuroScan AI 一键部署"
echo "============================================================"
# 项目目录
PROJECT_DIR="${1:-/root/NeuroScan}"
# 检查是否有GPU
check_gpu() {
if command -v nvidia-smi &> /dev/null; then
echo "✓ 检测到 GPU: $(nvidia-smi --query-gpu=name --format=csv,noheader | head -1)"
return 0
else
echo "⚠ 未检测到 GPU,将使用 CPU 模式"
return 1
fi
}
# 安装系统依赖
install_system_deps() {
echo -e "\n[1/5] 安装系统依赖..."
apt-get update -qq
apt-get install -y -qq python3.11 python3.11-venv python3-pip git curl
echo "✓ 系统依赖安装完成"
}
# 克隆项目
clone_project() {
echo -e "\n[2/5] 克隆项目..."
if [ -d "$PROJECT_DIR" ]; then
echo "项目目录已存在,执行 git pull..."
cd "$PROJECT_DIR"
git pull
else
git clone https://github.com/ydchen0806/NeuronScanAI.git "$PROJECT_DIR"
cd "$PROJECT_DIR"
fi
echo "✓ 项目克隆完成"
}
# 安装Python环境
setup_python_env() {
echo -e "\n[3/5] 配置 Python 环境..."
cd "$PROJECT_DIR"
# 创建虚拟环境
python3.11 -m venv venv
source venv/bin/activate
# 升级pip
pip install --upgrade pip -q
# 安装PyTorch
if check_gpu; then
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 -q
else
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu -q
fi
# 安装其他依赖
pip install -r env/requirements.txt -q
echo "✓ Python 环境配置完成"
}
# 下载模型
download_models() {
echo -e "\n[4/5] 下载模型权重..."
source "$PROJECT_DIR/venv/bin/activate"
# 从 Hugging Face 下载模型
python -c "
from huggingface_hub import snapshot_download
print(' 下载 MONAI 分割模型...')
snapshot_download(
repo_id='cyd0806/neuroscan-ai-models',
local_dir='$PROJECT_DIR/models',
ignore_patterns=['*.md']
)
print(' ✓ 模型下载完成')
"
echo "✓ 模型下载完成"
}
# 安装 Ollama (可选)
install_ollama() {
echo -e "\n[5/5] 安装 Ollama LLM (可选)..."
if command -v ollama &> /dev/null; then
echo "Ollama 已安装"
else
curl -fsSL https://ollama.com/install.sh | sh
# 下载模型
ollama pull qwen2.5:7b
fi
echo "✓ Ollama 安装完成"
}
# 创建启动脚本
create_start_script() {
cat > "$PROJECT_DIR/start.sh" << 'EOF'
#!/bin/bash
cd "$(dirname "$0")"
source venv/bin/activate
streamlit run streamlit_app.py --server.port 8501 --server.address 0.0.0.0
EOF
chmod +x "$PROJECT_DIR/start.sh"
echo "✓ 启动脚本创建完成: $PROJECT_DIR/start.sh"
}
# 主流程
main() {
install_system_deps
clone_project
setup_python_env
download_models
# install_ollama # 取消注释以安装 Ollama
create_start_script
echo ""
echo "============================================================"
echo "✅ 部署完成!"
echo "============================================================"
echo ""
echo "启动服务:"
echo " cd $PROJECT_DIR"
echo " ./start.sh"
echo ""
echo "访问地址: http://<服务器IP>:8501"
}
main "$@"
|