tokenizers 当调用train_from_iterator时,全球可变内存泄漏的风险,

mo49yndu  于 23天前  发布在  其他
关注(0)|答案(1)|浏览(23)

最近我们发现,如果在基于类的迭代器(yield可以正常工作)中使用train_from_iterator方法,那么通过nanobind绑定的类的全局变量会泄漏。你可以在以下问题中找到详细信息和最小重现代码:

nanobind的维护者表示,nanobind只是检测到这种泄漏,而这并不是nanobind的bug。他在nanobind文档中说:

与其他工具泄漏引用的交互。Python扩展库——特别是带有C库组件(如PyTorch、Tensorflow等)的大型库——已经观察到泄漏对nanobind对象的引用。

其中一些框架根据调用它们的参数缓存JIT编译的函数,如果这些缓存方案没有被负责的扩展清理(这是一个假设),它们可能会泄漏对nanobind类型的引用。在这种情况下,泄漏将是无害的——即使如此,也应该在负责的框架中修复它,以便不会让泄漏警告与故障混淆,从而使其更广泛地有用。
嗯,我没有在分词器中找到jit。可能还有其他原因,或者可能是cpython的bug。但我希望这不是Python的bug,否则这个bug可能只能在更高版本的Python(3.14或更高版本)中解决。

lstz6jyr

lstz6jyr1#

这个问题已经过期,因为它已经打开了30天,没有活动。请移除过期标签或评论,否则将在5天内关闭。

相关问题