AI大模型教程
一起来学习

DataWhale多模态赛事Task1

赛事链接:https://tianchi.aliyun.com/competition/entrance/532251/introduction?spm=a2c22.12281925.0.0.2f307137p8qZmp

赛事描述:在当下大数据、大模型时代,大数据是驱动大模型的能源。当前大模型的训练数据绝大部分来源于互联网上的信息,但随着大模型尺寸与性能逐渐提升,互联网上的海量数据也将逐渐使用殆尽,并且对于多模态大模型来说,这些海量资源在获取后,也需要极大的额外处理和人力标注才可以达到可用于训练大模型的水准。因此,如何借助已有的强大的大模型,在有限的计算资源下为新的模型训练流程高效合成优质的训练数据成为了一个新兴的值得关注的问题。“天池 Better Synth – 多模态大模型数据合成挑战赛”正是在这样的背景下产生,该比赛旨在鼓励参赛者探究合成数据对于多模态大模型训练的影响,以及促使参赛者追求高效的数据合成方法与策略,共同推进多模态大模型数据合成从 0-1 以及从 1-100 的前沿创新探索。
本次比赛关注于多模态大模型在图片理解任务上的能力,核心任务是在给定的种子数据集的基础上,通过高效的数据合成方法与模型生成出更优的数据,并在给定计算量的约束下,实现对图像理解多模态大模型的高效训练。

环境配置

流下贫穷的眼泪,在阿里云人工智能平台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的内存,

下载模型和相关数据集

分别下载了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的数据集格式是这样的:

验证阶段基于公开测试基准的 TextVQA 和 MMBench 来进行:
MMbench通过指令,hint和图像让模型做选择题(包含各种类型的问题):

TextVQA则让模型根据图像回答问题:

数据处理

然后data juicer使用下载的BLIP模型生成对图像的描述:

训练模型

模型使用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

开始预训练:

最后基本1.5左右

推理的脚本倒是没啥可说的,temperature设置的是0

结果

文章来源于互联网:DataWhale多模态赛事Task1

相关推荐: 标题拟写:快速上手秘籍-AI写作

让AI根据这些共同点,写出符合新媒体平台(如小红书)特征并围绕指定主题的爆款标题。这样出来的结果会更加符合实际需求。很好,请你根据这些共同点,再写I0条小红书标题,围绕眼霜推荐这个主题。根据您提供的标题的共同点,我为您准备了以下I0条围绕眼霜推荐的小红书标题。…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » DataWhale多模态赛事Task1
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们