qwen-vl微调

devtools/2024/9/19 16:01:35/ 标签: Qwen, LVM

1.数据格式转换

模版格式:

[{"id": "identity_0","conversations": [{"from": "user","value": "你好"},{"from": "assistant","value": "我是Qwen-VL,一个支持视觉输入的大模型。"}]},{"id": "identity_1","conversations": [{"from": "user","value": "Picture 1: <img>https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg</img>\n图中的狗是什么品种?"},{"from": "assistant","value": "图中是一只拉布拉多犬。"},{"from": "user","value": "框出图中的格子衬衫"},{"from": "assistant","value": "<ref>格子衬衫</ref><box>(588,499),(725,789)</box>"}]},{ "id": "identity_2","conversations": [{"from": "user","value": "Picture 1: <img>assets/mm_tutorial/Chongqing.jpeg</img>\nPicture 2: <img>assets/mm_tutorial/Beijing.jpeg</img>\n图中都是哪"},{"from": "assistant","value": "第一张图片是重庆的城市天际线,第二张图片是北京的天际线。"}]}
]
import json# 打开并加载.json文件
with open(r"E:\comprehensive_library\e_commerce_lmm\data\openi-zh-prompt.json", 'r', encoding='utf-8') as f:data = json.load(f)# 数据格式转换
new_data = []
for i, d in enumerate(data):new_conversations = dict()new_conversations["id"] = f"identity_{i}"new_conversations["conversations"] = [{"from": "user","value": "Picture 1: <img>" + d["img"] + "</img>\n" + d["prompt"]},{"from": "assistant","value": d["label"]}]new_data.append(new_conversations)# 将新的数据写入新的.json文件中
with open("../data/openai-zh-qwenvl-prompt.json", 'w', encoding='utf-8') as f:json.dump(new_data, f, ensure_ascii=False, indent=4)

2.微调

直接pip install -r requirments.txt

注意gcc要升级到9.3

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bashecho "source /opt/rh/devtoolset-9/enable" >>/etc/profile

lora在V100上显存不够,微调不起来,在a800上可以。用swift库可以在V100上微调Qwen-vl。

#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
DIR=$(pwd)GPUS_PER_NODE=$(python -c 'import torch; print(torch.cuda.device_count())')
NNODES=1
NODE_RANK=0
MASTER_ADDR=localhost
MASTER_PORT=6001MODEL="/home/image_team/image_team_docker_home/lgd/e_commerce_lmm/weights/qwen-vl-caht/" #"Qwen/Qwen-VL-Chat"/"Qwen/Qwen-VL"  Set the path if you do not want to load from huggingface directly
# ATTENTION: specify the path to your training data, which should be a json file consisting of a list of conversations.
# See the section for finetuning in README for more information.
DATA="/home/image_team/image_team_docker_home/lgd/e_commerce_lmm/data/openai-zh-qwenvl-prompt.json"DISTRIBUTED_ARGS="--nproc_per_node $GPUS_PER_NODE \--nnodes $NNODES \--node_rank $NODE_RANK \--master_addr $MASTER_ADDR \--master_port $MASTER_PORT
"torchrun $DISTRIBUTED_ARGS finetune.py \--model_name_or_path $MODEL \--data_path $DATA \--bf16 False \--fp16 True \--fix_vit True \--output_dir output_qwen \--num_train_epochs 5 \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 1 \--evaluation_strategy "no" \--save_strategy "steps" \--save_steps 1000 \--save_total_limit 10 \--learning_rate 1e-5 \--weight_decay 0.1 \--adam_beta2 0.95 \--warmup_ratio 0.01 \--lr_scheduler_type "cosine" \--logging_steps 1 \--report_to "none" \--model_max_length 1024 \--lazy_preprocess True \--use_lora \--gradient_checkpointing \--deepspeed finetune/ds_config_zero2.json


http://www.ppmy.cn/devtools/34064.html

相关文章

Python-Socket编程实现tcp-udp通信

本文章是记录我准备大创项目时学的socket编程的用法&#xff0c;纯属记录生活&#xff0c;没有教学意义&#xff0c;视频我是看b站up主王铭东学的&#xff0c;讲的很详细&#xff0c;我只粗略学了个大概&#xff0c;我想要通过tcp&#xff0c;udp传输yolo目标检测中的物体坐标信…

[Java EE] 多线程(六):线程池与定时器

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

React学习笔记

React全家桶&#xff1a;React基础、React-Router路由、PubSub消息管理、Redux集中式状态管理、Ant-Design一个UI组件库。 一、React入门 1、React是什么&#xff1f; React是用于构建用户界面的JavaScript库。操作DOM呈现页面。是一个将数据渲染成HTML视图的开源JavaScript…

ESP32-S3的MQTT实战

昨天&#xff0c;我们讲了socket通信&#xff0c;当服务器和客户端建立起连接时&#xff0c;就可以互相通信了。在互联网应用大多使用WebSocket接口来传输数据。而在物联网的应用中&#xff0c;常常出现这种情况&#xff1a;海量的传感器&#xff0c;需要时刻保持在线&#xff…

HTML5(1)

目录 一.HTML5(超文本&#xff08;链接&#xff09;标记&#xff08;标签<>&#xff09;语言) 1.开发环境&#xff08;写代码&#xff0c;看效果&#xff09; 2.vscode 使用 3.谷歌浏览器使用 4.标签语法 5.HTML基本骨架&#xff08;网页模板&#xff09; 6.标签的…

【Flask 系统教程 4】Jinjia2模版和语法

Jinjia2 模板 模板的介绍 Jinja2 是一种现代的、设计优雅的模板引擎&#xff0c;它是 Python 的一部分&#xff0c;由 Armin Ronacher 开发。Jinja2 允许你在 HTML 文档中嵌入 Python 代码&#xff0c;以及使用变量、控制结构和过滤器来动态生成内容。它的语法简洁清晰&#…

Acwing 818. 数组排序

给定一个长度为 n n n的数组 a a a以及两个整数 l l l和 r r r&#xff0c;请你编写一个函数&#xff0c;void sort(int a[], int l, int r)&#xff0c;将 a [ l ] ∼ a [ r ] a[l]∼a[r] a[l]∼a[r]从小到大排序。 输出排好序的数组 a。 输入格式 第一行包含三个整数 n &…

模型全参数训练和LoRA微调所需显存的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

python数据分析——业务指标分析

业务指标分析 前言一、业务指标分析的定义二、业务问题构建问题构建的要求 三、业务问题的识别在识别问题的阶段对于企业内部收益者的补充&#xff1a; 四、竞争者分析标题竞争者分析的内容&#xff1a;标题竞争者分析目的&#xff1a;案例&#xff1a; 黑莓公司为什么会消亡&a…

vue 设置输入框只能输入数字且只能输入小数点后两位,并且不能输入减号

<el-input v-model.trim"sb.price" placeholder"现价" class"input_w3" oninput"valuevalue.replace(/[^0-9.]/g,).replace(/\.{2,}/g,.).replace(/^(\-)*(\d)\.(\d\d).*$/,$1$2.$3)"/> 嘎嘎简单、、、、、、、、、

基于点灯Blinker的ESP8266远程网络遥控LED

本文介绍基于ESP8266模块实现的远程点灯操作&#xff0c;手机侧APP选用的是点灯-Blinker&#xff0c;完整资料及软件见文末链接 一、ESP8266模块简介 ESP8266是智能家居等物联网场景下常用的数传模块&#xff0c;具有强大的功能&#xff0c;通过串口转WIFI的方式可实现远距离…

从零开始:Django项目的创建与配置指南

title: 从零开始&#xff1a;Django项目的创建与配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 后端开发 tags: DjangoWebDevPythonORMSecurityDeploymentOptimization Django简介&#xff1a; Django是一个开源的高级Python Web框架&#xff…

<网络安全>《74 微课堂<容器是什么?>》

1 容器 容器&#xff0c;是一种虚拟化技术。允许一个操作系统上用户空间被分割成几个独立的单元在内核中运行&#xff0c;彼此互不干扰&#xff0c;这样一个独立的空间&#xff0c;就被称之为一个容器。 2 容器技术为什么得到快速发展 随着智能制造的推进&#xff0c;企业开…

Typora+Docsify快速入门

Typora是什么&#xff1f; ​ Typora中文版是一款好用极简的跨平台Markdown编辑器&#xff0c;软件使用这款软件能够帮助用户轻松将文本转换到HTML&#xff0c;软件从底层向上设计&#xff0c;软件支持markdown的标准语法&#xff0c;同时这款软件还支持动态预览功能&#xff…

聊聊Mysql的两阶段提交

从图中可看出&#xff0c;事务的提交过程有两个阶段&#xff0c;就是将 redo log 的写入拆成了两个步骤&#xff1a;prepare 和 commit&#xff0c;中间再穿插写入bin log&#xff0c;具体如下&#xff1a; prepare 阶段&#xff1a;将 事务的修改写入到 redo log&#xff0c;同…

Angular基础-搭建Angular运行环境

这篇文章介绍了在Angular项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Angular CLI工具、安装angular-router、创建Angular项目等步骤。这篇文章为读者提供了清晰的指南&#xff0c;帮助他们快速搭建Angular开发环境&#xff0c;为后续的项目开发奠定基础。 …

[C++核心编程-01]----C++内存四区详细解析

前言 当程序运行时&#xff0c;操作系统会为程序分配一块内存空间&#xff0c;这块内存空间被划分为不同的区域&#xff0c;每个区域有其独特的作用和管理方式。四个区域分别为&#xff1a;堆、栈、全局/静态存储区和常量存储区。每个区域都有不同的作用和特点&#xf…

部分设计模式概述

单例模式 工厂模式 适配器模式 模板方法模式 策略模式 责任链 观察者模式&#xff08;又叫发布订阅模式&#xff09;

windows qt sdk 安装

在Windows上安装Qt SDK的步骤如下&#xff1a; 下载Qt SDK安装包&#xff1a; 打开Qt资源下载网站&#xff0c;如http://download.qt.io/。 选择适合您Windows版本和需求的Qt SDK版本进行下载。通常建议选择稳定版本&#xff0c;并确认是否包含所需的组件&#xff0c;如Qt Cre…

【Linux系统】冯•诺依曼体系结构与操作系统

本篇博客整理了操作系统相关的基础知识&#xff0c;先从硬件之冯•诺依曼体系结构&#xff0c;再结合软件之操作系统&#xff0c;旨在帮助读者理解计算机的软硬件资源&#xff0c;和操作系统的管理软硬件资源的手段。 目录 一、冯•诺依曼体系结构 1.计算机硬件设备 2.体系…