使用fairseq库并安装apex库时遇到ModuleNotFoundError: No module named ‘fused_layer_norm_cuda‘

这个挺脑溢血的,首先是fairseq官方仓库的Readme中没有明确指定apex库与fairseq库安装的相对位置,其次是fairseq库在引用apex的FusedLayerNorm的时候,相对路径写错了。
举个例子,如果apex库安装在fairseq库下,那么根据报错信息里涉及到的layer_norm.py文件(位置是在./fairseq/modules/layer_norm.py),可以看到图中标黄的这一行,这个路径找不到FusedLayerNorm模块:
在这里插入图片描述
实际上是apex.apex.normalization,更改后就能找到了。
在这里插入图片描述
ps:如果apex库没有安装在fairseq目录下,那么只需要同样更改layer_norm.py文件里对FusedLayerNorm的导入,让fairseq能够对其成功引用,就好了。

我之前看别的解决方法,还以为是编译torch的cuda版本(我的版本是torch2.3.0+cu118)与服务器配置的cuda版本不一致(cuda11.1)导致的,后来安装了对应的cuda又配置了环境变量,版本什么的都对应好了,结果还是报错,最后一看,是这个包导入问题T^T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值