Team:鲜衣怒马少年时 (好难提交)
Author:Ambrose

在百度商业营销场景,广告图片生成精细化描述具有重要意义和价值。图片描述信息(Image Caption),可以作为特征丰富广告系统对多模态内容的理解,提升模型的泛化能力,也可以为文生图模型提供高质量的训练样本,提升文生图模型的文本控制能力。当前,随着大模型时代的到来,利用多模态大语言模型(MLLM)生成图片描述已经成为业界的通用做法(DallE3,Sora, Stable Diffusion3)。本赛道任务是广告图片描述生成,期望通过高质量数据和建模优化,提升图片描述的准度和完备性。
本次任务提供百度商业真实的广告图片和图片中文描述,数据量级约100万,参赛者自行划分训练集和验证集。 每条样本数据包括了三列,采用tab分割,分别为: * 图片id * 图片base64编码 * 图片的文字描述。如下图所示,通常包括了对图片中各个主体(人物的外貌、衣着、表情、物体颜色)、主体之间关系、背景、风格等细粒度描述。

基于任务描述,该赛题属于广告描述场景下的多模态大语言模型MLLM微调任务。基于该任务特性我们设计如下的解决方案:

请总结图片的图片风格并描述图片内容。其中图片风格例如:写实风格、图标风格、像素风格、水彩风格、卡通风格、插画风格、黑白简笔风格、中国风风格、纯文字风格、艺术风格、素描风格、3D风格、科技风格等。图片内容包括:图片中各个主体的特征、主体之间关系和图片背景。注意描述内容需要具有准确性、连贯性和简洁性。因此该图片的图片风格和描述内容为:

从图中可以看出,训练过程中,进入大语言模型Mgen之前的图文特征由四部分组成:文本前缀编码特征 + 图像嵌入特征 + Prompt编码特征 + Answer。其中“Image Tokens”需要在文本嵌入中预留出256位的图像占位符以供后续图像特征通过paddle.scatter进行替换。

针对本赛题的任务,可以选择的微调方式由LoRa微调(baseline)、全参数微调和部分参数微调。从数据量和计算资源考虑,最终选择了部分参数微调的方式。

# MLLM微调
cd paddlemix
## 数据预处理
python tools/convert_labels.py ./data/caption_train_data/merged_train_id_base64_cap ./data/ambrose_prompt/
## 模型微调
CUDA_VISIBLE_DEVICES=0 python supervised_finetune.py config/mgen_vl/lora_sft_argument.json
# MLLM推理
cd paddlemix
## 模型merge
CUDA_VISIBLE_DEVICES=0 python merge_local_params.py --model_name_or_path /data/wsc/adImageCaption/pretrained_models/mgen-vl-chat-7b \
--lora_path /data/wsc/adImageCaption/checkpoints/mgen_vl_sft_ckpts_clip/checkpoint-30000 \
--merge_model_path ../checkpoints/mgen_vl_merge_local
## 模型推理
CUDA_VISIBLE_DEVICES=0 python predict_batch.py ./test_samples.txt ./test/results.txt /data/wsc/adImageCaption/pretrained_models/mgen-vl-chat-7b/
该赛题关键在于了解多模态大语言模型MLLM的运行机制,针对数据做定向清洗、模型图文交互模块设计以及推理加速设计。
对推理加速有兴趣的同学可以关注一下“多头解码” (multi-token decode)
1 commits
Python
86.8%
C++
7.4%
Cuda
5.3%
Team:鲜衣怒马少年时 (好难提交)
Author:Ambrose

在百度商业营销场景,广告图片生成精细化描述具有重要意义和价值。图片描述信息(Image Caption),可以作为特征丰富广告系统对多模态内容的理解,提升模型的泛化能力,也可以为文生图模型提供高质量的训练样本,提升文生图模型的文本控制能力。当前,随着大模型时代的到来,利用多模态大语言模型(MLLM)生成图片描述已经成为业界的通用做法(DallE3,Sora, Stable Diffusion3)。本赛道任务是广告图片描述生成,期望通过高质量数据和建模优化,提升图片描述的准度和完备性。
本次任务提供百度商业真实的广告图片和图片中文描述,数据量级约100万,参赛者自行划分训练集和验证集。 每条样本数据包括了三列,采用tab分割,分别为: * 图片id * 图片base64编码 * 图片的文字描述。如下图所示,通常包括了对图片中各个主体(人物的外貌、衣着、表情、物体颜色)、主体之间关系、背景、风格等细粒度描述。

基于任务描述,该赛题属于广告描述场景下的多模态大语言模型MLLM微调任务。基于该任务特性我们设计如下的解决方案:

请总结图片的图片风格并描述图片内容。其中图片风格例如:写实风格、图标风格、像素风格、水彩风格、卡通风格、插画风格、黑白简笔风格、中国风风格、纯文字风格、艺术风格、素描风格、3D风格、科技风格等。图片内容包括:图片中各个主体的特征、主体之间关系和图片背景。注意描述内容需要具有准确性、连贯性和简洁性。因此该图片的图片风格和描述内容为:

从图中可以看出,训练过程中,进入大语言模型Mgen之前的图文特征由四部分组成:文本前缀编码特征 + 图像嵌入特征 + Prompt编码特征 + Answer。其中“Image Tokens”需要在文本嵌入中预留出256位的图像占位符以供后续图像特征通过paddle.scatter进行替换。

针对本赛题的任务,可以选择的微调方式由LoRa微调(baseline)、全参数微调和部分参数微调。从数据量和计算资源考虑,最终选择了部分参数微调的方式。

# MLLM微调
cd paddlemix
## 数据预处理
python tools/convert_labels.py ./data/caption_train_data/merged_train_id_base64_cap ./data/ambrose_prompt/
## 模型微调
CUDA_VISIBLE_DEVICES=0 python supervised_finetune.py config/mgen_vl/lora_sft_argument.json
# MLLM推理
cd paddlemix
## 模型merge
CUDA_VISIBLE_DEVICES=0 python merge_local_params.py --model_name_or_path /data/wsc/adImageCaption/pretrained_models/mgen-vl-chat-7b \
--lora_path /data/wsc/adImageCaption/checkpoints/mgen_vl_sft_ckpts_clip/checkpoint-30000 \
--merge_model_path ../checkpoints/mgen_vl_merge_local
## 模型推理
CUDA_VISIBLE_DEVICES=0 python predict_batch.py ./test_samples.txt ./test/results.txt /data/wsc/adImageCaption/pretrained_models/mgen-vl-chat-7b/
该赛题关键在于了解多模态大语言模型MLLM的运行机制,针对数据做定向清洗、模型图文交互模块设计以及推理加速设计。
对推理加速有兴趣的同学可以关注一下“多头解码” (multi-token decode)
1 commits
Python
86.8%
C++
7.4%
Cuda
5.3%