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

- vision encoder的参数量增大
- 较之clip的对比学习,没有丢弃text encoder。
- 实验发现倒数第四层好用,就去掉了后面三层
- 扩展分辨率
- 在高分辨率和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"
可以看到,训完之后它对于苏菜的松鼠鳜鱼识别还是错误,识别成了浙菜油爆虾。但是较之未训练的模型来说,至少没有笼统的列出属于中国菜,有所进步,


相关文章:
L2G4000 InternVL 部署微调实践闯关任务
一、理解多模态大模型的常见设计模式,可以大概讲出多模态大模型的工作原理。 视频地址 开源的多模态大模型:InternVL,Qwen-VL,LLaVA 闭源的:GPT-4o 研究重点:不同模态特征空间的对齐 BLIP2 将图像特征对…...
asynDriver-6-端口驱动
本地串口 drvAsynSerialPort驱动支持设备连接到IOC上串口。 用drvAsynSerialPortConfigure和asynSetOption命令配置串口: drvAsynSerialPortConfigure("portName","ttyName",priority,noAutoConnect,noProcessEosIn) asynSetOption("po…...
[免费]基于Python的Django+Vue3在线考试系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的基于Python的DjangoVue3在线考试系统,分享下哈。 项目视频演示 【免费】基于Python的DjangoVue3在线考试系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 本论文提出并实现了一种基于Python…...
Python使用爬虫
一、基本介绍 爬虫(Web Scraping)是一种自动化获取网页内容的技术,它通过编写程序模拟浏览器的行为,从互联网上抓取网页数据。爬虫可以用于多种目的,比如数据收集、信息整合、自动化测试等。 二、常用的库 1、Request…...
CommunityToolkit.Mvvm如何使用
CommunityToolkit.Mvvm 是一个现代、快速和模块化的 MVVM 库,用于 .NET 应用程序。以下是如何使用 CommunityToolkit.Mvvm 的基本步骤: 安装包: 你可以通过 NuGet 包管理器安装 CommunityToolkit.Mvvm。在 Visual Studio 中,你可以…...
Python小游戏20——超级玛丽
首先,你需要确保你的Python环境中安装了pygame库。如果还没有安装,可以使用以下命令进行安装: bash pip install pygame 运行效果展示 代码展示 python import pygame import sys # 初始化pygame pygame.init() # 设置屏幕尺寸 screen_width …...
配置文件格式(xml、properties、yml/yaml)
配置文件格式(xml、properties、yml/yaml) 配置文件格式一、XML二、properties三、yml/yaml基本语法yml数据格式1、对象/Map集合1、数组/List/Set集合 配置文件格式 什么是配置文件?: 配置文件是包含应用程序或系统配置信息的文件…...
CentOS 7 软件/程序安装示例
安装软件/程序 wget,前提需要用 root 用户 1、搜索软件/程序 yum search wget 搜索到软件/程序。 2、安装软件/程序 yum -y install wget 安装完成。...
Python绘制正弦函数图形
1,绘制正弦函数图形,让数学看得见, import math # 导入函数模块 import turtle # 导入turtle模块,用于绘图t turtle.Turtle() # 创建对象 turtle.bgcolor("#2dded9") # 设置背景颜色 t.pencolor(blue) # 设置画笔…...
【LVGL-列表部件 lv_list_create】
LVGL-列表部件 lv_list_create ■ LVGL-列表部件-函数■ 修改样式-■ 修改样式- 背景色■ 修改样式- 改变项的颜色-label■ 修改样式- 改变项的颜色-btn ■ 事件(Event)■ 示例0:综合■ 示例1(自动出现滚动)■ 示例2(滚动捕捉&…...
【P2-6】ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——UDP数据透传
前言:完成ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——实现UDP数据透传 STA模式,通俗来说就是模块/单片机去连接路由器/热点来通信。 UDP协议,是传输层协议,UDP没有服务器和客户端的说法。 本实验需要注意,wifi模块/单片机与电脑/手机需要连接在同一个…...
从零学习大模型(十)-----剪枝基本概念
剪枝的基本概念 模型压缩中的地位:剪枝是模型压缩中的重要技术之一,它通过减少模型的参数量来降低计算资源的需求。对于大型神经网络,尤其是像BERT、GPT等参数量级巨大的模型,剪枝可以有效地减少模型的内存占用和计算量ÿ…...
Jest进阶知识:模拟 ES6 类 - 掌握类的依赖模拟与方法监听技巧
引言 在现代前端开发中,ES6 类(class)是常用的一种面向对象编程方式。在测试类的时候,我们经常需要模拟类的依赖,以避免外部因素对测试结果的影响。Jest 提供了强大的工具来模拟类及其方法,确保测试的高效…...
前端Nginx的安装与应用
目录 一、前端跨域方式 1.1、CORS(跨域资源共享) 1.2、JSONP(已过时) 1.3、WebSocket 1.4、PostMessage 1.5、Nginx 二、安装 三、应用 四、命令 4.1、基本操作命令 4.2、nginx.conf介绍 4.2.1、location模块 4.2.2、反向代理配置 4.2.3、负载均衡模块 4.2.4、通…...
Java设计模式(代理模式整理中ing)
一、代理模式 1、代理模式定义: 代理模式:由于某些原因要给某对象提供一个代理以控制对该对象的访问,这时访问对象不适合或者不能够直接引用目标对象,代理对象作为访问对象与目标对象之间的中介进行连接调控调用。 2、代理模式的…...
第J9周:Inception v3算法实战与解析(pytorch版)
>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 📌本周任务:📌 了解并学习InceptionV3相对与InceptionV1有哪些改进的地方 使用Inception完成天气…...
如何封装一个axios,封装axios有哪些好处
什么是Axios Axios 是一个基于 Promise 的 HTTP 客户端,用于在浏览器和 Node.js 中发送异步网络请求。它简化了发送 GET、POST、PUT、DELETE 等请求的过程,并且支持请求拦截、响应拦截、取消请求和自动处理 JSON 数据等功能。 为什么要封装Axios 封装…...
java的批量update
这个问题挺有代表性的,今天拿出来给大家一起分享一下,希望对你会有所帮助。 1 案发现场 有一天上午,在我的知识星球群里,有位小伙伴问了我一个问题:批量更新你们一般是使用when case吗?还是有其他的批量更…...
go语言连续监控事件并回调处理
前言 go语言中使用回调函数处理事件:事件监测部分(如无限循环中的事件检测逻辑)可以独立于具体的业务处理逻辑。这使得代码的各个部分更加清晰,易于理解和维护。如果需要更改事件处理的方式,只需要修改注册的回调函数…...
1.探索WebSocket:实时网络的心跳!
序言 你可能听说过"WebSokcet"这个词,感觉它好像很高深,但其实它是一个超级酷的小工具,让我们在Web应用里实现实时通信。想象一下,你可以像聊天一样,在浏览器和服务器之间来回“畅聊“,没有延迟…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
