本地部署 MiniGPT-4

news2024/11/26 4:53:10

本地部署 MiniGPT-4

  • 1. 什么是 MiniGPT-4
  • 2. Github 地址
  • 3. 安装 MiniGPT-4
  • 4. 准备预训练的 MiniGPT-4 checkpoint
  • 5. 在本地启动演示
  • 其他 1,安装 CUDA Toolkit 11.8
  • 其他 2,安装 GCC 9 版本,并设置为默认GCC版本
  • 其他 3(成功),重新安装 bitsandbytes 兼容 CUDA Toolkit 11.8
  • 其他 3(失败),重新安装 bitsandbytes 兼容 CUDA Toolkit 11.8
  • 其他 4,安装 libgl1-mesa-dev
  • 其他 5,解决 `/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link` 错误

1. 什么是 MiniGPT-4

MiniGPT-4:使用高级大型语言模型增强视觉语言理解。

MiniGPT-4 是一种改进型的预训练自编码器模型,用于改进视觉-语言理解任务的性能。

MiniGPT-4 基于 GPT-4 架构,但参数数量减少了约 40 倍,以降低计算成本和提高训练速度。

MiniGPT-4 被应用于图像描述生成、视觉问答和视觉常识推理三个视觉-语言理解任务。实验结果表明,相比于最先进的方法,MiniGPT-4 可以在这三个任务中实现更好的性能,同时训练速度也更快。研究表明,通过减少高级语言模型的参数数量,可以在视觉-语言理解领域实现更快、更准确的推理。

MiniGPT-4 可以作为一种轻量级的选择,应用于视觉-语言联合学习环境。

2. Github 地址

https://github.com/Vision-CAIR/MiniGPT-4

3. 安装 MiniGPT-4

refer: https://pytorch.org/get-started/locally/

准备代码和环境,

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

(可选)我使用的是 WSL-Ubuntu 22.04,安装的 CUDA Toolkit 11.8,将 pytorch、torchvision、torchaudio 更新为兼容 CUDA Toolkit 11.8 的版本。

conda uninstall pytorch torchvision torchaudio && conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

(可选)使用 pip 安装时的命令如下,

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

准备好预先训练好的 Vicuna weights,Vicuna 是一个开源的基于 LLAMA 的 LLM,其性能接近于 ChatGPT。我们目前使用Vicuna-13B的v0版本。

安装 git-lfs (https://git-lfs.com),

sudo apt install -y git-lfs

下载 Vicuna 的 delta weight,

git lfs install
git clone https://huggingface.co/lmsys/vicuna-13b-delta-v0  # 更强大,需要至少24G的gpu内存
# or
git clone https://huggingface.co/lmsys/vicuna-7b-delta-v0  # 更小,需要12G gpu内存

注意,这不是直接的 working weight,而是 working weight 和 LLAMA-13B 的 original weight 之间的差异。(由于LLAMA的规则,我们不能发布 LLAMA 的 weight)。

从互联网上获得 HuggingFace 格式的 LLAMA-7B 或 LLAMA-13B 的 original weight,

git clone https://huggingface.co/decapoda-research/llama-13b-hf  # 更强大,需要至少24G的gpu内存
# or
git clone https://huggingface.co/decapoda-research/llama-7b-hf  # 更小,需要12G gpu内存

模型的作者在编写配置文件时,出现了拼写错误。请将 tokenizer_config.json 文件通过执行以下命令修改即可,

sed -i 's/LLaMATokenizer/LlamaTokenizer/g' ./llama-13b-hf/tokenizer_config.json

当这两个 weight 准备好后,我们可以使用 Vicuna 团队的工具来创建真正的 working weight。

首先,通过以下方式安装他们与 v0 Vicuna 兼容的库,

pip install git+https://github.com/lm-sys/FastChat.git@v0.1.10

然后,运行以下命令来创建最终的 working weight,

python3 -m fastchat.model.apply_delta --base ./llama-13b-hf/ --target ./vicuna_weights/ --delta ./vicuna-13b-delta-v0/

最后的 weight 将在一个单一的文件夹中,其结构类似于以下,

vicuna_weights/
├── config.json
├── generation_config.json
├── pytorch_model-00001-of-00003.bin
├── pytorch_model-00002-of-00003.bin
├── pytorch_model-00003-of-00003.bin
├── pytorch_model.bin.index.json
├── special_tokens_map.json
├── tokenizer.model
└── tokenizer_config.json

然后,在第 16 行这里的模型配置文件中设置 vicuna weight 的路径,

vi minigpt4/configs/models/minigpt4.yaml

--- modify
  llama_model: "/root/workspace/MiniGPT-4/vicuna_weights/"
---

4. 准备预训练的 MiniGPT-4 checkpoint

根据你准备的 Vicuna 模型,下载预训练的 checkpoint。

  • Checkpoint Aligned with Vicuna 13B

  • Checkpoint Aligned with Vicuna 7B

然后,在 eval_configs/minigpt4_eval.yaml 的评估配置文件中第11行设置预训练的检查点的路径。

vi eval_configs/minigpt4_eval.yaml

--- modify 
  ckpt: '/root/workspace/pretrained/pretrained_minigpt4.pth'
---

5. 在本地启动演示

在你的本地机器上尝试我们的演示 Demo.py,运行以下命令,

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

在这里插入图片描述
使用浏览器打开 http://127.0.0.1:7860 访问 MiniGPT-4,上传一张图片测试一下效果,

在这里插入图片描述

其他 1,安装 CUDA Toolkit 11.8

refer: https://developer.nvidia.com/cuda-11-8-0-download-archive

我使用的是 WSL-Ubuntu 22.04,下面是安装 CUDA Toolkit 11.8 的命令。

sudo apt install -y dkms
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

在这里插入图片描述
在这里插入图片描述

输入日志如下,

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.8/

Please make sure that
 -   PATH includes /usr/local/cuda-11.8/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64, or, add /usr/local/cuda-11.8/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.8/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 520.00 is required for CUDA 11.8 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run --silent --driver

设置环境变量,

sudo vi ~/.bashrc

--- add
export CUDA_HOME=/usr/local/cuda-11.8
export CuDNN_HOME=/usr/local/cuda-11.8/include
export PATH=/usr/local/cuda-11.8/bin:$PATH
export CPLUS_INCLUDE_PATH=/usr/local/cuda-11.8/include:$CPLUS_INCLUDE_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:/usr/local/cuda-11.8/targets/x86_64-linux/lib/stubs/libcuda.so:$LD_LIBRARY_PATH
---
source ~/.bashrc
sudo vi /etc/ld.so.conf

--- add
/usr/local/cuda-11.8/lib64
---
sudo ldconfig

其他 2,安装 GCC 9 版本,并设置为默认GCC版本

sudo apt-get uninstall -y gcc
sudo apt-get install -y gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

其他 3(成功),重新安装 bitsandbytes 兼容 CUDA Toolkit 11.8

refer: https://blog.csdn.net/anycall201/article/details/129930919

pip3 uninstall bitsandbytes
pip3 install bitsandbytes

解决 bitsandbytes 报错信息,

cp /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py.old
vi /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes/cuda_setup/main.py

--- modify
(略)

                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
            else:
                self.add_log_entry(f"CUDA SETUP: Loading binary {binary_path}...")
                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
(略)
    # if not torch.cuda.is_available(): return 'libbitsandbytes_cpu.so', None, None, None, None
    if not torch.cuda.is_available(): return 'libbitsandbytes_cuda118.so', None, None, None, None
(略)
    if failure:
        # binary_name = "libbitsandbytes_cpu.so"
        binary_name = "libbitsandbytes_cuda118.so"
---

其他 3(失败),重新安装 bitsandbytes 兼容 CUDA Toolkit 11.8

refer: https://blog.csdn.net/anycall201/article/details/129930919

pip3 uninstall bitsandbytes
git clone https://github.com/timdettmers/bitsandbytes.git;cd bitsandbytes
CUDA_VERSION=118 make cuda11x
python3 setup.py install

解决 bitsandbytes 报错信息,

cp /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes-0.38.1-py3.9.egg/bitsandbytes/cuda_setup/main.py /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes-0.38.1-py3.9.egg/bitsandbytes/cuda_setup/main.py.old
vi /root/miniconda3/envs/minigpt4/lib/python3.9/site-packages/bitsandbytes-0.38.1-py3.9.egg/bitsandbytes/cuda_setup/main.py

--- modify
(略)

                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
            else:
                self.add_log_entry(f"CUDA SETUP: Loading binary {binary_path}...")
                # self.lib = ct.cdll.LoadLibrary(binary_path)
                self.lib = ct.cdll.LoadLibrary(str(binary_path))
(略)
    # if not torch.cuda.is_available(): return 'libbitsandbytes_cpu.so', None, None, None, None
    if not torch.cuda.is_available(): return 'libbitsandbytes_cuda118.so', None, None, None, None
(略)
    if failure:
        # binary_name = "libbitsandbytes_cpu.so"
        binary_name = "libbitsandbytes_cuda118.so"
---

其他 4,安装 libgl1-mesa-dev

sudo apt-get install libgl1-mesa-dev

其他 5,解决 /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link 错误

mv /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1.old
sudo ln -s /usr/lib/wsl/lib/libcuda.so /usr/lib/wsl/lib/libcuda.so.1
sudo ldconfig

完结!

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

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

相关文章

Shell脚本管道符常用搭配命令(我在人间贩卖黄昏,只为收集世间温柔去见你)

文章目录 1.sort2.uniq3.tr5.split6.paste7.eval 1.sort sort命令——以行为单位对文件内容进行排序&#xff0c;也可以根据不同的数据类型来排序比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序输出。 sort [选项] 文件名 cat file …

Java版企业电子采购招标系统源码

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…

UNIAPP实战项目笔记65 获取当前用户购物车数据的前端和后端交互

UNIAPP实战项目笔记65 获取当前用户购物车数据的前端和后端交互 思路 构建数据库表 前端数据存入vuex中shop.js的list中 list自动同步到后端数据&#xff0c; 后端相应前端请求数据 实例截图 ##代码 前端代码首批cart.vue <template><view class"shop-cart&quo…

两种知识库软件:BookStack和DokuWiKi在Debian12中的安装

一、BookStack的安装 1. 架设 LNMP系统环境 Debian12、php8.2-fpm、 nginx 2. 下载bookstack源码 3. 按照官网说明进行手动安装。 注意1&#xff1a;composer命令的安装&#xff0c;针对php的命令 下载、更名、安装 wget https://getcomposer.org/installer mv installer…

AI文章创作助手有什么特点

在当今信息爆炸的时代&#xff0c;文章创作已成为各行业必备技能。然而&#xff0c;如何高效地创作出质量优异且独具创意的文章仍是一个艰巨的挑战。AI文章创作助手应势而生&#xff0c;利用领先的自然语言处理和知识图谱技术&#xff0c;拥有丰富的自动创作和辅助创作能力&…

江苏省国家密码管理局副局长刘书伦等一行莅临通付盾调研

5月10日下午&#xff0c;江苏省国家密码管理局副局长刘书伦&#xff0c;苏州市国家密码管理局局长李家全、副局长王安方&#xff0c;苏州工业园区管委会党政办副主任陆万良等一行莅临通付盾&#xff0c;就密码及安全相关工作进行调研指导&#xff0c;通付盾创始人、CEO汪德嘉博…

Java框架学习04(SpringBoot自动装配原理)

1、什么是 SpringBoot 自动装配&#xff1f; 2、SpringBoot 是如何实现自动装配的&#xff1f;如何实现按需加载&#xff1f; 3、如何实现一个 Starter&#xff1f; 前言 使用过 Spring 的小伙伴&#xff0c;一定有被 XML 配置统治的恐惧。即使 Spring 后面引入了基于注解的配…

【Apifox】token的使用方式和脚本示例

目录 一、手动登录获取token 二、全自动登录实现方式 期望效果 实现思路 公共脚本示例 前言&#xff0c;关于token的使用&#xff0c;仅做了简单的demo测试token效果。 一、手动登录获取token 顾名思义&#xff0c;因为只有登录之后才有token的信息&#xff0c;所以在调…

最近遇到的2个问题:cd换路径失败以及sqli抓包失败

问题1&#xff1a;用cd的时候&#xff0c;仅仅输出所打内容&#xff0c;但是跳转失败 解决方法&#xff1a;添加强制跳转参数 /d 原来是&#xff1a; 改完之后&#xff1a; 如果仅仅是盘符之间的切换&#xff0c;可以不使用cd命令直接跳转磁盘&#xff0c;就是直接输入…

洗地机怎么选?高性价比家用洗地机推荐

洗地机是一款高效、智能的清洁设备&#xff0c;可轻松去除地面污渍&#xff0c;免除了传统清洁方式的繁琐和费时。采用高科技材料和技术&#xff0c;可快速有效地将地面污物清除&#xff0c;保持环境卫生和清爽。但是面对市场上众多的洗地机品牌&#xff0c;许多家人们都不知道…

从接口测试到自动化测试:企业级接口自动化测试实践详解

从入门到精通&#xff01;企业级接口自动化测试实战&#xff0c;详细教学&#xff01;&#xff08;自学必备视频&#xff09; 摘要&#xff1a; 本文将使用Python中的requests库进行接口自动化测试&#xff0c;通过编写测试用例、封装请求方法等步骤&#xff0c;实现简单的接口…

Melis4.0[D1s]:9.测试cedar多媒体解码库,视频和lvgl混合显示

文章目录 1.测试audio_test命令播放mp31.1 finish命令中文件路径的写法&#xff08;测试&#xff09; 2.测试cedar_test 命令播放mp42.1 不清除logo图层&#xff0c;无法显示视频2.2 使用disp_layer_alpha_test命令清除logo图层&#xff0c;正常播放视频 3. lvgl设置3.1 ui图层…

Http 响应头 Transfer-Encoding : chunked 导致 浏览器客户端请求错误问题

生产环境服务器规划如下 服务器类型网络环境cal.comnginx外网192.168.7.15:9200tomcat内网192.168.7.16:9200tomcat内网sdd.comnginx内网192.168.7.15:9100tomcat内网192.168.7.16:9100tomcat内网 192.168.7.15和192.168.7.16是做个负载均衡。目前的需求是用户访问外网的cal.…

SIEM工具保护云数据安全

规范对云中敏感数据的访问、跟踪已批准和未批准的应用程序的使用情况以及检测基础架构中影子 IT 应用程序的使用情况&#xff0c;将有助于防止针对云的内部和外部威胁。由于组织的云边界超出了传统的网络边界&#xff0c;因此实施严格的策略来保护敏感数据&#xff0c;并获得对…

宠物界的“富士康”IPO,福贝宠物冲刺上交所主板

随着社会经济的不断发展&#xff0c;人们生活水平的提高&#xff0c;宠物经济逐渐成为了一个备受关注的话题。无论是对于宠物爱好者还是宠物经济从业者&#xff0c;宠物经济的重要性都不容忽视。福贝宠物自然也是宠物经济下的产物。 福贝宠物在上交所主板IPO的申请获得受理。本…

开源单用户客服系统源码-上传附件功能-elementui 异步上传文件【唯一客服开发商】...

之前开源的单用户客服系统&#xff0c;上传附件成功后&#xff0c;还不能展示出文件形式&#xff0c;今天把上传展示出文件形式给开发完善一下。 我想要实现的效果是&#xff0c;展示出文件的名称和大小信息 后端返回一个带有文件信息的json结果&#xff0c;前端把该信息组织一…

打造中国的Web3.0基座,张平院士谈“构建元宇宙及支撑技术“

在近期举办的全球元宇宙大会开幕式上&#xff0c;中国工程院院士、北京邮电大学教授张平出席大会并发表了题为《构建元宇宙及支撑技术》的开场演讲。 演讲中&#xff0c;张平院士分析阐述了理想的元宇宙技术运行状态。他表示&#xff0c;元宇宙需要实现大规模用户持续在线、高…

【JS】1678- 重学 JavaScript API - Broadcast Channel API

当我们网页需要在不同的浏览器窗口之间共享数据时&#xff0c;可能需要使用 WebSocket 或 WebRTC 等技术。但是&#xff0c;这些技术会过于复杂。而浏览器自带的 Broadcast Channel API[1] 可以让我们轻松地在不同浏览器窗口之间共享数据&#xff0c;而无需使用复杂的技术。 本…

Redis入门到实战(实战篇)缓存更新、穿透、雪崩、击穿!

Redis基础篇 Java面试宝典-redis 实战篇Redis 开篇导读 亲爱的小伙伴们大家好&#xff0c;马上咱们就开始实战篇的内容了&#xff0c;相信通过本章的学习&#xff0c;小伙伴们就能理解各种redis的使用啦&#xff0c;接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信…

电脑屏幕录制软件哪个好用?推荐这2款!

案例&#xff1a;怎样才能找到一款好用的电脑录屏工具&#xff1f; 【我工作时&#xff0c;需要经常录制电脑屏幕&#xff0c;而我现在使用的录屏工具不好用&#xff0c;十分影响我的工作效率。我需要一款好用的电脑录屏工具&#xff0c;小伙伴们有没有推荐&#xff1f;】 如…