为什么torchvision、torchaudio和torchtext需要精确的pytorch版本和==约束?

bnlyeluc  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(253)

如果我理解正确的话,Pytorch的API在补丁版本之间是稳定的,所以它的下游包应该仍然可以与交错的补丁版本一起工作。例如,torchaudio 2.0.2和torch 2.0.1应该是兼容的。但是这三个包都需要完全匹配的pytorch版本,例如torch==2.0.2
Pytorch这么做有什么原因吗?

xqkwcwgp

xqkwcwgp1#

因为他们在C级别集成了PyTorch。每个库都有用C编写的扩展模块,这些扩展模块与libtorch链接。例如,TorchVision使用libjpegturbo和libpng实现图像I/O,将常见的图像格式转换为PyTorchTensor。
TorchAudio有音频/视频处理器,TorchText有JavaScript和其他用C编写的NLP相关实用程序。
问题是libtorch没有稳定的ABI(而不是API),PyTorch没有C
接口的稳定ABI策略。
如果你试图导入这些不匹配的PyTorch库,你会得到一些像undefined symbol: _znk3c104type14issubtypeofextest10shared_ptris0_epso这样的神秘错误消息。这基本上意味着“在构建时找到的PyTorch的这个C++函数在运行时PyTorch中找不到。我无法继续。”

相关问题