本地部署Qwen2-VL,并完成多模态对话系统意图识别挑战赛Baseline

背景:

最近在学习多模态大模型的相关知识,正好有一个多模态的天池比赛 WWW2025 多模态对话系统意图识别挑战赛 这里使用该竞赛数据集作为实践。先在本地跑一遍baseline,出一个基准分数。因为我只有4张A30,所以选择Qwen2-VL-7B-Instruct作为基准模型,使用LLama Factory运行微调代码。

环境安装

这里新开一个conda环境并安装LlamaFactory, 其余缺少的包在运行LLamaFactory时在逐步安装即可。按照官方的推荐环境安装, 如果环境出现问题,可以参考官网的解决方案,相关链接都放在文末的参考中了:

官方推荐环境版本

conda create -n l_factory python==3.11
git clone --depth 1 https://github.com/hiyouga/LLaMA-FactoryA-Factory.git
cd LLaMA-Factory
pip install -e “.[torch,metrics,deepspeed]”

我这里安装完成后是0.9.1.dev0版本,其余重要环境参数如下:

  • Transformers 4.46.1

  • Pytorch 2.5.1+cu124

  • Datasets 3.1.0

  • Tokenizers 0.20.3

一些环境的问题

gcc版本问题

由于需要单机多卡,我这里使用deepspeed的zero3版本,但是需要gcc版本在8.0以上,这里升级机器的gcc版本,参考如下步骤

升级gcc版本

提示网络问题,需要更换SCL为国内数据源,这里选阿里数据源

参考如下步骤:

更换SCL为阿里源 https://blog.csdn.net/qq_45748758/article/details/132212591

模型下载

在huggingface官网下载模型即可,网络有限制的话可以使用镜像网站HF-Mirror,按照官网的下载方式下载即可,支持断点续传,可以一键下载,很方便。

多模态对话系统意图识别挑战赛

竞赛简介

详情可以参考竞赛主页,简单而言,需要完成对多模态数据(这里是图片及文本)的意图分类。包含对图片的意图分类,及用户对话的意图分类。

数据示例:

输入:

用户: [本处为上图]\n客服: 宝贝,请问有什么可以帮到您的吗?\n用户: 这一套的链接麻烦发下小姐姐\n
输出:
套装推荐

数据下载

在竞赛的数据下载页面下载数据,竞赛的数据详情可以参考竞赛主页。

数据包含1000条的训练数据集,初赛包含10000条的测试数据。

baseline

官方提供了baseline的代码,baseline-git,对训练数据微调,并预测结果且提交。下面采用两种常见的微调方式完成baseline,lora及full微调。

lora微调

  • 配置yaml文件,如下所示:
### model,base model的路径``model_name_or_path: Qwen2-VL-7B-Instruct``   ``### method``stage: sft``do_train: true``finetuning_type: lora``lora_target: all``   ``### dataset``dataset: mire_train  # 这里配置自己的数据集``template: qwen2_vl``cutoff_len: 2048``max_samples: 1000  # 这个参数匹配自己的数据集或设置大点``overwrite_cache: true``preprocessing_num_workers: 16``val_size: 0.1``   ``### output``output_dir: saves/qwen2_vl-7b/lora/sft``logging_steps: 10``save_steps: 50``plot_loss: true``overwrite_output_dir: true``   ``### train``per_device_train_batch_size: 1``gradient_accumulation_steps: 8``learning_rate: 1.0e-4``num_train_epochs: 3.0``lr_scheduler_type: cosine``warmup_ratio: 0.1``bf16: true``ddp_timeout: 180000000``   ``### eval``val_size: 0.1``per_device_eval_batch_size: 1``eval_strategy: steps``eval_steps: 20
  • 运行llama factory的训练脚本

FORCE_TORCHRUN=1 llamafactory-cli train examples/qwen2_vl_lora_sft.yaml

  • 合并lora及基准模型
### model``model_name_or_path: Qwen2-VL-7B-Instruct``adapter_name_or_path: ./saves/qwen2_vl-7b/lora/sft/checkpoint-168  # 上一步保存的路径``template: qwen2_vl``finetuning_type: lora``   ``### export``export_dir: models/qwen2_vl_lora_sft``export_size: 2``export_device: cpu``export_legacy_format: false

llamafactory-cli export merge_config.yaml

  • 使用合并后的模型预测测试集

FORCE_TORCHRUN=1 llamafactory-cli train examples/predict.yaml

最终提交的分数为:

全参数微调

和lora微调方式一样,不过少了一步合并模型,配置如下:

model_name_or_path: Qwen2-VL-7B-Instruct``   ``### method``stage: sft``do_train: true``finetuning_type: full``   ``### dataset``dataset: mire_train  # video: mllm_video_demo``template: qwen2_vl``cutoff_len: 1024``max_samples: 1000``overwrite_cache: true``preprocessing_num_workers: 16``val_size: 0.1``   ``### output``output_dir: saves/qwen2_vl-7b/full/sft``logging_steps: 1``save_steps: 0.2``plot_loss: true``overwrite_output_dir: true``   ``### train``per_device_train_batch_size: 4``gradient_accumulation_steps: 2``learning_rate: 5.0e-6``num_train_epochs: 3.0``lr_scheduler_type: cosine``warmup_ratio: 0.05``fp16: true``ddp_timeout: 180000000``   ``### eval``val_size: 0.1``per_device_eval_batch_size: 8``eval_strategy: steps``eval_steps: 5``   ``flash_attn: fa2``deepspeed: examples/deepspeed/ds_z3_offload_config.json

最终提交的分数为下图,超过了一半的提交者:

遇到的一些错误:

shape mismatch:

训练时一直报这个错误(这个出现在输入有多张图片时),可能因为在数据向量化时,输入图片过长,导致shape超过了最大长度,可以通过把 cutoff_len 参数调大来解决,但调太大会导致显存不足,尽量调整到刚好够用(每次少调整一些,直至不报错)

outof memory:

在预测时,显存不足

发现每次都是在单卡上完整加载一个模型,在预测多图(这里为超过5张图)的样本时就会显存不足,暂时通过把样本图片量减少,临时解决掉了。如何在多张卡加载一个模型的方案还是未找到,找到我在补充吧。

在训练时,显存不足

使用deepspeed进行训练,

显存不足时,会临时调用cpu和内存进行辅助计算。在全量微调时配置如下参数:

deepspeed: examples/deepspeed/ds_z3_offload_config.json

参考:

  • LLamaFactory-git https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md

  • LLamaFactory官方参考文档 https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html

  • huggingface-Qwen2-vl https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct

    ==============================================================================

《AIGC面试宝典》欢迎你的加入

《AIGC面试宝典》星球主要是作者的一些学习成果和资料分享。

  • 今年

  • 十月 AIGC面经

  • 八-九月 AiGC 实践教程 —AiGC摩天大楼(争取把所有AiGC任务都刷一遍)

  • 七月 大模型推理加速教程

  • 六月 Agent实战教程— Agent千机变

  • 六月 大模型训练系列

  • 五月 RAG实战教程— RAG潘多拉宝盒

  • 四月 AiGC实战训练营—非一般程序猿

  • 去年

  • NLP实践教程 —NLP菜鸟逆袭

  • LLMs实践教程—LLMs九层妖塔

  • LLMs面经— LLMs千面郎君

  • NLP面经— NLP面无不过

  • 推荐系统入门—推荐系统入门

  • 推荐系统面经—推荐系统百面百搭

在这里插入图片描述

AI大模型学习路线

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

扫描下方csdn官方合作二维码获取哦!

在这里插入图片描述

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

请添加图片描述
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

请添加图片描述

大模型全套视频教程

请添加图片描述

200本大模型PDF书籍

请添加图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

请添加图片描述

大模型产品经理资源合集

请添加图片描述

大模型项目实战合集

请添加图片描述

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值