AI学习(2): PyTorch2.x环境安装

1.介绍

@注:下面是对PyTorch进行了简单的介绍,不喜欢可直接跳过

1.1 什么是PyTorch

PyTorch是一个由Facebook人工智能研究团队开发的开源机器学习库,用于开发人工智能和深度学习的应用程序。PyTorch支持广泛的机器学习和深度学习算法,并基于强大的GPU加速计算库CUDA,提供了高效的张量计算(如数组计算)和深度神经网络功能。

PyTorch的主要特性:

  • 易用性PyTorch提供了一个类似于 NumPy的编程环境,以及全面的深度学习功能,使得神经网络的构造和训练都变得非常直观。
  • 动态计算图PyTorch使用动态计算图,这意味着您可以在运行过程中更改图形。这在某些模型(例如循环神经网络或递归神经网络)中非常有用,这些模型的结构可能需要在运行时进行更改。
  • Python支持PyTorch完全集成在 Python中,可以与其他 Python库(如 NumPyCython)无缝地协作。
  • 分布式训练PyTorch支持在多个 GPU上分布式的训练模型,可以有效地加速大数据集的模型训练过程。
  • ONNX兼容性PyTorch支持 Open Neural Network Exchange(ONNX)模型格式。这意味着您可以在不同的深度学习框架(例如 Caffe2、Microsoft Cognitive Toolkit、MXNet等)之间轻松迁移模型。

1.2 PyTorch发展史

  1. 初始发布(2016年): PyTorch最初由 Facebook的人工智能研究实验室( Facebook AI Research,简 称FAIR)开发,并于2016年首次发布。初始版本主要以动态计算图为特点,这使得定义和修改模型变得非常灵活。
  2. 动态计算图(2016-2017年): PyTorch最初的设计采用动态计算图,这使得用户能够更自由地调试和修改模型。这种灵活性对研究人员和实践者来说是一个吸引点,尤其在处理变化的输入大小时更为方便。
  3. 静态计算图的引入(2017年): 随着 TensorFlow等框架采用静态计算图的方式, PyTorch也在2017年引入了静态计算图的支持,这使得 PyTorch更适用于一些需要性能优化的应用。
  4. PyTorch 1.0(2018年): PyTorch 1.0的发布标志着一个重要的里程碑。它引入了 Eager Execution(即动态计算图)和TorchScript(即静态计算图)的融合,使得用户可以在训练和部署中选择合适的计算图方式。
  5. TorchServe和TorchElastic(2019年): 在2019年, PyTorch推出了 TorchServeTorchElastic,这是用于模型部署和分布式训练的工具,使得将PyTorch模型投入实际应用更为方便。
  6. PyTorch 1.7和Beyond(2020年以后): 后续版本不断改进性能、增加新特性,并推动 PyTorch在深度学习社区中的广泛采用。 PyTorch继续保持开源性质,积极响应用户需求和社区贡献。
  7. PyTorch 2.0(2023年3月): 推出新的编译器 torch.compile。它将 PyTorch的性能推向了新的高度,并开始将 PyTorch的部分内容从 C++中移回到 Python中。据称,使用 torch.compile对模型进行编译可以提升模型速度 30%

2.安装环境

2.1 安装python3.10

为了保证pytorch运行环境的干净,这里单独为其创建一个新环境。

# 安装
$ conda create -n pytorch310 python=3.10
# 激活环境
$ conda activate pytorch310
# 查看版本
$ python -V
Python 3.10.13

2.2 安装依赖包

$ conda install numpy  matplotlib
  • numpy 提供了强大的数组和矩阵操作,与 PyTorch 的张量操作兼容,常用于数据处理和转换。
  • matplotlib: 可视化训练过程中的损失曲线、模型输出、数据分布等;

这两个包的具体使用教程可查看文章:

  • Python常用库(六):科学计算库Numpy-上篇:创建、访问、赋值 https://mp.weixin.qq.com/s/b0aPs1VMh0l0QM2D_q1OHw
  • Python库学习(七):Numpy-续篇一:结构数组 https://mp.weixin.qq.com/s/ThdIwvSaUFZEWks1D0RYzw
  • Python库学习(八):Numpy-续篇二:数组操作 https://mp.weixin.qq.com/s/5VXpfL-P8b0Li3wn5BKu4w
  • Python库学习(九):Numpy-续篇三:数组运算 https://mp.weixin.qq.com/s/qtGHvB33-KewrUtIDU5JIw
  • Python库学习(十):Matplotlib绘画库 https://mp.weixin.qq.com/s/Pb0kO6R3Q7ejX6x51y4TPw

2.3 安装PyTorch

安装命令直接访问官网生成: https://pytorch.org

alt

@注意: 由于本人使用是Mac,没办法享受CUDA加速,后面在想办法体验~

# 运行安装
$ conda install pytorch::pytorch torchvision torchaudio -c pytorch

验证安装结果:

import torch
if __name__ == '__main__':
    print("torch版本:", torch.__version__)

# torch版本: 2.1.2

3.PyTorch核心模块

3.1 核心模块

PyTorch的核心模块主要包括以下几个部分:

  • torch 提供了张量( tensor)的基本操作,类似于 NumPy 数组。 PyTorch 中的张量是深度学习模型的基本构建块。
  • torch.nn 提供了构建神经网络模型所需的各种类和函数。包括神经网络的层、损失函数、优化器等。
  • torch.optim 包含了各种优化算法,例如随机梯度下降 (SGD)、Adam、RMSprop 等,用于优化神经网络的参数。
  • torch.autograd 实现了自动求导机制,允许用户定义的操作在反向传播过程中自动计算梯度。
  • torch.utils.data 提供了用于加载和处理数据的工具,包括 DatasetDataLoader 类,使得数据在训练时更容易进行批量处理。
  • torchvision 提供了处理图像数据集的工具,包括常用的图像变换、数据集加载等。
  • torchtext 用于处理文本数据的工具,包括加载文本数据集、文本变换等。
  • torch.nn.functional 包含一些不具有内部状态的函数,这些函数通常在神经网络的中间层中使用,例如激活函数、池化操作等。
  • torch.distributed 提供了分布式训练的工具,用于在多个 GPU 或多台机器上进行模型的训练。
  • torchaudio 用于处理音频数据的工具,包括加载音频数据集、音频变换等。

3.2 PyTorch2.0新模块

PyTorch 2.0中,引入了一些新的模块和功能:

  • TorchDynamo:Python代码 JIT编译成 FX图的新特性,可以提高模型训练速度。
  • AOTAutograd: 预编译自动求导函数的新特性,可以提高模型训练速度。
  • PrimTorch: 一个用于定义更小且更稳定的运算符集的新特性,可以提高模型训练速度。
  • TorchInductor: 一个用于为多个加速器和后端生成快速代码的新特性,可以提高模型训练速度。

4.版本介绍

上面我们安装的PyTorch版本的是2.1.2,后面学习也是基于这个版本;

4.1 Pytorch2.x Vs Pytorch1.x

以下是PyTorch 2.0PyTorch 1.x之间的主要区别:

  • 编译器支持: 在 PyTorch 2.0中,已经支持了编译器模式,可以提高模型训练速度。这是 PyTorch 2.0PyTorch 1.x之间的一个主要区别。
  • API更新: 在 PyTorch 2.0中,进行了一些API更新,以便更好地支持深度学习任务。这使得 PyTorch 2.0PyTorch 1.x之间的API使用有所不同。
  • 新功能: 在 PyTorch 2.0中,添加了一些新功能,如编译器模式、新的数据加载和预处理工具等。这使得 PyTorch 2.0PyTorch 1.x之间的功能有所不同。
  • 性能提升: 在 PyTorch 2.0中,实现了性能提升,如模型训练速度的提高。这使得 PyTorch 2.0PyTorch 1.x之间的性能有所不同。

4.2 PyTorch 2.x

PyTorch 2.0在 2023.03发布,对之前的1.x版本是100%兼容。

PyTorch版本发布历史信息中,可以看出PyTorch1.3版本之后,后面版本直接就到了2.0;为什么会有这么大的跳跃呢?官方解释如下:

PyTorch 2.0 is what 1.14 would have been. We were releasing substantial new features that we believe change how you meaningfully use PyTorch, so we are calling it 2.0 instead.

// 译文
PyTorch 2.0是1.14的延续。我们发布了一些重大新功能,我们相信这些功能会改变您对PyTorch的实质性使用方式,因此我们将其称为2.0而不是1.14

其中最重要的新功能是:torch.compile,据官方描述,其可以大幅提高模型训练速度。而且使用特别简单,仅仅是一行代码:model = torch.compile(model),下面是官方描述(==汉字是软件译文==):

alt

4.3 PyTorch2.0性能测试

为了验证PyTorch2.0带来的性能提升,官方从机器学习开源社区收集了163个模型,用于验证;

163个模型数据,具体来源如下:

  • 46 models from HuggingFace Transformers
  • 61 models from TIMM: a collection of state-of-the-art PyTorch image models by Ross Wightman
  • 56 models from TorchBench: a curated set of popular code-bases from across github

除了使用torch.compile对上述模型进行编译,不改其他代码的前提下,测试性能如下:

alt

微信搜索【猿码记】查看更多文章

本文由 mdnice 多平台发布

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

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

相关文章

Flink Kubernetes Operator 介绍

一、简介 Flink Kubernetes Operator是针对在Kubernetes上运行Apache Flink应用程序而设计的工具。它充分利用了Kubernetes的优势,实现了对Flink集群的弹性管理和自动化操作,通过扩展Kubernetes API的方式,提供了管理和操作Flink部署的功能。…

探索设计模式的魅力:一篇文章让你彻底搞懂建造者模式

建造者模式(Builder Pattern)是一种创建型设计模式,旨在将一个复杂对象的创建过程与其表示分离,使得同样的构建过程可以创建不同的表示形式。 主要角色: 产品(Product):表示正在构建…

git提权

实验环境——vulnhub-dc2靶场 git提权 前提:用户可以使用sudo中git权限 查看sudo权限 sudo -l可以发现git命令存在sudo提权 基于此进行权限提升 方式: sudo git help config #在末行命令模式输入 !/bin/bash 或 !sh #完成提权 sudo git -p help…

海外问卷调查怎么做?

大家好,我是橙河老师,我自己做海外问卷项目已经2年时间了,一般来说互联网项目的生命周期都不会太长,但海外问卷项目是一个稳定长期可做的项目,只要消费市场一直存在,问卷调查的需求就不会消失,我…

DBA技术栈MongoDB:简介

1.1 什么是MongoDB? MongoDB是一个可扩展、开源、表结构自由、用C语言编写且面向文档的数据库,旨在为Web应用程序提供高性能、高可用性且易扩展的数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当…

深度学习记录--偏差/方差(bias/variance)

误差问题 拟合神经网络函数过程中会出现两种误差:偏差(bias)和方差(variance) 偏差和误差的区别 欠拟合(underfitting) 当偏差(bias)过大时,如左图,拟合图像存在部分不符合值,称为欠拟合(underfitting) 过拟合(overfitting) …

gitlab 部署项目新分支

公司代码管理平台新切换到gitlab下,上线发版流程随之变更 1新建分支,开发完成,提交新分支 2.去gitlab平台上找到Merge requests 3 点击右上角的New merge request select source branch 选择新建的分支 点击 compare branches and contin…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-热门标签推荐显示实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

Wayfair 开启2024年的裁员模式

周五的时候 Wayfair 的 CEO 公开信中表示,将削减 1650 个工作岗位。 通篇读下来的意思就是公司目前还是非常健康的状态,新冠导致的在线购物激增让 Wayfair 在短时间内的销售从 90 亿美元增加到 180 亿美元。 几乎是翻倍了,而且这个让 Wayfai…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子详情页实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

Midjourney网页版

引言 基于国外的api开发开发了一款网页版的midjourney,文末有链接 相关资源 Midjourney官方教学资料Midjourney官网discord官网B站学习资源推荐 账号注册 获取网络访问权限 使用Midjourney的前提是计算机有外网访问权限 此处推荐两款软件,lantern的优势是免费&…

【正点原子STM32连载】 第四十五章 内存管理实验 摘自【正点原子】APM32E103最小系统板使用指南

1)实验平台:正点原子APM32E103最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban 第四…

Spring Security的使用条件

Spring Security要求使用Java 8或更高版本的运行时环境。 由于Spring Security旨在以自包含的方式运行,因此您无需在Java运行时环境中放置任何特殊的配置文件。特别是,您无需配置特殊的Java认证和授权服务(JAAS)策略文件&#xf…

仿真机器人-深度学习CV和激光雷达感知(项目2)day03【机器人简介与ROS基础】

文章目录 前言机器人简介机器人应用与前景机器人形态机器人的构成 ROS基础ROS的作用和特点ROS的运行机制ROS常用命令 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫本文内容是我为复试准备的第二个项目 💫欢迎…

C++ memcpy函数学习以及和strcpy的不同

memcpy指的是C和C++使用的内存拷贝函数,函数原型为, void *memcpy(void *destin, void *source, unsigned n); 函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中,即从源source中拷贝n个字节到目标destin中。 // castdemo.cpp : Defines the entry p…

【PyTorch】PyTorch之Reduction Ops

文章目录 前言一、ARGMAX二、ARGMIN三、AMAX和AMIN四、ALL和ANY五、MAX和MIN六、MEAN七、MEDIAN八、NORM九、PROD十、STD十一、SUM十二、UNIQUE十三、VAR 前言 介绍pytorch的Reduction Ops。 一、ARGMAX torch.argmax(input, dim, keepdimFalse) → LongTensor Parameters&a…

掌握使用CXF快速开发webservice服务和生成client端技能

文章目录 前言1.安装和配置cxf环境2.创建一个通过maven管理的java项目并引入相关cxf依赖3.使用cxf提供的类编写webservice服务端并发布服务3.1 定义一个webservice服务接口HelloWorld3.2 编写HelloWorld实现类3.3 通过JaxWsServerFactoryBean发布webservice服务3.4 在浏览器中通…

游戏开发制作过程

游戏开发是一门结合艺术、技术和创意的复杂工艺。从一个简单的想法到一个完全实现的游戏,这个过程是多层次的,每一步都至关重要。在这篇文章中,我们将探索游戏开发的各个阶段,从概念化到最终发布。 游戏开发的第一步是将一个抽象的…

AI 编程的机会和未来:从 Copilot 到 Code Agent

大模型的快速发展带来了 AI 应用的井喷。统计 GPT 使用情况,编程远超其他成为落地最快、使用率最高的场景。如今,大量程序员已经习惯了在 AI 辅助下进行编程。数据显示,GitHub Copilot 将程序员工作效率提升了 55%,一些实验中 AI …

Java 读取 Excel 表格—— Easy Excel 基本使用

两种读对象的方式 确定表头&#xff1a;建立对象&#xff0c;和表头形成映射关系。不确定表头&#xff1a;每一行数据映射为 Map<String, Object>&#xff0c;比如用户自己上传的表格。 两种读取模式 监听器&#xff1a;先创建监听器、在读取文件时绑定监听器。单独抽…