MiniGPT4 在RTX-3090 Ubuntu服务器部署步骤详解

news2024/11/25 9:43:46

主要参考知乎帖子:

MiniGPT-4 本地部署 RTX 3090 - 知乎

MiniGPT-4部署比麻烦,首先需要获取LLaMA权重,并结合Vicuna的bitwise XOR增量文件完成Vicuna模型权重生成,最后准备好预训练的MiniGPT-4进行模型部署。为了便于理解,我画了个流程框图:

系统版本:Ubuntu 20.04

我的硬件设备:Nvidia GeForce RTX-3090,显存24G

1、准备环境

克隆MiniGPT-4库,准备environment.yml中所需的环境。

git clone https://github.com/Vision-CAIR/MiniGPT-4.git
cd MiniGPT-4
conda env create -f environment.yml
conda activate minigpt4

……

2LLaMA权重获取

首先我们需要从huggingface下载模型权重,pip安装huggingface_hub

pip install huggingface_hub

由于显卡限制,我选用了参数量最小的模型 llama-7b-hfhuggingface下载链接如下:

LLaMA

decapoda-research (Decapoda Research)

本文选择:decapoda-research/llama-7b-hf

decapoda-research/llama-7b-hf at main

注意:文件需要全部下载,原文中是用snapshot_download下载的,我直接网页版下载,因为git容易断,还可能出现checkout失败,可以手动下载。

3Vicuna增量文件

选用模型vicuna-7b-delta-v1.1huggingface下载链接如下:

lmsys (Large Model Systems Organization)

lmsys/vicuna-7b-delta-v1.1 at main

注:vicuna权重分为v0v1.1两个版本,MiniGPT-4作者采用的是v0,当使用v0版本时,生成vicuna权重出错(bugtensor尺度不一致),而换为v1.1版本即可解决。我之前试用过v0这个版本,没有搞成功,不是上述原因,待查,所以建议选用v1.1版本。

4Vicuna权重生成

克隆FastChat库:

git clone https://github.com/lm-sys/FastChat.git

GitHub - lm-sys/FastChat: An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and FastChat-T5.

在终端输入以下命令:

python3 -m fastchat.model.apply_delta --base-model-path /home/train/mycharm/MiniGPT-4/model/llama-7b-hf/ --target-model-path /home/train/mycharm/new/vicuna  --delta /home/train/mycharm/new/lmsys/lmsysvicuna-7b-delta-v1.1  --low-cpu-mem

说明:

base-model-path是llama原始模型权重,7b参数的,target-model-path 是要生成的vicuna权重,delta是vicuna delta权重,低CPU内存需加入--low-cpu-mem,可以把大的权重文件分割成多个小份,并使用磁盘作为临时存储。可以使峰值内存保持在16GB以下。不然无法载入vicuna增量文件,CPU内存占满,程序直接被kill,绿色表示已有的vicuna-7b-delta权重。

这行命令对初学者有些迷惑:简单说就是利用llama的权重,结合vicuna的delta权重,然后生成vicuna权重,根源在于meta发布的llama权重没有正式公开导致,能下载只是网络行为。

运行结果如下:

新生成的vicuna的权重在设定的目录中:

5MiniGPT-4启动

本文采用的权重为原作者的checkpoints,prerained_minigpt4_7b.pth,并放在生成的vicuna权重路径下,目录一定要放对。

下载链接:

https://link.zhihu.com/?target=https%3A//drive.google.com/file/d/1RY9jV0dyqLX-o38LrumkKRh6Jtaop58R/view

此处要用谷歌,下载其他版本应该也可以,我没试。

下载完成后放到上述刚生成的vicuna目录下:

修改配置文件模型权重存放的目录:

下面这两步很关键,要修改权重文件的目录,要根据自己实际情况修改:

1)、修改MiniGPT-4/minigpt4/configs/models/minigpt4.yaml 文件中llama_model的值为vicuna-7b的路径:比如,我的在/home/train/mycharm/new/vicuna/在这个目录下,原文件在16行。

2)、修改MiniGPT-4/eval_configs/minigpt4_eval.yaml,将ckpt的值改成prerained_minigpt4_7b.pth的路径,原文件在11行。

比如我的在这个目录:/home/train/mycharm/new/vicuna/prerained_minigpt4_7b.pth

6、启动MiniGPT-4 demo

进入到MiniGPT-4目录:

python demo.py --cfg-path eval_configs/minigpt4_eval.yaml  --gpu-id 0

执行成功。

里面有个警告,疑似pytorch和torchvision版本不一致导致,不影响此处功能,参照以下帖子:

Failed to load image Python extension: libtorch_cuda_cu.so_牧羊女说的博客-CSDN博客

下面是原作者的运行图:

附录:

虚拟环境中各个包的名称及版本

Package

Version

absl-py

1.4.0

accelerate

0.15.0

addict

2.4.0

aiofiles

23.1.0

aiohttp

3.8.4

aiosignal

1.3.1

altair

5.0.1

anyio

3.7.1

appdirs

1.4.4

apturl

0.5.2

argon2-cffi

21.3.0

argon2-cffi-bindings

21.2.0

arrow

1.2.3

asttokens

2.2.1

async-timeout

4.0.2

attrs

23.1.0

autopep8

2.0.1

backcall

0.1.0

bcrypt

3.1.7

beautifulsoup4

4.12.2

bleach

6.0.0

blinker

1.4

Brlapi

0.7.0

cachetools

5.3.0

catfish

1.4.13

certifi

2019.11.28

cffi

1.15.1

chardet

3.0.4

charset-normalizer

3.1.0

chrome-gnome-shell

0.0.0

Click

7

cmake

3.25.2

colorama

0.4.3

coloredlogs

15.0.1

comm

0.1.3

command-not-found

0.3

configobj

5.0.6

contourpy

1.0.7

cryptography

2.8

cuda

0.0.1

cupshelpers

1

cycler

0.11.0

dbus-python

1.2.16

debugpy

1.6.7

decorator

4.4.2

defer

1.0.6

defusedxml

0.7.1

distro

1.4.0

distro-info

0.23ubuntu1

docker-pycreds

0.4.0

dulwich

0.19.15

duplicity

0.8.12.0

entrypoints

0.3

exceptiongroup

1.1.2

executing

1.2.0

fairscale

0.4.13

fastapi

0.99.1

fastChat

0.1.1

fasteners

0.14.1

fastimport

0.9.8

fastjsonschema

2.17.1

ffmpy

0.3.0

filelock

3.12.2

fire

0.5.0

flatbuffers

23.1.21

fonttools

4.38.0

fqdn

1.5.1

frozenlist

1.3.3

fschat

0.2.18

fsspec

2023.6.0

future

0.18.2

gitdb

4.0.10

GitPython

3.1.31

google-auth

2.16.1

google-auth-oauthlib

0.4.6

gradio

3.35.2

gradio_client

0.2.7

graphviz

0.8.4

grpcio

1.51.1

h11

0.14.0

h5py

3.8.0

hiq-python

1.1.12

httpcore

0.17.3

httplib2

0.14.0

httpx

0.24.1

huggingface-hub

0.16.3

humanfriendly

10

idna

2.8

imageio

2.22.2

importlib-metadata

6.0.0

importlib-resources

5.12.0

ipykernel

6.24.0

ipython

8.12.2

ipython_genutils

0.2.0

ipywidgets

8.0.7

isoduration

20.11.0

jedi

0.18.2

Jinja2

3.1.2

joblib

1.2.0

jsonpatch

1.32

jsonpointer

2.3

jsonschema

4.18.0

jsonschema-specifications

2023.6.1

jupyter

1.0.0

jupyter_client

8.3.0

jupyter-console

6.6.3

jupyter_core

5.3.1

jupyter-events

0.6.3

jupyter_server

2.7.0

jupyter_server_terminals

0.4.4

jupyterlab-pygments

0.2.2

jupyterlab-widgets

3.0.8

keyring

18.0.1

kiwisolver

1.4.4

labelImg

1.8.6

language-selector

0.1

launchpadlib

1.10.13

lazr.restfulclient

0.14.2

lazr.uri

1.0.3

lightdm-gtk-greeter-settings

1.2.2

linkify-it-py

2.0.2

lit

15.0.7

lockfile

0.12.2

louis

3.12.0

lxml

4.6.2

macaroonbakery

1.3.1

Mako

1.1.0

Markdown

3.4.1

markdown-it-py

2.2.0

markdown2

2.4.9

MarkupSafe

2.1.2

matplotlib

3.6.3

matplotlib-inline

0.1.6

mdit-py-plugins

0.3.3

mdurl

0.1.2

meld

3.20.2

menulibre

2.2.1

mistune

3.0.1

mmcv

1.7.1

mmdet

2.28.1

monotonic

1.5

mpmath

1.2.1

mugshot

0.4.2

multidict

6.0.4

mxnet

1.9.1

nbclassic

1.0.0

nbclient

0.8.0

nbconvert

7.6.0

nbformat

5.9.0

nest-asyncio

1.5.6

netifaces

0.10.4

networkx

2.8.7

nh3

0.2.14

notebook

6.5.4

notebook_shim

0.2.3

numpy

1.24.4

oauthlib

3.1.0

olefile

0.46

onboard

1.4.1

onnx

1.13.0

onnxruntime

1.14.0

opencv-python

4.6.0.66

orjson

3.9.1

overrides

7.3.1

packaging

21.3

pandas

1.5.3

pandocfilters

1.5.0

paramiko

2.6.0

parso

0.8.3

pathtools

0.1.2

peft

0.3.0

pexpect

4.6.0

pickleshare

0.7.5

Pillow

9.0.0

pip

23.1.2

pkgutil_resolve_name

1.3.10

platformdirs

3.8.1

prometheus-client

0.17.0

prompt-toolkit

3.0.39

protobuf

3.19.0

psutil

5.9.4

ptyprocess

0.7.0

pure-eval

0.2.2

py-itree

0.0.19

pyasn1

0.4.8

pyasn1-modules

0.2.8

pycairo

1.16.2

pycocotools

2.0.6

pycodestyle

2.10.0

pycparser

2.21

pycups

1.9.73

pydantic

1.10.11

pydub

0.25.1

Pygments

2.15.1

PyGObject

3.36.0

PyJWT

1.7.1

pyllama

0.0.8

pymacaroons

0.13.0

PyNaCl

1.3.0

pyparsing

3.0.9

PyQt5

5.10.1

PyQt5-Qt5

5.15.2

PyQt5-sip

12.12.1

pyRFC3339

1.1

pysvn

1.9.9

python-apt

2.0.1

python-dateutil

2.8.2

python-debian

0.1.36ubuntu1

python-json-logger

2.0.7

python-multipart

0.0.6

pytz

2022.7.1

PyWavelets

1.4.1

pyxdg

0.26

PyYAML

5.3.1

pyzmq

25.1.0

qtconsole

5.4.3

QtPy

2.3.1

rabbitvcs

0.18

referencing

0.29.1

regex

2023.6.3

reportlab

3.5.34

requests

2.31.0

requests-oauthlib

1.3.1

requests-unixsocket

0.2.0

rfc3339-validator

0.1.4

rfc3986-validator

0.1.1

rich

13.4.2

rpds-py

0.8.8

rsa

4.9

safetensors

0.3.1

scikit-image

0.19.3

scikit-learn

1.1.2

scipy

1.9.3

seaborn

0.12.2

SecretStorage

2.3.1

semantic-version

2.10.0

Send2Trash

1.8.2

sentencepiece

0.1.97

sentry-sdk

1.15.0

setproctitle

1.3.2

setuptools

67.8.0

sgt-launcher

0.2.5

shortuuid

1.0.11

simplejson

3.16.0

sip

4.19.21

six

1.14.0

sklearn

0

smmap

5.0.0

sniffio

1.3.0

soupsieve

2.4.1

ssh-import-id

5.1

stack-data

0.6.2

starlette

0.27.0

svgwrite

1.4.3

sympy

1.11.1

systemd-python

234

tensorboard

2.12.0

tensorboard-data-server

0.7.0

tensorboard-logger

0.1.0

tensorboard-plugin-wit

1.8.1

termcolor

2.3.0

terminado

0.17.1

terminaltables

3.1.10

thop

0.1.1.post2209072238

threadpoolctl

3.1.0

tifffile

2022.10.10

tiktoken

0.4.0

tinycss2

1.2.1

tokenizers

0.13.3

tomli

2.0.1

toolz

0.12.0

torch

1.13.1+cu116

torchaudio

0.13.1+cu116

torchscope

0.1.0

torchvision

0.14.1+cu116

tornado

6.2

tqdm

4.65.0

traitlets

5.9.0

transformers

4.28.1

triton

2.0.0

typing_extensions

4.7.1

ubuntu-advantage-tools

8001

ubuntu-drivers-common

0.0.0

uc-micro-py

1.0.2

ufw

0.36

ultralytics

8.0.109

unattended-upgrades

0.1

uri-template

1.3.0

urllib3

1.26.14

usb-creator

0.3.7

uvicorn

0.22.0

visdom

0.2.4

wadllib

1.3.3

wandb

0.13.10

wavedrom

2.0.3.post3

wcwidth

0.1.8

webcolors

1.13

webencodings

0.5.1

websocket-client

1.5.1

websockets

11.0.3

Werkzeug

2.2.3

wheel

0.34.2

widgetsnbextension

4.0.8

xcffib

0.8.1

xkit

0.0.0

xxx

0.0.1

yapf

0.32.0

yarl

1.9.2

zipp

3.15.0

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

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

相关文章

Photoshop简单案例(10)——利用PS修改证件照尺寸为1寸(或其他)

目录 一、项目介绍二、基本流程三、效果演示 一、项目介绍 本文介绍一下利用Photoshop修改证件照尺寸为1寸的方法。 二、基本流程 首先打开新建一个空白画布,设置画布宽度和高度分别为25mm和35mm,分辨率为300,背景颜色与证件照背景相同&am…

基于GPT4All的大型语言模型设计生态系统

GPT4All 一套专为强大、定制的大型语言模型设计的生态系统,能够在消费级CPU上本地运行。在GPT4All中,所使用的模型是一个3GB至8GB的文件,读者可以自行下载该文件,并将其插入到GPT4All的开源生态系统软件中。这一软件生态系统由Nomic AI提供支持并进行维护,其目的是确保系统…

04-树 (数据结构和算法)

4.1 树的基本概念 树(Tree)是n(n>0)个结点的有限集,它或为空树(n 0);或为非空树,对于非空树 T: 有且只有一个称之为根的结点 除根节点以外的其他结点可…

随手笔记——关于齐次变换矩阵的理解

随手笔记——关于齐次变换矩阵的理解 说明符号坐标系表示(coordinate representation)坐标系变换(coordinate transformation)点的操作(point operator) 说明 齐次变换矩阵的几种解释, 主要从坐…

十大排序算法【原理】【步骤】【动图】【C++实现】

十大排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔…

【面试题32】include和require的区别及用法

文章目录 一、前言二 、include和require的区别三、include和require的用法介绍3.1 include的用法3.2 require的用法及示例 四、include和require的用法示例4.1 包含文件4.2 包含文件并将结果赋值给变量4.3 动态包含文件4.4 使用绝对路径包含文件4.5 包含文件失败处理4.6 包含文…

MATLAB 的函数计算与作图

基本初等函数的输入系统运算与操作函数的输入函数值的计算1. 数值计算方式2. 符号计算方式2.1 函数:sym2.2 函数:syms 函数的作图1. 一般函数 yf(x) 的作图(二维)作图基本形式作多重线作图的线型和颜色作图的网格和标记、图例、字…

React Dva项目创建Model,并演示数据管理与函数调用

本文的话 我们讲一下定义Model 也就是Dva中redux的部分 我们打开一个刚创建的Dva项目 看到 src下的models 下 就是Model部分 这里 他给我们了一个案例 如果用 react-redux 管理 模块多了之后会看着比较乱 或 很麻烦 但是 大家会发现 在Model中 他将这些都放在一起了 只需要创建…

css属性

1、形状相关的 宽、高、边线(粗细、线样式、颜色)、弧度、前景色、背景色、透明度 圆角矩形: 随着radius的增加,角会越来越圆,当设置为高的一半(高200是直径)时,就会成圆角 宽高都是…

请求响应-日期时间参数的接受

日期参数 由于从前端发送的请求中,日期的格式可能各不相同,使用DateTimeFormat注解完成日期参数格式的转换具体关键代码如下: 在postman中发出对应请求携带对应参数结果如下: 参数名称要与方法中的形参名称一致,免得…

oracle排序问题

记录工作中遇到的问题让工作更加顺利! 文章目录 1.排序1.1数字字符串排序问题解决1.2自定义处理NULL 1.排序 工作中遇到一个需要排序的地方,遇到两个函数 DENSE_RANK和 RANK ;RANK 函数是按照一个字段或值排序后返回绝对位置(即相同值排名相…

HCIA云计算1

KVM是所有云平台的底座,云下面是虚拟化云台,虚拟化只提供基础架构,云可以提供服务,云是大杂烩。 OpenStack 开源云操作系统 KVM 开源虚拟化 Linux KVM OpenStack 大部分云厂商都是基于OpenStack 做二次开发 VRM理解成物理服务器…

推荐10个Flutter开源项目

作为跨平台应用开发的领头羊,Flutter从已发布就受到广大开发者的追捧。使用Flutter技术开发的应用不仅体验上无限接近原生应用,在开发效率上也是其他技术无法比拟的。随着其开发者社区的不断壮大,Flutter生态系统已经相当强大,并且众多开源应用程序也相继诞生。这些开源应用…

杨氏模量——从宏观(应力-应变曲线)到微观(原子键)尺度解释杨氏模量

杨氏模量(Young’s Modulus)是三个主要弹性常数之一,与剪切模量(shear modulus)、体积模量(bulk modulus)一起用于描述材料在载荷下如何变形 以下展示了拉伸试验的应力应变曲线 如果施加的应力…

3Ds max入门教程:创建雪地

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 在本教程中,您将学习在 3ds Max 9 中制作雪地。在本教程中,我们将使用一些原始平面、粒子系统和纹理,看看您可以从中制作出多么有效和逼真的场景。 好的,首先…

Linux学习之变量赋值

变量的命名规则: 变量的名字只能由字母、数字和下划线组成。 不能以数字开头。 为变量赋值的过程,称为变量替换。 变量赋值的方式有以下几种: 变量名变量值 使用let为变量赋值 将命令赋值给变量 将命令结果赋值给变量,使用$()或者…

前端框架Layui实现动态树效果(书籍管理系统左侧下拉列表)

目录 一、前言 1.什么是树形菜单 2.树形菜单的使用场景 二、案例实现 1.需求分析 2.前期准备工作 ①导入依赖 ②工具类 BaseDao(通用增删改查) BuildTree(完成平级数据到父子级的转换) ResponseUtil(将数据转换成json格式进行回显&…

能“出汗”,会“呼吸”的户外行走机器人

美国亚利桑那州立大学(ASU)科学家研制出了世界上第一个能像人类一样出汗、颤抖和呼吸的户外行走机器人模型。这个机器人名叫ANDI,是一个能模仿人类出汗的热敏“热模型”。 ANDI 身上不仅有可以使它行走的关节,还有其他机器人身上都没有的东西——它浑身…

高并发的哲学原理(一)-- 找出单点,进行拆分

人列计算机 《三体》中,刘慈欣设计了一个用人进行二进制运算的计算机,使用了三千万名士兵(晶体管): 计算机名:秦一号 CPU:秦始皇最精锐的五个军团 挥舞旗帜进行二进制运算 用三个士兵来组成与门、或门、与非门、或非门…

Python批量实现word中查找关键字

一、背景 在日常办公和文档处理中,我们常常需要在大量的Word文档中查找特定的关键字,然后进行接下来的操作,比如关键字替换等。手动逐个打开并搜索文档显然是费时费力的。因此,利用Python编写一个批量实现Word中查找关键字的程序可…