LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹

2023-10-10 17:52

本文主要是介绍LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

01简介        

视觉指令调整:针对多模式 GPT-4 级别功能而构建的大型语言和视觉助手。

视觉聊天:构建多模式 GPT-4 级聊天机器人66e5b30664fe648bf29e7fd68351e6f6.jpeg构建了包含 30 个未见过的图像的评估数据集:每个图像都与三种类型的指令相关联:对话、详细描述和复杂推理。这导致了 90 个新的语言图像指令,我们在这些指令上测试 LLaVA 和 GPT-4,并使用 GPT-4 对它们的响应进行评分,从 1 到 10 分。报告每种类型的总分和相对分数。总体而言,与 GPT-4 相比,LLaVA 获得了 85.1% 的相对分数,表明所提出的自指导方法在多模态设置中的有效性。

  • Science QA:LLaVA 与 GPT-4 协同作用的新 SoTA

05afcc5649391e9ffa77638c2dab498a.jpeg仅 LLaVA 就达到了 90.92%。我们使用纯文本的 GPT-4 作为判断,根据它自己之前的答案和 LLaVA 答案来预测最终答案。这个“GPT-4 作为判断”方案产生了新的 SOTA 92.53%。

  • 视觉指令跟随示例

OpenAI GPT-4 技术报告中两个示例的视觉推理

41c9e88e03a68cae46e5bdb2bdec0ea3.jpeg

  • 光学字符识别 (OCR)

0abefa3b56ca3429d7e38c397f734e59.jpeg

  • 效果展示

634c19c3f61dd30d6995160ab58507bb.jpeg29d6a10a2f1fead096823ae6d3f9498e.jpeg4e4e6d87135ed1c5558ca3a2c5c11221.jpeg

02安装

  1. 克隆此存储库并导航到 LLaVA 文件夹

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

2. 安装包

conda create -n llava python=3.10 -yconda activate llavapip install --upgrade pip # enable PEP 660 supportpip install -e .

3.安装附加包

pip install ninjapip install flash-attn --no-build-isolation

升级到最新的代码库

git pullpip uninstall transformerspip install -e .


03演示

要运行我们的演示,您需要在本地准备 LLaVA 检查点。请按照此处的说明下载检查点。

  • 渐变网页用户界面

要在本地启动 Gradio 演示,请一一运行以下命令。如果您计划启动多个模型工作人员以在不同检查点之间进行比较,则只需启动控制器和 Web 服务器一次


  • 启动控制器

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

启动 gradio Web 服务器。

python -m llava.serve.gradio_web_server --controller http://localhost:10000 --model-list-mode reload您刚刚启动了 Gradio Web 界面。现在,您可以打开 Web 界面,并将 URL 打印在屏幕上。您可能会注意到模型列表中没有模型。别担心,我们还没有推出任何劳模。当您启动模型工作人员时,它将自动更新。这是在 GPU 上执行推理的实际工作程序。每个工作人员负责 中指定的单个模型--model-path。

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等到进程完成加载模型,您会看到“Uvicorn running on ...”。

现在,刷新您的 Gradio Web UI,您将在模型列表中看到刚刚启动的模型。您可以根据需要启动任意数量的工作程序,并在同一 Gradio 界面中比较不同模型检查点。请保持不变,并将和--controller修改为每个worker的不同端口号。--port--worker

python -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:10000 --port <different from 40000, say 40001> --worker http://localhost:<change accordingly, i.e. 40001> --model-path <ckpt2>


如果您使用的是带有 M1 或 M2 芯片的 Apple 设备,则可以使用标志指定 mps 设备--device:--device mps。

  • 多个 GPU,当 GPU VRAM <= 24GB 时

如果您的 GPU 的 VRA&nbsp;小于 24GB(例如 RTX3090、RTX 4090&nbsp;等),您可以尝试使用多个 GPU 运行它。如果您有多个 GPU,我们最新的代码库将自动尝试使用多个 GPU。您可以指定要使用哪些 GPU CUDA_VISIBLE_DEVICES。下面是使用前两个 GPU 运行的示例。

CUDA_VISIBLE_DEVICES=0,1 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

  • (4位、8位推理、量化)

您可以使用量化位(4 位、8 位)启动模型工作线程,这样您就可以在减少 GPU 内存占用的情况下运行推理,从而有可能在具有低至 12GB VRAM 的 GPU 上运行。请注意,使用量化位进行的推理可能不如全精度模型准确。只需将--load-4bit或附加--load-8bit到您正在执行的

模型工作器命令即可。下面是使用 4 位量化运行的示例。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

  • (LoRA 权重,未合并)

您可以启动具有 LoRA 权重的模型工作线程,无需将它们与基本检查点合并,以节省磁盘空间。会有额外的加载时间,而推理速度与合并检查点相同。未合并的 LoRA 检查点在型号名称中没有lora-merge,并且通常比合并的检查点小得多(小于 1GB)(7B 为 13G,13B 为 25G)。要加载未合并的 LoRA 权重,您只需传递一个附加参数--model-base,它是用于训练 LoRA 权重的基础 LLM。您可以在模型动物园中检查每个 LoRA 权重的基础 LLM 。

python&nbsp;-m&nbsp;llava.serve.model_worker&nbsp;--host&nbsp;0.0.0.0&nbsp;--controller&nbsp;http://localhost:10000&nbsp;--port&nbsp;40000&nbsp;--worker&nbsp;http://localhost:40000&nbsp;--model-path&nbsp;liuhaotian/llava-v1-0719-336px-lora-vicuna-13b-v1.3&nbsp;--model-base&nbsp;lmsys/vicuna-13b-v1.3


这篇关于LLaVA:大型语言和视觉助手,图片识别和理解能力让人惊叹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182101

相关文章

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路