知者何南 发表于 3 天前

DataWhale多模态赛事Task1

赛事链接:https://tianchi.aliyun.com/competition/entrance/532251/introduction?spm=a2c22.12281925.0.0.2f307137p8qZmp
赛事形貌:在当下大数据、大模子时代,大数据是驱动大模子的能源。当前大模子的训练数据绝大部门来源于互联网上的信息,但随着大模子尺寸与性能逐渐提拔,互联网上的海量数据也将逐渐使用殆尽,而且对于多模态大模子来说,这些海量资源在获取后,也必要极大的额外处理和人力标注才可以到达可用于训练大模子的水准。因此,如何借助已有的强盛的大模子,在有限的计算资源下为新的模子训练流程高效合成优质的训练数据成为了一个新兴的值得关注的问题。“天池 Better Synth - 多模态大模子数据合成挑战赛”正是在如许的背景下产生,该比赛旨在鼓励参赛者探究合成数据对于多模态大模子训练的影响,以及促使参赛者追求高效的数据合成方法与策略,共同推进多模态大模子数据合成从 0-1 以及从 1-100 的前沿创新探索。
本次比赛关注于多模态大模子在图片理解任务上的本领,焦点任务是在给定的种子数据集的根本上,通过高效的数据合成方法与模子天生出更优的数据,并在给定计算量的约束下,实现对图像理解多模态大模子的高效训练。
https://i-blog.csdnimg.cn/direct/400d8719e49540a491d4372dd5cb9c5c.png
环境配置

流下贫穷的眼泪,在阿里云人工智能平台PAI,交互式建模(DSW),留意地点一定要选择在杭州,然后使用镜像地点:dsw-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-training-algorithm/data-juicer-better-synth:0.0.1(不使用镜像,可以自己配,使用包内里的bash install.sh下载环境包,但可能出问题),a10 + 188G的内存,
https://i-blog.csdnimg.cn/direct/9cd54ab2914249bb97cff3df8022773f.png
下载模子和干系数据集

分别下载了Mini-Gemini (MGM-2B) 作为base模子,clip-vit-large-patch14-336和openclip-convnext-large-d-320-laion2B-s29B-b131K-ft-soup作为CLIP(Contrastive Language-Image Pre-training)图像解码器,以及7b的BLIP(Bilingual Language-Image Pre-training)模子:blip2-opt-2___7b
它seed和fine-tune的数据集格式是如许的:https://i-blog.csdnimg.cn/direct/7e3e78df56c84df1b5112e98d6c2e43c.png
https://i-blog.csdnimg.cn/direct/f8191a497dc54554ad83d6fe6bf74519.png
验证阶段基于公开测试基准的 TextVQA 和 MMBench 来举行:
MMbench通过指令,hint和图像让模子做选择题(包罗各种范例的问题):
https://i-blog.csdnimg.cn/direct/0875d69993ea4b5bad56ddf7cac39ff2.png
TextVQA则让模子根据图像回答问题:
https://i-blog.csdnimg.cn/direct/93b9cea49a8a41e594e397259e145150.png
数据处理

然后data juicer使用下载的BLIP模子天生对图像的形貌:
https://i-blog.csdnimg.cn/direct/5536f540e8084fa7a55852b9d890a7a2.png
https://i-blog.csdnimg.cn/direct/3d70708d553543a2bc0cb5bb0dd710b1.png
训练模子

模子使用deepspeed的zero2算法来预训练和微调
# ------------- Pretrain ---------------
deepspeed $SCRIPT_DIR/training/mgm/train/train_mem.py \
    --deepspeed $SCRIPT_DIR/training/scripts/zero2_offload.json \
    --model_name_or_path $SCRIPT_DIR/training/model_zoo/LLM/gemma/gemma-2b-it \
    --version gemma \
    --data_path $PRETRAIN_DATASET_JSON \
    --image_folder $PRETRAIN_DATASET_IMAGE_PATH \
    --vision_tower $SCRIPT_DIR/training/model_zoo/OpenAI/clip-vit-large-patch14-336 \
    --vision_tower_aux $SCRIPT_DIR/training/model_zoo/OpenAI/openclip-convnext-large-d-320-laion2B-s29B-b131K-ft-soup \
    --mm_projector_type mlp2x_gelu \
    --tune_mm_mlp_adapter True \
    --mm_vision_select_layer -2 \
    --mm_use_im_start_end False \
    --mm_use_im_patch_token False \
    --image_size_aux $AUX_SIZE \
    --bf16 True \
    --output_dir $SCRIPT_DIR/../output/training_dirs/$PRETRAIN_NAME \
    --num_train_epochs $NUM_TRAIN_EPOCHS \
    --per_device_train_batch_size $PRETRAIN_BATCH_SIZE_PER_GPU \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps $PRETRAIN_GRADIENT_ACCUMULATION_STEPS \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps $CKPT_SAVE_STEPS \
    --save_total_limit $TOTAL_SAVE_CKPT_LIMIT \
    --learning_rate 1e-3 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps $LOGGING_STEP \
    --tf32 True \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --dataloader_num_workers $PRETRAIN_DATALOADER_NUM_WORKERS \
    --lazy_preprocess True \
    --report_to none \
    2>&1 | tee $SCRIPT_DIR/../output/training_dirs/$PRETRAIN_NAME/pretrain.log

mkdir -p $SCRIPT_DIR/../output/training_dirs/$FINETUNE_NAME

#------------- Finetune ---------------
deepspeed $SCRIPT_DIR/training/mgm/train/train_mem.py \
    --deepspeed $SCRIPT_DIR/training/scripts/zero2_offload.json \
    --model_name_or_path $SCRIPT_DIR/training/model_zoo/LLM/gemma/gemma-2b-it \
    --version gemma \
    --data_path $SCRIPT_DIR/training/data/finetuning_stage_1_12k/mgm_instruction_stage_1_12k.json \
    --image_folder $SCRIPT_DIR/training/data/finetuning_stage_1_12k \
    --vision_tower $SCRIPT_DIR/training/model_zoo/OpenAI/clip-vit-large-patch14-336 \
    --vision_tower_aux $SCRIPT_DIR/training/model_zoo/OpenAI/openclip-convnext-large-d-320-laion2B-s29B-b131K-ft-soup \
    --pretrain_mm_mlp_adapter $SCRIPT_DIR/../output/training_dirs/$PRETRAIN_NAME/mm_projector.bin \
    --mm_projector_type mlp2x_gelu \
    --mm_vision_select_layer -2 \
    --mm_use_im_start_end False \
    --mm_use_im_patch_token False \
    --image_aspect_ratio pad \
    --group_by_modality_length True \
    --image_size_aux $AUX_SIZE \
    --bf16 True \
    --output_dir $SCRIPT_DIR/../output/training_dirs/$FINETUNE_NAME \
    --num_train_epochs $NUM_TRAIN_EPOCHS \
    --per_device_train_batch_size $FINETUNE_BATCH_SIZE_PER_GPU \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps $FINETUNE_GRADIENT_ACCUMULATION_STEPS \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps $CKPT_SAVE_STEPS \
    --save_total_limit $TOTAL_SAVE_CKPT_LIMIT \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps $LOGGING_STEP \
    --tf32 True \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --dataloader_num_workers $FINETUNE_DATALOADER_NUM_WORKERS \
    --lazy_preprocess True \
    --report_to none \
    2>&1 | tee $SCRIPT_DIR/../output/training_dirs/$FINETUNE_NAME/finetuning.log
开始预训练:
https://i-blog.csdnimg.cn/direct/0867b0f0d70a41dfb486755c159333d4.png
末了基本1.5左右
https://i-blog.csdnimg.cn/direct/44ba5fd4efce41f081ad18897693f1d1.png
推理的脚本倒是没啥可说的,temperature设置的是0
效果

https://i-blog.csdnimg.cn/direct/1c4ba45a397349e1a15cf6f47446035a.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: DataWhale多模态赛事Task1