55 lines
2.2 KiB
Bash
Executable File
55 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 远程机 gpu-a800-060 环境搭建(幂等,可重复执行)。
|
||
# 用法:bash scripts/setup_remote.sh
|
||
# 硬约束:根分区仅剩 12G —— 环境、缓存、临时目录一律压到 /data/zym 下。
|
||
set -euo pipefail
|
||
|
||
DATA_ROOT=/data/zym
|
||
ENV_PATH=$DATA_ROOT/envs/ars-opd
|
||
REPO_DIR=$DATA_ROOT/ars-opd-rebuild
|
||
|
||
# ---- 0. 所有会写盘的路径全部改道 /data(防根分区被写爆)----
|
||
export HF_ENDPOINT=https://hf-mirror.com # huggingface.co 被墙,走镜像
|
||
export HF_HOME=$DATA_ROOT/hf_cache
|
||
export CONDA_PKGS_DIRS=$DATA_ROOT/conda_pkgs # conda 包缓存默认在根分区
|
||
export PIP_CACHE_DIR=$DATA_ROOT/pip_cache # pip 缓存默认在根分区
|
||
export TMPDIR=$DATA_ROOT/tmp # 大 wheel 解压临时目录
|
||
mkdir -p "$DATA_ROOT"/{envs,hf_cache,conda_pkgs,pip_cache,tmp}
|
||
|
||
# ---- 1. conda 环境(建在 /data,不建在 ~)----
|
||
if [ ! -d "$ENV_PATH" ]; then
|
||
conda create -p "$ENV_PATH" python=3.11 -y
|
||
fi
|
||
|
||
# ---- 2. 代码(远程只读:clone 走 HTTPS 匿名,更新只 git pull)----
|
||
if [ ! -d "$REPO_DIR" ]; then
|
||
git clone https://gitea.iomgaa.online/iomgaa/ars-opd-rebuild.git "$REPO_DIR"
|
||
else
|
||
git -C "$REPO_DIR" pull
|
||
fi
|
||
|
||
# ---- 3. 依赖 ----
|
||
conda run -p "$ENV_PATH" pip install -r "$REPO_DIR/requirements.txt" -r "$REPO_DIR/requirements-remote.txt"
|
||
|
||
# ---- 4. 环境变量持久化(写入 ~/.bashrc,幂等)----
|
||
if ! grep -q "ars-opd-rebuild env" ~/.bashrc; then
|
||
cat >> ~/.bashrc <<'EOF'
|
||
|
||
# --- ars-opd-rebuild env ---
|
||
export HF_ENDPOINT=https://hf-mirror.com
|
||
export HF_HOME=/data/zym/hf_cache
|
||
export CONDA_PKGS_DIRS=/data/zym/conda_pkgs
|
||
export PIP_CACHE_DIR=/data/zym/pip_cache
|
||
alias opd='conda activate /data/zym/envs/ars-opd && cd /data/zym/ars-opd-rebuild'
|
||
EOF
|
||
fi
|
||
|
||
# ---- 5. 验证 ----
|
||
echo "=== 验证 torch/CUDA ==="
|
||
conda run -p "$ENV_PATH" python -c "import torch; print('torch', torch.__version__, '| cuda可用:', torch.cuda.is_available(), '| 卡数:', torch.cuda.device_count())"
|
||
echo "=== 验证单元测试 ==="
|
||
conda run -p "$ENV_PATH" python -m pytest "$REPO_DIR/tests" -q
|
||
echo "=== 磁盘检查(根分区不应有明显增长)==="
|
||
df -h / /data | tail -2
|
||
echo "全部完成。日常使用:输入 opd 进入环境与目录。"
|