File size: 4,365 Bytes
01cf98b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# Qwen3-VL reranker 训练 - Nebula 提交(训练参数直接在本文件配置)
# Usage: sh scripts/submit/submit_train_qwen3vl.sh
# 远程机器上 OSS 挂载在 /data/oss_bucket_0/,模型/数据/输出都直接走该路径
# entry 直接指向训练脚本,nebula 会自动按多机多卡分布式拉起,无需手写 torchrun

## 集群资源配置(每个 worker = 8 卡;gpu:800 表示 8 张卡)
CLUSTER_CONFIG='./cluster.json'
cat <<EOT > ${CLUSTER_CONFIG}
{
    "worker": {
        "gpu": 800,
        "cpu": 9600,
        "memory": 400000
    }
}
EOT
WORKER_COUNT=2

## ============ 模型设置 ============
MODEL_ID=qwen3-vl-2b
MODEL_LOCAL_PATH=/data/oss_bucket_0/liqi/models/Qwen3-VL-2B-Instruct

## ============ 数据集设置 ============
TRAIN_DATA_PATH=/data/oss_bucket_0/siku/Last_reranker/dataset/all_data_wo_q_bbox/00-07/with_bbox/train_format/train.jsonl
EVAL_DATA_PATH=/data/oss_bucket_0/siku/Last_reranker/dataset/all_data_wo_q_bbox/00-07/with_bbox/train_format/eval.jsonl
NUM_TRAIN_DOCS=10
FULL_CROP_MODE=False
FORMAT_PROMPT=format_prompt/listwise_reranker_v1.jinja

## ============ 训练参数设置 ============
### 视觉部分
TRAIN_VISION_ENCODER=False
USE_VISION_LORA=False
TRAIN_VISION_PROJECTOR=False

### LoRA(USE_LORA=False 走全参数微调)
USE_LORA=False
Q_LORA=False
LORA_R=128
LORA_ALPHA=128

### DS 和基本训练参数
DS_STAGE=zero2
PER_DEVICE_BATCH_SIZE=4
GRAD_ACCUM=2
NUM_EPOCHS=10
LR=5e-6
MODEL_MAX_LEN=8192
SAVE_STEPS=100

## ============ 保存设置 ============
RUN_ID=${MODEL_ID}-reranker-baseline
OUTPUT_DIR=/data/oss_bucket_0/liqi/cot_reranker/baseline/

## ============ wandb 设置 ============
## WANDB_API_KEY / WANDB_PROJECT / WANDB_MODE 在 train/train_reranker_qwen3vl.py 开头通过环境变量默认值配置

## ============ 拼装训练参数(user_params 会原样传给 entry 训练脚本) ============
args="\
    --model_id $MODEL_ID \
    --output_dir $OUTPUT_DIR \
    --report_to wandb \
    --run_name $RUN_ID \
    --deepspeed ./ds_configs/${DS_STAGE}.json \
    --bf16 True \
    --num_train_epochs $NUM_EPOCHS \
    --per_device_train_batch_size $PER_DEVICE_BATCH_SIZE \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps $GRAD_ACCUM \
    --eval_strategy no \
    --eval_steps 100 \
    --eval_accumulation_steps 4 \
    --save_strategy steps \
    --save_steps $SAVE_STEPS \
    --save_total_limit 500 \
    --learning_rate ${LR} \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type cosine \
    --logging_steps 1 \
    --tf32 True \
    --model_max_length $MODEL_MAX_LEN \
    --gradient_checkpointing True \
    --dataloader_num_workers 8 \
    --train_vision_encoder $TRAIN_VISION_ENCODER \
    --use_vision_lora $USE_VISION_LORA \
    --train_vision_projector $TRAIN_VISION_PROJECTOR \
    --use_lora $USE_LORA \
    --q_lora $Q_LORA \
    --lora_r $LORA_R \
    --lora_alpha $LORA_ALPHA \
    --model_local_path $MODEL_LOCAL_PATH \
    --train_data_path $TRAIN_DATA_PATH \
    --eval_data_path $EVAL_DATA_PATH \
    --use_flash_attn True \
    --format_prompt $FORMAT_PROMPT \
    --num_train_docs $NUM_TRAIN_DOCS \
    --full_crop_mode $FULL_CROP_MODE \
    --max_full_tokens 20 \
    --max_crop_tokens 80"

nebulactl run mdl \
          --engine=xdl \
          --ignore=venv/*,data/*,.git/* \
          --job_name=${RUN_ID} \
          --queue="pailitao_algo_high_2" \
          --entry="train/train_reranker_qwen3vl.py" \
          --nebula_project=pailitao_v100 \
          --algo_name=pytorch280 \
          --worker_count=${WORKER_COUNT} \
          --file.cluster_file="./cluster.json" \
          --user_params="$args" \
          --nas_file_system_id=98d384a407-okl3.cn-zhangjiakou.nas.aliyuncs.com \
          --oss_access_id=LTAI5tMZb5HHH6HHgAExAyiL \
          --oss_access_key=6MVP8JnTE01t4TLUHhPoFV0swZNTrb \
          --oss_bucket=pailitao-ai \
          --oss_endpoint=oss-cn-zhangjiakou.aliyuncs.com \
          --requirements_file_name=requirements_qwen3vl.txt

rm ${CLUSTER_CONFIG}
# queue是队列名,algo_name由队列所决定
# nebula_project是集群名
# entry是要运行的主文件(nebula 自动做分布式拉起)
# worker_count 是机器数量,每台机器的卡数由 cluster.json 的 gpu 决定(800 = 8 卡)
# nas_file_system_id 和 oss是存储文件的地址