Pytorch 安装与配置

每次在服务器上配置环境都需要考虑 Pytorch 版本 / CUDA 版本 / GPU 驱动版本等诸多因素,因为 ⌈ \lceil Pytorch 只能下载指定 CUDA 版本的库 ⌋ \rfloor ⌈ \lceil GPU 只能使用特定版本的驱动 ⌋ \rfloor ⌈ \lceil GPU 有最高支持的 CUDA 版本限制 ⌋ \rfloor 等等,本文在此梳理相关要素。

目录

  • 一. 硬 / 软件环境
    • 1. GPU
    • 2. GPU 驱动
    • 3. CUDA
    • 4. Python
    • 5. Pytorch
    • 6. Anaconda
  • 二. Pytorch 安装

一. 硬 / 软件环境

项目开发之前,需要检查计算机的硬 / 软件环境,包括 GPU、驱动、CUDA、Python、Pytorch、Anaconda 等。

1. GPU

GPU(Graphics Processing Unit,图形处理单元)是一种专门设计用于处理图形和图像数据的处理器,它是计算机中用于实时渲染图形、处理图像、执行计算密集型任务的关键组件之一。GPU 最初是为了图形渲染而设计的,但是随着技术的发展,它们的功能被拓展到了其他领域,如科学计算、人工智能和深度学习等。GPU 的并行处理能力使得它们在执行大规模并行计算任务时表现出色。

  • 在图形处理方面,GPU负责处理三维图形数据,并将其转换为二维图像,然后输出到显示器上。它们通常配备了大量的专用图形处理核心,这些核心可以同时处理多个图形元素,如顶点、像素和纹理等,以实现快速的图形渲染和图像处理。
  • 在科学计算和深度学习方面,GPU 的并行计算能力使其成为处理大规模数据集和复杂算法的理想选择。许多科学计算和机器学习任务可以通过 GPU 并行计算来加速处理速度,因为 GPU 可以同时执行大量相似的计算任务。

在所有工作开始之前,先检查计算机的 GPU 情况:

  • 如果是本地,右击 “此电脑” -> 属性 -> 高级系统设置 -> 硬件 -> 设备管理器,如果 “显示适配器” 下有 NVIDIA 字样,就说明有 NVIDIA 显卡(左图),否则就是没有(右图):
    在这里插入图片描述
    也可以在任务管理器 -> 性能 -> GPU 中查看。Windows 系统还可以使用 wmic path win32_videocontroller get caption 命令查看显卡信息;
  • 如果是服务器(一般默认 Linux 系统),可以直接使用 nvidia-smi 命令查看显卡的标号和型号:
    在这里插入图片描述

2. GPU 驱动

GPU 驱动(Graphics Processing Unit Driver,图形处理单元驱动程序)是负责在操作系统和图形处理单元之间进行通信和协调的软件,主要功能包括:硬件控制、性能优化、兼容性支持、错误修复、功能扩展等。GPU 驱动程序通常由显卡制造商提供,例如 NVIDIA、AMD、Intel 等,用户可以从它们的官方网站或通过操作系统的自动更新功能获取最新的驱动程序。

GPU 驱动版本可以直接使用 nvidia-smi 命令查看:
在这里插入图片描述

想要知道合适的 GPU 驱动版本,可以访问 http://www.nvidia.com/Download/index.aspx 查询:
在这里插入图片描述

3. CUDA

CUDA(Compute Unified Device Architecture,计算统一设备架构)是由 NVIDIA 开发的并行计算平台和编程模型,旨在利用 NVIDIA GPU 的并行计算能力进行通用目的的计算。CUDA 使开发人员能够利用 GPU 的大量并行处理核心来加速计算任务,从而在科学计算、深度学习、机器学习、图形处理等领域获得更高的性能和效率。

CUDA 包括以下主要组件:

  1. CUDA 编程模型:CUDA 提供了一种简单而强大的编程模型,允许开发人员使用类似于 C 语言的 CUDA C 或 CUDA C++ 来编写并行计算任务。CUDA 编程模型使开发人员能够将计算任务分解为多个线程块和线程,并在 GPU 上并行执行这些线程;
  2. CUDA 运行时:CUDA 运行时是一组库和 API,用于在主机 CPU 和 GPU 之间管理数据传输、内存分配、线程调度等操作。开发人员可以使用 CUDA 运行时来启动 CUDA 核函数(在 GPU 上运行的函数)、分配和释放 GPU 内存、配置 GPU 执行参数等;
  3. CUDA 工具包:CUDA 工具包包括用于开发、调试和优化 CUDA 应用程序的一系列工具和实用程序。其中包括编译器、调试器、性能分析器、代码优化工具等,这些工具有助于开发人员更高效地利用 GPU 的并行计算能力;
  4. CUDA 核函数:CUDA 核函数是在 GPU 上并行执行的函数,可以由 CUDA 编程模型中的线程块中的多个线程同时执行。开发人员可以使用 CUDA C 或 CUDA C++ 编写 CUDA 核函数,并通过调用该函数在 GPU 上执行并行计算任务。CUDA C/C++ 语法见 CUDA C/C++ 教程一:加速应用程序。

CUDA 版本可以直接使用 nvcc --version 命令查看:
在这里插入图片描述

CUDA 版本会受到 GPU 限制,使用 nvidia-smi 命令可以查看 GPU 最高支持的 CUDA 版本号:
在这里插入图片描述

需要注意的是,CUDA 不是独立安装的,而是在安装 Pytorch 时一起安装的

4. Python

现在一般使用的都是 Python 3.x,可以使用命令 python3 --versionpython --version 检查版本:
在这里插入图片描述

5. Pytorch

Pytorch 分为 CPU 版本和 GPU 版本(+cuxxx),只有带英伟达显卡的电脑才能安装 GPU 版本。可以使用 python -c "import torch; print(torch.__version__)"python3 -c "import torch; print(torch.__version__)" 指令检查 Pytorch 版本:
在这里插入图片描述

6. Anaconda

Anaconda 是一个开源的 Python 和 R 语言的发行版,用于科学计算、数据分析、机器学习和大数据处理等领域。它包含了许多常用的数据科学工具和库,并提供了一个方便的包管理系统,使得用户可以轻松地安装、管理和更新各种数据科学工具和库。

Anaconda 包括以下主要组件:

  1. Python 和 R:Anaconda 自带 Python 和 R 语言的解释器,并预先安装了许多常用的数据科学包和库。这使得用户可以立即开始在 Python 或 R 中进行数据分析、科学计算和机器学习等任务。
  2. conda:conda 是 Anaconda 的包管理器和环境管理器。它可以用于安装、升级、删除软件包,并管理不同版本的软件包之间的依赖关系。conda 还允许用户创建、管理和切换不同的环境,以便在同一台机器上同时运行多个不同版本的软件。
  3. Jupyter Notebook:Jupyter Notebook 是一个交互式的笔记本环境,可以在网页浏览器中创建和共享文档,包括实时代码、可视化图形、文本和其他富媒体内容。
  4. Spyder:Spyder 是一个基于 Python 的集成开发环境,提供了丰富的编辑器、调试器和其他开发工具,适用于开发和调试 Python 代码。

正因为 Anaconda 集成了 Python、Jupyter Notebook、NumPy、Pandas、Matplotlib 等诸多数据科学工具和库,并且提供了简单易用的环境管理工具,可以轻松地创建、管理和切换不同的 Python 虚拟环境,Anaconda 在项目开发中被广泛使用。安装好 Anaconda 的计算机会自带一个基础环境,后续项目开发时每个项目需要的安装包不同,为了避免冲突,可以为每个项目配置一个虚拟环境,以 避免不同项目之间环境依赖的冲突

服务器上一般都装有 Anaconda,可以使用 conda --version 命令检查版本:
在这里插入图片描述

本地 Windows 上安装 Anaconda 教程参考 2023最新pytorch安装(超详细版)。

虽然 conda 和 pip 都可以安装软件包,但有一些差别:

  1. 安装位置:
    • 通过 pip 安装的 Python 软件包通常会被安装到 Python 解释器的 site-packages 目录下:Linux 中一般在 /usr/local/lib/python3.x/site-packages/ 下,Windows 中一般在 C:\Python3.x\Lib\site-packages\ 下;
    • 通过 conda 安装的 Python 软件包通常会被安装到 conda 环境下特定目录:默认环境一般在 /anaconda3/lib/python3.x/site-packages/,conda 环境一般在 /path/to/your/env/lib/python3.x/site-packages/
  2. 软件包来源:
    • pip 是 Python 的默认包管理工具,主要用于从 Python Package Index (PyPI) 安装和管理 Python 软件包;
    • conda 是 Anaconda 发行版自带的包管理工具,它能够管理包括 Python 软件包在内的任何软件包,并提供了自己的软件仓库;

总的来说,pip 适用于管理 Python 包,而 conda 则更适用于管理整个软件环境。因此大多数情况下,项目开发会 使用 conda 创建虚拟环境,然后 使用 pip 安装软件包

二. Pytorch 安装

  1. 安装 Pytorch 前,需要使用 pip uninstall torch torchvision 命令卸载之前的版本:
    在这里插入图片描述

  2. Pytorch 的安装需要考虑 GPU 支持的 CUDA 版本,比如上文 GPU 信息提示最高支持 12.2 版本 的 CUDA,就可以安装小于等于 12.2 版本的 CUDA 对应的 Pytorch。去 Pytorch 官网 INSTALL PYTORCH 下查询满足条件的 Pytorch 版本,如果想要安装旧版本的 Pytorch,点击 Previous versions of PyTorch
    在这里插入图片描述

  3. 搜索想要安装的 Pytorch 版本即可,以 1.13.1 为例:
    在这里插入图片描述
    Conda 下的是使用 conda 安装,Wheel 下的是使用 pip 安装;

  4. 选择符合操作系统和 CUDA 版本的下载指令下载即可:
    在这里插入图片描述

如果网络问题下载缓慢,可以使用国内镜像:

镜像名镜像地址 – pytorch, torchvision, torchaudio
清华镜像https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
北京外国语大学镜像https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/win-64/
阿里巴巴镜像http://mirrors.aliyun.com/anaconda/cloud/pytorch/win-64/
南京大学镜像https://mirror.nju.edu.cn/pub/anaconda/cloud/pytorch/win-64/

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

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

相关文章

【学习笔记】TypeScript编译选项

TS 中的编译选项 我们写了一个TS的文件,我们需要使用如下的命令将我们的TS文件转换为JS文件。 tsc xxx.ts 这样会产生一个对应的js文件 自动编译文件 编译文件时,使用 -W 指令后,TS编译器会自动监视文件的变化,并在文件发生变…

Android.mk 语法详解

一.Android.mk简介 Android.mk 是Android 提供的一种makefile 文件,注意用来编译生成(exe,so,a,jar,apk)等文件。 二.Android.mk编写 分析一个最简单的Android.mk LOCAL_PATH : $(call my-dir) //定义了…

第73左侧菜单实现

layout下面新建menu layout index.vue导入menu import Menu from /views/layout/menu菜单实现&#xff1a; <template><el-menuactive-text-color"#ffd04b"background-color"#2d3a4b"class"el-menu-vertical-demo"default-active&quo…

ShardingSphere 5.x 系列【7】元数据持久化

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1.概述2. 单机模式2.1 H22.2 MySQL3. 集群模式3.1 ZooKeeper3.2 Nacos3.3 Co…

谷粒商城【成神路】-【6】——商品维护

目录 &#x1f9c2;1.发布商品 &#x1f953;2.获取分类关联品牌 &#x1f32d;3.获取分类下所有分组和关联属性 &#x1f37f;4.商品保存功能 &#x1f9c8;5.sup检索 &#x1f95e;6.sku检索 1.发布商品 获取用户系统等级~&#xff0c;前面生成了后端代码&#xff…

opencv mat用法赋值克隆的操作和一些基本属性

//Mat基本结构 (头部 数据部分) //赋值的话 就是修改了指针位置 但还是指向了原来数据 并没创建数据 本质上并没有变 //只有克隆或者拷贝时 它才会真正复制一份数据 //代码实现 //创建方法 - 克隆 //Mat m1 src.clone(); //复制 //Mat m2; //src.copyTo(m2); //赋值法 …

nodejs爬虫框架

nodejs爬虫框架 在Node.js中&#xff0c;有一些常用的爬虫框架可以帮助你实现网页抓取和数据提取的任务。以下是几个流行的Node.js爬虫框架&#xff1a; 1. **Puppeteer**: Puppeteer 是由 Google 开发的一个用于控制 headless Chrome 或 Chromium 浏览器的 Node.js 库。它提供…

深度解析Pandas聚合操作:案例演示、高级应用与实战技巧【第74篇—Pandas聚合】

深度解析Pandas聚合操作&#xff1a;案例演示、高级应用与实战技巧 在数据分析和处理领域&#xff0c;Pandas一直是Python中最受欢迎的库之一。它提供了丰富的数据结构和强大的功能&#xff0c;使得数据清洗、转换和分析变得更加高效。其中&#xff0c;Pandas的聚合操作在数据…

bugku 1

Flask_FileUpload 文件上传 先随便传个一句话木马 看看回显 果然不符合规定 而且发现改成图片什么的都不行 查看页面源代码&#xff0c;发现提示 那应该就要用python命令才行 试试ls 类型要改成图片 cat /flag 好像需要密码 bp爆破 根据提示&#xff0c;我们先抓包 爆破 …

【Effective Objective - C 2.0】——读书笔记(三)

文章目录 十五、用前缀避免命名空间冲突十六、提供全能初始化方法十七、实现description方法十八、尽量使用不可变对象十九、使用清晰而协调的命名方式二十、为私有方法名加前缀二十一、理解Objective-C错误模型二十二、理解NSCopying协议 十五、用前缀避免命名空间冲突 OC语言…

【并发编程】Java的Future机制详解(Future接口和FutureTask类)

目录 一、彻底理解Java的Future模式 二、为什么出现Future机制 2.1 Future 类有什么用&#xff1f; 三、Future的相关类图 2.1 Future 接口 2.2 FutureTask 类 五、FutureTask源码分析 5.1 state字段 5.2 其他变量 5.3 CAS工具初始化 5.4 构造函数 5.5 jdk1.8和之前…

医院挂号预约|医院挂号预约小程序|基于微信小程序的医院挂号预约系统设计与实现(源码+数据库+文档)

医院挂号预约小程序目录 目录 基于微信小程序的医院挂号预约系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序用户端 2、系统服务端 &#xff08;1&#xff09; 用户管理 &#xff08;2&#xff09;医院管理 &#xff08;3&#xff09;医生管理 &…

UI自动刷新大法:DataBinding数据绑定

之前我们讲了DataBinding在Activity、Fragment、RecyclerView中的基础使用&#xff0c;而那些常规使用方法里&#xff0c;每当绑定的变量发生数据变化时&#xff0c;都需要ViewDataBinding重新设值才会刷新对应UI。而DataBinding通过内部实现的观察者模式来进行自动刷新UI&…

浅谈人工智能之深度学习~

目录 前言&#xff1a;深度学习的进展 一&#xff1a;深度学习的基本原理和算法 二&#xff1a;深度学习的应用实例 三&#xff1a;深度学习的挑战和未来发展方向 四&#xff1a;深度学习与机器学习的关系 五&#xff1a;深度学习与人类的智能交互 悟已往之不谏&#xff0…

Gemini VS GPT-4,当前两大顶级AI模型实测

随着谷歌在AI军备竞赛中急起直追&#xff0c;“有史以来最强大模型”Gemini Advanced终于上线&#xff0c;AI爱好者们总算等来了一款号称能够匹敌GPT-4的大语言模型。 月费19.99美元&#xff08;包含Google One订阅&#xff09;的Gemini Advanced实际表现如何&#xff1f;究竟…

MongoDB系列之WiredTiger引擎

概述 关系型数据库MySQL有InnoDB存储引擎&#xff0c;存储引擎很大程度上决定着数据库的性能。 在MongoDB早期版本中&#xff0c;默认使用MMapV1存储引擎&#xff0c;其索引就是一个B-树&#xff08;也称B树&#xff09;。 从MongoDB 3.0开始引入WiredTiger&#xff08;以下…

arduino D1 中esp8266 没有ide的库

http://arduino.esp8266.com/stable/package_esp8266com_index.json https://arduino.esp8266.com/stable/package_esp8266com_index.json 这个是官网的包地址 拿到后复制到arduino ide中 然后在开发板管理器&#xff0c;搜索esp&#xff0c;搜出来后安装 去开发板选择 然后测…

导数的几何意义【高数笔记】

1. 高数中的导数几何意义&#xff0c;与中学中斜率的联系 2. 导函数与导数的区别和联系又是什么 3. 导数的几何意义的题型是什么 4. 这些题型又有哪些区别 5. 点在曲线外和点在曲线上&#xff0c;需要注意什么 6. 法线和切线有什么关系 7. 法线是什么

MySQL数据库-索引概念及其数据结构、覆盖索引与回表查询关联、超大分页解决思路

索引是帮助mysql高效获取数据的数据结构,主要用来提高检索的效率,降低数据库的IO成本(输入输出成本&#xff08;Input-Output Cost&#xff09;),同时通过索引对数据进行排序也能降低数据排序的成本,降低了CPU的消耗。 Mysql的默认存储引擎InnoDB&#xff0c;InnoDB采用的B树的…

STM32 7-8

目录 ADC AD单通道 AD多通道 DMA DMA转运数据 DMAAD多通道 ADC AD单通道 AD.c #include "stm32f10x.h" // Device header/*** brief 初始化AD所需要的所有设备* param 无* retval 无*/ void AD_Init(void) {RCC_APB2PeriphClockCmd(RCC_AP…