如何在 Python MXNet 中查找内存泄漏?

How to find memory leak in Python MXNet?

恐怕我用 Python 编写的 MXNet 中的神经网络存在内存泄漏。我尝试了 MXNet 分析器和 tracemalloc 模块来了解内存分析,但我想获得有关任何潜在内存泄漏的信息,就像我在 C 中使用 valgrind 所做的那样。

我找到了 Detecting Memory Leaks and Buffer Overflows in MXNet,并且在按照 "Using ASAN builds with MXNet" 部分中的描述设法构建之后,将 docker/Dockerfile.build.ubuntu_cpu -t mxnetci/build.ubuntu_cpu 中的 "ubuntu_cpu" 部分替换为 "ubuntu_cpu_python",我尝试在 AWS Sagemaker Notebook 中执行,如下所示:

root@33e38e00f825:/work/mxnet# nosetests3 --verbose /home/ec2-user/SageMaker/run_predict.py

我收到这个导入错误:

Failure: ImportError (No module named 'run_predict') ... ERROR

我的 run_predict.py 看起来像这样:

#!/usr/bin/env python
def run_predict(n):
  # calling MXNet inference method

run_predict(-1)  # tried it putting it under 'if __name__ == "__main__":'

我的脚本中缺少什么,我应该更改什么?

他们在 link 中使用的示例脚本是 rnn_test.py,但即使我 运行 这个示例,我仍然会遇到类似的导入错误。

在 MXNet 中,我们通过检查垃圾收集记录自动对此进行测试。你可以在这里找到它是如何实现的:https://github.com/apache/incubator-mxnet/blob/c3aff732371d6177e5d522c052fb7258978d8ce4/tests/python/conftest.py#L26-L79