liqi / code /multi_vlm2vec_train /scripts /train /train_local_qwen.sh
WaitXian's picture
Upload liqi files
0ab2566 verified
Raw History Blame Contribute Delete
3.62 kB
# 基于LAMRA实现拍立淘同款embed模型训练
set -x
## 分布式配置,一个节点一张卡
NUM_GPUS=1
DISTRIBUTED_ARGS="
--nnodes=1 \
--nproc_per_node ${NUM_GPUS} \
--rdzv_backend c10d \
--rdzv_endpoint localhost:0 \
"
## 模型设置
### backbone proj模型设置
MODEL_ID=qwen3vl
MODEL_LOCAL_PATH=/data/oss_bucket_0/peifeng/vlm2vec/models/qwen/Qwen3-VL-Embedding-2B/
EMBED_DIM=2048
## 数据集设置
### 训练数据 json(本地路径,支持单个 json / json 目录 / 逗号分隔的多个 json)
DATA_PATH=/data/oss_bucket_0/peifeng/multi_vlm2vec/dataset/tuwen_train.json
MAX_LINES=10000
IMAGE_TYPE="both"
TEXT_REQUIRE=True
### 图片所在的本地目录(不传则用代码里的默认值)
IMAGE_PATH_PREFIX=/data/oss_bucket_0/peifeng/multi_vlm2vec/dataset/merge/image
## InfoNCE 候选池设置
TEMPERATURE=0.02
### InfoNCE 负样本共享的卡数:1=只用本卡 batch;8=单机 8 卡共享;-1/world_size=全部卡共享
### 候选池 = 2 * NEG_GATHER_SIZE * PER_DEVICE_BATCH_SIZE,负样本数 = 候选池 - 1
### 本地单卡训练保持 1 即可,多卡时按需放大
NEG_GATHER_SIZE=1
## 训练设置
### 训练参数设置
TRAIN_VISION_ENCODER=True
USE_VISION_LORA=False
TRAIN_LLM=True
USE_LORA=True
Q_LORA=False
LORA_R=128
LORA_ALPHA=256
### DS和基本训练参数设置
DS_STAGE=zero2
PER_DEVICE_BATCH_SIZE=4
GRAD_ACCUM=1
NUM_EPOCHS=5
SAVE_STEPS=200
LR=1e-5
MODEL_MAX_LEN=512
## 保存和读取设置
OUTPUT_DIR=/data/oss_bucket_0/peifeng/multi_vlm2vec/multi_vlm2vec_train/test_train_2607/
RUN_ID=tbstars_train_debug
RESUME=False ## 除了可以给定False或者True,也可以直接给定读取的地址,其中当没有ckpt保存在其中的时候,就选择False
echo "begin training!"
torchrun $DISTRIBUTED_ARGS train/train_tuwen_qwen3vl_infonce.py \
--model_id $MODEL_ID \
--data_path ${DATA_PATH} \
--image_path_prefix ${IMAGE_PATH_PREFIX} \
--max_lines $MAX_LINES \
--output_dir ${OUTPUT_DIR}/${RUN_ID} \
--report_to tensorboard \
--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 12 \
--gradient_accumulation_steps $GRAD_ACCUM \
--eval_strategy "no" \
--save_strategy "steps" \
--save_total_limit 200 \
--learning_rate ${LR} \
--weight_decay 0. \
--warmup_ratio 0.03 \
--lr_scheduler_type "constant_with_warmup" \
--logging_steps 10 \
--tf32 True \
--model_max_length $MODEL_MAX_LEN \
--gradient_checkpointing False \
--dataloader_num_workers 0 \
--train_vision_encoder $TRAIN_VISION_ENCODER \
--use_vision_lora $USE_VISION_LORA \
--use_lora $USE_LORA \
--q_lora $Q_LORA \
--lora_r $LORA_R \
--lora_alpha $LORA_ALPHA \
--model_local_path $MODEL_LOCAL_PATH \
--use_flash_attn True \
--save_steps $SAVE_STEPS \
--stage classify \
--embed_dim ${EMBED_DIM} \
--resume_from_checkpoint $RESUME \
--image_type $IMAGE_TYPE \
--text_require $TEXT_REQUIRE \
--train_llm $TRAIN_LLM \
--temperature $TEMPERATURE \
--neg_gather_size $NEG_GATHER_SIZE