Python关闭transformers和torch警告信息输出!

安装indextts的时候,配置成功了,已经可以运行。但是会输出一堆警告⚠️信息!

E:\DEV\Miniconda3\envs\index-tts\lib\site-packages\transformers\utils\generic.py:441: 
FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. 
Please use `torch.utils._pytree.register_pytree_node` instead.
    _torch_pytree._register_pytree_node(

E:\DEV\Miniconda3\envs\index-tts\lib\site-packages\transformers\utils\generic.py:309: 
FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. 
Please use `torch.utils._pytree.register_pytree_node` instead.
    _torch_pytree._register_pytree_node(

E:\DEV\Miniconda3\envs\index-tts\lib\site-packages\transformers\utils\generic.py:309: 
FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. 
Please use `torch.utils._pytree.register_pytree_node` instead.
    _torch_pytree._register_pytree_node(

>> vqvae weights restored from: checkpoints\dvae.pth

E:\DEV\Miniconda3\envs\index-tts\lib\site-packages\transformers\configuration_utils.py:387: 
UserWarning: Passing `gradient_checkpointing` to a config initialization is deprecated and will be removed in v5 Transformers. 
Using `model.gradient_checkpointing_enable()` instead, or if you are using the `Trainer` API, pass `gradient_checkpointing=True` in your `TrainingArguments`.
    warnings.warn(

>> GPT weights restored from: checkpoints\gpt.pth

E:\DEV\Miniconda3\envs\index-tts\lib\site-packages\torch\nn\utils\weight_norm.py:143: 
FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
    WeightNorm.apply(module, name, dim)

这东西不影响使用,但是看着十分难受。所以想要屏蔽这些内容。但是有不知道从何处入手。后来发现可以统一管理,挺好。分析一下设置方式。

方法 1:使用 warnings 模块全局禁用警告

在代码开头添加以下内容,可以完全屏蔽所有警告:

import warnings
warnings.filterwarnings("ignore")
  • 优点:简单,适用于快速测试。
  • 缺点:会屏蔽所有警告,包括可能有用的信息。如果只想屏蔽特定警告,不推荐此方法。

方法 2:针对特定警告类型屏蔽

如果你只想关闭 FutureWarningUserWarning,可以指定类别。例如:

import warnings

# 屏蔽 FutureWarning
warnings.filterwarnings("ignore", category=FutureWarning)

# 屏蔽 UserWarning
warnings.filterwarnings("ignore", category=UserWarning)
  • 适用场景:你的输出中主要是 FutureWarningUserWarning,可以用这个方法精确控制。
  • 代码位置:放在脚本开头,导入库之前。

方法 3:针对特定模块或消息屏蔽

如果你只想屏蔽来自 transformerstorch 的特定警告,可以用正则表达式匹配消息内容。例如:

import warnings

# 屏蔽 transformers 中关于 torch.utils._pytree 的警告
warnings.filterwarnings("ignore", message=".*torch.utils._pytree._register_pytree_node.*", category=FutureWarning)

# 屏蔽 weight_norm 的警告
warnings.filterwarnings("ignore", message=".*torch.nn.utils.weight_norm.*", category=FutureWarning)

# 屏蔽 gradient_checkpointing 的警告
warnings.filterwarnings("ignore", message=".*Passing `gradient_checkpointing` to a config initialization.*", category=UserWarning)
  • 优点:更精确,只屏蔽你不关心的警告,保留其他有用的提示。
  • 缺点:需要为每种警告写一行,稍微麻烦。

方法 4:通过命令行运行时禁用

如果你是通过命令行运行 Python 脚本,可以用 -W 参数:

python -W ignore your_script.py
  • 适用场景:临时运行,不想改代码。
  • 注意:这也会屏蔽所有警告。

推荐方案

根据你的输出,我建议用以下代码,既简单又能针对性解决问题:

import warnings

# 屏蔽常见的 transformers 和 torch 警告
warnings.filterwarnings("ignore", category=FutureWarning)
warnings.filterwarnings("ignore", category=UserWarning)

# 你的代码
from transformers import SomeModel
# ... 其他导入和逻辑 ...

把这几行放在脚本最开头,运行时就不会看到这些警告了。

注意事项

  • 检查警告的重要性:这些警告提示某些功能在未来版本会移除。如果你在开发长期项目,建议查看文档,逐步更新代码到推荐的用法,避免未来兼容性问题。
  • 调试时保留警告:如果你在调试代码,建议暂时不要屏蔽警告,它们可能提供有用的线索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值