llava1.5模型安装、预测、训练详细教程

news2024/11/15 21:45:13

引言

本博客介绍LLava1.5多模态大模型的安装教程、训练教程、预测教程,也会涉及到hugging face使用与wandb使用。

源码链接:点击这里

demo链接:点击这里

论文链接:点击这里

一、系统环境

ubuntu 20.04
gpu: 2*3090
cuda:11.6

二、LLava环境安装

1、代码下载

git clone https://github.com/haotian-liu/LLaVA.git
cd LLaVA

2、虚拟环境构建

conda create -n llava python=3.10 -y
conda activate llava
pip install --upgrade pip  # enable PEP 660 support

3、模型预测安装

pip install -e .

4、模型训练环境安装

pip install -e ".[train]"
pip install flash-attn --no-build-isolation  # 可能安装失败

5、flash-attn离线环境安装

根据对应环境格式下载相应flash-attn,
flash-attn下载链接点击这里
实际为whl的离线文件,在使用pip install *.whl 即可

三、LLava推理运行

1、启动网页预测(类似服务端与客户端)

Launch a controller

python -m llava.serve.controller --host 0.0.0.0 --port 10000

Launch a gradio web server.

python -m llava.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload

注:host 0.0.0.0表示自动填充本机ip,网页将其替换本机ip即可,web server启动后会有网页ip,若在其它电脑将其0.0.0.0替换运行服务器的ip即可。

2、推理权重下载

我们使用llava-v1.5-7b模型做推理。

llava-v1.5-7b权重下载

权重下载地址:点击这里

权重下载,需要使用hugging face才能下载,自己注册账号即可,文件格式如下:
在这里插入图片描述

将图示文件全部下载,内有一个config.json文件,该文件很重要,部分内容如下:

在这里插入图片描述

该文件可看出视觉编码也缺少相应权重,需下载如下内容,并将其路径修改本地权重保存文件。

clip-vit-large-patch14-336权重下载

权重下载地址:点击这里
该文件可通过点击链接连接,也可在hugging face自行搜索。
在这里插入图片描述

同理,也是全部下载,放到一个文件夹中。

3、启动预测模型

若已完成权重下载,便可执行以下模型启动命令,而–model-path后面需跟模型权重路径文件,若联网能范文hugging face便可无需修改直接使用官方给定命令。

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port 40000 --worker http://localhost:40000 --model-path liuhaotian/llava-v1.5-13b

–load-4bit: 该指令也可加上,使用4bit模型推理

四、LLava的lora训练

1、权重下载

根据下图的finetune_lora.sh文件指定权重在hugging face下载即可,如下图。

在这里插入图片描述

下载好对应权重,即可修改路径路径,如下:
在这里插入图片描述

2、数据准备

使用官网也行,若不想下载太多,使用下面代码准备部分也行,如下:

import json

if __name__ == '__main__':
    json_root=r'*\llava_v1_5_mix665k.json'
    with open(json_root, 'r') as f:
        json_info = json.load(f)
    save_info=json_info[:1000]+json_info[480000:481000]+json_info[620000:621000]
    with open('info.json', 'w') as fp:
        json.dump(save_info, fp, indent=4)

数据图如下:
在这里插入图片描述

3、训练命令

我是将其移动到LLAVA文件内,直接执行此命令:

finetune_lora.sh

4、报错处理

模型有可能报数据错误,此时不用担心,该问题是数据的问题,如下:
在这里插入图片描述

直接修改上面代码如下:

def get_modality_length_grouped_indices(lengths, batch_size, world_size, generator=None):
    # We need to use torch for the random part as a distributed sampler will set the random seed for torch.
    assert all(l != 0 for l in lengths), "Should not have zero length."
    mm_indices, mm_lengths = zip(*[(i, l) for i, l in enumerate(lengths) if l > 0])
    # lang_indices, lang_lengths = zip(*[(i, -l) for i, l in enumerate(lengths) if l < 0])

    lang_indices, lang_lengths=mm_indices, mm_lengths

    assert len(mm_indices) > 0, "Should have at least one multimodal sample."
    assert len(lang_indices) > 0, "Should have at least one language sample."

也有可能有其它数据问题,是可能无eval数据,添加以下红色框即可,如下:

在这里插入图片描述

5、训练效果

若完成以上方式,使用训练命令,可实现如下训练效果:
在这里插入图片描述

6、训练使用wandb

llava训练自带wandb方式显示化查看,训练代码会自动提醒你,你只需注册,然后将其key复制,即可实现,其效果如下:
在这里插入图片描述

在这里插入图片描述

总结

以上便llava所有运行过程,愿踩过的坑对你有帮助。最后,我额外说下,我使用4090显卡搭建,跑测试问题不大,大概16g左右吧,跑训练一张24G卡有些够呛。

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

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

相关文章

数据库的增删查改(一)

Mysql的基本操作 一. 新增1.单行数据全列插入 2.多行数据指定列插入二.查询1.全列查询2.指定列查询3.查询字段为表达式4.别名5.去重6.排序7.条件查询 一. 新增 1.单行数据全列插入 表示在SQL语句中一行一行插入. 2.多行数据指定列插入 二.查询 1.全列查询 全列查询就是将val…

linux查看文件夹使用情况以及查看文件大小

1、ls ls 命令是 Linux 中最常用的文件和目录列表命令之一。它可以显示文件的各种属性&#xff0c;包括文件大小。 ls -l <文件名>上述命令会显示文件的详细信息&#xff0c;其中包括文件的大小。文件大小以字节为单位显示&#xff0c;并且在输出中的第 5 列。4096 表示…

JavaScript基础之BOM与DOM

文章目录 BOM操作window对象window的子对象之navigator对象&#xff08;了解即可&#xff09;window的子对象之screen对象&#xff08;了解即可&#xff09;window的子对象之history对象&#xff08;了解即可&#xff09;window的子对象之location对象 弹出框警告框确认框提示框…

【MySQL】MVCC机制(undo log,read view)

文章目录 前言一. 预备知识二. 模拟MVCC三. Read View四. RC与RR的本质区别结束语 前言 MVCC&#xff08;多版本并发控制&#xff09;是一种用来解决读-写冲突的无锁并发控制 MVCC为事务分配单向增长的事务ID&#xff0c;为每个修改保存一个版本&#xff0c;版本与事物ID相关联…

043-第三代软件开发-第三方串口库使用

第三代软件开发-第三方串口库使用 文章目录 第三代软件开发-第三方串口库使用项目介绍第三方串口库使用示例代码 关键字&#xff1a; Qt、 Qml、 QextSerialPort、 QThread、 高频 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt…

Websocket传输协议是什么

WebSocket 是一种网络通信协议&#xff0c;属于 HTML5 规范的一部分。它提供了在单个长期连接上进行全双工通信的能力&#xff0c;使得数据可以从客户端发送到服务器&#xff0c;也可以从服务器发送到客户端&#xff0c;这与传统的 HTTP 请求和响应模型不同。 WebSocket 协议定…

ROS Hello World

万物始于Hello World&#xff0c;为了体验ROS&#xff0c;使用Hello World介绍ROS的简单使用。 一、Hello World工程简介 首先需要创建工程&#xff0c;流程为&#xff1a; 创建工作空间目录&#xff08;即工程根目录&#xff0c;注意此时还不是ROS工作空间&#xff0c;只是…

>LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法

>LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法 >LINK : fatal error LNK1561和LINK : fatal error LNK1168:解决方法_fatal link error-CSDN博客 如果无法解决&#xff1a;只能试试在之前的项目中能否运行 这个错误提示表明在编译连接时&#xff…

PubScholar-可检索1.7亿篇科技文献的公益平台来了!

可检索1.7亿篇科技文献的 公益平台来了&#xff01; 11月1日 由中国科学院等单位联合建设的 PubScholar公益学术平台 正式对社会公众开放 网址&#xff1a;https://pubscholar.cn/ “公益学术平台”旨在为我国科技界和全社会提供高质量的公益性学术资源&#xff0c;提供学…

安全第一!速卖通测评补单稳定的系统注意事项大盘点

对新卖家而言&#xff0c;测评并非可耻之事&#xff0c;反而是无法起步、耗费自身时间才是真正的可耻。由于速卖通新店几乎无法获得任何活动的支持&#xff0c;流量也基本没有&#xff0c;因此要在90天内达成60单的业绩对于许多卖家来说都是一项挑战。因此&#xff0c;通过快速…

算法训练 第五周

一、多数元素 本题给了我们一个数组&#xff0c;要求我们找出这个数组中出现次数大于这个数组元素总量一半的那个元素&#xff0c;也可以理解为找出数组中出现次数最多的那个元素&#xff0c;本题的解决方法有很多&#xff0c;在此我们主要讨论三种解决思路。 1.Hash表 我们可…

Linux驱动——并发与竞态

并发 并发指多个执行单元同时、并行被执行&#xff0c;而并发执行单元对共享资源&#xff08;硬件资源和软件上的全局变量、静态变量等&#xff09;的访问很容易导致竞态。 如下列AB写&#xff0c;C读&#xff0c;AB在写的过程中&#xff0c;C读的话就会出错。 对称多处理器…

Lightdb23.4 Client 包含ecpg可执行程序及相关库文件

功能介绍 部分客户在使用Lightdb client绿色包时需要ecpg程序和ecpg相关的头文件和库文件&#xff0c;所以在Lightdb 23.4版本client绿色包中新增了ecpg的程序和相关头文件和库文件&#xff0c;以方便用户的使用。 Client包目录结构 bin目录是可执行程序和脚本&#xff0c;i…

windows wsl使用,安装ubuntu

windows wsl使用 环境配置windows 家庭版 打开 hyper11 安装ubuntuwsl 命令 环境配置 搜索 启动和关闭 Windows功能 打开下面组件 windows 家庭版 打开 hyper11 解决Windows11 Home 没有 Hyber-v 创建 hyber-v.cmd 并管理员身份执行 pushd "%~dp0" dir /b %Sy…

使用QEMU启动uboot引导linux内核

上篇文章中实现了使用qemu启动uboot&#xff0c;本文实现使用qemu启动uboot引导内核的过程。 一、环境准备 主机系统&#xff1a;WSL-ubuntu20.04 uboot版本&#xff1a;u-boot-2023.10 Kernel版本&#xff1a;linux-5.4.18 二、制作sd卡 qemu支持模拟sd卡&#xff0c;可以…

Linux C语言进阶-D11多级指针、void指针及const

多级指针 多级指针变量&#xff1a;指向指针变量的指针变量 在下图中&#xff0c;定义一个a数组&#xff0c;再定义一个指针数组p[2]&#xff0c;其中p数组中存储的是地址&#xff0c;再定义一个二级指针q指向p[0]&#xff0c;即&p[0]&#xff0c;又由于&p[0]就是p&am…

SpringCloud(七) Feign远程调用

目录 一, RestTemplate远程调用存在的问题 二, Feign的远程调用 2.1 什么是Fegin 2.2 Feign的使用(代替RestTemplate) 1. 引入依赖 2. 添加注解 3. 编写Feign的客户端 4. 测试 5. 总结 2.3 自定义配置 1. 配置文件方式 2. Java代码方式 三, Feign使用优化 3.…

keepalived与nginx与MySQL

keepalived VRRP介绍 集群&#xff08;cluster&#xff09;技术是一种较新的技术&#xff0c;通过集群技术&#xff0c;可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益&#xff0c;其任务调度则是集群系统中的核心技术。 集群组成后&#xff0c;可…

Jellyfin转码和色调映射效率提升:开启处理器低电压模式(GuC/HuC)

Jellyfin转码和色调映射效率提升 系统环境拉取nyanmisaka/jellyfin镜像开启低电压模式Jellyfin配置开启QSV和低电压模式解码开启色调映射&#xff08;基于OpenCL&#xff09; 实测验证低电压模式转码帧率实测测试视频概况221029版本 vs 230901版本开启色调映射的影响开启低电压…

AI智能分析网关高空抛物算法如何实时检测高楼外立面剥落?

高楼外立面剥落是一种十分危险的行为&#xff0c;会造成严重的人身伤害和财产损失。TSINGSEE青犀智能分析网关利用高楼外立面剥落的信息&#xff0c;结合高空抛物算法来进行处理就可很好解决此问题。 1. 数据收集 首先&#xff0c;需要收集关于高楼外立面剥落的数据。这可以通…