安装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:针对特定警告类型屏蔽
如果你只想关闭 FutureWarning
或 UserWarning
,可以指定类别。例如:
import warnings
# 屏蔽 FutureWarning
warnings.filterwarnings("ignore", category=FutureWarning)
# 屏蔽 UserWarning
warnings.filterwarnings("ignore", category=UserWarning)
- 适用场景:你的输出中主要是
FutureWarning
和UserWarning
,可以用这个方法精确控制。 - 代码位置:放在脚本开头,导入库之前。
方法 3:针对特定模块或消息屏蔽
如果你只想屏蔽来自 transformers
或 torch
的特定警告,可以用正则表达式匹配消息内容。例如:
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
# ... 其他导入和逻辑 ...
把这几行放在脚本最开头,运行时就不会看到这些警告了。
注意事项
- 检查警告的重要性:这些警告提示某些功能在未来版本会移除。如果你在开发长期项目,建议查看文档,逐步更新代码到推荐的用法,避免未来兼容性问题。
- 调试时保留警告:如果你在调试代码,建议暂时不要屏蔽警告,它们可能提供有用的线索。