微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Errno 9 错误的文件描述符 Detectron2

如何解决Errno 9 错误的文件描述符 Detectron2

我在 Detectron2 上工作以在 google colab 中进行对象检测,并且成功运行,但我不得不转移到使用 CentOS 7.4 和 Conda 的集群 HPC。我已经安装了所有要求,目前运行脚本没有出现错误,但它在 DefaultTrainer 类的函数 resume_or_load 中陷入无限睡眠循环。当我停止它时,就会出现这个回溯。

Traceback (most recent call last):
    File "new_train.py",line 138,in <module>
        trainer.resume_or_load(resume=False)
    File "/hpcfs/home/mj.patino/.local/lib/python3.7/site-packages/detectron2/engine/defaults.py",line 353,in resume_or_load
       checkpoint = self.checkpointer.resume_or_load(self.cfg.MODEL.WEIGHTS,resume=resume)
    File "/hpcfs/home/mj.patino/.local/lib/python3.7/site-packages/fvcore/common/checkpoint.py",line 
    215,in resume_or_load
       return self.load(path,checkpointables=[])
    File "/hpcfs/home/mj.patino/.local/lib/python3.7/site-packages/fvcore/common/checkpoint.py",line 
    140,in load
       path = self.path_manager.get_local_path(path)
    File "/hpcfs/home/mj.patino/.local/lib/python3.7/site-packages/iopath/common/file_io.py",line 
    1109,in get_local_path
        path,force=force,**kwargs
    File "/hpcfs/home/mj.patino/.local/lib/python3.7/site-packages/iopath/common/file_io.py",line 
    764,in _get_local_path
        with file_lock(cached):
    File "/hpcfs/home/mj.patino/.conda/envs/tesisEnv/lib/python3.7/site- 
    packages/portalocker/utils.py",line 160,in __enter__
        return self.acquire()
    File "/hpcfs/home/mj.patino/.conda/envs/tesisEnv/lib/python3.7/site-packages/portalocker/utils.py",line 239,in acquire
        for _ in self._timeout_generator(timeout,check_interval):
    File "/hpcfs/home/mj.patino/.conda/envs/tesisEnv/lib/python3.7/site- 
    packages/portalocker/utils.py",line 152,in _timeout_generator
        time.sleep(max(0.001,(i * check_interval) - since_start_time))
    KeyboardInterrupt

追踪错误非常困难,但我发现错误发生在 fcntl.flock 函数中。当我以与 Google Colab 中的检测器相同的方式尝试此功能时,它起作用了,但在我的 conda 环境中,我看到了此错误

OSError [errno 9]: Bad file descriptor

当脚本尝试从 model_zoo 下载预训练并在我本地驱动器的文件中使用 fcntl.flock() 函数时,会发生此错误。此函数接收一个 io.Textiowrapper 对象并正确描述本地驱动器中的现有文件以及 LockFlags NON_BLOCKING 和 EXCLUSIVE。我已经检查了文件权限,我有读写权限。

我已经搜索过,但我没有得到它发生的原因的答案,有人知道我该如何解决这个错误吗?

非常感谢

PD:另外,我通过安装 python 3.7.9、3.7.10 和 3.9.4 进行了尝试,但发生了同样的错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。