多模态实验记录--MMIM

1、遇到的问题

1.1 环境安装:

当使用比较新的显卡(比如NVIDIA GeForce RTX 4090)时,由于显卡的架构比较新,可能旧版本的pytorch库没有支持到。这时候就会出现capability sm_86 is not compatible的问题,同时根据输出可以看到 The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70 sm_75当前pytorch只能支持上面几种架构。

由于4090算力是8.9,在较老的torch版本代码上跑会有问题 ,需要使用与cuda对应的版本

pip install torch==1.11.0+cu118 torchvision==0.12.0+cu118 torchaudio==0.11.0+cu118 -f https://download.pytorch.org/whl/cu118/torch_stable.html
# 1.13.1版本torch
pip install torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 -f https://download.pytorch.org/whl/cu118/torch_stable.html

conda install cudatoolkit=11.8
pip install tensorflow==2.11.0

pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.13.1+cu117.html
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.13.1+cu117.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.13.1+cu117.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.13.1+cu117.html
pip install torch_geometric

1.2 解决算力高的问题

1,安装高版本cuda

无论你使用的别人的网络,它告诉你使用的cuda版本是多少,比如cuda10.9,但是4070ti一般可以装到cuda12以上,使用nVidia ——smi,检测你的显卡驱动支持的最高等级cuda,然后安装cuda。安装完成使用,nvcc——V,查看安装成功的cuda版本。

高版本cuda向下兼容。

2,安装高版本torch

无论你使用的别人的网络,它告诉你使用的torch版本是多少,你可以安装一下尝试一下,如果不行,直接安装torch1.13版本。

或者安装你的cuda支持的最高等级的torch。

高版本torch向下兼容。

3,pip安装
在这里插入图片描述

cudatoolkit与PyTorch版本的对应关系:
在这里插入图片描述

Tensorflow与Python、CUDA、cuDNN的版本对应表
在这里插入图片描述
在这里插入图片描述

1.3 新安装一个其他版本的cuda

举个例子:GPU的cuda版本为11.0,低于pytorch2.0需要的cuda11.8,因此考虑新安装一个高版本的cuda。

1、新建conda虚拟环境
为了不影响其他版本的cuda,先新建虚拟环境。这里安装的是python3.10版本

conda create -n env_name python==3.10

2、CUDA11.8安装
网上的教程有很多,也很复杂。但我突然发现conda官网里有一键下载cuda版本包的命令,抱着试试看的心态就使用了。
在这里插入图片描述
可以从label中筛选所需要的cuda版本,然后复制下载命令,直接在命令行中运行。
安装好之后输入nvcc -V,可以查看到相应版本的cuda。
在这里插入图片描述

3、 torch2.0安装
这里选择使用下载.whl安装包的形式。在这个网站上选择相应版本的torch。我选择的是第一个,即torch2.0版本+cuda11.8+python3.10,并且是linux系统的。(win_amd64指的是windows系统)
右键选择复制链接,然后在之前安装好的conda环境中,输入wget + 链接进行下载。如

wget https://download.pytorch.org/whl/cu118/torch-2.0.0%2Bcu118-cp310-cp310-linux_x86_64.whl#sha256=4b690e2b77f21073500c65d8bb9ea9656b8cb4e969f357370bbc992a3b074764

安装

下载结束后使用pip install 安装包名字.whl 进行安装

pip install torch-2.0.0+cu118-cp310-cp310-linux_x86_64.whl 

查询是否成功
输入python进入python环境,输入torch.__version__进行查询

python
torch.__version__

结果如图所示:
在这里插入图片描述

到这一步就在新的环境里配上cuda和torch了,运行项目代码总算不报错了。

1.4 其他

1、运行ABSA-PyTorch报错ImportError: cannot import name ‘SAVE_STATE_WARNING‘ from ‘torch.optim.lr_scheduler‘

  • 这是由于 transfomers版本太高 ,由于原本环境要求的是transfomers==4.0.0,实测换成4.9.2、4.17.0可以

2、Expected a ‘cuda‘ device type for generator but found ‘cpu‘的解决方法
具体代码如下:

// An highlighted block
#原来的代码
loader = DataLoader(dataset, batch_size=num_classes, shuffle=True)
#添加generator=torch.Generator(device='cuda')改成如下结果:
loader = DataLoader(dataset, batch_size=num_classes, shuffle=True, generator=torch.Generator(device='cuda'))

3、Is “Some weights of the model were not used” warning normal when pre-trained BERT only by MLM
警告告诉您一些权重是随机初始化的(这里是分类头),这是正常的,因为您正在为不同的任务实例化预训练模型

2、代码解释

2.1、torch.backends.cudnn.deterministic

为什么使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样?固定随机数种子是非常重要的。但是如果你使用的是PyTorch等框架,还要看一下框架的种子是否固定了。还有,如果你用了cuda,别忘了cuda的随机数种子。这里还需要用到torch.backends.cudnn.deterministic.

torch.backends.cudnn.deterministic是啥?顾名思义,将这个 flag 置为True的话,每次返回的卷积算法将是确定的,即默认算法。如果配合上设置 Torch 的随机种子为固定值的话,应该可以保证每次运行网络的时候相同输入的输出是固定的,代码大致这样:

def init_seeds(seed=0):
    torch.manual_seed(seed) # sets the seed for generating random numbers.
    torch.cuda.manual_seed(seed) # Sets the seed for generating random numbers for the current GPU. It’s safe to call this function if CUDA is not available; in that case, it is silently ignored.
    torch.cuda.manual_seed_all(seed) # Sets the seed for generating random numbers on all GPUs. It’s safe to call this function if CUDA is not available; in that case, it is silently ignored.

    if seed == 0:
        torch.backends.cudnn.deterministic = True
        torch.backends.cudnn.benchmark = False

参考

解决pytorch capability sm_86 is not compatible with the current PyTorch installation 问题

4070ti安装torch环境的一些记录

Pytorch环境搭建

【pytorch】torch.backends.cudnn.deterministic

如何用conda安装PyTorch(windows、GPU)最全安装教程(cudatoolkit、python、PyTorch、Anaconda版本对应问题)(完美解决安装CPU而不是GPU的问题)

在linux集群服务器上使用conda安装高版本cuda(cuda-11.8)和pytorch2.0

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV(八)——基本线条操作

基本线条操作 OpenCV中提供了基本的线条的操作,包括画直线、画矩形、画圆形等。 (1)画直线,在OpenCV中利用line()画直线,形式为image_with_line cv2.line(image, start_point, end_point, color, thickness)。line(…

三星计划将其NAND闪存芯片价格上调最高20%

韩国媒体一份报告显示,三星电子的内存业务成功挺过了去年的市场低迷时期。最近,其减产策略终于见效,芯片价格随之上升。 据报导,今年第一季度,三星计划将其NAND闪存芯片价格上调最高20%,目标是恢复其内存芯…

面向对象【final关键字】

文章目录 final 关键字final 修饰类final 修饰方法final 修饰变量参考链接 final 关键字 在Java编程语言中,final关键字扮演着重要的角色,用于表示“最终的”或“不可更改的”特性。通过final关键字,可以对类、方法和变量进行限制和保护&…

【JavaScript】JavaScript 运算符 ② ( 表达式 与 返回值 | 自增 与 自减运算符 细节 | 前置自增运算符 | 后置自增运算符 )

文章目录 一、JavaScript 运算符1、表达式 与 返回值2、自增 与 自减运算符 细节3、前置自增运算符4、后置自增运算符5、自增 / 自减 运算符 代码示例 一、JavaScript 运算符 1、表达式 与 返回值 " 表达式 " 是 由 数字 , 运算符 , 变量 组成的 " 式子 " …

功能问题:如何用Docker部署一个后端项目?

大家好,我是大澈! 本文约1800字,整篇阅读大约需要3分钟。 关注微信公众号:“程序员大澈”,免费加入问答群,一起交流技术难题与未来! 现在关注公众号,免费送你 ”前后端入行大礼包…

VBA_MF系列技术资料1-400

MF系列VBA技术资料1-400 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-0…

*Javaweb -- MyBatis*

一:介绍: 1.MyBatis是一个优秀的 ①持久层 ②框架,用于简化JDBC的开发! ①:JAVAEE有三层的结构:表现层, 业务层, 持久层. 表现层代表的是页面的展示,业务层则指的是对于相关逻辑的处理, 而持久层, 指的则是对于数据进行持久化,保存在数据库当中. 持久层具体的来说就是负责…

maven本地仓库依赖上传到远程仓库

本地仓库上传到远程仓库 批量上传: 批量本地仓库依赖(jar包)上传脚本: #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itse…

基础算法-分治算法-学习

现象: 基础算法-分治算法-学习 分而治之,将复杂问题分成小问题,小问题直接求解,最后合并得到最终结果, 和递归思想有点相近,也是区分小问题自己解决,所以在分治算法很多以递归的方式实现 每个…

客户案例|100M 768 维向量数据,Zilliz Cloud 稳定支持 Shulex VOC 业务场景

日前,国际化 VOC SaaS 公司数里行间(Shulex)将上亿数据量的核心业务从开源向量数据库 Milvus 迁移至全托管的向量数据库云服务 Zilliz Cloud。 相比于 Milvus,Zilliz Cloud 实现了 Shulex VOC 评论分析洞察报告生成速度 30% 的提升…

遥感深度学习:CNN-LSTM模型用于NDVI的预测(Pytorch代码深度剖析)

代码上传至Github库:https://github.com/ChaoQiezi/CNN-LSTM-model-is-used-to-predict-NDVI 01 前言 这是一次完整的关于时空遥感影像预测相关的深度学习项目,后续有时间更新后续部分。 通过这次项目,你可以了解: pytroch的模…

力扣● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

● 1143.最长公共子序列 1.dp数组含义。 dp[i][j]:数组1[0,i-1]范围的子数组和数组2[0,j-1]的子数组的公共子序列最长长度。注意这里不需要一定以A[i-1]/B[j-1]结尾,原因在下面有说明。 动态规划求子序列的问题,一般都是dp的下标相对于数组…

YOLOv7-Openvino和ONNXRuntime推理【CPU】

纯检测系列: YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列: YOLOv5/6/7-O…

EtherCAT开源主站 IGH 介绍及主站伺服控制过程

目录 前言 IGH EtherCAT主站介绍 主要特点和功能 使用场景 SOEM 主站介绍 SOEM 的特点和功能 SOEM 的使用场景 IGH 主站 和 SOEM对比 1. 功能和复杂性 2. 资源消耗和移植性 3. 使用场景 EtherCAT 通信原理 EtherCAT主站控制伺服过程 位置规划模式 原点复归模式…

渗透测试实战思路分析

免责声明:文章来源真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人…

Android图片加载-Glide4,Android多进程从头讲到尾

open fun load(context: WeakReference, url: String?, image: ImageView?, transformation: BitmapTransformation) { if (image null) return // 具体图片加载逻辑 } open fun load(holder: Int, context: WeakReference, url: String, image: ImageView?, width: Int, …

Slim-Neck by GSConv

paper:Slim-neck by GSConv: A better design paradigm of detector architectures for autonomous vehicles official implementation:https://github.com/alanli1997/slim-neck-by-gsconv 背景 目标检测是计算机视觉中一个重要的下游任务。对于车载…

UE4_AI_行为树_行为树快速入门指南

声明:学习笔记。 在 行为树快速入门指南 中,你将学会如何创建一个敌方AI,该AI看到玩家后会做出反应并展开追逐。当玩家离开视线后,AI将在几秒钟后(这可根据你的需求进行调整)放弃追逐,并在场景中…

git的实际运用

1. SSH配置和Github仓库克隆 注意博主在这里演示的SSH密钥生成方式,下面追加的五行不成功时可手动到.ssh下的config文件中添加即可 $ tail -5 config Host github.comHostName github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/test 演示 2. 关联…

[AIGC] Spring Boot中的切面编程和实例演示

切面编程(Aspect Oriented Programming,AOP)是Spring框架的关键功能之一。通过AOP,我们可以将代码下沉到多个模块中,有助于解决业务逻辑和非业务逻辑耦合的问题。本文将详细介绍Spring Boot中的切面编程,并…