第一节 LLaVA模型安装、预测、训练详细教程

第一节 LLaVA模型安装、预测、训练详细教程

文章目录

引言

本博客介绍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才能下载,自己注册账号即可,文件格式如下:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

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

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

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

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

权重下载地址:
该文件可通过点击链接连接,也可在hugging face自行搜索。

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

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

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下载即可,如下图。

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

下载好对应权重,即可修改路径路径,如下:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

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) 

数据图如下:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

3、训练命令

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

finetune_lora.sh 

4、报错处理

模型有可能报数据错误,此时不用担心,该问题是数据的问题,如下:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

直接修改上面代码如下:

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数据,添加以下红色框即可,如下:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

5、训练效果

若完成以上方式,使用训练命令,可实现如下训练效果:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

6、训练使用wandb

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

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

五、最新llava环境安装(补充:2024-6-20)

1、ImportError: cannot import name ‘LlavaLlamaForCausalLM’ from 'llava.model’报错

同样依照我上面给出的安装方法,依然有效。但有些会遇到一些有关flash_atten安装问题,即使你安装成功,但也可能有以下错误:

ImportError: cannot import name 'LlavaLlamaForCausalLM' from 'llava.model' 

首先给出某个网站(https://github.com/haotian-liu/LLaVA/issues/1101)回答:

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程


没错就是flash-atten影响,我是cuda12.1 ubuntu22.04环境,离线使用多个flash-atten的whl也不行,我之前使用cuda11.6 ubuntu20.04的环境可行。于是,我使用网上一些回答尝试,也没法改变,我多次构建虚拟环境与多次使用pip install flash-attn --no-build-isolation --no-cache-dir该命令完成了安装。这个问题应该是版本问题,比较神奇。

2、新模型训练

依然使用我之前launch.josn是没有问题的,我已尝试。

3、pyproject.toml环境说明

也需你不想使用某些环境,特别是torch,而使用pip install -e . 会重新下载更新安装,于是你需要再该文件屏蔽或更改(如下图)。至于该文件说明,我给一个链接参考(https://zhuanlan.zhihu.com/p/666166082)。

www.zeeklog.com - 第一节 LLaVA模型安装、预测、训练详细教程

总结

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

Read more

最新电子电气架构(EEA)调研-3

而新一代的强实时性、高确定性,以及满足CAP定理的同步分布式协同技术(SDCT),可以实现替代TSN、DDS的应用,且此技术已经在无人车辆得到验证,同时其低成本学习曲线、无复杂二次开发工作,将开发人员的劳动强度、学习曲线极大降低,使开发人员更多的去完成算法、执行器功能完善。 五、各大车厂的EEA 我们调研策略是从公开信息中获得各大车厂的EEA信息,并在如下中进行展示。 我们集中了华为、特斯拉、大众、蔚来、小鹏、理想、东风(岚图)等有代表领先性的车辆电子电气架构厂商。        1、华为 图12 华为的CCA电子电气架构              (1)华为“计算+通信”CC架构的三个平台                         1)MDC智能驾驶平台;                         2)CDC智能座舱平台                         3)VDC整车控制平台。        联接指的是华为智能网联解决方案,解决车内、车外网络高速连接问题,云服务则是基于云计算提供的服务,如在线车主服务、娱乐和OTA等。 华

By Ne0inhk
Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 文章目录 * Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 * Apache IoTDB 核心特性与价值 * Apache IoTDB 监控面板完整部署方案 * 安装步骤 * 步骤一:IoTDB开启监控指标采集 * 步骤二:安装、配置Prometheus * 步骤三:安装grafana并配置数据源 * 步骤四:导入IoTDB Grafana看板 * TimechoDB(基于 Apache IoTDB)增强特性 * 总结与应用场景建议 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk
SQL Server 2019安装教程(超详细图文)

SQL Server 2019安装教程(超详细图文)

SQL Server 介绍) SQL Server 是由 微软(Microsoft) 开发的一款 关系型数据库管理系统(RDBMS),支持结构化查询语言(SQL)进行数据存储、管理和分析。自1989年首次发布以来,SQL Server 已成为企业级数据管理的核心解决方案,广泛应用于金融、电商、ERP、CRM 等业务系统。它提供高可用性、安全性、事务处理(ACID)和商业智能(BI)支持,并支持 Windows 和 Linux 跨平台部署。 一、获取 SQL Server 2019 安装包 1. 官方下载方式 前往微软官网注册账号后,即可下载 SQL Server Developer 版本(

By Ne0inhk