Qwen2-VL的微调及量化

一、Qwen2-VL简介

        Qwen2-VL是Qwen-VL的升级版本,能力更强,性能全面提升。尤其是72B参数的版本更是取了惊人的成绩。它可以读懂不同分辨率和不同长宽比的图片,在 MathVista、DocVQA、RealWorldQA、MTVQA 等基准测试创下全球领先的表现;可以理解 20 分钟以上长视频,支持基于视频的问答、对话和内容创作等应用;具备强大的视觉智能体能力,可自主操作手机和机器人,借助复杂推理和决策的能力,Qwen2-VL 可以集成到手机、机器人等设备,根据视觉环境和文字指令进行自动操作。

二、环境装备

        具体的环境可以参考我的上篇文(Qwen-VL部署)。这里不再重复内容。另外微调使用的swift这个框架进行的微调,所以还要准备swift的环境。

swift环境安装,此处可以只下载,不pip安装环境,可在下面微调前安装。

git clone https://github.com/modelscope/swift.git
cd swift
#pip install -e .[llm]# 请关注这个ISSUE: https://github.com/QwenLM/Qwen2-VL/issues/12
# pip install torch>=2.4
#pip install git+https://github.com/huggingface/transformers@21fac7abba2a37fae86106f87fcf9974fd1e3830 accelerate
#pip install pyav qwen_vl_utils

如果遇到这个错误:ImportError: transformers>=4.45.0.dev0 is required for a normal functioning of this module, but found transformers==4.44.2

则需要这样安装transformers:

pip install git+https://github.com/huggingface/transformers@21fac7abba2a37fae86106f87fcf9974fd1e3830 accelerate

上面这个错误在量化的时候也会遇到,所以要每次创建环境都要使用上面的命令安装transformers.

三、微调

1、准备数据,数据格式。

[{"id": "1","conversations": [{"from": "user","value": "Picture 1: <img>/data/media/upload/1/a9dc4837-2.png</img>\\n请检查图片中是否有违反作业标准中规定的情况,列出最突出的一种情况。"},{"from": "assistant","value": "图片中存在地面有垃圾的问题"},{"from": "user","value": "请框出图片中的问题"},{"from": "assistant","value": "<ref>问题</ref><box>(28,53),(552,731)</box>"}]}]

2、使用conda创建微调的环境, 创建qwen2的环境

git clone https://github.com/QwenLM/Qwen2-VL.git
cd Qwen2-VL/
conda create -n qwen2 python=3.10 -y
conda activate qwen2
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
pip install git+https://github.com/huggingface/transformers@21fac7abba2a37fae86106f87fcf9974fd1e3830 accelerate
pip install pyav qwen_vl_utils#去到swift的目录里面,这里接上面的环境安装。
cd /data/swift
#安装swift的环境
pip install -e .[llm]

3、微调指令

  SIZE_FACTOR=8 MAX_PIXELS=602112 CUDA_VISIBLE_DEVICES=0 swift sft   \--model_type qwen2-vl-7b-instruct    \--model_id_or_path /data/autodl/Qwen2-VL-7B-Instruct   \--dataset /data/qwen-vl/Qwen-VL/datasets/result.json,self-cognition  \--learning_rate 1e-3 \--batch_size 2 \--num_train_epochs 3   \--logging_steps 3 \--gradient_accumulation_steps 8 \--model_name 智能助手 'Intelligent  Assistant' \--model_author 风之飘渺  'Wind'

四、量化

    微调成功后,需要合并参数,这时可以同时量化操作,也可以只合并不量化。量化同样使用的swift框架。不量化的情况下,推理非常慢,本人机器配置CPU:2*6330,内存:128G,显卡A5000.大概2分钟左右出结果。量化后还没有测试。

# 使用AutoGPTQ进行量化
pip install auto-gptq#量化指令CUDA_VISIBLE_DEVICES=0 swift export \--ckpt_dir '/data/swift2/swift/output/qwen2-vl-7b-instruct/v3-20240902-150740/checkpoint-93' \--merge_lora true --quant_bits 8 \--load_dataset_config true --quant_method gptq

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/879988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的智慧社区微信小程序

文未可获取一份本项目的java源码和数据库参考。 本课题研究目标 本文主要对小区生活服务平台的功能和非功能需求进行了分析&#xff0c;系统除了提供物业保修、小区资讯、投诉留言、常用电话等基础功能外&#xff0c;为了满足用户的多样化需求&#xff0c;还提供邻里圈子和有…

238 除自身以外数组的乘积

解题思路&#xff1a; \qquad 这道题要求在 O ( n ) O(n) O(n) 时间内解决&#xff0c;但是不能使用除法。仅使用乘法的话&#xff0c;看上去很难在一次遍历中得出想要的结果&#xff0c;但是没关系&#xff0c;一次遍历不行的话那就试试两次、三次&#xff0c;重要的是分析在…

Python--TCP/UDP通信

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.客户端与服务端通信原理 1. 服务器端 服务器端的主要任务是监听来自客户端的连接请求&#xff0c;并与之建立连接&#xff0c;然后接收和发送数据。 创建套接字&#xff1a;首先&#xff0…

【数据库】常用数据库简介

目录 &#x1f354; 常用的关系型数据库 &#x1f354; Mysql简介 &#x1f354; SQL 简介 SQL语句的分类 SQL 写法 SQL 常用的数据类型 &#x1f354; DDL语句 对数据库的操作 对数据表的操作 &#x1f354; DML语句 插入数据 insert into 修改数据 update 删除数…

css基础知识笔记

一言&#xff1a; “放任误解就是撒谎。” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;CSS基础教程0.文本样式基础1. CSS选择器2. CSS布局技巧3. 响应式设计4. Emmet语法 总结 前言 写在开始&#xff1a; 今天来看一眼CSS基础知识。 好几天没更新了 先更一篇 文章有…

DataGrip在Windows和MacOS平台上的快捷键

0. 背景信息 No.说明1测试DataGrip版本号 : 2024.2.2 1. Windows下快捷键 2. MacOS下快捷键

Java流程控制语句——跳转语句详解:break 与 continue 有什么区别?

&#x1f310;在Java编程中&#xff0c;break和continue是两个重要的控制流语句&#xff0c;它们允许开发者根据特定条件改变程序的执行流程。虽然两者都用于中断当前的行为&#xff0c;但它们的作用方式不同。本文将通过生动的例子来详细解释这两个语句&#xff0c;并使用流程…

C++/Qt 集成 AutoHotkey

C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一&#xff1a;子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二&#xff1a;显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…

系统架构设计师 需求分析篇一

&#x1f4d8; 结构化分析SA 思想 自顶向下&#xff1a;像剥洋葱一样&#xff0c;层层深入&#xff0c;大问题拆成小问题&#xff0c;再拆成更小的问题。 核心模型 数据字典 &#x1f4d4;&#xff1a;记录数据元素的点点滴滴&#xff0c;从属性到使用方式&#xff0c;无所…

Spring自定义参数解析器

在这篇文章中&#xff0c;我们认识了参数解析器和消息转换器&#xff0c;今天我们来自定义一个参数解析器。 自定义参数解析器 实现HandlerMethodArgumentResolver的类&#xff0c;并注册到Spring容器。 Component&#xff0f;&#xff0f;注册到Spring public class UserAr…

C#解决方案的各种操作

C#开发编程软件下载安装 C#开发编程软件下载安装_c#下载安装-CSDN博客文章浏览阅读208次。。。。_c#下载安装https://rxxw-control.blog.csdn.net/article/details/140879228 C#和S7-1200PLC S7.NET通信 C#和S7-1200PLC S7.NET通信_c# s1200 s7协议设置-CSDN博客文章浏览阅读…

【Python】探索 TensorFlow:构建强大的机器学习模型

TensorFlow 是一个开源的深度学习框架&#xff0c;由 Google 开发&#xff0c;广泛应用于机器学习和人工智能领域。自从 2015 年推出以来&#xff0c;它已成为研究人员、开发者和数据科学家们不可或缺的工具。TensorFlow 提供了灵活、高效的工具集&#xff0c;可以帮助我们构建…

消息中间件---Kafka

一、什么是Kafka&#xff1f; Kafka是一个分布式流处理平台,类似于消息队列或企业消息传递系统&#xff1b; 流处理事什么呢&#xff1f; 流处理就是数据处理工作流&#xff0c;本质上是一种计算机编程范例。流处理是对接收到的新数据事件的连续处理。‌它涉及对从生产者到消…

【C++】—— string模拟实现

前言&#xff1a; 学习了string的使用&#xff0c;总感觉了解不是很深厚&#xff1b;自己模拟实现string类来帮助自己理解。 这里只是实现了一部分内容&#xff08;并没有实现完整的string类&#xff09;。 先来实现string类里面的成员变量&#xff1a; #include<iostream…

PyCharm的使用

PyCharm的入门使用教程 下载和安装PyCharm&#xff1a; 首先&#xff0c;访问JetBrains官方网站&#xff08;https://www.jetbrains.com/pycharm/&#xff09;下载PyCharm的最新版本。根据您的操作系统选择合适的版本进行下载。 安装完成后&#xff0c;打开PyCharm。 创建新…

记录一次显卡驱动安装

1. 驱动安装 1.1. 查看适合的版本 apt-get update ubuntu-drivers devices输出结果&#xff1a; 1.2. 安装合适的驱动版本 根据上面输出的内容 apt-get install nvidia-driver-545完成后重启 reboot查看新的驱动 nvidia-smi2. 安装/升级cuda 在nvidia-smi中显示的CUDA…

hive分区详细教程

为什么要分区&#xff1f; 为了提高sql的查询效率 比如&#xff1a; select * from orders where create_date20230826; 假如数据量比较大&#xff0c;这个sql就是全表扫描&#xff0c;速度肯定慢。 可以将数据按照天进行分区&#xff0c;一个分区就是一个文件夹&#xff0c;当…

中序遍历二叉树全过程图解

文章目录 中序遍历图解总结 中序遍历图解 首先看下中序遍历的代码&#xff0c;其接受一个根结点root作为参数&#xff0c;判断根节点是否为nil&#xff0c;不为nil则先递归遍历左子树。 func traversal(root *TreeNode,res *[]int) {if root nil {return}traversal(root.Lef…

华为HarmonyOS地图服务 5 - 利用UI控件和手势进行地图交互

场景介绍 本章节将向您介绍如何使用地图的手势。 Map Kit提供了多种手势供用户与地图之间进行交互,如缩放、滚动、旋转和倾斜。这些手势默认开启,如果想要关闭某些手势,可以通过MapComponentController类提供的接口来控制手势的开关。 接口说明 以下是地图的控件和手势相…

【LLM多模态】文生视频评测基准VBench

note VBench的16个维度自动化评估指标代码实践&#xff08;待完成&#xff09;16个维度的prompt举例人类偏好标注&#xff1a;计算VBench评估结果与人类偏好之间的相关性、用于DPO微调 文章目录 note一、相关背景二、VBench评测基准概述&#xff1a;论文如何解决这个问题&…