当前位置: 首页 > news >正文

深度学习安装环境笔记

1、输出cuda版本
torch.version.cuda 返回的是 PyTorch 在编译时所使用的 CUDA 版本,而不是运行时实际调用的 CUDA 版本。PyTorch 在运行时实际调用的 CUDA 版本取决于系统上安装的 CUDA 驱动和库。

import torch
from torch.utils.cpp_extension import CUDA_HOME# 输出 预编译时cuda 版本
print(torch.version.cuda)# 输出 PyTorch 版本
print("PyTorch version:", torch.__version__)# 输出 CUDA_HOME 变量,真正使用的版本
print("CUDA_HOME:", CUDA_HOME)

2、查看pytorch和cuda关系:
https://pytorch.org/get-started/previous-versions/

3、显卡、显卡驱动、cuda、cuDNN之间关系:
https://blog.csdn.net/ergevv/article/details/140328687

4、ubuntu安装虚拟环境:

# 添加 PPA(个人软件包档案)
sudo add-apt-repository ppa:deadsnakes/ppa# 更新包列表
sudo apt update# 安装 Python 3.10
sudo apt install python3.10# 安装 pip (可选)
sudo apt install python3.10-distutils
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.10# 创建和管理 Python 虚拟环境所需的工具和库
sudo apt-get install python3.10-dev python3.10-venv
1. sudo apt install python3.10-distutils
这条命令的作用是从官方软件仓库中安装 python3.10-distutils 包。distutils 是一个用来构建和安装 Python 模块的标准工具集。它通常被用来打包和发布 Python 库。在一些较新的 Python 安装中,distutils 可能没有默认安装,而一些工具(包括 pip)在安装过程中可能会依赖于 distutils 中的功能。因此,安装这个包可以确保你的 Python 安装中有这些必要的工具。2. curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.10
这条命令实际上是两条命令的组合,使用管道符 | 将它们连接起来。它的工作流程如下:curl -sS https://bootstrap.pypa.io/get-pip.py:这部分命令使用 curl 工具从互联网下载 get-pip.py 脚本。-s 参数让 curl 在下载时不显示进度条等输出信息,而 -S 参数则确保即使开启了 -s 参数,当发生错误时也会显示错误信息。
| sudo python3.10:这部分命令表示将前一部分命令的输出(即下载的 get-pip.py 脚本)作为输入传递给 python3.10 解释器执行。由于命令前面有 sudo,这意味着脚本将以超级用户权限运行,这对于安装全局可用的 Python 包通常是必需的。
整体来说,这条命令的作用是下载并立即运行 get-pip.py 脚本,该脚本会检测当前环境中的 Python 安装,并安装最新版本的 pip(Python 的包管理工具)。这样做可以确保你有一个最新的 pip 版本来管理你的 Python 包。1. python3.10-dev
作用:python3.10-dev 包包含了编译 Python C 扩展模块所需的头文件和静态库。这些文件对于开发和安装使用 C 或 C++ 编写的 Python 扩展模块是必需的。
用途:如果你需要安装某些依赖于 C 扩展的 Python 包,或者你自己编写了需要编译的 C 扩展模块,那么这个包是必需的。
2. python3.10-venv
作用:python3.10-venv 包提供了 venv 模块,该模块用于创建隔离的 Python 虚拟环境。虚拟环境允许你在同一个系统上为不同的项目创建独立的 Python 环境,从而避免包版本冲突等问题。
用途:这个包使得你可以使用 python3.10 -m venv 命令创建新的虚拟环境。虚拟环境中的 Python 解释器和包管理工具(如 pip)都是独立于系统全局环境的。
综合效果
通过安装这两个包,你可以确保:编译支持:你的系统具备编译和安装 C 扩展模块的能力。
虚拟环境支持:你可以创建和管理基于 Python 3.10 的虚拟环境。

5、使用venv创建虚拟环境

# 查找python位置
which python3.10# 使用查到的路径来创建名为splatam的虚拟环境
/usr/bin/python3.10 -m venv splatam# 激活虚拟环境
. splatam/bin/activate# 安装包
pip install -r requirements.txt# 安装本地的库
pip setup.py install

6、使用ubuntu跑深度学习时,cuda正在运行,这时候直接挂机,重启后会报错:UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero. (Triggered internally at …/c10/cuda/CUDAFunctions.cpp:109.) return torch._C._cuda_getDeviceCount() > 0

解决方法,挂机前先关掉cuda,或者重启cuda:

sudo apt-get install nvidia-modprobe
sudo rmmod nvidia_uvm
sudo modprobe nvidia_uvm
1. sudo rmmod nvidia_uvm
命令: sudo rmmod nvidia_uvm
功能: 卸载 nvidia_uvm 内核模块。
作用: nvidia_uvm 是 NVIDIA 统一虚拟内存(Unified Virtual Memory, UVM)的内核模块,用于在 CPU 和 GPU 之间共享内存。卸载这个模块可以清除当前的 UVM 状态,有助于解决一些 CUDA 初始化问题。
2. sudo modprobe nvidia_uvm
命令: sudo modprobe nvidia_uvm
功能: 加载 nvidia_uvm 内核模块。
作用: 重新加载 nvidia_uvm 模块,确保 CUDA 环境能够正确初始化 UVM 功能。

7、查询显卡驱动:

nvidia-smi

NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2
注意这里的CUDA Version不是指你安装的CUDA版本,而是表明,这个显卡驱动最高可以支持CUDA版本为12.2。

8、实时查看显卡使用率

watch -n 1 nvidia-smi

这个命令会每秒刷新一次nvidia-smi输出,从而提供近乎实时的更新。-n 1 参数表示每隔1秒刷新一次显示。如果想要不同的刷新间隔,可以调整这个数字。

9、vscode调试输入参数:

{"version": "0.2.0","configurations": [{"name": "Python 调试程序: 当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": ["configs/replica/splatam.py"],"env": {"CUDA_VISIBLE_DEVICES": "0"}}]
}

相关文章:

深度学习安装环境笔记

1、输出cuda版本 torch.version.cuda 返回的是 PyTorch 在编译时所使用的 CUDA 版本,而不是运行时实际调用的 CUDA 版本。PyTorch 在运行时实际调用的 CUDA 版本取决于系统上安装的 CUDA 驱动和库。 import torch from torch.utils.cpp_extension import CUDA_HOME…...

使用android studio写一个Android的远程通信软件(APP),有通讯的发送和接收消息界面

以下是使用 Android Studio 基于 Java 语言编写一个简单的 Android APP 实现远程通信(这里以 TCP 通信为例)的代码示例,包含基本的通信界面以及发送和接收消息功能。 1. 创建项目 打开 Android Studio,新建一个 Empty Activity …...

学习Python的笔记14--迭代器和生成器

1.迭代器(Iterator) 概念: 迭代意味着重复多次,就像循环一样。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1.iter…...

车机端同步outlook日历

最近在开发一个车机上的日历助手,其中一个需求就是要实现手机端日历和车机端日历数据的同步。然而这种需求似乎没办法实现,毕竟手机日历是手机厂商自己带的系统应用,根本不能和车机端实现数据同步的。 那么只能去其他公共的平台寻求一些机会&…...

教学案例:k相同的一次函数的图像关系

【题目】 请在同一个平面直角坐标系中画出一次函数y2x, y2x4的图象,并观察图象,你发现这两个图形有什么位置关系?为什么? 【答案】 图象是相互平行的两条直线 【解析】 一、教学活动形式 这里设计的教学活动形式是“画图 →…...

EmoAva:首个大规模、高质量的文本到3D表情映射数据集。

2024-12-03,由哈尔滨工业大学(深圳)的计算机科学系联合澳门大学、新加坡南洋理工大学等机构创建了EmoAva数据集,这是首个大规模、高质量的文本到3D表情映射数据集,对于推动情感丰富的3D头像生成技术的发展具有重要意义…...

Elasticsearch vs 向量数据库:寻找最佳混合检索方案

图片来自Shutterstock上的Bakhtiar Zein 多年来,以Elasticsearch为代表的基于全文检索的搜索方案,一直是搜索和推荐引擎等信息检索系统的默认选择。但传统的全文搜索只能提供基于关键字匹配的精确结果,例如找到包含特殊名词“Python3.9”的文…...

【Flink-scala】DataStream编程模型之水位线

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之 数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之 窗口计算-触发器-驱逐器 文章目录 DataStream API编程模型前言…...

Python导入moviepy找不到editor 视频没有声音设置audio_codec参数

moviepy合成视频出错: 问题一:导入moviepy.editor找不到editor,No module named moviepy.editor问题二:合成的视频没有声音 问题一:导入moviepy.editor找不到editor,No module named moviepy.editor from …...

rsync 是一个非常强大的 Linux 工具,常用于文件和目录的同步、备份和传输。

rsync 是一个非常强大的 Linux 工具,常用于文件和目录的同步、备份和传输。它可以高效地同步本地和远程系统上的文件和目录,并且支持增量传输,仅同步发生变化的部分。rsync 支持压缩传输、删除多余文件、排除特定文件等多种功能,是日常运维、备份和迁移数据的重要工具。 一…...

触发器案例详解

目录 一、定义二、类型三、功能与用途四、创建与调用DML触发器格式示例DDL触发器格式示例登录触发器格式示例五、案例案例一:DML触发器 - 记录更新操作的触发器案例二:DML触发器 - 防止非法工资更新的触发器案例三:DDL触发器 - 记录表结构更改的触发器案例四:DDL触发器 - 防…...

jwt 与 sessionid 的区别及应用场景

在现代 Web 应用中,JWT(JSON Web Token)和SessionID是两种常用的用户认证和状态管理机制。本文从两者的原理、区别、优缺点以及适用场景展开分析,结合常见问题提出了最佳实践建议,帮助开发者更好地选择和使用。 JWT与S…...

tomcat和nginx

Tomcat 和 Nginx 都可以部署 Web 应用,但它们的核心功能和适用场景不同,因此在 2024 年生产环境及未来,是否使用 Tomcat 取决于需求和技术架构的特点。 1. Tomcat 的特点与适用场景 Tomcat 是 Java Servlet 容器,主要用来运行基于…...

服务器带宽与数据安全的重要性与作用

服务器带宽指的是服务器与外部网络通信的能力,即服务器发送和接收数据的速率。带宽越大,服务器在同一时间内能够处理的数据量就越多,数据传输的速度和稳定性也就越高。在数字化时代,企业对于数据的依赖程度日益加深,无…...

JSON数据处理

1. JSON注解 Data NoArgsConstructor AllArgsConstructor JsonIgnoreProperties(ignoreUnknowntrue) JSON注解: JsonIgnoreProperties(ignoreUnknowntrue) Hutool 日期格式化: DatePattern DateTimeFormat(pattern "yyyy-MM-dd HH:mm:ss")…...

FSWIND脉动风-风载时程生成器软件原理

大量风的实测资料表明,在风的时程曲线中,瞬时风速包含两个部分:一部分是自振周期一般在 10 分钟以上的平均风,另一部分是周期一般只有几秒左右的脉动风。平均风由于其周期一般比结构的自振周期大,因而考虑其作用性质相…...

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践

搭建高可用负载均衡系统:Nginx 与云服务的最佳实践 引言 在项目开发过程中,我们通常在开发和测试阶段采用单机架构进行开发和测试。这是因为在这个阶段,系统的主要目的是功能实现和验证,单机架构足以满足开发人员的日常需求&…...

对比git命令与TortoiseGit工具,理解git解决冲突的过程

1 引言 此前用TortoiseSvn习惯了,所以,转到git时也同时选择了TortoiseGit工具。 同时,对比了可视化工具和git命令的操作,来深入理解git解决冲突的方式。 2 使用远程仓库替代本地仓库的内容 2.1 TortoiseGit做法 using “MERGE_…...

guava缓存的get方法的回调函数讲解一下

CacheBuilder.newBuilder()//设置缓存初始大小,应该合理设置,后续会扩容.initialCapacity(10)//最大值.maximumSize(100)//并发数设置.concurrencyLevel(5)//缓存过期时间,写入后10分钟过期.expireAfterWrite(600,TimeUnit.SECONDS)//统计缓存…...

React基础知识四 Hooks

什么是hooks? (coderwhy) hooks是react 16.8(2019年)出的新特性。 react有两种形式来创建组件——类式和函数式。在hooks之前类式组件就是react最主流的编程方式。 这个时候,函数式组件是非常鸡肋的,几乎没什么用。因…...

线性代数中的谱分解

一、谱分解的基本原理 谱分解(Spectral Decomposition)是线性代数中的一个重要概念,特别是在研究矩阵的特征值和特征向量时。它指的是将一个矩阵分解为其特征值和特征向量的组合,从而简化矩阵的运算和分析。谱分解通常适用于对称…...

Redis 数据结结构(一)—字符串、哈希表、列表

Redis(版本7.0)的数据结构主要包括字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)、超日志&#xff08…...

【Python】用Python和Paramiko实现远程服务器自动化管理

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代IT环境中,远程服务器管理已成为运维工作的常态。随着自动化运维的需求不断增加,如何高效地管理远程服务器,提升操作的灵活性和效率…...

PDF处理的创新工具:福昕低代码平台尝鲜

在当今数字化时代,PDF文件的处理和管理变得越来越重要。福昕低代码平台是新发布的一款创新的工具,旨在简化PDF处理和管理的流程。通过这个平台,用户可以通过简单的拖拽界面上的按钮,轻松完成对Cloud API的调用工作流,而…...

openstack创建浮动IP全过程

1、创建外部网络,即是provider网络,有关provider网络的详细解释请参见我之前的文章openstack中的self-service和provider网络_openstack provider网络不能创建vlan吗-CSDN博客 network create --share --external --provider-physical-network physnet1…...

nginx漏洞修复

漏洞名称:web服务器http信息头公开 解决,在以下各个监听端口加上一行,然后重启****nginx server_tokens off; 漏洞名称:默认的nginx http服务器设置 解决:请求头加上以下参数 add_header Content-Security-Policy “…...

Jackson - 序列化时更改字段名称

在这个简短的教程中&#xff0c;我将向您展示如何在序列化时更改字段名称以映射到另一个JSON属性。 Jackson库提供了JsonProperty注解&#xff0c;用于改变序列化JSON中的属性名称。 依赖项 首先&#xff0c;在pom.xml文件中添加以下依赖项&#xff1a; <dependency>…...

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法&#xff0c;这就是策略模式。**这样对于同一个问题&#xff0c;可以有多种解决方案——算法实现的时候&#xff0c;可以通过策略模式来非常方便的进行算法的整体替换&#xff0c;而各种算法是独立封装好的&#xff0c;不用修改其内部逻辑。 具体的实…...

AWS ECS Task 添加 Prometheus 监控采集配置详细指南

以下是一篇完整的博文,介绍如何在 AWS ECS 环境中实现 JVM 监控。 AWS ECS 环境下的 JVM 监控实践 概述 在 AWS ECS (Elastic Container Service) 环境中监控 Java 应用性能是一项重要任务。本文将详细介绍如何使用 AWS Distro for OpenTelemetry (ADOT) 结合 Spring Boot …...

5. 一分钟读懂“工厂方法模式”

5.1 模式介绍 你可能会发现&#xff0c;简单工厂模式没在经典设计模式里出现&#xff0c;别急&#xff0c;它其实只是个常用的编程技巧&#xff0c;而不是标准的设计模式。简单工厂模式有三个要素&#xff1a;1个产品接口、n个产品类、1个工厂类&#xff0c;工厂类通过if/else来…...