MiniGPT-4(语言模型增强视觉语言理解)介绍、体验、部署教程
NO.1简介
MiniGPT-4使用先进的大型语言模型增强视觉语言理解,将语言能力与图像能力结合。
(资料图片仅供参考)
其利用视觉编码器BLIP-2和大语言模型Vicuna进行结合训练,共同提供了新兴视觉语言能力。
MiniGPT-4github:
https://github.com/Vision-CAIR/MiniGPT-4
工作原理翻译:
MiniGPT-4使用一个投影层来将来自BLIP-2的冻结视觉编码器与冻结的LLMVicuna对齐。我们通过两个阶段来训练MiniGPT-4。第一个传统的预训练阶段在使用4个A100大约10小时内,使用大约500万个图像-文本对进行训练。第一阶段过后,Vicuna能够理解图像。但是其生成能力受到了严重的影响。为了解决这个问题和提高可用性,我们提出了一种通过模型和ChatGPT自身创建高质量图像-文本对的新方法。基于此,我们创建了一个小型(总共3500对)但是高质量的数据集。第二个微调阶段在对话模板上使用该数据集进行训练,以显著提高其生成可靠性和整体可用性。令人惊讶的是,这个阶段具有计算效率,并且只需要使用单个A100大约7分钟的时间。MiniGPT-4能够产生许多类似于GPT-4中展示的新兴视觉语言能力NO.2DOMO使用
MiniGPT-4是国人开发的会中文的,只不过说法有点冷酷,不像ChatGPT那样符合人性化。
这个demo比较笨,需要先上传图片,才能进行对话,不易用,估计需要利用api来进行二次开发。
无法提取图片中的文字
没法识别文字应该
大体的图片内容是能理解,但是语言组织方面较欠缺
NO.3部署要求
安装步骤
MiniGPT4根据不同的模型选择需要不同的配置
目前解到:
Vicuna7B:
-VRAM>12GB
-RAM>16GB
-Disk>2500GB
Vicuna13B:
-VRAM>24GB
-RAM>16GB
-Disk>2500GB
在部署时转换权重时,预计需要80G的内存
在训练数据时,会下载2.3T的图片数据作为训练。
本次部署采用13B的语言模型进行部署
注:以下文件都放在/data下面,部分文件特别大,注意不要放到系统盘上
1.安装conda
wget-chttps://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.shbashMiniconda3-latest-Linux-x86_64.sh
#之后一直回车看license到最后让你同意license,
输入yes#输入安装位置/data/conda#添加官方镜像地址
condaconfig--addchannelsbiocondacondaconfig--addchannelsconda-forge
2.准备代码和安装环境
gitclone https://github.com/Vision-CAIR/MiniGPT-4.gitcdMiniGPT-4condaenvcreate-fenvironment.ymlcondaactivateminigpt4
#若后续操作中退出了bash界面
需要下次登录时再次执行来设置环境condaactivateminigpt4
3.获取原始权重
这步是最费劲的,权重非常大,下载很慢,而且第一次我还下错了,原始权重下了我两个晚上,头都大了。
第一次我去https://github.com/facebookresearch/llama/issues/149上查看到了一个原始权重,结果下载了一天,下来的文件不正确md5都对不上,跑权重转换的时候报文件错误,所以不要用这个下载(提示给自己找权重的朋友)
7B:ipfs://QmbvdJ7KgvZiyaqHw5QtQxRtUd7pCAdkWWbzuvyKusLGTw13B:ipfs://QmPCfCEERStStjg4kfj3cmCUu1TP7pVQbxdFMwnhpuJtxk
第二次重新采用了迅雷种子的下载,这次下载下来md5和checklist里是对的。
种子地址:
https://github.com/RiseInRose/MiniGPT-4-ZH/blob/main/CDEE3052D85C697B84F4C1192F43A2276C0DAEA0.torrent
从迅雷里面下载13B的模型即可,文件夹结构如下,注意下面的文件都需要下载,最终文件夹大小25G
/data/LLaMa├──13B│├──=│├──checklist.chk│├──consolidated.00.pth│├──consolidated.01.pth│└──params.json├──tokenizer_checklist.chk└──tokenizer.model
4.下载增量权重
下载前需先安装git-lfs,去官网下载就行https://git-lfs.com
下载安装完后执行
gitlfsinstallmkdir/data/vicunacd/data/vicuna#建议后台运行,里面文件太大了刚开始我下了一整天一共差不多49个G,挂在bash上,如果断网了就很难受了nohupgitclonehttps://huggingface.co/lmsys/vicuna-13b-delta-v1.1&
5.安装fastchat
gitclonehttps://github.com/lm-sys/FastChatcdFastChatgitcheckoutv0.2.3#安装pipinstalle.pipinstalltransformers[sentencepiece]
6.转换原始权重
下载下来的原始权重需要转换一下(注意:gitclone下来的增量权重不需要转换,只要转换原始的就行)
#存放转换后的权重mkdir-p/data/after_conv_weights/originmkdir/data/transformerscd/data/transformersgitclonehttps://github.com/huggingface/transformerscdtransformers#转换权重注意文件夹目录写对,input_dir只要指定到tokenizer.model平级就行pythonsrc/transformers/models/llama/convert_llama_weights_to_hf.py--input_dir/data/LLaMa--model_size13B--output_dir/data/after_conv_weights/origin出现:RuntimeError:Failedtoimporttransformers.models.llama.tokenization_llama_fastbecauseofthefollowingerror(lookuptoseeitstraceback):tokenizers>=0.13.3isrequiredforanormalfunctioningofthismodule,butfoundtokenizers==0.13.2.
运行
pipinstall-Utokenizers
再重新执行上述脚本
完成之后直接python运行下面代码加载模型与分词器
pythonfromtransformersimportLlamaForCausalLM,LlamaTokenizertokenizer=LlamaTokenizer.from_pretrained("/data/after_conv_weights/origin")model=LlamaForCausalLM.from_pretrained("/data/after_conv_weights/origin")
7.转换最终的工作权重
此处预计要80G左右的内存
mkdir-p/data/after_conv_weights/finalpython-mfastchat.model.apply_delta--base/data/after_conv_weights/origin/--target/data/after_conv_weights/final/--delta/data/vicuna/vicuna-13b-delta-v1.1/
最终转换出来的权重文件夹
转换之后,修改配置文件
/data/MiniGPT-4/minigpt4/configs/models/minigpt4.yamlllama_model:"/data/after_conv_weights/final/"
8.下载预训练的模型检查点
https://drive.google.com/file/d/1a4zLvaiDBr-36pasffmgpvH5P7CKmpze/view
下载之后是一个pretrained_minigpt4.pth文件
放入/data/checkpoint文件夹
在/data/MiniGPT-4/eval_configs/minigpt4_eval.yaml文件中,修改ckpt指定到/data/checkpoint/pretrained_minigpt4.pth中
到这里,基础的准备工作做完了。
9.尝试启动
cd/data/MiniGPT-4pythondemo.py--cfg-patheval_configs/minigpt4_eval.yaml--gpu-id0
运行之后一般会失败
会出现如下错误
问题1:
Import Error:libX11.so.6:cannotopensharedobjectfile:Nosuchfileordirectory
解决办法:
yum installlibX11
问题2:
ImportError:libXext.so.6:cannotopensharedobjectfile:Nosuchfileordirectory
解决办法:
yum installlibXext
问题3:
RuntimeError:TheNVIDIAdriveronyoursystemistooold(foundversion10020).PleaseupdateyourGPUdriverbydownloadingandinstallinganewversionfromtheURL:http://www.nvidia.com/Download/index.aspxAlternatively,goto:https://pytorch.orgtoinstallaPyTorchversionthathasbeencompiledwithyourversionoftheCUDAdriver.
NVIDIA版本太老了,需要更新NVIDIA版本
10.更新NVIDIA版本
nvidia-smi查看当前版本,如果没找到则没有nvidia驱动
目前测试在NVIDIA-SMI515.105.01、CUDAVersion:11.7之上可以运行
在https://www.nvidia.cn/Download/index.aspx?lang=cn上下载对应机型的NVIDIA驱动,根据显卡不同,驱动也不同。
这里我是V100S的驱动
下载后先不着急安装
先安装gcc和dkms
yum-yinstallgccdkms
查看内核版本
uname-ryumlist|grepkernel-develyumlist|grepkernel-header这三个版本需要对应上,连一个小版本号都不要差。我的版本号是(minigpt4)[root@10-13-50-112cc_sbu]#uname-r3.10.0-1062.9.1.el7.x86_64最开始另外两个对应不上,需要更新从https://buildlogs.centos.org/c7.1908.u.x86_64/kernel/20191206154625/3.10.0-1062.9.1.el7.x86_64/下载下面两个rpm包,进行更新kernel-devel-3.10.0-1062.9.1.el7.x86_64.rpmkernel-headers-3.10.0-1062.9.1.el7.x86_64.rpm
卸载过去已经安装的NVIDIA(如果没安装则忽略)
cd/usr/bin/./nvidia-uninstall
安装NVIDIA驱动
cd/data/navida/chmoda+xNVIDIA-Linux-x86_64-515.105.01.run./NVIDIA-Linux-x86_64-515.105.01.run之后按引导点yes就行了(操作就是左右方向键、回车)如果报xxx/build和xxx/source没找到,则就是内核工具不对,需要重新安装内核
安装完之后,通过nvidia-smi命令查看版本
11.启动demo
还是上面的命令
cd/data/MiniGPT-4pythondemo.py--cfg-patheval_configs/minigpt4_eval.yaml--gpu-id0
执行之后,又报一个错误
NameError:name"cuda_setup"isnotdefined
编辑
vim/data/conda/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py
在149行左右
添加
cuda_setup=CUDASetup.get_instance()
修改之后,再次执行,demo就启动了,启动之后会给出一个地址,可以通过这个地址来访问
https://3c70e646a6198e3ec7.gradio.live
12.两阶段训练
minigpt4在搭建完后还需要两阶段训练。
第一阶段训练直接提供了checkpoint,不需要在自己服务上进行训练
第二阶段训练需要自己进行训练
第一阶段预训练checkpoint:
https://drive.google.com/file/d/1u9FRRBB3VovP1HxCAlpD9Lw4t4P6-Yq8/view?usp=share_link
下载之后放在/data/checkpoint/目录下面
第二阶段微调:
下载数据
https://drive.google.com/file/d/1nJXhoEcy3KTExr17I7BXqY5Y9Lx_-n-9/view?usp=share_link,
放在/data/stage_2下面
并更改/data/MiniGPT-4/minigpt4/configs/datasets/cc_sbu/align.yaml将storage指向/data/stage_2/cc_sbu_align
进入/data/MiniGPT-4/train_configs目录下,
编辑minigpt4_stage2_finetune.yaml,将model.ckpt指向第一阶段预训练的checkout
即/data/checkpoint/pretrained_minigpt4_stage1.pthrun.output_dir设置成/data/checkpoint/
同时修改run下面的三个参数(如果用A100的话就保持原样,由于是V100GPU显存不足,需要将训练改小):
batch_size_train:1batch_size_eval:2num_workers:2
之后回到/data/MiniGPT-4目录下执行
torchrun--nproc-per-node1train.py--cfg-pathtrain_configs/minigpt4_stage2_finetune.yaml
训练完后,会生成/data/checkpoint/20230517153目录,里面有checkpoint_1.pth-checkpoint_4.pth四个文件
最后将
/data/MiniGPT-4/eval_configs中的ckpt指向/data/checkpoint/20230517153/checkpoint_4.pth
再重新运行
cd/data/MiniGPT-4condaactivateminigpt4pythondemo.py--cfg-patheval_configs/minigpt4_eval.yaml--gpu-id0
关键词:
推荐阅读
核废水介绍 核废水对生态环境有哪些危害?
核废水介绍核废水由核电站产生。听起来是不是很高端,其实发电的原理和火电厂是一样的,只是一个是烧煤,一个是烧核。水烧开后,用蒸汽驱动 【详细】
阿波罗11号未解之谜 阿波罗11号登月证据是什么?
阿波罗11号未解之谜1969年7月16日,巨大的土星5号火箭载着阿波罗11号飞船从美国卡纳维拉尔角肯尼迪航天中心点火升空,开始了人类首次登月的 【详细】
大数据有什么用?大数据技术的应用领域介绍
大数据有什么用?大数据指的是在一定时间范围内不能被传统软件工具捕获、管理和处理的数据集。它是一种海量、高增长和多样化的信息资产,需 【详细】
验钞机什么牌子好?验钞机的价格介绍
验钞机什么牌子好?康艺康艺始于1994年。是行业标准的起草单位,其产品人民币外币柜台 清分机 复点机 捆钞机 扎把机 取款箱是研发康艺专业生 【详细】
苹果秋季发布会正式官宣 iPhone 12系列手机有什么型号?
苹果秋季发布会正式官宣昨晚,苹果正式宣布了秋季发布会的时间,线上会议将于9月16日凌晨1点举行。这也是今年在苹果举行的第二次线上会议, 【详细】
相关新闻
- MiniGPT-4(语言模型增强视觉语言理解)介绍、体验、部署教程
- 红米这种千元机,终究跌落神坛
- 全球快讯:用模型进化模型,智源发布开源套装;大模型带不来AGI,LeCun提出三大挑战 - 最前线
- 微信语音通话功能太差了,越来越不喜欢!
- 2023年最值得购买的三款折叠屏!竖向、横向全都有!|今日播报
- 献血宣传海报_xianxue-今日看点
- 【世界播资讯】日媒:在羽田机场两架飞机发生碰撞,现场发现疑似机翼碎片
- 掘金3:1热火!篮网弃将爆发救主,21分力压小波特,曾与哈登绝配_每日头条
- 昨晚夜查!北京27名“酒司机”落网,6人将面临刑事处罚
- 罗贯中什么朝代(罗贯中是哪个朝代的)
- 【原】4月26星期二
- 【原】4月30星期六
- 天天短讯!王源电影节红毯状态翻车,浓妆掩盖不住痘坑,眼神憔悴显疲惫
- 聚焦深圳文博会 | 一本书演绎的奏鸣曲|每日观点
- 小说宦妃还朝_宦妃还朝txt微盘
- 林权_关于林权概略_微速讯
- 多啦a梦之七小子
- 国内物价运行总体平稳——解读5月份CPI和PPI数据
- 首批用户"坐等"提车 吉利银河L7将于6月13日交付-天天讯息
- 杯具!上海一小区电动车爆炸起火 家人惨被烧伤:网友吵翻为何电池拿回家充电 焦点关注