LLM - 配置 ModelScope SWIFT 测试 Qwen2-VL 视频微调(LoRA) 教程(3)

news2024/11/29 23:27:21

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/142882496

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


Introduction

SWIFT 即 Scalable lightWeight Infrastructure for FineTuning (可扩展轻量级微调基础设施),是高效、轻量级的模型微调和推理框架,支持大语言模型(LLM) 和 多模态大型模型(MLLM) 的训练、推理、评估和部署。可以将 SWIFT 框架直接应用到研究和生产环境中,实现从模型训练和评估到应用的完整工作流程。

GitHub: modelscope/ms-swift


1. 数据集

测试数据集,视频文本数据集,即:

  • VideoChatGPT

示例:

Row 0: {'video_name': 'v_p1QGn0IzfW0', 'question_1': 'What equipment is visible in the gym where the boy is doing his routine?', 'question_2': 'None', 'answer': 'There is other equipment visible in the gym like a high bar and still rings.'}

视频:

Image

测试命令:

NFRAMES=24 MAX_PIXELS=100352 CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen2-vl-7b-instruct
<video>What equipment is visible in the gym where the boy is doing his routine?
[your path]/modelscope_models/media_resources/v_p1QGn0IzfW0.mp4
# 模型输出
The video shows a red and white pole, a red and white bar, and a red and white pole in the gym where the boy is doing his routine.
# Fine-Tuning 模型输出 (明显更优)
Other equipment visible in the gym includes a high bar, still rings, and a platform with foam mats on the floor.

video_chatgpt 数据集处理函数:

def _preprocess_video_chatgpt(dataset: DATASET_TYPE) -> DATASET_TYPE:
    url = 'https://modelscope.cn/datasets/swift/VideoChatGPT/resolve/master/videos.zip'
    local_dir = MediaCache.download(url, 'video_chatgpt')
    local_dir = os.path.join(local_dir, 'Test_Videos')
    # only `.mp4`
    mp4_set = [file[:-4] for file in os.listdir(local_dir) if file.endswith('mp4')]

    def _process(d):
        if d['video_name'] not in mp4_set:
            return {'query': None, 'response': None, 'videos': None}
        return {
            'query': d['question'] or d['question_1'] or d['question_2'],
            'response': d['answer'],
            'videos': [os.path.join(local_dir, f"{d['video_name']}.mp4")]
        }

    return dataset.map(_process).filter(lambda row: row['query'] is not None)

支持提前使用 ModelScope 命令下载 VideoChatGPT 数据集,即:

modelscope download --dataset swift/VideoChatGPT --local_dir swift/VideoChatGPT

复制到 ModelScope 的缓存目录:MODELSCOPE_CACHE,缓存位置如下:

[your folder]/modelscope_models/media_resources/video_chatgpt

需要进行重命名 VideoChatGPT -> video_chatgpt,同时,提前解压视频文件 videos.zip -> Test_Videos,这样就可以直接使用数据集:

--dataset video-chatgpt

2. 微调

视频描述任务,指令微调的训练脚本,如下:

  • NFRAMES 使用的视频帧数
  • MAX_PIXELS 最大像素数量,100352 = 1024x98
  • CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 NPROC_PER_NODE=8,多卡参数
  • --dataset video-chatgpt 数据集

即:

NFRAMES=24 MAX_PIXELS=100352 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 NPROC_PER_NODE=8 nohup swift sft \
--model_type qwen2-vl-7b-instruct \
--model_id_or_path qwen/Qwen2-VL-7B-Instruct \
--sft_type lora \
--dataset video-chatgpt \
--deepspeed default-zero2 \
--num_train_epochs 2 \
--batch_size 2 \
--eval_steps 100 \
--save_steps 100 \
> nohup.video-chatgpt.out &

训练日志:

Train: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 398/398 [4:09:59<00:00, 21.84s/it]
{'eval_loss': 1.29713297, 'eval_acc': 0.63649852, 'eval_runtime': 83.265, 'eval_samples_per_second': 0.36, 'eval_steps_per_second': 0.024, 'epoch': 2.0, 'global_step/max_steps': '398/398', 'percentage': '100.00%', 'elapsed_time': '4h 11m 22s', 'remaining_time': '0s'}
Val: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:02<00:00,  1.47s/it]
[INFO:swift] Saving model checkpoint to [your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/checkpoint-398
{'train_runtime': 15092.9517, 'train_samples_per_second': 0.421, 'train_steps_per_second': 0.026, 'train_loss': 1.21231406, 'epoch': 2.0, 'global_step/max_steps': '398/398', 'percentage': '100.00%', 'elapsed_time': '4h 11m 32s', 'remaining_time': '0s'}
Train: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 398/398 [4:11:32<00:00, 37.92s/it]
[INFO:swift] last_model_checkpoint: [your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/checkpoint-398
[INFO:swift] best_model_checkpoint: [your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/checkpoint-398
[INFO:swift] images_dir: [your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/images
[INFO:swift] End time of running main: 2024-10-13 11:15:43.850041

训练输出:

[your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/

TensorBoard 可视化模型输出:

tensorboard --logdir="runs" --host=0.0.0.0 --port=6006

训练 Loss:

Loss

验证集 Loss:

Loss
GPU 占用 (53.4G):

GPU

合并 LoRA 模型:

CUDA_VISIBLE_DEVICES=0,1,2 swift infer \
--ckpt_dir [your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/checkpoint-398/ \
--merge_lora true
# --load_dataset_config true
# 直接评估模型

使用 LoRA 模型:

NFRAMES=24 MAX_PIXELS=100352 CUDA_VISIBLE_DEVICES=0,1,2 swift infer --ckpt_dir [your path]/llm/ms-swift/output/qwen2-vl-7b-instruct/v18-20241013-065323/checkpoint-398-merged/

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

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

相关文章

Java项目:155 ssm高校学生管理系统(含论文+说明文档)

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 高校学生管理系统有管理员&#xff0c;教师&#xff0c;学生三个角色。 ​ 有个人中心&#xff0c;教师管理&#xff0c;学生管理&#xff0…

Spring MVC:精通JSON数据返回的几种高效方式

前言 在实际开发中&#xff0c;我们在前后端传送数据通常使用Json格式&#xff0c;而在Spring MVC中返回Json格式的方式有多种&#xff0c;接下来我将介绍其中一些。 准备工作 为了演示Json格式的数据&#xff0c;我们准备一个实体类&#xff0c;例如User&#xff0c;这些可以测…

Ubantu配置net8.0环境

1、下载net8.0SDK包 下载地址&#xff1a;Download .NET 8.0 (Linux, macOS, and Windows) 下载命令&#xff1a; wget https://download.visualstudio.microsoft.com/download/pr/853490db-6fd3-4c17-ad8e-9dbb61261252/3d36d7d5b861bbb219aa1a66af6e6fd2/dotnet-sdk-8.0.4…

“DataOps+大模型”——数造科技在大模型时代的数据开发创新探索

写在前面 自《“数据要素x”三年行动计划》印发以来&#xff0c;各界积极投身于探索数据开发的新技术、新应用场景和新模式&#xff0c;力求通过挖掘数据要素的价值来推动新型生产力的蓬勃发展。在这个过程中&#xff0c;以大模型为核心的人工智能技术为数据开发工作带来了全新…

中学数学教学期刊是核心期刊吗?

中学数学教学期刊是核心期刊吗&#xff1f; 《中学数学教学》不是核心期刊&#xff0c;属于省级期刊。 该期刊由安徽省教育厅主管&#xff0c;合肥师范学院、安徽师范大学数学系、安徽省数学学会主办。 虽然它在中学数学教育领域有一定的影响力&#xff0c;被中国国家哲学社…

springboot 整合 快手 移动应用 用户事件 消息回调 验证

快手 移动应用 WebHook 接入指南https://mp.kuaishou.com/platformDocs/openAbility/webHook/accessGuide.html 上代码 import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.RequiredArgsConstruc…

【Java】—— 数据结构与集合源码:数据结构概述与线性表、二叉树

1. 数据结构剖析 我们举一个形象的例子来理解数据结构的作用&#xff1a; 战场&#xff1a;程序运行所需的软件、硬件环境 敌人&#xff1a;项目或模块的功能需求 指挥官&#xff1a;编写程序的程序员 士兵和装备&#xff1a;一行一行的代码 战术和策略&#xff1a;数据结构 上…

分享5款堪称神器的软件

​ 今天再来推荐5个超级好用的效率软件&#xff0c;每个都堪称神器中的神器&#xff0c;用完后觉得不好用你找我。 1. 启动器——Launchy ​ Launchy是一款开源的启动器软件&#xff0c;帮助用户快速启动应用程序、文件夹和文件。用户只需通过快捷键调出Launchy界面&#xff…

FFmpeg的简单使用【Windows】--- 视频混剪+添加背景音乐

一、功能描述 点击背景音乐区域的【选择文件】按钮&#xff0c;选择音频文件并将其上传到服务器&#xff0c;上传成功后会将其存储的位置路径返回。 然后&#xff0c;点击要处理视频区域的【选择文件】按钮选择要进行混剪的视频素材&#xff08;1-10个&#xff09;。 以上两…

使用three.js 实现蜡烛效果

使用three.js 实现蜡烛效果 import * as THREE from "three" import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"var scene new THREE.Scene(); var camera new THREE.PerspectiveCamera(60, window.innerWidth / window.in…

SpringBoot技术支持的桂林景点导航

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

华为云CodeArts API:API管理一体化平台 9月新特性上线啦!

CodeArts API是面向开发者&#xff0c;提供API设计、API开发、API文档、API调试、 API自动化测试一体化协作平台&#xff0c;通过维护API各开发阶段数据高度一致&#xff0c;支持开发者高效实现API设计、API开发、API测试一站式体验。 2024年9月&#xff0c;CodeArts API主要发…

JAVA开源项目 在线考试系统 计算机毕业设计

本文项目编号 T 007 &#xff0c;文末自助获取源码 \color{red}{T007&#xff0c;文末自助获取源码} T007&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 系…

bat(批处理脚本学习)

输出banner echo off echo () echo JL echo ^|^| echo LJ echo _,--"""""""---. echo , …

服务端技术架构演进之路

服务端技术架构演进之路 目录 服务端技术架构演进之路 0.架构中常见概念及理解 1.单机架构 2.应用数据分离架构 3.应用服务器集群架构 4.读写分离/主从分离架构 5.冷热分离架构 6.垂直分库架构 7.微服务架构 8.容器编排架构 本文以一个 " 电子商务 " 应…

[CS报错] error CS1617: /langversion 的选项“12”无效。使用 “/langversion:?“ 列出支持的值

报错 error CS1617: /langversion 的选项“12”无效。使用 “/langversion:?” 列出支持的值 解决 方法一 升级SDK,升级.NET6.0SDK或者.NET7.0SDK… 方法二 调整项目语言版本&#xff1a; 如果你不想或不能升级 SDK&#xff0c;可以通过调整项目文件 .csproj 中的 Lang…

AFSim仿真系统 --- 系统简解_11 行为与行为树

行为与行为树 行为树是一种人工智能技术&#xff0c;它使用户能够快速创建灵活的行为体&#xff0c;这些行为体包含各种战术模块&#xff0c;称为“行为”或“行为节点”。通过连接节点&#xff0c;可以将这些节点以多样且相互关联的方式组合在一起以定义行为。 快速入门 一…

微软默认软件要是换成这些,工作效率直接飙升10倍不止

你的电脑配置明明比别人高&#xff0c;打开文件却比别人慢&#xff0c;这是为什么&#xff1f; 有可能就是软件的问题&#xff0c;如果微软默认软件都被替换成下面这些宝藏级免费工具&#xff0c;工作效率直接飙升10倍不止&#xff01; Everything Windows自带的搜索工具速度…

【Linux】配置Mysql 远程连接

文章目录 一、安装 Mysql配置 Mysql修改密码 登录 Mysql设置远程连接开放端口3306详情看蛋卷 一、安装 Mysql sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmyum -y install mysql mysql-server --nogpgcheck配置 Mysql #MyS…

6款提升工作效率的电脑监控软件推荐

在现代企业管理中&#xff0c;电脑监控软件成为提高工作效率、优化资源配置的关键工具。它们不仅能帮助管理者监控员工的电脑活动&#xff0c;还能提供有助于提升生产力的详细报告和分析。以下是6款广受好评的电脑监控软件&#xff0c;能够帮助企业有效管理和提升员工效率。 1…