File size: 3,457 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
#!/bin/bash
# CoT 数据生成 - Nebula 提交(本地大 Qwen-VL 模型 vLLM 离线批推)
# Usage: sh scripts/submit/submit_cot_gen.sh
# 远程机器上 OSS 挂载在 /data/oss_bucket_0/,模型/数据/输出都直接走该路径
# entry 直接指向生成脚本,nebula 每卡拉起一个进程,脚本内部按 RANK/WORLD_SIZE 分片,
# 每个进程用 tp=1 独占一张卡跑 vLLM,各分片写各自的 .shardN-M.jsonl,跑完再合并

## 集群资源配置(gpu:100 表示 1 张卡,27B 模型 bf16 单卡 A800-80G 放得下)
CLUSTER_CONFIG='./cluster.json'
cat <<EOT > ${CLUSTER_CONFIG}
{
    "worker": {
        "gpu": 100,
        "cpu": 1200,
        "memory": 50000
    }
}
EOT
## worker 数即分片数,8 个 worker 各跑 1/8 数据
WORKER_COUNT=8

## ============ 模型设置 ============
MODEL_PATH=/data/oss_bucket_0/planck/hf_models/Qwen3.6-27B

## ============ 数据集设置 ============
TRAIN_DATA_PATH=/data/oss_bucket_0/siku/Last_reranker/dataset/all_data_wo_q_bbox/00-07/with_bbox/train_format/eval.jsonl
NUM_DOCS=10
MAX_CROP_TOKENS=80
PATCH_SIZE=16

## ============ 生成设置 ============
MAX_MODEL_LEN=16384
MAX_NEW_TOKENS=4096
MAX_RETRIES=3
RETRY_TEMPERATURE=0.7
BATCH_SIZE=64
SEED=42

## ============ 保存设置 ============
RUN_ID=qwen36-27b-cot-gen-eval
OUTPUT_PATH=/data/oss_bucket_0/liqi/dataset/reranker/cot_data_eval/eval_cot.jsonl

## 试跑:设为 "--test 20" 时每个分片只跑前 20 条、输出 train_cot.test.shardN-M.jsonl
## 正式全量生成时留空
TEST=""

## ============ 拼装参数(user_params 会原样传给 entry 脚本) ============
## 不传 --shard-id/--num-shards,脚本自动取 RANK/WORLD_SIZE;分片模式下 tp 强制为 1
args="\
    --model-path $MODEL_PATH \
    --train-data-path $TRAIN_DATA_PATH \
    --output-path $OUTPUT_PATH \
    --num-docs $NUM_DOCS \
    --seed $SEED \
    --max-crop-tokens $MAX_CROP_TOKENS \
    --patch-size $PATCH_SIZE \
    --tensor-parallel-size 1 \
    --max-model-len $MAX_MODEL_LEN \
    --max-new-tokens $MAX_NEW_TOKENS \
    --max-retries $MAX_RETRIES \
    --retry-temperature $RETRY_TEMPERATURE \
    --batch-size $BATCH_SIZE \
    $TEST"

nebulactl run mdl \
          --engine=xdl \
          --ignore=venv/*,data/*,.git/*,cot_data/* \
          --job_name=${RUN_ID} \
          --queue="pailitao_algo_high_2" \
          --entry="cot_gen/gen_cot_data.py" \
          --nebula_project=pailitao_v100 \
          --algo_name=pytorch2100 \
          --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_cot_gen.txt \
          --force \
          --max_failover_times=2

rm ${CLUSTER_CONFIG}
# 分片数由 WORKER_COUNT 决定,各分片输出:
#   ${OUTPUT_PATH%.jsonl}.shard{0..7}-8.jsonl        成功样本
#   ${OUTPUT_PATH%.jsonl}.shard{0..7}-8.jsonl.failed 重试仍失败的样本(含 raw_output 便于排查)
# 全部跑完后合并:
#   cat ${OUTPUT_PATH%.jsonl}.shard*-${WORKER_COUNT}.jsonl > ${OUTPUT_PATH}
# 各分片支持断点续跑:重新提交同一 job 会跳过已写入的 sample_idx