当前位置: 首页 > news >正文

L2G4000 InternVL 部署微调实践闯关任务

一、理解多模态大模型的常见设计模式,可以大概讲出多模态大模型的工作原理。

视频地址
开源的多模态大模型:InternVL,Qwen-VL,LLaVA
闭源的:GPT-4o

研究重点:不同模态特征空间的对齐

BLIP2

将图像特征对齐到文本空间中
在这里插入图片描述
Q-Former,双塔结构,分别处理图像输入和文字输入,用三个loss来优化模型(用MASK来区分三种任务)
在这里插入图片描述
缺点:
在这里插入图片描述
在这里插入图片描述

MiniGPT-4

开源版GPT4
采用Q-Former和VIT

在这里插入图片描述

LLaVA

用图像编码器和一层线性层把图像映射到文本空间,然后和文本指令embedding拼接在一起
在这里插入图片描述

LLaVA-1.5-HD

图像切片、缩略图,作为输入
然后一层MLP换成两层
在这里插入图片描述

LLaVA-NeXT

采用动态分辨率,找到最接近的长宽比,放缩过去再切块
在这里插入图片描述

二、了解InternVL2的设计模式,可以大概描述InternVL2的模型架构和训练流程

在这里插入图片描述

Dynamic High Resolution

原图切片
在这里插入图片描述

InternViT

在这里插入图片描述

  1. vision encoder的参数量增大
  2. 较之clip的对比学习,没有丢弃text encoder。
  3. 实验发现倒数第四层好用,就去掉了后面三层
  4. 扩展分辨率
  5. 在高分辨率和OCR数据集上训练

V1.5版本中,加了动态分辨率和高质量数据。

Pixel Shuffle

将图像进行下采样,
有利于减少计算资源,扩大多模态的上下文长度在这里插入图片描述

多任务输出

用任务路由token决定执行什么任务
在这里插入图片描述

训练

先训MLP,再把所有模块都微调
在这里插入图片描述

三、了解LMDeploy部署多模态大模型的核心代码,并运行提供的gradio代码,在UI界面体验与InternVL2的对话

0.工作原理了解

1.环境配置

创建训练环境,用之前的xtuner-env就行,只要多装timm包就好
pip install -U ‘xtuner[deepspeed]’ timm==1.0.9

推理环境配置,需要用上书生生态链的lmdeploy

conda create -n lmdeploy python=3.10 -y
conda activate lmdeploy
pip install lmdeploy gradio==4.44.1 timm==1.0.9

在这里插入图片描述

2.LMDeploy部署

在这里插入图片描述

松鼠鳜鱼识别失败

在这里插入图片描述

四、了解XTuner,并利用给定数据集微调InternVL2-2B后,再次启动UI界面,体验模型美食鉴赏能力的变化。

1.微调实践

开发机没有/root/xtuner路径,可以用/root/finetune/xtuner代替。
克隆的命令也改为
cp /root/InternVL2-Tutorial/xtuner_config/internvl_v2_internlm2_2b_lora_finetune_food.py /root/finetune/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py

2.下载数据集

FoodieQA需要在hugging face上先提交申请,比较麻烦
因此可以用share目录下已经处理好的数据集
用软连接即可

ln -s /root/share/datasets/FoodieQA /root/huggingface/FoodieQA

3.开始微调

我是在/root/finetuner/xtuner/目录下运行微调指令的

xtuner train internvl_v2_internlm2_2b_lora_finetune_food --deepspeed deepspeed_zero2

另一
在这里插入图片描述
格式转换:
在这里插入图片描述

4.部署

修改demo.py里的路径为

MODEL_PATH = "/root/finetune/xtuner/work_dirs/internvl_v2_internlm2_2b_lora_finetune_food/lr35_ep10"
可以看到,训完之后它对于苏菜的松鼠鳜鱼识别还是错误,识别成了浙菜油爆虾。但是较之未训练的模型来说,至少没有笼统的列出属于中国菜,有所进步,

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/476764.html

相关文章:

  • asynDriver-6-端口驱动
  • [免费]基于Python的Django+Vue3在线考试系统【论文+源码+SQL脚本】
  • Python使用爬虫
  • CommunityToolkit.Mvvm如何使用
  • Python小游戏20——超级玛丽
  • 配置文件格式(xml、properties、yml/yaml)
  • CentOS 7 软件/程序安装示例
  • Python绘制正弦函数图形
  • 【LVGL-列表部件 lv_list_create】
  • 【P2-6】ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——UDP数据透传
  • 从零学习大模型(十)-----剪枝基本概念
  • Jest进阶知识:模拟 ES6 类 - 掌握类的依赖模拟与方法监听技巧
  • 前端Nginx的安装与应用
  • Java设计模式(代理模式整理中ing)
  • 第J9周:Inception v3算法实战与解析(pytorch版)
  • 如何封装一个axios,封装axios有哪些好处
  • java的批量update
  • go语言连续监控事件并回调处理
  • 1.探索WebSocket:实时网络的心跳!
  • uniapp学习(010-2 实现抖音小程序上线)
  • 测试和实施面试题收集
  • 【Vue3】一文全览基础语法-案例程序及配图版
  • 【OpenSearch】安装部署OpenSearch和OpenSearch-Dashboard
  • 【系统架构设计师】2023年真题论文: 论软件可靠性评价的设计与实现(包括和素材和论文)
  • 教程:使用 InterBase Express 访问数据库(二)
  • Windows密码的网络认证---基于挑战响应认证的NTLM协议
  • fpga 常量无法改变
  • 【HarmonyOS NEXT】如何给未知类型对象定义类型并使用递归打印所有的Key
  • RuoYi 样例框架运行步骤(测试项目自用,同学可自取)
  • Java进程CPU飙高排查