Pytorch 学习之:关于 GPU 训练你必须知道的几件事

news2024/11/17 15:52:56

文章目录

  • torchvision 下载的 `pretrain` 模型路径
  • cuda 版本一定要适配
  • 多 cuda 训练 `DataParallel` 使用须知

torchvision 下载的 pretrain 模型路径

  • 使用 torchvision 来直接下载 pretrained 模型,有时候服务器的下载速度很慢,不如直接下载到本地之后传上去,但是问题来了,torchvision 模型下载后的存放路径是什么呢?
import torchvision.models as models
model = models.alexnet(pretrained=True)

在这里插入图片描述

  • 可以看到源码中是定义的这个位置,如果是 MAC 系统,那么 $XDG_CACHE_ HOME/ 这个位置就是

    cd ~/.cache/
    
  • 所以 $XDG_CACHE_ HOME/ torch 位置就是

    cd ~/.cache/torch
    
  • 在这里面的 checkpoints 下面就是所有下载的模型了
    在这里插入图片描述

cuda 版本一定要适配

  • 我最近在自己重写 rcnn 的代码,然后默认 torch 的版本是 1.4, 然后我的设备 gpucuda 版本是 11.1
  • 我在进行训练的时候,model.to(device) 好久都没反应,不报错。
    在这里插入图片描述
  • 经过一步步 debug,发现这个版本上掉以轻心了,重新安装 pytorch10.1 版本,cuda 11.1 就可以了

多 cuda 训练 DataParallel 使用须知

  • 很多人都会使用 torch.nn.DataParallel 进行多卡联合训练
  • 但是今天我在设置多卡训练的时候报错: AssertionError: Invalid device id
  • 我运行的时候 0,1,6,7 卡被占用。所以我的 device 设置如下:
os.environ["CUDA_VISIBLE_DEVICES"] = "2,3,4,5"

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
if torch.cuda.device_count() > 1:
     print("Let's use", torch.cuda.device_count(), "GPUs!")
     model = DataParallel(model
                          , device_ids=[int(i) for i in args.device.split(',')]
                          )
AssertionError: Invalid device id

在这里插入图片描述

  • 经过查阅资料 发现:
  • 设置 os.environ["CUDA_VISIBLE_DEVICES"] = "2,3,4,5" 相当于告诉机器,我现在使用这四个设备,那么这四个设备的 device_id 就分别变成了 0, 1, 2, 3 所以代码应该写成下面这样:因为使用 DataParallel 的时候要求必须从设备 0 开始,所以我们需要想办法将我们调用的设备设置成从 0 编号开始
os.environ["CUDA_VISIBLE_DEVICES"] = "2,3,4,5"

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
if torch.cuda.device_count() > 1:
     print("Let's use", torch.cuda.device_count(), "GPUs!")
     model = DataParallel(model
                          , device_ids=[0,1,2,3]
                          )

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

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

相关文章

简单个人静态HTML网页设计作品 基于HTML+CSS+JavaScript仿小米手机网站 html静态在线购物商城网页制作

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

一种用于模拟电晕放电的高效半拉格朗日算法(Matlab代码实现)

目录 摘要 1 概述 2 数学模型与方法 3 讲解 3.1 测试1 3.2 测试2 3.3 测试3 3.4 测试4 4 Matlab代码实现 摘要 提出了一种无需通量校正的高效电晕放电模拟算法。称为位置-状态分离 (POSS) 方法的算法用于求解电晕放电建模中通常存在的以对流为主的连续性方程。所…

Java项目:ssm实验室预约维修管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为超级管理员、管理员、学生三种角色, 超级管理员角色包含以下功能: 通知管理、用户管理、实验室管理、实验室预…

字节跳动抖音本地生活前端招聘

一、认识Typescript (1)Javascript是一种动态类型的弱类型语言 Javascript超集: A.包含与兼容所有JS特性,支持共存 B.支持渐进式引入与升级 (2)TypeScript是一种静态类型的弱类型语言 静态类型的优点: A.可读性增强:基于语法…

Linux内存分配原理

Linux内存分配原理虚拟内存分区Linux内存分配时的maps文件brk()与sbrk()mmap()与munmap()mmap()munmap()内存分配过程更多资讯、知识,微信公众号搜索:“上官宏竹”。 虚拟内存分区 虚拟内存由于用途不同,分类也不尽相同,一般我们…

底层网络知识详解:从二层到三层-第6讲-交换机与VLAN:办公室太复杂,我要回学校

上一次,我们在宿舍里组建了一个本地的局域网LAN,可以愉快地玩游戏了。这是一个非常简单的场景,因为只有一台交换机,电脑数目很少。今天,让我们切换到一个稍微复杂一点的场景,办公室。 拓扑结构是怎么形成的? 我们常见到的办公室大多是一排排的桌子,每个桌子都有网口,…

C++11标准模板(STL)- 算法(std::minmax_element)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 返回范围内的最小元素和最…

非零基础自学Golang 第11章 文件操作 11.2 文件基本操作 11.2.1 文件创建与打开

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.2 文件基本操作11.2.1 文件创建与打开第11章 文件操作 11.2 文件基本操作 在学习文件操作之前&#xff0c;我们先来了解一下Linux下的文件权限。 文件有三种权限&#xff0c;分别为读取、写入和执行&#x…

设计模式2 - 创建型模式

23种设计模式分析与见解开篇、UML、软件设计原则https://blog.csdn.net/lili40342/article/details/128358435创建型模式https://blog.csdn.net/lili40342/article/details/128358392结构型模式https://blog.csdn.net/lili40342/article/details/128358313行为型模式https://bl…

【MATLAB100个实用小技巧】——图形处理(67-75)

文章目录前言系列文章67. 图像的块操作68. 图形的过滤操作69. 图像的频率操作70. 函数变换71. RADON 函数变换72. 图像分析&#xff08;1&#xff09;73. 过滤图像74. 图像的区域处理75. 图像的颜色处置前言 &#x1f30f;MATLAB是一个功能强大的软件&#xff0c;我们可以利用M…

Mycat(3):mycat的安装

1、前言 使用mycat要安装JDK.不会的去看Linux里面的安装JDK的知识点&#xff0c;这是不再做说明 也可以直接使用yum install java-1.7.0-openjdk 因为mycat 基于jdk1.7开发的&#xff0c;所有最好安装jdk1.7的版本 重要说明&#xff1a; Mycat-server-1.6-release 版本发布的版…

手机技巧:苹果手机这8个实用小技巧

今天给大家大家分享苹果手机8个实用小技巧&#xff0c;你都会用吗&#xff1f; 1、快速搜索相机照片 相信大家的相册里的照片应该和我一样不说有几千张&#xff0c;几百张总是有的&#xff0c;有时候想找照片&#xff0c;又不想一张一张找怎么办&#xff1f;很简单&#xff0c…

Docker配置从私有仓库拉取镜像

修改Docker配置文件 修改docker的配置文件daemon.json&#xff0c;如果配置文件不存在则直接创建。 vim /etc/docker/daemon.json文件内容如下&#xff0c;其中insecure-registries属性值“registry.luntek-inc.com”代表私有仓库的地址&#xff0c;你需要将registry.luntek-…

JavaSE13-方法

目录 1.方法的基本用法 1.1.什么是方法 1.2.方法定义语法 1.3.方法调用的执行过程 1.4.实参和形参的关系 1.5.方法的返回值 2.方法重载 2.1.方法重载定义 2.2.代码示例 3.方法递归 3.1.方法递归定义 3.2.方法递归使用条件 3.3.递归与非递归优劣比较 3.4.递归执行…

[附源码]Nodejs计算机毕业设计基于网络C++实验管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

SpringBoot+Vue项目部门人事管理系统的设计与实现

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

Vit 中的 Token 改进版本:Token Mreging: Your Vit But Faster 论文阅读笔记

Vit 中的 Token 改进版本&#xff1a;Token Mreging: Your Vit But Faster 论文阅读笔记一、Abstract二、引言三、相关工作3.1 有效的 Transformer3.2 Token 的减少3.3 Token 的联合四、Token 融合4.1 策略4.2 Token 相似性4.3 双边软匹配4.4 追踪 Token 的尺寸4.5 采用融合操作…

[附源码]计算机毕业设计Python餐馆点餐管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

非零基础自学Golang 第11章 文件操作 11.3 处理JSON文件 11.3.2 解码JSON 11.4 小结

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.3 处理JSON文件11.3.2 解码JSON11.4 小结第11章 文件操作 11.3 处理JSON文件 11.3.2 解码JSON 解码JSON会使用到Unmarshal接口&#xff0c;也就是Marshal的反操作。 func Unmarshal(data []byte, v interf…

30岁零基础没学历学Python怎么样?30岁学习Python晚吗?

30岁零基础没学历学Python怎么样&#xff1f;30岁学习Python晚吗&#xff1f;任何时候开始都不晚。30岁开始学习Python听起来年纪有点大&#xff0c;大家认为编程上了年纪学习编程语言是一个劣势。想在三十岁的时候通过学习Python来谋求一份IT程序员工作&#xff0c;则需要有一…