【Python】科研代码学习:十三 Accelerate

【Python】科研代码学习:十三 Accelerate

  • Accelerate
    • 统一的加速接口
    • 修改训练代码 (torch.nn)
    • 更简单的使用

Accelerate

  • 【HF官网-Doc-Accelerate:API】
    HF Accelerate 是一个库,能够让 PyTorch 代码添加几行代码之后,就能在分布式配置中运行(比如多Gpus卡)
  • 前言:建议 Python3.8+
    pip install accelerate

统一的加速接口

  • 对任意给定的训练框架 deepspeed / FSDP 等,都提供了一个统一的加速接口。
  • 首先可以执行如下命令,它会在 Accelerates 缓存文件夹中,创建一个 default_config.yaml 文件。它存储训练环境的配置。
accelerate config
  • 在配置好环境后,可以使用 accelerate test 来测试分布式环境。
  • 然后就可以调用如下命令,加速代码了
accelerate launch path_to_script.py --args_for_the_script

修改训练代码 (torch.nn)

  • 我们在代码中需要少数代码的修改
    主要是实例化一个 accelerator 加速器,修改 device,对 model, optimizer, dataloader, scheduler 做一个处理,还有反向传播。
    注意看下面删除的两行和增加的其他行。
+ from accelerate import Accelerator
+ accelerator = Accelerator()+ device = accelerator.device
+ model, optimizer, training_dataloader, scheduler = accelerator.prepare(
+     model, optimizer, training_dataloader, scheduler
+ )for batch in training_dataloader:optimizer.zero_grad()inputs, targets = batch
-     inputs = inputs.to(device)
-     targets = targets.to(device)outputs = model(inputs)loss = loss_function(outputs, targets)
+     accelerator.backward(loss)optimizer.step()scheduler.step()

更简单的使用

  • (从学长那里听来的)
    貌似加速库很麻烦,要改很多代码,比如如何制定哪几张卡作为 Trainer 训练呢?
    我们只要使用 deepspeed + Accelerate,这两个工具即可
  • 首先,这两个环境都安装一下
    然后,在 .sh 文件中,直接增加环境变量
    注意,CUDA_DEVICE_ORDER 这里不能加双引号;右侧可加可不加;等号左右不能有空格
export CUDA_DEVICE_ORDER="PCI_BUS_ID"
export CUDA_VISIBLE_DEVICES="1,2"

然后直接

accelerate launch --config_file configs/deepspeed_train_config.yaml\run_python_code.py 

即可,里面的代码就无需修改了。

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

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

相关文章

【Javascript】 Promise 对象(一)

【Javascript】 Promise 对象(二)-CSDN博客 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法&…

美摄科技对抗网络数字人解决方案

在数字化浪潮的推动下,企业对于高效、创新且具备高度真实感的数字化解决方案的需求日益迫切。美摄科技凭借其在人工智能和计算机视觉领域的深厚积累,推出了一款全新的对抗网络数字人解决方案,该方案能够为企业构建出表情和动作都极为逼真的数…

Python环境搭建 -- Python与PyCharm安装

一、Python安装 我们先找到Python的官方网站,在浏览器中搜索Python即可,然后进入Python官网 点击Downloads,选择对应匹配的操作系统 点进去之后,Python的版本分为稳定的版本和前置版本,前置的版本就是还没有发行的版本…

【Flink SQL】Flink SQL 基础概念:SQL 的时间属性

Flink SQL 基础概念:SQL 的时间属性 1.Flink 三种时间属性简介2.Flink 三种时间属性的应用场景2.1 事件时间案例2.2 处理时间案例2.3 摄入时间案例 3.SQL 指定时间属性的两种方式4.SQL 事件时间案例5.SQL 处理时间案例 与离线处理中常见的时间分区字段一样&#xff…

学习Unity到什么程度可以找工作?

游戏开发是一个充满无限可能的行业,Unity作为最流行的游戏开发引擎,吸引着无数游戏开发者的目光。在这个行业发展迅速、竞争激烈的背景下,许多同学都梦想着通过系统学习获得游戏开发技能,从而在游戏行业找到属于自己的一席之地。 …

服务器将动态IP设置成静态IP(内部网络)

话不多说,直接上干货 打开终端,输入命令行:ifconfig,查看你的网卡配置,此次设置的第一个,如下: 打开配置文件,一般在/etc/sysconfig/network-scripts/文件夹下: 编辑配置文件:vi ifcfg-eno1 修改IP地址分配方式: (1&a…

Excel小技巧 (3) - 如何取整

1. 四舍五入 Round(对象,小数点后位数) 结果 123.1 2.向上取整 Roundup(对象,小数点后位数) 结果:123.2 3.向下取整 Round(对象,小数点后位数) 结果123.…

【string一些函数用法的补充】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 string类对象的修改操作 我们来看 c_str 返回c格式的字符串的操作: 我们来看 rfind 和 substr 的操作: string类非成员函数 我们来看 r…

REDHAWK——组件

文章目录 前言一、REDHAWK 核心资产1、REDHAWK 基本组件2、REDHAWK 基本设备3、REDHAWK 基本波形4、REDHAWK 共享库5、REDHAWK 设备依赖性 二、创建组件项目1、组件向导2、组件描述符3、端口4、属性5、记录6、为组件生成代码 三、创建并运行 Hello World 组件 前言 组件是模块…

LeetCode hot100-10

560. 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。我的解法,就是很简单的那种两层循环,没啥好说的。这题是不会超时,能通过。 cla…

【DAY09 软考中级备考笔记】机组:信息加密,系统可靠性

机组:信息加密,系统可靠性 3月8日 – 天气:晴 1. 信息加密 信息加密分为了对称加密和非对称加密: 对称加密:加密和解密的密钥相同且不公开 优点是加密速度快缺点是加密的强度不高,密钥分发困难常见算法&…

es 聚合操作(二)

书接上文,示例数据在上一篇,这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果,再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类: Sibling - 结果和现有…

C语言—求最大公约数(4种算法思路)

1.穷举法 如果大数可以整除小数&#xff0c;那么最大公约数为小数。如果不能整除小数&#xff0c;那么这两个数就按大到小依次对比小数小的数求余&#xff0c;遇到都能够整除的&#xff0c;就是最大公约数。 int gcd(int a, int b) {int i;int min a < b ? a : b;for (i …

“禁止互撕”新规第二天,热搜把#章子怡“怒怼”网友#推上了榜一

3月12日&#xff0c;微博热搜发布公告&#xff0c;对热搜词条处置规则进行了更新。 针对热搜词条长期以来存在的引战互撕、挑唆对立等不良现象&#xff0c;热搜生态秩序亟待改善&#xff0c;微博给出了两大解决方案&#xff1a; 一是更新热搜词条处置规则&#xff0c;当热搜词…

1456.定长子串中元音的最大数目

题目&#xff1a;给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为&#xff08;a, e, i, o, u&#xff09;。 解题思路&#xff1a; 1.右侧新进入窗口的字母为元音字母&#xff0c;左侧移出窗口的字母…

无源性指数

无源性指数&#xff08;Passivity Index&#xff09;是控制系统理论中的一个概念&#xff0c;用于量化系统的无源性特性。无源性是系统的一个重要属性&#xff0c;它描述了系统从外部环境中吸收能量并消耗这些能量的能力。具体来说&#xff0c;一个无源系统不能从外部环境中无限…

qiankun:vite/webpack项目配置

相关博文&#xff1a; https://juejin.cn/post/7216536069285429285?searchId202403091501088BACFF113F980BA3B5F3 https://www.bilibili.com/video/BV12T411q7dq/?spm_id_from333.337.search-card.all.click qiankun结构&#xff1a; 主应用base&#xff1a;vue3historyv…

3.1_8 两级页表

文章目录 3.1_8 两级页表&#xff08;一&#xff09;单级页表存在的问题&#xff08;二&#xff09;如何解决单级页表的问题&#xff1f;&#xff08;三&#xff09;两级页表的原理、地址结构&#xff08;四&#xff09;如何实现地址变换&#xff08;五&#xff09;需要注意的几…

QT5.14.2 探索QT的神秘力量:轻松获取MD5值的秘诀

在当今这个信息爆炸的时代&#xff0c;数据安全已经成为了我们每个人都需要关注的话题。MD5作为一种广泛使用的哈希算法&#xff0c;它的应用场景非常广泛&#xff0c;从密码存储到文件完整性校验&#xff0c;MD5都扮演着重要的角色。而在QT的世界里&#xff0c;获取MD5值就像吃…

第三方 cookie 就快被废弃了,再不玩就没机会了!

还记得初学前端时&#xff0c;一直听过 cookie&#xff0c;没碰它之前觉得特别简单&#xff0c;一听就懂。但当自己和后台成员对接时&#xff0c;那叫一个惨烈&#xff0c;搞了搞几天才好&#xff0c;最后弄好的时候还是懵懵的。最近突然看到第三方 cookie 快被废弃了&#xff…