[openai/whisper]在 audio.py 中使用梅尔矩阵的线程安全加载

2024-02-05 327 views
3

mel_filters函数使用np.load函数加载预先计算的梅尔滤波器组矩阵。该函数不是线程安全的,这意味着如果同时从多个线程调用它,可能会损坏数据。

要解决此问题,您可以改用该torch.load函数。该函数是线程安全的,因此如果同时从多个线程调用它不会损坏数据。

回答

6

嗨@mzamini92,这太棒了!我建议您更新 PR 标题,以便它反映整体变更力求解决的问题。

就像是:

使用梅尔矩阵的线程安全加载

7

谢谢你的评论。完毕。

2

您好,感谢您指出这一点。有文档说明这np.load不是线程安全的吗?我认为torch.load()在任何一种情况下使用都是一个更好的主意,但是文档字符串和.npz文件应该一起更新。

4

嗨@jongwook。是的 https://numpy.org/devdocs/reference/ generated/numpy.load.html 在警告中它说:加载包含对象数组的文件使用 pickle 模块,该模块不能防止错误或恶意构造的数据。考虑传递allow_pickle=False来加载已知不包含对象数组的数据,以便更安全地处理不受信任的源。另外,更新了下面的文档字符串。

9

该警告与线程安全无关,也torch.load()与 unpickling 具有相同的安全隐患。此外,torch.save与 不同的是,它不会执行压缩np.savez_compressed,这会向 git 存储库添加一个巨大的二进制文件,或者使调用解压缩函数变得更加烦人。我只是补充allow_pickle=False一下以解决您的担忧。