transformers 在训练时一直卡着:Detected kernel version 5.4.0, which is below the recommended minimum of 5.5.0

现象

在使用 transformers 中的 Trainer 进行模型训练时,发现程序一直卡着,没有进入模型的 forward 函数。

日志中出现这句(内核版本太低可能导致进程挂起):

Detected kernel version 5.4.0, which is below the recommended minimum of 5.5.0; this can cause the process to hang. It is recommended to upgrade the kernel to the minimum version or higher.

一开始以为这个只是一个普通的 warning,没想到这就是问题所在。

环境

系统:Ubuntu 18.04.6 LTS
内核:5.4.0-149-generic
torch:2.2.1+cu121
transformers:4.44.2

问题排查与解决

  • 该程序代码之前在一台 Windows 11 上正常运行过,该 Windows 11 中的 torch、cuda 版本与出现问题的 Ubuntu 有所不同;
  • 参考上面的日志,判断该问题与代码本身无关,与软件版本有关;
  • 在网上找到有类似案例,参考这个评论,有可能是使用多块GPU并行运算的原因;
    在这里插入图片描述
  • 然后尝试在代码开头加上 os.environ["CUDA_VISIBLE_DEVICES"] = "0",以指定程序仅能使用第一块显卡(指定第2、3…块显卡也可以),发现上述问题确实解决了;
  • 但对于确实需要用多块显卡的程序,这种做法并没有解决实际问题,或许真的需要更新系统内核,不知道降低 transformers 的版本是否有用;

由于我的程序所需显存较小,一块就够用,所以没有接着探索,如果你其它解决方案,欢迎在评论区告知我,感谢。

还有个小插曲

  • 一开始我把 os.environ["CUDA_VISIBLE_DEVICES"] = "0" 放在 import torch 等 import 语句之后,发现程序运行时仍是同时使用多块显卡,也就是该命令并未起效;
  • 询问 ChatGPT,得知该命令需要在 GPU 调用前使用,修改后确实有效:
    在这里插入图片描述
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值