🐛 Bug
(compiler_gym) zeyi@server121:~/scripts$ python main.py
Exception in thread Thread-1:
Traceback (most recent call last):
File ".../lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File ".../lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File ".../lib/python3.8/site-packages/aim/ext/resource/tracker.py", line 102, in _stat_collector
self._track(stat)
File ".../lib/python3.8/site-packages/aim/ext/resource/tracker.py", line 78, in _track
self._track_func()(
TypeError: 'NoneType' object is not callable
重现问题
最小示例:
from aim import Run
def main():
run = Run()
for i in range(1000):
run.track(i, name="loss")
if __name__ == "__main__":
main()
这个问题偶尔会发生。在我的情况下,它每四次发生一次。然而,如果我稍微修改一下脚本,上面的问题就永远不会出现。
from aim import Run
run = Run()
def main():
for i in range(1000):
run.track(i, name="loss")
if __name__ == "__main__":
main()
请注意,我将变量 run
移动到了全局作用域。我认为问题是由于某些对象被过早地解引用(例如,用于跟踪的线程?我不确定)。
预期行为
脚本应该可以正常运行。
环境
aim==3.4.1
aimrecords==0.0.7
aimrocks==0.0.10
Python 3.8.12
Linux server121 5.4.0-26-generic #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
7条答案
按热度按时间gev0vcfq1#
你好@uduse!
我无法在
aim v3.5.1
上复现这种行为。在这个版本中,我们进行了一些修复和改进,它可能间接地解决了问题。请问您是否可以切换到最新版本并检查它是否解决了您这边的问题?
raogr8fs2#
嘿,@uduse。我只是想问一下,你有没有机会尝试(并可能重现这个问题)在
aim v3.5.1+
上?提前感谢。
evrscar23#
@alberttorosyan 是的,我无法在新版本的
aim
中复现这个问题。👍 很好的修复。jutyujz04#
我正在经历同样的问题。虽然我无法在上面展示的小演示中重现相同的问题,但这发生在我的复杂项目中,我不知道发生了什么...
bq3bfh9z5#
请允许我分享一下这里正在发生的事情。这可能会给你一些关于更复杂场景如何影响事物的想法。
资源跟踪(启用时)收集系统资源使用信息,并将其作为
Run
对象上的常规指标进行跟踪。这是在单独的线程中完成的,当Run
完成时,该线程会被关闭。似乎在系统跟踪线程关闭之前,Run对象就被关闭了。是否有可能显式调用Run.close/finalize
方法?qaxu7uf26#
不,我没有显式地调用这些函数。这可能是一个并发问题吗?我正在运行多个
async
函数,每个函数都有自己的aim.Run
对象。htrmnn0y7#
几天前,我和
3.19.3
遇到了这个问题,当使用多个线程进行数据加载时,跟踪起来有些困难。奇怪的是,它只发生在使用较小的开发数据集(而不是整个数据集)的情况下,并且仅在足够长的运行时间后发生(例如,当运行5个实验时,前两个完成,第三个随机挂起)。我会更新aim(尽管更新日志没有建议任何可能相关的更改),并禁用资源跟踪。