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
# ... 其他导入和逻辑 ...

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

注意事项

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

### Torchaudio PyTorch 的功能与使用 PyTorch 是一种广泛使用的机器学习框架,而 Torchaudio 则是其专门用于音频处理的扩展库。以下是关于如何使用这些工具的一些详细介绍。 #### 1. **Torchaudio 基本介绍** Torchaudio 提供了一系列用于加载、转换增强音频数据的功能。它支持多种常见的音频文件格式,并提供了预训练模型来简化语音识别其他音频任务的工作流程[^3]。 - 加载音频文件可以使用 `torchaudio.load()` 函数: ```python import torchaudio waveform, sample_rate = torchaudio.load('audio_file.wav') print(f"Shape of waveform: {waveform.size()}") print(f"Sample rate of waveform: {sample_rate}") ``` - 转换音频信号可以通过内置变换类实现,例如重采样 (Resample) 或者提取梅尔频谱图 (MelSpectrogram): ```python from torchaudio.transforms import Resample, MelSpectrogram resampler = Resample(orig_freq=sample_rate, new_freq=8000) new_waveform = resampler(waveform) mel_spectrogram_transform = MelSpectrogram(sample_rate=sample_rate) spectrogram = mel_spectrogram_transform(new_waveform) ``` #### 2. **PyTorch 中 nn.Linear 的应用** 在 Transformer 架构中,`nn.Linear` 经常被用来执行线性投影操作。具体来说,在多头注意力机制以及前馈网络部分都会涉及该模块的应用[^1]。 以下是一个简单的例子展示如何定义并调用全连接层: ```python import torch import torch.nn as nn input_tensor = torch.randn(32, 768) # Batch size x Input features linear_layer = nn.Linear(in_features=768, out_features=512) output_tensor = linear_layer(input_tensor) print(output_tensor.shape) # Should be [32, 512] ``` #### 3. **解决 Hugging Face Tokenizer 并发警告** 当运行基于 Hugging Face Transformers 库的任务时可能会遇到并发问题提示(如引用中的情况)。这通常发生在进程分叉之前已经启用了多线程模式的情况下[^2]。为了消除此类警告消息,可以在脚本开头设置环境变量: ```bash export TOKENIZERS_PARALLELISM=false ``` 或者通过 Python 动态调整此参数: ```python import os os.environ["TOKENIZERS_PARALLELISM"] = "false" ``` 这样能够有效防止因死锁而导致程序崩溃的风险。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值