多模态大模型SFT数据处理

多模态数据处理:
数据质量、数据数量、数据分布和数据安全
论文:https://arxiv.org/pdf/2407.19180

数据质量

1.过滤

1.图片过滤:图片过滤器在扩散模型最为常见。
图片属性过滤:分辨率;宽高比。
高级过滤:人工标注选择;模型引导过滤:小模型对图片打分。
来源过滤:根据数据源,如微博可以根据点赞转发数等过滤。

2.文本过滤
标注者引导过滤:人工选择。
模型引导过滤:ChatGPT,或自己训练小模型。

3.图文对齐过滤
CLIP相似度分数。

2.数据增强

使用预训练模型,如ChatGPT生成。

2.数据分布

目标是获得一个均衡且多样化的数据集。

1.图像导向平衡:图像分类模型对其分类;图像去重
2.文本导向平衡:排除罕见的名词短语,删除过于常见的名词短语(如llava罕见为3,过于常见是100次)

3.数据安全

包含 数据毒性和数据偏见。前者是NSFW,偏见是数据中的社会偏见或刻板印象。

1.有毒数据
文本:https://blog.csdn.net/PolarisRisingWar/article/details/130349309
图像:CLIP embeddings 比较图片和毒性文本的相似度。
2.偏见数据
反事实数据增强(CAD)是一种用于平衡文本数据中表示偏差的常见技术。
https://aclanthology.org/2022.naacl-main.347/

合成VQA数据的数据处理

1.设计promot,任务导向,few shot
2.使用ChatGPT生成实例,维护一个任务池,每当有新实例时就把实例与任务池中的所有数据计算ROUGE-L,小于0.7再添加进任务池
3.对任务池的数据去重
4.计算整体数据的slef-bleu,观察整体的多样性情况
5.计算每条实例的distinct值,观察每条实例的多样性。过滤,然后回到4.
6.描述性统计分析,聚类图展示

<think>嗯,用户想了解如何使用LoRA对多模态大模型进行微调的实际操作方法。首先,我需要回忆一下LoRA的基本原理。LoRA通过低秩分解来模拟参数变化,这样可以减少训练参数量,适合大模型微调。用户提到的多模态大模型,比如DeepSeek Janus-Pro 7B,可能需要同时处理文本、图像等多种数据,所以微调时要考虑不同模态的参数调整。 接下来,我得结合用户提供的引用内容。引用[1]提到LoRA的核心思想,引用[2]介绍了ms-swift框架支持多模态模型的训练和微调,而引用[3]则提供了一些学习资料。所以,我需要整合这些信息,给出一个实战教程的步骤。 首先,可能需要准备环境,安装ms-swift框架,因为引用[2]提到它支持多模态模型的训练和部署。然后,数据准备部分,要处理多模态数据,比如文本-图像对。接着,配置LoRA参数,确定rank和模块选择。在微调过程中,可能需要加载预训练的多模态模型,并应用LoRA到特定的模块,比如视觉编码器和文本解码器。 然后,用户可能关心具体的代码示例,所以需要提供一个使用ms-swift的代码片段,展示如何配置和启动训练。此外,还要考虑模型融合,将LoRA适配器合并回原模型,以便推理时使用。最后,性能优化和注意事项也是关键点,比如混合精度训练和参数调整。 用户可能还希望了解如何验证微调效果,比如在多模态任务上的评估指标,以及常见问题的解决方法。需要确保回答结构清晰,步骤详细,并且引用相关的资料,比如引用[1]和[2]来支持技术点。同时,生成的相关问题需要围绕LoRA微调的优化、多模态数据处理和框架使用等方面,帮助用户进一步深入学习。</think>### LoRA微调多模态大模型实战教程 ### 一、环境准备 1. 安装ms-swift框架(魔搭大模型训练框架) ```bash pip install ms-swift[multi-modal]>=1.6.0 ``` 2. 准备预训练模型(以DeepSeek Janus-Pro 7B为例)[^2] ```python from modelscope import snapshot_download model_dir = snapshot_download('deepseek-ai/DeepSeek_Janus-Pro-7B') ``` ### 二、数据准备(以图文对数据为例) ```python # 示例数据集格式 dataset = [ { "image": "path/to/image.jpg", "text": "一只橘色猫咪在窗台上晒太阳" }, # 更多多模态样本... ] ``` ### 三、LoRA配置 ```yaml # config/lora.yaml train_args: learning_rate: 1e-4 max_epochs: 5 per_device_train_batch_size: 2 lora: rank: 8 # 低秩矩阵维度[^1] target_modules: ['q_proj', 'v_proj', 'vision_encoder'] # 多模态特殊模块[^2] ``` ### 四、微调执行 ```python from swift import LoRAConfig, Swift from swift.llm import DatasetName, ModelType, get_model_tokenizer # 加载多模态模型 model, tokenizer = get_model_tokenizer( ModelType.deepseek_janus_pro_7b_chat, model_kwargs={'device_map': 'auto'} ) # 创建LoRA适配器 lora_config = LoRAConfig( rank=8, target_modules=['q_proj', 'v_proj', 'vision_proj'] ) model = Swift.prepare_model(model, lora_config) ``` ### 五、训练过程 ```bash # 启动训练命令 swift sft \ --model_type deepseek-janus-pro-7b-chat \ --dataset coco-en-2k \ --lora_rank 8 \ --gradient_checkpointing true \ --use_flash_attn true ``` ### 六、模型融合(部署准备) ```python # 合并LoRA权重到原模型 Swift.merge_and_unload(model) model.save_pretrained('merged_model') ``` ### 关键参数解析 1. **Rank选择**:通常取8-64之间,数值越大训练能力越强但参数量增加 2. **目标模块**: - `vision_proj`: 视觉编码器投影层 - `text_decoder`: 文本解码器层 3. **混合精度训练**:推荐使用`bfloat16`减少显存占用 ### 性能优化技巧 1. 使用梯度检查点技术节省显存 2. 开启Flash Attention加速计算 3. 冻结非关键模块参数(如部分视觉编码器层) ### 效果验证 ```python # 推理测试样例 response = model.generate( images=[Image.open("cat.jpg")], text="描述这张图片的内容" ) print(response) # 输出:"一只橘色猫咪在窗台上晒太阳" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵海之森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值