xiuqhou / Salience-DETR

[CVPR 2024] Official implementation of the paper "Salience DETR: Enhancing Detection Transformer with Hierarchical Salience Filtering Refinement"
https://arxiv.org/abs/2403.16131
Apache License 2.0
105 stars 7 forks source link

谁来救救我。。。运行时报错#EOFError: Ran out of input #15

Closed pk-tzy closed 1 month ago

pk-tzy commented 2 months ago
for epoch in range(cfg.starting_epoch, cfg.num_epochs):
    train_one_epoch_acc(
        model=model,
        optimizer=optimizer,
        data_loader=train_loader,
        epoch=epoch,
        print_freq=cfg.print_freq,
        max_grad_norm=cfg.max_norm,
        accelerator=accelerator,
    )
    lr_scheduler.step()

main.py脚本进入循环train_one_epoch_acc报错。 错误信息如下: _pickle.PicklingError: Can't pickle <function at 0x0000026F6BAAF790>: attribute lookup on transforms.presets failed self = reduction.pickle.load(from_parent) EOFError: Ran out of input

Kunghaoyu commented 1 month ago

我也是这个问题,你解决了没?

xiuqhou commented 1 month ago

能否提供一些具体的信息,包括操作系统、包版本、运行的命令,以及代码是否进行过修改?

pk-tzy commented 1 month ago

能否提供一些具体的信息,包括操作系统、包版本、运行的命令,以及代码是否进行过修改?

[2024-06-24 20:39:56 det.main]: Start training Traceback (most recent call last): File "...\Salience-DETR\main.py", line 205, in train() File "...\Salience-DETR\main.py", line 178, in train train_one_epoch_acc( File "...\Salience-DETR\util\engine.py", line 37, in train_one_epoch_acc prefetcher = DataPrefetcher(data_loader, accelerator.device) File "...\Salience-DETR\util\collate_fn.py", line 23, in init self.preload() File "...\Salience-DETR\util\collate_fn.py", line 27, in preload self.next_batch = next(self.loader) File "...\salience\lib\site-packages\accelerate\data_loader.py", line 451, in iter dataloader_iter = super().iter() File "...\salience\lib\site-packages\torch\utils\data\dataloader.py", line 433, in iter self._iterator = self._get_iterator() File "...\salience\lib\site-packages\torch\utils\data\dataloader.py", line 386, in _get_iterator return _MultiProcessingDataLoaderIter(self) File "...\salience\lib\site-packages\torch\utils\data\dataloader.py", line 1039, in init w.start() File "...\salience\lib\multiprocessing\process.py", line 121, in start self._popen = self._Popen(self) File "...\salience\lib\multiprocessing\context.py", line 224, in _Popen return _default_context.get_context().Process._Popen(process_obj) File "...\salience\lib\multiprocessing\context.py", line 327, in _Popen return Popen(process_obj) File "...\salience\lib\multiprocessing\popen_spawn_win32.py", line 93, in init reduction.dump(process_obj, to_child) File "...\salience\lib\multiprocessing\reduction.py", line 60, in dump ForkingPickler(file, protocol).dump(obj) _pickle.PicklingError: Can't pickle <function at ...>: attribute lookup on transforms.presets failed Traceback (most recent call last): File "", line 1, in File "...\salience\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "...\salience\lib\multiprocessing\spawn.py", line 126, in _main self = reduction.pickle.load(from_parent) EOFError: Ran out of input

这是我在windows下的pycharm报错信息,没有修改代码,只是安装了相应的依赖。

pk-tzy commented 1 month ago

能否提供一些具体的信息,包括操作系统、包版本、运行的命令,以及代码是否进行过修改?

您好,我的包的版本是python3.8+pytorch1.2.0

Kunghaoyu commented 1 month ago

windows11,pytorch版本是2.3.0+cu121,单张3060卡,直接在pycharm右键运行的,没用命令行,报错内容跟楼主一样。我再用4090卡,linux环境用命令行运行试试。代码没改过,用的是coco数据集。

Kunghaoyu commented 1 month ago

感谢大佬回复!已经在github上回复了,麻烦看一下,再次感谢! 从 Windows 版邮件https://go.microsoft.com/fwlink/?LinkId=550986发送


发件人: Hou Xiuquan @.> 发送时间: Monday, June 24, 2024 8:04:29 PM 收件人: xiuqhou/Salience-DETR @.> 抄送: Gong Haoyu @.>; Comment @.> 主题: Re: [xiuqhou/Salience-DETR] 谁来救救我。。。运行时报错#EOFError: Ran out of input (Issue #15)

能否提供一些具体的信息,包括操作系统、包版本、运行的命令,以及代码是否进行过修改?

― Reply to this email directly, view it on GitHubhttps://github.com/xiuqhou/Salience-DETR/issues/15#issuecomment-2186417018, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BAONHAHBV4CP3VO6FAFZZRLZJADM3AVCNFSM6AAAAABJP3NIIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBWGQYTOMBRHA. You are receiving this because you commented.Message ID: @.***>

xiuqhou commented 1 month ago

感谢两位的回复,这个问题可能是因为windows上多进程后端和linux不太一样(issue #10 也有类似的报错),建议先使用linux运行代码(如果只有windows电脑,可以安装linux子系统),我抽空在windows上调试看看能否复现问题。

强烈建议使用linux跑代码,我不能保证在windows上的兼容性。本代码自定义CUDA算子的部分windows也不支持(参考issue #3 )

pk-tzy commented 1 month ago

感谢两位的回复,这个问题可能是因为windows上多进程后端和linux不太一样(issue #10 也有类似的报错),建议先使用linux运行代码(如果只有windows电脑,可以安装linux子系统),我抽空在windows上调试看看能否复现问题。

强烈建议使用linux跑代码,我不能保证在windows上的兼容性。本代码自定义CUDA算子的部分windows也不支持(参考issue #3 )

感谢两位的回复,这个问题可能是因为windows上多进程后端和linux不太一样(issue #10 也有类似的报错),建议先使用linux运行代码(如果只有windows电脑,可以安装linux子系统),我抽空在windows上调试看看能否复现问题。

强烈建议使用linux跑代码,我不能保证在windows上的兼容性。本代码自定义CUDA算子的部分windows也不支持(参考issue #3 )

好呢!感谢您的回复,祝您学术长青!

Kunghaoyu commented 1 month ago

感谢两位的回复,这个问题可能是因为windows上多进程后端和linux不太一样(issue #10 也有类似的报错),建议先使用linux运行代码(如果只有windows电脑,可以安装linux子系统),我抽空在windows上调试看看能否复现问题。

强烈建议使用linux跑代码,我不能保证在windows上的兼容性。本代码自定义CUDA算子的部分windows也不支持(参考issue #3 )

谢谢大佬!我用的pycharm远程的服务器,右键直接运行可以跑通。但是我用你们给的这个命令行CUDA_VISIBLE_DEVICES=0 accelerate launch main.py在终端运行时,就会出现这个报错:

ImportError: tokenizers>=0.11.1,!=0.11.3,<0.14 is required for a normal functioning of this module, but found tokenizers==0.14.1.
Try: pip install transformers -U or pip install -e '.[dev]' if you're working with git main

然后就跟transformers和tokenizers拉扯了半天,还是没解决。您有遇到过这类问题吗?

xiuqhou commented 1 month ago

@Kunghaoyu 我没有遇到过这个问题,我们依赖的第三方库并没有使用transformers包,所以我推测应该是accelerate框架的版本和pytorch不匹配导致。您可以试试重新安装accelerate框架,或者新建一个conda环境重新安装所有包试一试。另外请尽可能使用conda而不是pip安装第三方的包,因为pip的依赖解析器有问题,经常会自动安装最新版本的accelerate,导致和老版本pytorch不兼容

xiuqhou commented 1 month ago

@Kunghaoyu @pk-tzy 我找到问题的原因了,windows系统上不能在多进程中使用lambda方法,目前我把lambda方法替换成了普通方法,在我自己的windows上运行没问题了。

两位可以再试试代码能否运行,如果还有问题欢迎继续提issue~