Qwen2-VL的微调及量化

ops/2024/9/20 15:35:30/

一、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.ppmy.cn/ops/113031.html

相关文章

Luban策划开源工具

一、Luban游戏配置解决方案&#xff0c;是一个强大、易用、优雅、稳定的游戏配置解决方案。它设计目标为满足从小型到超大型游戏项目的简单到复杂的游戏配置工作流需求。luban标准化了游戏配置开发工作流&#xff0c;可以极大提升策划和程序的工作效率。 二、核心特性&#xf…

AI在医学领域:医学AI的安全与隐私全面概述

随着技术的进步&#xff0c;软件系统在商业产品中扮演着越来越重要的角色&#xff0c;并在医疗领域变得不可或缺。人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;的发展已经彻底改变了现代医疗系统&#xff0c;为通过病人诊断、监测和医疗保健研究收…

C++初阶学习——探索STL奥秘——标准库中的queue与stack

1、适配器模式 STL 中的适配器可以分为三类: 从应用角度出发 容器适配器 container adapters 迭代器适配器 iterator adapters 仿函数适配器 functor adapters 其中&#xff0c;容器适配器可修改底层为指定容器 如由 vector 构成的栈、由 list 构成的队列 迭代器适配器…

-webkit-box-reflect属性与倒影效果的实现

-webkit-box-reflect 是一个非标准的 CSS 属性&#xff0c;主要用于在 WebKit 浏览器&#xff08;如 Chrome 和 Safari&#xff09;中创建元素的倒影效果。这个属性并不是 CSS 规范的一部分&#xff0c;但在实践中经常被用来实现简单而有趣的视觉效果。 基本语法 -webkit-box…

用于大数据分析的数据存储格式:Parquet、Avro 和 ORC 的性能和成本影响

高效的数据处理对于依赖大数据分析做出明智决策的企业和组织至关重要。显著影响数据处理性能的一个关键因素是数据的存储格式。本文探讨了不同存储格式(特别是 Parquet、Avro 和 ORC)对 Google Cloud Platform (GCP) 上大数据环境中查询性能和成本的影响。本文提供了基准测…

网页打开时,下载的文件fetcht类型?有什么作用?

‌fetch API‌是一种用于向服务器发送请求并获取响应的现代Web API。它支持获取各种类型的数据&#xff0c;包括文本、JSON、图像和文件等。fetch API的主要优势之一是支持流式传输和取消请求&#xff0c;这使得处理大型数据集和长时间运行的操作变得更加简单和可靠。此外&…

LinuxC高级作业1

1.已知网址www.hqyj.com截取出网址的每一个部分 2.整理思维导图 3.将配置桥接网络的过程整理成文档 i)) 保证虚拟机提供了桥接模式 菜单栏中 ----> 虚拟机 -----> 设置 -----> 网络适配器 ii) 保证虚拟机可以设置桥接网络 菜单栏中 ----> 编辑 -----> 虚拟网…

计算机人工智能前沿进展-大语言模型方向-2024-09-18

计算机人工智能前沿进展-大语言模型方向-2024-09-18 1. The Application of Large Language Models in Primary Healthcare Services and the Challenges W YAN, J HU, H ZENG, M LIU, W LIANG - Chinese General Practice, 2024 人工智能大语言模型在基层医疗卫生服务中的应…

python的基础语法

Python 的基础语法非常简洁明了&#xff0c;适合初学者快速上手。下面我将为你总结几个最重要的基础语法点&#xff0c;帮你快速掌握 Python 的核心概念。让我们从基础开始逐步深入&#xff0c;像刷副本一样一关一关地攻克它们&#xff01; 1. Hello, World! 每一种编程语言的…

【原创】java+springboot+mysql高校社团网系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Linux相关概念和重要知识点(3)(yum、gcc、动静态库)

1.yum &#xff08;1&#xff09;yum是什么&#xff1f;有何背景&#xff1f; Linux是一个开源系统&#xff0c;人们可以在此基础上进行一些开发。有人开发一个项目&#xff0c;希望给更多人使用&#xff0c;于是将它编译成一个软件包&#xff08;不乏一些有趣的小软件&#…

【XR】AR HUD

1. AR HUD&#xff08;head up display&#xff09;原理 目标&#xff1a; 产业链上的各大Tier1及PGU企业都在积极开发这一技术&#xff0c;许多厂家已推出LCOS样机&#xff0c;比如说水晶光电、华阳集团、瀚思通、疆程已在北京车展或去年的上海车展上展出了LCOS方案的AR-HUD样…

基于Java、SpringBoot、Vue的加油站管理系统设计

摘要 本系统是一个基于Java、SpringBoot和Vue的加油站管理系统。它旨在提高加油站的运营效率&#xff0c;优化客户服务体验&#xff0c;并通过数据分析支持更精准的业务决策。该系统包括用户管理、汽油管理、站点管理等功能模块。通过这些功能&#xff0c;管理员可以方便地管理…

SpringBoot:解析excel

解析Excel文件&#xff0c;可以使用Apache POI库 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version> </dependency> 上代码&#xff1a; /*** <b>Functio…

企业开发时,会使用sqlalchedmy来构建数据库 结构吗? 还是说直接写SQL 语句比较多?

企业开发时&#xff0c;会使用sqlalchedmy来构建数据库 结构吗&#xff1f; 还是说直接写SQL 语句比较多&#xff1f; 在企业开发中&#xff0c;是否使用SQLAlchemy来构建数据库结构&#xff0c;还是直接写SQL语句&#xff0c;这取决于项目的具体需求和开发团队的偏好。SQLAlc…

Stable Diffusion绘画 | 生成高清多细节图片的各个要素

在数字艺术领域&#xff0c;AI绘画技术已经逐渐成为艺术创作的新趋势。Stable Diffusion作为一款领先的AI绘画工具&#xff0c;以其生成高清多细节图片的能力备受关注。现在&#xff0c;让我们一起来探索Stable Diffusion生成高清多细节图片的各个要素&#xff0c;开启你的创意…

supOS加速数实融合发展

作为工业操作系统领军企业&#xff0c;蓝卓受邀参加2024金砖国家新工业革命伙伴关系论坛&#xff0c;深度参与多个环节。在9月11日召开的金砖国家新工业革命伙伴关系论坛产融合作专题研讨上&#xff0c;蓝卓总经理谭彰分享了supOS在产融协同的最新实践&#xff0c;以及supOS进入…

微信小程序实现转盘抽奖,可以自定义编辑奖项列表

这个功能可以分几步实现&#xff1a; 1. 界面设计: 转盘区域: 使用 canvas 绘制转盘&#xff0c;可配置扇形数量、颜色、文字等。 按钮: "开始/停止" 按钮控制转盘转动。 编辑按钮: 点击弹出弹窗&#xff0c;编辑转盘项目。 中奖弹窗: 显示中奖结果。 2. 数据结构:…

Shell篇之编写apache启动脚本

Shell篇之编写apache启动脚本 1. 脚本编写 vim apache_ctl.sh#!/bin/bashfunction_start(){printf "Starting Apaache ...\n"/opt/lanmp/httpd/bin/apachectl start }function_stop(){printf "Stoping Apaache ...\n"/opt/lanmp/httpd/bin/apachectl s…

XSS漏洞挖掘利用总结(附个人常用payload)

目录 基础 挖掘思路 案例 绕过思路 个人常用 基础 原理 攻击者嵌入恶意脚本代码到用户会访问到的页面中,用户访问该页面的时候,就会直接执行恶意的js代码 当浏览器解析html的时候遇到<script>、事件属性、伪协议就会进行js解析 类型 反射型:触发点在url参数里…