使用3080ti运行blip2的

使用3080ti运行blip2的案例

  • 注意!blip2很吃显存,需要大于80GB显存的卡。
  • 我最后安装的所有包的版本信息(python 3.9 )以供参考:

首先,我在运行blip2demo的时候显存用了80G以上,所以大家卡的显存不够的,一定要多卡运行
首先,参考blip2的官方github网址。

本机环境(大家主要看GPU,ubuntu版本和cuda版本即可):

PyTorch : 2.1.0 
ubuntu : 22.04
Python : 3.10
Cuda : 12.1
RTX : 3080 Ti(12GB) 
CPU : 12 vCPU Intel(R) Xeon(R) Silver 4214R CPU @ 2.40GHz
内存 : 90GB

在该环境中运行如下代码开始安装:

我发现当我使用python3.8(cuda11.3,cuda11.1)的时候运行不起来,所以这里换成了cuda12.1python3.9

conda create -n blip2 python=3.9
conda init bash && source /root/.bashrc
conda activate blip2

之后开始安装lavis

pip install salesforce-lavis

之后我发现,环境还缺少了相关的opencv-python包,所以又运行:

pip install opencv-python

接下来就可以运行如下的代码进行测试实验了

import torch
from PIL import Image
import requests
from lavis.models import load_model_and_preprocess# setup device to use
device = torch.device("cuda") if torch.cuda.is_available() else "cpu"
# load sample imageimg_url = 'https://storage.googleapis.com/sfr-vision-language-research/LAVIS/assets/merlion.png' 
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')   
raw_image.show() #使用PIL来展示图片,原来的display函数应该是colab里的
#display(raw_image.resize((596, 437)))model, vis_processors, _ = load_model_and_preprocess(name="blip2_t5", model_type="pretrain_flant5xxl", is_eval=True, device=device
)#也可以用其他的模型
# Other available models:
# 
# model, vis_processors, _ = load_model_and_preprocess(
#     name="blip2_opt", model_type="pretrain_opt2.7b", is_eval=True, device=device
# )
# model, vis_processors, _ = load_model_and_preprocess(
#     name="blip2_opt", model_type="pretrain_opt6.7b", is_eval=True, device=device
# )
# model, vis_processors, _ = load_model_and_preprocess(
#     name="blip2_opt", model_type="caption_coco_opt2.7b", is_eval=True, device=device
# )
# model, vis_processors, _ = load_model_and_preprocess(
#     name="blip2_opt", model_type="caption_coco_opt6.7b", is_eval=True, device=device
# )
#
# model, vis_processors, _ = load_model_and_preprocess(
#     name="blip2_t5", model_type="pretrain_flant5xl", is_eval=True, device=device
# )
#
# model, vis_processors, _ = load_model_and_preprocess(
#     name="blip2_t5", model_type="caption_coco_flant5xl", is_eval=True, device=device
# )vis_processors.keys()

但是运行这个代码,会自动下载blip2t5文件,然后我们直接连接huggingface网站又有一些问题,下载速度非常慢,下载不下来。

因为下载太慢了,我们可以在Salesforce/blip2-flan-t5-xxl · Hugging Face Hugging Face上找到相关的文件并下载。

下载方法:本地下载huggingface模型并在服务器上使用流程

如果不做任何改动,本来默认的下载位置如下(可以从huggingface上手动下载我们需要的模型,之后上传到这个地址下):
**加粗样式**
但是有时候这个默认路径是在系统盘里,上传到这个系统盘里,系统盘内存容量会不够。所以我们继续探索,找一下如何放到别的盘里。

Huggingface 默认下载位置更改
添加一句export HF_HOME="/root/autodl-tmp/huggingface"
source ~/.bashrc 使配置生效。

因为觉得有点麻烦,我直接把环境变量在下面的代码里改了
我在目录autodl-tmp下创建两个目录:
/huggingface文件夹
/torch-model文件夹

import torch
from PIL import Image
import requests
from lavis.models import load_model_and_preprocess# setup device to use
device = torch.device("cuda") if torch.cuda.is_available() else "cpu"
# load sample imageimg_url = 'https://storage.googleapis.com/sfr-vision-language-research/LAVIS/assets/merlion.png' 
raw_image = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')   
raw_image.show() #使用PIL来展示图片,原来的display函数应该是colab里的
#display(raw_image.resize((596, 437)))import os
os.environ['TORCH_HOME']=r"/root/autodl-tmp/torch-model"  #更改pytorch断点的默认保存目录
os.environ['TRANSFORMERS_CACHE'] = r'/root/autodl-tmp/huggingface'    #更改huggingface 的默认保存目录model, vis_processors, _ = load_model_and_preprocess(name="blip2_t5", model_type="pretrain_flant5xxl", is_eval=True, device=device
)vis_processors.keys()# 引入环境变量之后,成功解决这个问题。

注意!blip2很吃显存,需要大于80GB显存的卡。

一张卡不够,可以组合多张卡用

我最后安装的所有包的版本信息(python 3.9 )以供参考:

我的environment.yml 文件内容:

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
_libgcc_mutex=0.1=main
_openmp_mutex=5.1=1_gnu
altair=5.4.1=pypi_0
annotated-types=0.7.0=pypi_0
antlr4-python3-runtime=4.9.3=pypi_0
asttokens=2.4.1=pypi_0
attrs=24.2.0=pypi_0
bleach=6.1.0=pypi_0
blinker=1.8.2=pypi_0
blis=1.0.1=pypi_0
braceexpand=0.1.7=pypi_0
ca-certificates=2024.9.24=h06a4308_0
cachetools=5.5.0=pypi_0
catalogue=2.0.10=pypi_0
certifi=2024.8.30=pypi_0
cfgv=3.4.0=pypi_0
charset-normalizer=3.4.0=pypi_0
click=8.1.7=pypi_0
cloudpathlib=0.19.0=pypi_0
confection=0.1.5=pypi_0
contexttimer=0.3.3=pypi_0
contourpy=1.3.0=pypi_0
cycler=0.12.1=pypi_0
cymem=2.0.8=pypi_0
decorator=5.1.1=pypi_0
decord=0.6.0=pypi_0
distlib=0.3.9=pypi_0
einops=0.8.0=pypi_0
exceptiongroup=1.2.2=pypi_0
executing=2.1.0=pypi_0
fairscale=0.4.4=pypi_0
filelock=3.16.1=pypi_0
fonttools=4.54.1=pypi_0
fsspec=2024.9.0=pypi_0
ftfy=6.3.0=pypi_0
gitdb=4.0.11=pypi_0
gitpython=3.1.43=pypi_0
huggingface-hub=0.25.2=pypi_0
identify=2.6.1=pypi_0
idna=3.10=pypi_0
imageio=2.35.1=pypi_0
importlib-resources=6.4.5=pypi_0
iopath=0.1.10=pypi_0
ipython=8.18.1=pypi_0
jedi=0.19.1=pypi_0
jinja2=3.1.4=pypi_0
jsonschema=4.23.0=pypi_0
jsonschema-specifications=2024.10.1=pypi_0
kaggle=1.6.17=pypi_0
kiwisolver=1.4.7=pypi_0
langcodes=3.4.1=pypi_0
language-data=1.2.0=pypi_0
lazy-loader=0.4=pypi_0
ld_impl_linux-64=2.40=h12ee557_0
libffi=3.4.4=h6a678d5_1
libgcc-ng=11.2.0=h1234567_1
libgomp=11.2.0=h1234567_1
libstdcxx-ng=11.2.0=h1234567_1
marisa-trie=1.2.0=pypi_0
markdown-it-py=3.0.0=pypi_0
markupsafe=3.0.1=pypi_0
matplotlib=3.9.2=pypi_0
matplotlib-inline=0.1.7=pypi_0
mdurl=0.1.2=pypi_0
mpmath=1.3.0=pypi_0
murmurhash=1.0.10=pypi_0
narwhals=1.9.2=pypi_0
ncurses=6.4=h6a678d5_0
networkx=3.2.1=pypi_0
nodeenv=1.9.1=pypi_0
numpy=2.0.2=pypi_0
nvidia-cublas-cu12=12.1.3.1=pypi_0
nvidia-cuda-cupti-cu12=12.1.105=pypi_0
nvidia-cuda-nvrtc-cu12=12.1.105=pypi_0
nvidia-cuda-runtime-cu12=12.1.105=pypi_0
nvidia-cudnn-cu12=9.1.0.70=pypi_0
nvidia-cufft-cu12=11.0.2.54=pypi_0
nvidia-curand-cu12=10.3.2.106=pypi_0
nvidia-cusolver-cu12=11.4.5.107=pypi_0
nvidia-cusparse-cu12=12.1.0.106=pypi_0
nvidia-nccl-cu12=2.20.5=pypi_0
nvidia-nvjitlink-cu12=12.6.77=pypi_0
nvidia-nvtx-cu12=12.1.105=pypi_0
omegaconf=2.3.0=pypi_0
opencv-python=4.10.0.84=pypi_0
opencv-python-headless=4.5.5.64=pypi_0
opendatasets=0.1.22=pypi_0
openssl=3.0.15=h5eee18b_0
packaging=24.1=pypi_0
pandas=2.2.3=pypi_0
parso=0.8.4=pypi_0
pexpect=4.9.0=pypi_0
pillow=10.4.0=pypi_0
pip=24.2=py39h06a4308_0
platformdirs=4.3.6=pypi_0
plotly=5.24.1=pypi_0
portalocker=2.10.1=pypi_0
pre-commit=4.0.1=pypi_0
preshed=3.0.9=pypi_0
prompt-toolkit=3.0.48=pypi_0
protobuf=5.28.2=pypi_0
ptyprocess=0.7.0=pypi_0
pure-eval=0.2.3=pypi_0
pyarrow=17.0.0=pypi_0
pycocoevalcap=1.2=pypi_0
pycocotools=2.0.8=pypi_0
pydantic=2.9.2=pypi_0
pydantic-core=2.23.4=pypi_0
pydeck=0.9.1=pypi_0
pygments=2.18.0=pypi_0
pyparsing=3.1.4=pypi_0
python=3.9.20=he870216_1
python-dateutil=2.9.0.post0=pypi_0
python-magic=0.4.27=pypi_0
python-slugify=8.0.4=pypi_0
pytz=2024.2=pypi_0
pyyaml=6.0.2=pypi_0
readline=8.2=h5eee18b_0
referencing=0.35.1=pypi_0
regex=2024.9.11=pypi_0
requests=2.32.3=pypi_0
rich=13.9.2=pypi_0
rpds-py=0.20.0=pypi_0
salesforce-lavis=1.0.2=pypi_0
scikit-image=0.24.0=pypi_0
scipy=1.13.1=pypi_0
sentencepiece=0.2.0=pypi_0
setuptools=75.1.0=py39h06a4308_0
shellingham=1.5.4=pypi_0
six=1.16.0=pypi_0
smart-open=7.0.5=pypi_0
smmap=5.0.1=pypi_0
spacy=3.8.2=pypi_0
spacy-legacy=3.0.12=pypi_0
spacy-loggers=1.0.5=pypi_0
sqlite=3.45.3=h5eee18b_0
srsly=2.4.8=pypi_0
stack-data=0.6.3=pypi_0
streamlit=1.39.0=pypi_0
sympy=1.13.3=pypi_0
tenacity=9.0.0=pypi_0
text-unidecode=1.3=pypi_0
thinc=8.3.2=pypi_0
tifffile=2024.8.30=pypi_0
timm=0.4.12=pypi_0
tk=8.6.14=h39e8969_0
tokenizers=0.13.3=pypi_0
toml=0.10.2=pypi_0
torch=2.4.1=pypi_0
torchvision=0.19.1=pypi_0
tornado=6.4.1=pypi_0
tqdm=4.66.5=pypi_0
traitlets=5.14.3=pypi_0
transformers=4.26.1=pypi_0
triton=3.0.0=pypi_0
typer=0.12.5=pypi_0
typing-extensions=4.12.2=pypi_0
tzdata=2024.2=pypi_0
urllib3=2.2.3=pypi_0
virtualenv=20.26.6=pypi_0
wasabi=1.1.3=pypi_0
watchdog=5.0.3=pypi_0
wcwidth=0.2.13=pypi_0
weasel=0.4.1=pypi_0
webdataset=0.2.100=pypi_0
webencodings=0.5.1=pypi_0
wheel=0.44.0=py39h06a4308_0
wrapt=1.16.0=pypi_0
xz=5.4.6=h5eee18b_1
zipp=3.20.2=pypi_0
zlib=1.2.13=h5eee18b_1

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

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

相关文章

Vue 中引入 ECharts 的详细步骤与示例

在Vue项目中引入ECharts&#xff0c;可以让我们轻松地在前端页面中展示各种图表。ECharts 是一个基于 JavaScript 的开源可视化图表库&#xff0c;它提供了丰富的图表类型和强大的配置选项&#xff0c;使得在Vue项目中集成和使用变得非常方便。 一、准备工作 创建Vue项目&…

moectf-Web题解

1、弗拉格之地的入口 2、垫刀之路01: MoeCTF&#xff1f;启动&#xff01; 3、ez_http 4、ProveYourLove 5、弗拉格之地的挑战 6、ImageCloud前置 7、垫刀之路02: 普通的文件上传 8、垫刀之路03: 这是一个图床 9、垫刀之路05: 登陆网站 10、垫刀之路06: pop base mini …

【工具】VSCODE下载,配置初次设置

打开 settings.json 文件&#xff0c;包含了 Visual Studio Code (VSCode) 中的各种用户配置。 {"files.associations": {"*.vue": "vue","*.wpy": "vue","*.wxml": "html","*.wxss": "…

软件架构设计中的微内核架构是什么

Visual Studio Code 是一个广受欢迎的代码编辑器。它同样采用微内核架构&#xff0c;核心是一个轻量级的编辑器引擎&#xff0c;提供了基本的文本编辑、代码高亮、语法检查等功能。 通过安装不同的扩展插件&#xff0c;用户可以添加对各种编程语言的支持、调试功能、版本控制集…

React生命周期案例详解

React 组件的生命周期是指组件从创建、渲染、更新到卸载的整个过程。在 React 16 及之前的版本中&#xff0c;生命周期方法被分为几个不同的阶段&#xff1a;挂载&#xff08;Mounting&#xff09;、更新&#xff08;Updating&#xff09;、卸载&#xff08;Unmounting&#xf…

Java值传递、序列化详解

Java 值传递详解 说到参数&#xff0c;我们先来搞懂一下这两个概念 形参&实参 值传递&引用传递 形参&实参 方法的定义可能会用到 参数&#xff08;有参的方法&#xff09;&#xff0c;参数在程序语言中分为&#xff1a; 实参&#xff08;实际参数&#xff0c;…

QT实现Opencv图像处理

案例 基于QT的人脸识别 pro文件需要加以下代码 INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv INCLUDEPATH E:/opencv/opencv3.4-qt-intall/install/include/opencv2 LIBS E:/opencv/o…

D34【python 接口自动化学习】- python基础之输入输出与文件操作

day34 文件关闭 学习日期&#xff1a;20241011 学习目标&#xff1a;输入输出与文件操作&#xfe63;-46 常见常新&#xff1a;文件的关闭 学习笔记&#xff1a; 文件关闭的内部工作过程 close&#xff08;&#xff09;函数 with语句 常用的打开关闭文件 # 文件关闭 # 方式…

【Python】操作列表

Python是一种功能强大的编程语言&#xff0c;它提供了丰富的操作列表的方法。列表是一种有序、可变的数据类型&#xff0c;可以存储任意类型的元素。下面是一些常用的操作列表的方法&#xff1a; 1. 创建列表&#xff1a;可以使用方括号 [] 或者 list() 函数来创建一个列表。例…

kubernetes详解

一、kubernetes的定义 Kubernetes (希腊语"舵手" 或 "飞行员") 由Joe Beda&#xff0c;Brendan Burns和Craig McLuckie创立&#xff0c;并由其他谷歌工程师&#xff0c;包括Brian Grant和Tim Hockin进行加盟创作&#xff0c;并由谷歌在2014年首次对外宣布。…

值类型和引用类型的使用

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {class Program{static void Main(string[] args){/****值类型****/bool test;//必须赋值,否则报错test true;Console.WriteLin…

微服务_3.微服务保护

文章目录 一、微服务雪崩及解决方法1.1、超时处理1.2、仓壁模式1.3、断路器1.4、限流 二、Sentinel2.1、流量控制2.1.1、普通限流2.1.2、热点参数限流 2.2、线程隔离2.3、熔断降级2.3.1、断路器状态机2.3.2、断路器熔断策略2.3.2.1、慢调用2.3.2.2、异常比例&#xff0c;异常数…

Observability:使用 OpenTelemetry 自动检测 Go 应用程序

作者&#xff1a;来自 Elastic Damien Mathieu 使用 OpenTelemetry 检测 Go 应用程序可以深入了解应用程序的性能、依赖项和错误。我们将向你展示如何使用 Docker 自动检测 Go 应用程序&#xff0c;而无需更改应用程序代码。 在快节奏的软件开发领域&#xff0c;尤其是在云原生…

单片机原理及应用详解

单片机原理及应用详解 一、引言 单片机(Microcontroller)是集成了计算机功能的微型计算机,其内部包含CPU、内存、I/O接口等部件,广泛应用于嵌入式系统中。单片机因其体积小、成本低、功耗少等优点,成为电子产品设计中不可或缺的核心组件。本文将详细探讨单片机的原理、结…

【每日刷题】Day137

【每日刷题】Day137 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; 2. 495. 提莫攻击 - 力扣&#xf…

vrrp实验

配置Trunk和Access [SW3]int e0/0/1 [SW3-Ethernet0/0/1]p l a [SW3-Ethernet0/0/1]p d v 10 [SW3-Ethernet0/0/1]int e0/0/2 [SW3-Ethernet0/0/2]p l a [SW3-Ethernet0/0/2]p d v 10 [SW3-Ethernet0/0/2]int e0/0/3 [SW3-Ethernet0/0/3]p l a [SW3-Ethernet0/0/3]p d v 20 [S…

vue3中自定义校验函数密码不生效问题

vue3中自定义校验函数密码不生效问题 由于在自定义的校验规则中只校验了有数据的情况&#xff0c;以至于在没输入时&#xff0c;校验不生效 &#xff08;1&#xff09;用户不输入校验不生效 const validateSurePassword (rule, value, callback) > {if (value ! ) {if (…

Linux——软件包管理

目录 rpm 包管理 基本介绍 rpm 包的查询指令 ​编辑 rpm 包的卸载和安装 yum rpm 包管理 基本介绍 rpm 包的查询指令 rpm 包的卸载和安装 yum

STM32F407寄存器操作(DMA+SPI)

1.前言 前面看B站中有些小伙伴吐槽F4的SPIDMA没有硬件可控的CS引脚&#xff0c;那么今天我就来攻破这个问题 我这边暂时没有SPI的从机芯片&#xff0c;并且接收的过程与发送的过程类似&#xff0c;所以这里我就以发送的过程为例了。 2.理论 手册上给出了如下的描述 我们关注…

什么是动态规划

动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是一种用于解决最优化问题的算法设计方法。它通过将大问题分解成小问题&#xff0c;并存储已经解决的小问题的解&#xff0c;以避免重复计算&#xff0c;从而提高算法的效率。 动态规划通常适用于以下几类问…