单机多GPU训练模型入门指南(torch.nn.DataParallel)

news2024/12/24 8:54:00

目录

模型部分

1. 指定使用的GPU

2. 使用Torch的数据并行库(将模型搬到GPU上)

3. 保存模型

数据部分

1. 选择GPU

2. 将数据搬到GPU上

3. loss的反向传播修改

查看效果


本文将介绍模型数据两部分的处理。

模型部分

1. 指定使用的GPU

1.1 导入os库

import os

 1.2 给服务器上的GPU编号

最好一次性都编上,从0~n-1,n是服务器上的显卡的数量,一般为4or8张卡。

选择一:写在python代码中

os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2,3'

选择二:在命令行设置

CUDA_VISIBLE_DEVICES=0,1,2,3

查看有没有设置好,使用命令行命令

echo $CUDA_VISIBLE_DEVICES

1.3 指定自己要使用哪几张卡

device_ids = [0, 1, 2, 3]

注 这个device_ids的列表要在后面作为参数传入

2. 使用Torch的数据并行库(将模型搬到GPU上)

这里要有两行代码

model = torch.nn.DataParallel(model, device_ids=device_ids)
model = model.cuda()

当然,也可以写在一起

model = torch.nn.DataParallel(model, device_ids=device_ids).cuda()

3. 保存模型

原来

model.save_pretrained(path.my_checkpoint)

现在

model.module.save_pretrained(path.my_checkpoint)

注:这里使用了huggingface的transformers库,使用torch.save应该是类似的。

数据部分

注:这里的数据都是训练函数里面的,测试函数里面的应该类似。

1. 选择GPU

device = torch.device("cuda:0")

2. 将数据搬到GPU上

data = data.to(device)

上面那句和下面这句好像是等价的

data = data.cuda()

3. loss的反向传播修改

这个地方也是我遇到的报错最多的地方。

原来

loss.backward()

改法1

loss.sum().backward()

改法2

loss.backward(torch.ones(loss.shape).to(device))

查看效果

使用命令(每0.1秒刷新一次)

watch -n 0.1 nvidia-smi

蓝色箭头所指是我的进程。

以上。

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

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

相关文章

基于微信小程序的付费自习室系统平台设计与实现的源码+文档

摘要 首先,论文一开始便是清楚的论述了小程序的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了小程序的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设…

Oracle Primavera P6V7 SQL异常案例

目录 系统环境 原因分析 解决方案 本案例由一名爱学习的网友提供,经过在Oracle Support的分析整理成文,希望给初学的P6用户提供参考和帮助。 系统环境 简要说明下P6安装的系统环境 操作系统:Windows 7 / Server 2008数据库&#xff1a…

CentOS中使用Docker来部署Postgresql

场景 CentOS7中Docker的安装与配置: CentOS7中Docker的安装与配置_霸道流氓气质的博客-CSDN博客 在上面安装好Docker之后,怎样使用docker部署Postgresql数据库。 注: 博客:https://blog.csdn.net/badao_liumang_qizhi 关注公…

canal-server使用

canal是什么 canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 这句介绍有几个关键字:增量日志,增量数据订阅和消费。这里我们可以简单地把canal理解为一个用来同步增量…

10月11日

gitlab 用https网址拉取项目的时候,出现: error setting certificate verify locations: CAfile: D:/Git/Git/mingw64/ssl/certs/ca-bundle.crt CApath: none原因是: 修改为自己git所在的文件夹即可(原因是我是从另外一台电脑直…

AndroidStudio连接真机测试运行

文章目录准备步骤1、打开要连接的手机2、配置AndroidStudio3、用数据线将手机和电脑连起来4、打开 开发者模式后问题1、可能需要下user driver才能连接手机2、电脑连不上手机3、手机连上电脑后不能运行软件运行Android Studio运行虚拟机时会占用较大的电脑内存而自己电脑内存不…

流媒体传输 - HLS 协议

HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前 HLS 协议被广泛的应用于视频点播和直播领域。 概述 原理介绍 通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件&#xff…

SpringBoot中拦截器的使用

SpringBoot中拦截器接口: public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}default void postHandle(HttpServletRequest request, …

【jmeter】windows下使用 (测试MQTT)

1. 添加线程组 二、添加如下请求 1. 添加创建连接请求-选中线程组, 点击右键,添加>取样器>MQTT Connect设置MQTT连接 本次使用本机开启的MQTT服务进行测试,默认ip为127.0.0.1,端口默认1883 2. 添加发布请求-选中线程组 …

面试:各种热修复框架对比

目前Android热修复的技术方案大致可以归类为以下几种: 资源热替换代码热修复动态库替换 资源修复 创建新的AssetManager实例,利用反射加载外部(SD卡)需要热修复的资源路径通过当前Activity实例获取Resouces资源类,然后反射得到mAssets属性&…

powerlevel10k 颜色和图标的自定义设置

文章目录1. 颜色的更改2. 图标的更改3. 附录powerlevel10k 的设置向导命令是p10k configure如果想在这个预定好的设置上面做一些个人的自定义设置,就得更改 powerlevel10k 的配置文件:~/.p10k.zsh 下面的操作主要就是在这个配置文件上面更改。 1. 颜色的…

浅谈芯片验证中的仿真运行之 compilation unit 技术(实践篇)

前言 前面文章,讲述了一些关于SV语法下,编译问题的一些基本概念。其实,芯片验证中仿真工具编译仿真文件、RTL文件的一些规则,依据每一家仿真工具内部的编译原理,都是保密的,用户只要按照仿真工具的使用规则去使用,即可。最近,笔者遇到了一个问题,今天空下来,总结一下…

Windows本地安装Redis且设置服务自启

redis中文网:http://redis.cn/ 如果是安装Windows版的redis需要去GitHub上下载安装包 如果是在Linux上安装,可以直接使用命令进行安装 本次教程是基于Windows系统进行的 GitHub地址:https://github.com/microsoftarchive/redis 选择需要下…

Online Decision Transformer

摘要 最近的工作表明,离线强化学习 (RL) 可以表述为序列建模问题 (Chen et al., 2021; Janner et al., 2021),并通过类似于大规模语言建模的方法来解决。 然而,RL 的任何实际实例化还涉及在线组件,其中在被动离线数据集上预训练的…

Express:Express 中间件

中间件的概念 1. 什么是中间件 中间件(Middleware ),特指业务流程的中间处理环节。 2. 现实生活中的例子 在处理污水的时候,一般都要经过三个处理环节,从而保证处理过后的废水,达到排放标准。 处理污水…

aws cloudformation 堆栈集的创建和使用

资料 使用 AWS CloudFormation StackSets 跨多个 AWS 账户和区域配置资源AWS cloudformation示例模板堆栈集堆栈实例状态原因 很多组织使用大量的 AWS 账户,通常用 AWS Organizations 将这些账户组织为分层结构,分组为不同的组织部门 (OU)。并且希望确…

Teams app 的 SSO 机制

我们来继续我们的 Teams sample 之旅,上一个讲了 Tab app,那我们这里再深入一步,看一下如何使用 sso 机制。 sso 是一个很有用机制,它可以让我们的 teams app 能获取当前用户的身份。sso 很多时候比较难彻底理解,在开…

刷爆力扣之公平的糖果交换

刷爆力扣之公平的糖果交换 HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照不同类别标签进行刷题&#xff…

【数据链路层】循环冗余码CRC、后退N帧协议GBN、选择重传协议SR、CSMA/CA

文章目录循环冗余码CRC多帧滑动窗口连续ARQ协议后退N帧协议GBN选择重传协议SRCSMA/CA---针对无线局域网处理隐蔽站问题RTS,CTS循环冗余码CRC /*** 计算CRC16校验码** param bytes* return* [1,3,4,1,205,1,18,235,173]*/public static String CRC16(byte[] bytes) {…

终于见识到了微服务的天花板!SpringCloud全线手册,太强了

后台都是在问微服务架构的面试题怎么答,想聊聊微服务架构了。微服务架构一跃成为 IT 领域炙手可热的话题也就这两年的事,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴、百度、美团等…