---
title: GBA_Project2
canonical_url: "https://www.modelscope.cn/datasets/Zeluar/GBA_Project2"
md_url: "https://www.modelscope.cn/datasets/Zeluar/GBA_Project2.md"
repository: Zeluar/GBA_Project2
last_updated: 2026-10-27
license: "Apache License 2.0"
storage_size: "62 GB"
downloads: 37
stars: 0
---

# GBA_Project2

> GBA_Project2 - Zeluar 在 ModelScope 开源的数据集。官方可下载权重不打包；无法稳定下载的权重已打入 gbaweightsv2.tar.zst。

Zeluar/GBA_Project2 是 ModelScope 魔搭社区上的数据集，存储大小 62 GB，采用 Apache License 2.0 许可。

- **Repository**: Zeluar/GBA_Project2
- **License**: Apache License 2.0
- **Storage size**: 62 GB
- **Downloads**: 37
- **Stars**: 0
- **Last updated**: 2026-10-27

Source: https://www.modelscope.cn/datasets/Zeluar/GBA_Project2

---

## 1. 迁移包内容

建议分两个压缩包传输。

### 数据包

```text
gba_datasets_v2.tar.zst
```

包含：

```text
datasets/
├── images_224/         12,705
├── masks_224/          12,705
├── images_256/         12,705
├── masks_256/          12,705
├── ae/                 12,705
├── poi/graphs_*/       12,705
├── poi/nodes_*/        12,705
├── dglu_inputs/        9,999
├── labels/
├── geometry/
├── quality/
├── manifests/
├── splits/
├── stats/
├── README.md
├── DATA_DICTIONARY.md
└── DATASET_CARD.md
```

约 4.5 GB，内部没有软链接。

### 代码包

```text
gba_code_v2.tar.zst
```

包含：

```text
src/
scripts/
configs/
experiments/
vendor/
cluster.env
cluster.local.env.example
third_party/mapformer_patched/
third_party/VMamba/
third_party/pytorch-change-models/
third_party/baselines/
  RoMA_patched/
  DGLU/code/
  ReFound_patched/code/
  bert-based-chinese/        # 只放 config/tokenizer
README_PORTABLE.md
AAA_待补实验.md
```

**不打包：**

```text
weights/
runs/
datasets/
venv_refound/
*.pth
*.pt
*.pdparams
*.safetensors
*.rar
delivery_mask2former_...    # 与本项目无关
```

官方可下载权重不打包；无法稳定下载的权重已打入 `gba_weights_v2.tar.zst`。

---

## 2. 路径已经做的调整

| 项目 | 处理 |
|---|---|
| 训练用 observations | 使用 `datasets/manifests/observations_rel.csv`，相对项目根目录 |
| 旧绝对路径 `observations_abs.csv` | 迁移包中不推荐使用，可删除 |
| `annual_*.csv` | 图像/AE/POI 保持相对 `datasets/`；`GBA_DATA_ROOT` 指向 `datasets` |
| `source_image/source_mask` | 训练不读取；可清空或删除 |
| `scripts/evaluate_unified.py` | 项目根目录动态定位 |
| `scripts/evaluate_task1_checkpoints.py` | 项目根目录动态定位 |
| `scripts/dry_run.py` | 项目根目录动态定位 |
| `scripts/train_baseline_dglu.py` | 项目根目录动态定位 |
| Slurm 脚本 | 统一写死目标 `/share/home/jiah9/GBA_Project2` |

训练代码中不应再出现：

```text
/nfs-data3/drm/zhouguanjun/GBA_Project2
```

---

## 3. 传输

从当前服务器：

```bash
cd /nfs-data3/drm/zhouguanjun/GBA_Project2

# 数据
tar -I 'zstd -3 -T0' --exclude='datasets/manifests/observations_abs.csv' \
  -cf gba_datasets_v2.tar.zst datasets
# 代码（排除权重/运行/数据）
tar -I 'zstd -3 -T0' \
  --exclude='datasets' \
  --exclude='weights' \
  --exclude='runs' \
  --exclude='venv_refound' \
  --exclude='*.pth' --exclude='*.pth.tar' --exclude='*.pt' --exclude='*.pdparams' \
  --exclude='*.safetensors' --exclude='*.rar' \
  --exclude='third_party/baselines/DGLU/result' \
  --exclude='third_party/baselines/ReFound_pretrained' \
  --exclude='delivery_mask2former_baseline6_20260614' \
  -cf gba_code_v2.tar.zst \
  src scripts configs experiments vendor third_party \
  cluster.env cluster.local.env.example \
  README_PORTABLE.md AAA_待补实验.md
```

传输：

```bash
scp gba_datasets_v2.tar.zst gba_code_v2.tar.zst gba_weights_v2.tar.zst \
  jiah9@<目标服务器>:/share/home/jiah9/
```

目标机：

```bash
mkdir -p /share/home/jiah9/GBA_Project2
cd /share/home/jiah9/GBA_Project2

tar -I zstd -xf /share/home/jiah9/gba_code_v2.tar.zst
tar -I zstd -xf /share/home/jiah9/gba_datasets_v2.tar.zst
tar -I zstd -xf /share/home/jiah9/gba_weights_v2.tar.zst

mkdir -p results runs/first_batch/task1 runs/first_batch/task4 slurm_logs
```

---

## 4. 权重

官方可下载权重不打包；无法稳定下载的权重在：

```text
gba_weights_v2.tar.zst
```

包含：

```text
weights/backbones/vssm_tiny_0230_ckpt_epoch_262.pth
third_party/baselines/weights/roma_mamba_base.pth
third_party/baselines/DGLU/result/best_model/model_best.pth.tar
third_party/baselines/ReFound_pretrained/checkpoint-299.pdparams
third_party/baselines/bert-based-chinese/
```

解压到项目根目录即可。

需要放到：

```text
weights/backbones/
weights/imagenet/
third_party/baselines/weights/
```

### 4.1 可直接下载

```bash
cd /share/home/jiah9/GBA_Project2
mkdir -p weights/imagenet weights/backbones

wget -O weights/imagenet/wide_resnet50_2-9ba9bcbe.pth \
  https://download.pytorch.org/models/wide_resnet50_2-9ba9bcbe.pth

wget -O weights/backbones/resnet50-11ad3fa6.pth \
  https://download.pytorch.org/models/resnet50-11ad3fa6.pth

wget -O weights/backbones/swin_t-704ceda3.pth \
  https://download.pytorch.org/models/swin_t-704ceda3.pth

wget -O weights/backbones/mit_b2.pth \
  https://huggingface.co/Kyliroco/mit_b2/resolve/main/mit_b2.pth
```

### 4.2 不能稳定公开下载，需从原服务器复制

```bash
# VMamba
rsync -avP \
  /nfs-data3/drm/zhouguanjun/GBA_Proiect/weights/backbones/vssm_tiny_0230_ckpt_epoch_262.pth \
  user@target:/share/home/jiah9/GBA_Project2/weights/backbones/

# RoMA
rsync -avP \
  /nfs-data3/drm/zhouguanjun/GBA_Proiect/third_party/baselines/weights/roma_mamba_base.pth \
  user@target:/share/home/jiah9/GBA_Project2/third_party/baselines/weights/

# DGLU
rsync -avP \
  /nfs-data3/drm/zhouguanjun/GBA_Proiect/third_party/baselines/DGLU/result/best_model/model_best.pth.tar \
  user@target:/share/home/jiah9/GBA_Project2/third_party/baselines/DGLU/result/best_model/

# ReFound
rsync -avP \
  /nfs-data3/drm/zhouguanjun/GBA_Proiect/third_party/baselines/ReFound_pretrained/checkpoint-299.pdparams \
  user@target:/share/home/jiah9/GBA_Project2/third_party/baselines/ReFound_pretrained/

rsync -avP \
  /nfs-data3/drm/zhouguanjun/GBA_Proiect/third_party/baselines/bert-based-chinese/ \
  user@target:/share/home/jiah9/GBA_Project2/third_party/baselines/bert-based-chinese/
```

只跑任务四时，最少只需：

```text
weights/backbones/mit_b2.pth
```

---

## 5. 环境

目标机 `(base)`，建议：

```bash
conda create -n gba python=3.8 -y
conda activate gba

pip install torch==2.1.0 torchvision==0.16.0 \
  --index-url https://download.pytorch.org/whl/cu118
pip install mmcv==2.1.0 mmengine torch-geometric scikit-learn pandas

# 任务一 A3/B2 需要
pip install timm transformers mamba-ssm causal-conv1d
```

编辑：

```bash
vim /share/home/jiah9/GBA_Project2/cluster.env
```

内容示例：

```bash
export GBA_ROOT=/share/home/jiah9/GBA_Project2
export GBA_PYTHON=/share/home/jiah9/miniconda3/envs/gba/bin/python
export GBA_MAMBA_PYTHON=/share/home/jiah9/miniconda3/envs/gba/bin/python
export GBA_DATA_ROOT=$GBA_ROOT/datasets
export GBA_RESULTS_ROOT=$GBA_ROOT/results
```

本机临时覆盖可以复制：

```bash
cp cluster.local.env.example cluster.local.env
```

如果 `mamba-ssm` 编译失败，可将 A3/B2 放到单独环境，并把 `GBA_MAMBA_PYTHON` 指向该环境。

---


## 5.1 Slurm 资源

每个 `experiments/<task>/<group>/<id>/run.slurm` 使用：

```bash
#SBATCH --partition=gpu_wu
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --cpus-per-task=16
#SBATCH --time=72:00:00
#SBATCH --mem=200G
#SBATCH --output=/share/home/jiah9/GBA_Project2/slurm_logs/%x_%j.log
```

没有 `--account`，单节点单卡。

训练前会运行：

```bash
python scripts/preflight_gba.py --task task4 --id B2G --root "$ROOT"
```

只预检：

```bash
PREFLIGHT_ONLY=1 sbatch experiments/task4/B/B2G/run.slurm
```

跳过任务一评估：

```bash
SKIP_EVAL=1 sbatch experiments/task1/M/M7/run.slurm
```

## 6. Batch size：已改回 16

当前脚本使用：

```text
GBA_BATCH_SIZE=16
```

| 任务 | 旧 batch | 新 batch | 说明 |
|---|---:|---:|---|
| 任务一 | 16 | 16 | **与旧配置一致** |
| 任务四 | 8 | 16 | 仍是旧配置的 2 倍 |
| 任务一/四 | — | 16 | 显存比 32 安全 |

batch=32 已取消。16 对 A800 80GB 更稳，尤其是 A3 VMamba、B2 RoMA。

但任务四旧配置是 batch=8，现在改成 16 仍会改变有效学习率。如果担心指标异常，建议：

1. 先保持 batch=16、原 lr 跑一个短程 pilot；
2. 如果任务四收敛明显变差，把任务四脚本单独改成 `GBA_BATCH_SIZE=8`；
3. 严格要求复现旧指标时，任务一用 16、任务四用 8。

任务一 batch=16 与旧配置一致，不需要再改 lr。

全局覆盖：

```bash
export GBA_BATCH_SIZE=16
```

如果只想让任务四用 8，可以在提交任务四前临时设置：

```bash
export GBA_BATCH_SIZE=8
```

或者直接把任务四 `run.slurm` 里的 `--batch-size "${GBA_BATCH_SIZE:-16}"` 改为 `--batch-size 8`。

## 7. 实验目录

```text
experiments/
├── task1/
│   ├── M/   M1-M7
│   ├── F/   F1-F4
│   ├── A/   A0-A3
│   └── B/   B1-B4
└── task4/
    ├── A/   A1-A6 + A4G/A5G
    ├── B/   B1G-B7G
    ├── C/   placeholder
    ├── D/   D6b
    └── P/   placeholder
```

每个实验目录：

```text
config.json
run.slurm
```

无需复训的实验，`run.slurm` 里的命令已注释，并写明：

```text
# SKIP: no GE; reuse previous result
```

`submit.py` 默认不会提交这些实验。

---

## 8. 提交

```bash
cd /share/home/jiah9/GBA_Project2

# 任务四全部
python experiments/submit.py --task task4 --submit

# 任务一 M/F 组
python experiments/submit.py --task task1 --groups M F --submit

# 任务一 + 任务四指定组
python experiments/submit.py --task task1 task4 --groups M B D --submit

# 指定多个 ID，混合任务
python experiments/submit.py --task task1 task4 --ids M7 B2G D6b --submit

# 只打印，不提交
python experiments/submit.py --task task4
```

每个小任务都有独立的 `run.slurm`，可以单独试：

```bash
# 预检，不训练
PREFLIGHT_ONLY=1 sbatch --export=ALL experiments/task4/B/B2G/run.slurm

# 单独训练一个任务四模型
sbatch experiments/task4/B/B2G/run.slurm

# 单独训练一个任务一模型
sbatch experiments/task1/M/M7/run.slurm
```

全部 97 个脚本索引：

```text
experiments/INDEX.md
```

---

## 8.1 预检

每个 `run.slurm` 在训练前会运行：

```bash
python scripts/preflight_gba.py --task task4 --id B2G --root "$ROOT"
```

只做预检、不训练：

```bash
PREFLIGHT_ONLY=1 sbatch experiments/task4/B/B2G/run.slurm
```

预检失败会以非零退出码结束，不会半启动训练。

## 9. 评估输出

所有结果统一写到：

```text
results/
├── task1/<group>/<id>/test/
├── task1/<group>/<id>/huizhou/
├── task4/<group>/<id>/test/
├── task4/<group>/<id>/huizhou/
├── index.csv
└── summary.csv
```

- 任务四：训练结束后自动评估 **test + Huizhou** 的所有 checkpoint；
- 任务一：训练脚本调用 `evaluate_task1_checkpoints.py` 两次，分别 test 和 Huizhou；
- 汇总：

```bash
python scripts/collect_results.py
```

生成：

```text
results/index.csv
results/summary.csv
```

---

## 10. 迁移后检查

```bash
cd /share/home/jiah9/GBA_Project2

python scripts/validate_dataset.py --sample 100
grep -R "/nfs-data3/drm/zhouguanjun/GBA_Project2" src scripts configs experiments third_party/mapformer_patched || true
find datasets weights third_party -type l

python experiments/submit.py --task task4
```

最后跑一个单 batch 验证，再批量提交。

---

## 11. 上传 ModelScope

目标仓库：

```text
https://www.modelscope.cn/datasets/Zeluar/GBA_Project2
```

如果遇到：

```text
error: [E1022] Failed to create SDK directories:
[Errno 13] Permission denied: '/nfs-data0/home'
```

这是 `HOME`/缓存目录不可写，不是 token 问题。上传脚本已经自动设置：

```bash
HOME=$ROOT/.upload_home
MODELSCOPE_CACHE=$ROOT/.modelscope_cache
HF_HOME=$ROOT/.hf_home
```

也可以手动：

```bash
export HOME=/nfs-data3/drm/zhouguanjun/GBA_Project2/.upload_home
export MODELSCOPE_CACHE=/nfs-data3/drm/zhouguanjun/GBA_Project2/.modelscope_cache
export HF_HOME=/nfs-data3/drm/zhouguanjun/GBA_Project2/.hf_home
```

推荐使用已经配置好的 ModelScope CLI：

```bash
cd /nfs-data3/drm/zhouguanjun/GBA_Project2
export MODELSCOPE_API_TOKEN=<你的 ModelScope Access Token>
bash scripts/upload_modelscope.sh
```

脚本会：

- 检查三个包；
- 用硬链接建立 `.upload_staging/`，不额外占 7.6 GB；
- 登录 ModelScope；
- 上传 `Zeluar/GBA_Project2`。

Token 只在当前 shell 中使用，不写入仓库。

如果 CLI 不可用，再使用下面的 Git LFS 方式。

需要上传三个包：

```text
gba_datasets_v2.tar.zst   3.9G
gba_code_v2.tar.zst       988M
gba_weights_v2.tar.zst    2.7G
```

### 11.1 安装 Git LFS

```bash
conda install -c conda-forge git-lfs -y
git lfs install
```

### 11.2 登录/克隆

在 ModelScope 个人设置里生成 Access Token，然后：

```bash
git clone https://www.modelscope.cn/datasets/Zeluar/GBA_Project2.git
cd GBA_Project2
```

如果提示登录，用户名填 ModelScope 用户名，密码填 Access Token。

### 11.3 跟踪大文件

```bash
git lfs track "*.zst"
git add .gitattributes
```

### 11.4 复制并提交

```bash
cp /nfs-data3/drm/zhouguanjun/GBA_Project2/gba_datasets_v2.tar.zst .
cp /nfs-data3/drm/zhouguanjun/GBA_Project2/gba_code_v2.tar.zst .
cp /nfs-data3/drm/zhouguanjun/GBA_Project2/gba_weights_v2.tar.zst .
cp /nfs-data3/drm/zhouguanjun/GBA_Project2/README_PORTABLE.md README.md

git add gba_datasets_v2.tar.zst gba_code_v2.tar.zst gba_weights_v2.tar.zst README.md
git commit -m "Add GBA_Project2 data, code and non-public weights"
git push
```

如果仓库已有内容，先：

```bash
git pull
```

再复制、提交、推送。

### 11.5 检查

上传后在 ModelScope 页面确认三个 `.zst` 都是 LFS 文件，并检查文件大小：

```text
gba_datasets_v2.tar.zst   ~3.9 GB
gba_code_v2.tar.zst       ~988 MB
gba_weights_v2.tar.zst    ~2.7 GB
```
