使用hugging face开源库accelerate进行多GPU(单机多卡)训练卡死问题
目录
- 问题描述及配置
- 网上资料查找
- 1.tqdm问题
- 2.dataloader问题
- 3.model(input)写法问题
- 4.环境变量问题
- 我的卡死问题解决方法
问题描述及配置
在使用hugging face开源库accelerate进行多GPU训练(单机多卡)的时候,经常出现如下报错
[E ProcessGroupNCCL.cpp:828] [Rank 1] Watchdog caught collective operation timeout: WorkNCCL(OpType=BROADCAST, Timeout(ms)=1800000) ran for 1808499 milliseconds before timing out.
[E ProcessGroupNCCL.cpp:587] [Rank 0] Watchdog caught collective operation timeout: WorkNCCL(OpType=ALLREDUCE, Timeout(ms)=1800000) ran for 1808493 milliseconds before timing out.
而且,程序能正常运行几十个epoch,然后在运行中间卡死。卡死的位置永远是出现在测试集进行eval结束之后,而不是出现在对训练集的训练过程中。
例如,我每40个epoch进行一次测试(eval),那么卡死经常会出现在第80个epoch,或者第120个epoch的位置,有时候还会出现在第400个epoch。
在卡死的时候,每个GPU使用率达到100%(一条100%的直线),但是CPU使用率降到0%(一条0%的直线)
完整报错如下图所示



网上资料查找
我查阅网上资料,有很多种方法解决如下问题,虽然网上所查阅到的方法都没有解决我的问题,但是在这里都记录一下,或许对大家有用:
1.tqdm问题
有说在训练过程中,如果使用了tqdm打印进度条会出现卡死的问题,需要将所有tqdm代码都删除
2.dataloader问题
dataloader分为两种问题:
- 有的博客说使用pytorch中的dataloader对dataset进行封装的时候,在多GPU训练的情况下会卡死,所以需要去除dataloader的封装,直接使用dataset进行训练(但是我认为这种说法不可靠)
- 有的博客说使用dataloader的时候,如果设置了drop_last=False,或者是设置了shuffle=True,会导致开始(我认为这种说法也不可靠)
3.model(input)写法问题
在给予模型输入,进行正向传播的时候,我们通常写法是
output=model(input)
一些说法说这种写法在多GPU训练的时候,在模型进行eval的时候需要改一下:
output=model.module(input)
这样即可解决问题
4.环境变量问题
环境变量问题应该是最主要的一个解决方案,即更改环境变量。更改环境变量有很多方法,这里说一下在bash中临时更改环境变量的方法:
即在bash中输入
export NCCL_P2P_LEVEL=NVL
或者输入
export NCCL_P2P_DISABLE=1
然后再运行多GPU训练的代码
我的卡死问题解决方法
我经过长时间调试,发现我的问题出在这里:
我每次在eval的时候,都会判断这次测试集的loss是否和以往的相比是否是最小的,如果是最小的,那么获取这一个epoch的模型参数,问题就出现在获取模型参数这里(红框画出来的)

或者如果不加self.accelerator.wait_for_everyone()也是一样的,会出现同样的问题

卡死就在获取模型参数的部分,这里就是“有概率”出现卡死,因为运行一次可能没问题,但是如果我每40个epoch就运行一次eval,那么在第80个,第120个epoch就会卡死。
我猜测这是由于accelerate是通过多进程来控制多个GPU进行训练的,这里多个进程都去获取模型参数,所以才会出现卡死的情况。
因此,解决方法如下:

在判断条件中要加上判断是否在主进程中,然后去掉self.accelerator.wait_for_everyone()
这样就解决了卡死的问题。
相关文章:
使用hugging face开源库accelerate进行多GPU(单机多卡)训练卡死问题
目录 问题描述及配置网上资料查找1.tqdm问题2.dataloader问题3.model(input)写法问题4.环境变量问题 我的卡死问题解决方法 问题描述及配置 在使用hugging face开源库accelerate进行多GPU训练(单机多卡)的时候,经常出现如下报错 [E Process…...
IDEA 修改插件安装位置
不说假话,一定要看到最后,不然你以为我为什么要自己总结!!! IDEA 修改插件安装位置 前言步骤 前言 IDEA 默认的配置文件均安装在C盘,使用时间长会生成很多文件,这些文件会占用挤兑C盘空间&…...
牛客网SQL160
国庆期间每类视频点赞量和转发量_牛客题霸_牛客网 select * from ( select tag,dt, sum(单日点赞量)over(partition by tag order by dt rows between 6 preceding and 0 following), max(单日转发量)over(partition by tag order by dt rows between 6 preceding and 0 follo…...
HDFS Java API 操作
文章目录 HDFS Java API操作零、启动hadoop一、HDFS常见类接口与方法1、hdfs 常见类与接口2、FileSystem 的常用方法 二、Java 创建Hadoop项目1、创建文件夹2、打开Java IDEA1) 新建项目2) 选择Maven 三、配置环境1、添加相关依赖2、创建日志属性文件 四、Java API操作1、在HDF…...
论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】
文章目录 论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】背景:数据分析师工作范围基于GPT-4的端到端数据分析框架将GPT-4作为数据分析师的框架的流程图 实验分析评估指标表1:GPT-4性能表现表2&…...
【数据结构】:二叉树与堆排序的实现
1.树概念及结构(了解) 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的有一个特殊的结点&#…...
纯css手写switch
CSS 手写switch 纯css手写switchcss变量 纯css手写switch 思路: switch需要的元素有:开关背景、开关按钮。点击按钮后,背景色变化,按钮颜色变化,呈现开关打开状态。 利用typecheckbox,来实现switch效果(修…...
PyTorch 深度学习之处理多维特征的输入Multiple Dimension Input(六)
1.Multiple Dimension Logistic Regression Model 1.1 Mini-Batch (N samples) 8D->1D 8D->2D 8D->6D 1.2 Neural Network 学习能力太好也不行(学习到的是数据集中的噪声),最好的是要泛化能力,超参数尝试 Example, Arti…...
LeetCode【438】找到字符串中所有字母异位词
题目: 注意:下面代码勉强通过,每次都对窗口内字符排序。然后比较字符串。 代码: public List<Integer> findAnagrams(String s, String p) {int start 0, end p.length() - 1;List<Integer> result new ArrayL…...
关于LEFT JOIN的一次理解
先看一段例子: SELECTproduct_half_spu.id AS halfSpuId,product_half_spu.half_spu_code,product_half_spu.half_spu_name,COUNT( product_sku.id ) AS skuCount,product_half_spu.create_on,product_half_spu.create_by,product_half_spu.upload_pic_date,produc…...
各报文段格式集合
数据链路层-- MAC帧 前导码8B:数据链路层将封装好的MAC帧交付给物理层进行发送,物理层在发送MAC帧前,还要在前面添加8字节的前导码(分为7字节的前同步码1字节的帧开始定界符)MAC地址长度6B数据长度46~1500B…...
【算法-动态规划】最长公共子序列
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...
区块链游戏的开发流程
链游(Blockchain Games)的开发流程与传统游戏开发有许多相似之处,但它涉及到区块链技术的集成和智能合约的开发。以下是链游的一般开发流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&…...
目标检测网络系列——YOLO V2
文章目录 YOLO9000better,更准batch Normalization高分辨率的训练使用anchor锚框尺寸的选择——聚类锚框集成改进——直接预测bounding box细粒度的特征图——passthrough layer多尺度训练数据集比对实验VOC 2007VOC 2012COCOFaster,更快网络模型——Darknet19训练方法Strong…...
15. Java反射和注解
Java —— 反射和注解 1. 反射2. 注解 1. 反射 动态语言:变量的类型和属性可以在运行时动态确定,而不需要在编译时指定 常见动态语言:Python,JavaScript,Ruby,PHP,Perl;常见静态语言…...
pdf处理工具 Enfocus PitStop Pro 2022 中文 for mac
Enfocus PitStop Pro 2022是一款专业的PDF预检和编辑软件,旨在帮助用户提高生产效率、确保印刷品质量并减少错误。以下是该软件的一些特色功能: PDF预检。PitStop Pro可以自动检测和修复常见的PDF文件问题,如缺失字体、图像分辨率低、颜色空…...
微信小程序入门开发教程
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯Ἲ…...
php函数
1. strstr() 返回a在b中的第一个位置 2.substr() 截取字符串 3.PHP字符串函数parse_str(将字符串解析成多个变量)-CSDN博客 4.explode() 字符串分割为数组 5.trim() 1.去除字符串两边的 空白字符 2.去除指定字符 6.extract()函数从数组里…...
3.3 封装性
思维导图: 3.3.1 为什么要封装 ### 3.3.1 为什么要封装 **封装**,在Java的面向对象编程中,是一个核心的思想。它主要是为了保护对象的状态不被外部随意修改,确保数据的完整性和安全性。 #### **核心思想:** - 保护…...
Redis魔法:点燃分布式锁的奇妙实现
分布式锁是一种用于在分布式系统中控制对共享资源的访问的锁。它与传统的单机锁不同,因为它需要在多个节点之间协调以确保互斥访问。 本文将介绍什么是分布式锁,以及使用Redis实现分布式锁的几种方案。 一、前言 了解分布式锁之前,需要先了…...
最强AI剪辑工具盘点:免费直接用,小白秒变剪辑大师!
一、AI视频剪辑新时代:为什么选择这些工具? 2025年的AI视频工具已经不再是简单的滤镜和特效叠加,而是真正能够理解内容、自动完成剪辑全流程的智能助手。根据权威评测,真正优秀的AI剪辑工具应该具备以下特点: 真正免费…...
OpenClaw超轻量方案:nanobot镜像对接QQ机器人全流程
OpenClaw超轻量方案:nanobot镜像对接QQ机器人全流程 1. 为什么选择nanobot镜像 去年夏天,我在尝试将OpenClaw接入QQ机器人时遇到了不少麻烦。当时需要分别部署模型服务、配置OpenClaw网关、调试QQ机器人接口,整个过程耗费了整整三天时间。直…...
大模型上下文长度的优化策略与应用场景
1. 大模型上下文长度的本质与挑战 当你和ChatGPT聊天时,有没有遇到过它突然"失忆"的情况?比如聊到第20轮对话时,它完全忘记了开头讨论的主题。这就是上下文长度限制导致的典型问题。所谓上下文长度,就是大模型能够记住和…...
150元搞定无人机自主避障?上交大开源方案实测(附部署教程)
150元打造无人机自主避障系统:开源方案实战指南 当大多数人还在为动辄上万元的无人机避障系统望而却步时,一个仅需150元计算硬件的开源方案正在创客圈掀起风暴。这不是实验室里的概念验证,而是经过真实环境测试、能部署在你家后院的技术方案。…...
基于CLIP-GmP-ViT-L-14的智能教学辅助:自动化作业批改场景构想
基于CLIP-GmP-ViT-L-14的智能教学辅助:自动化作业批改场景构想 最近和几位做教师的朋友聊天,他们都在抱怨同一件事:批改作业,尤其是那种需要看图说话的作业,实在太费时间了。一个班几十个学生,每个学生交上…...
从DTC诊断码到ECU恢复:深入解析车载CAN总线的BUSOFF快慢恢复机制
从DTC诊断码到ECU恢复:车载CAN总线BUSOFF快慢恢复机制实战指南 当CAN总线上的某个ECU因连续发送失败而触发BUSOFF状态时,整个车载网络的稳定性便面临严峻考验。作为汽车电子诊断工程师,我们常常需要在深夜的生产线上,面对闪烁的故…...
AtlasOS终极指南:专业解决Windows安装错误2502/2503的完整方案
AtlasOS终极指南:专业解决Windows安装错误2502/2503的完整方案 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trendi…...
比迪丽FLUX.1效果对比:相比SDXL,面部结构准确率提升18.7%
比迪丽FLUX.1效果对比:相比SDXL,面部结构准确率提升18.7% 1. 引言:当动漫角色遇上新一代AI绘画引擎 如果你是一位《龙珠》的粉丝,或者热衷于用AI生成动漫角色,那么“比迪丽”这个名字你一定不陌生。作为悟饭的妻子&a…...
TeslaMate终极指南:如何打造专属的特斯拉数据分析平台
TeslaMate终极指南:如何打造专属的特斯拉数据分析平台 【免费下载链接】teslamate teslamate-org/teslamate: TeslaMate 是一个开源项目,用于收集特斯拉电动汽车的实时数据,并存储在数据库中以便进一步分析和可视化。该项目支持监控车辆状态、…...
如何用3层智能架构构建你的AI开发助手:从零到精通的完整指南
如何用3层智能架构构建你的AI开发助手:从零到精通的完整指南 【免费下载链接】superpowers Claude Code superpowers: core skills library 项目地址: https://gitcode.com/GitHub_Trending/su/superpowers 你是否曾想过,为什么有些开发者能快速完…...
