Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

批量使用ddp.parse()方法报错 #56

Open
WyHy opened this issue Dec 19, 2021 · 7 comments
Open

批量使用ddp.parse()方法报错 #56

WyHy opened this issue Dec 19, 2021 · 7 comments

Comments

@WyHy
Copy link

WyHy commented Dec 19, 2021

开发者你好,感谢你们的工作,这个工具很好用。
我在使用中出现这样一个问题,实例化ddparser之后,重复调用.parse方法,大概12万次以后,就会报一个 RuntimeError: thread constructor failed: Resource temporarily unavailable错误,我的代码及错误详情如下:

运行代码

from ddparser import DDParser

ddp = DDParser(prob=True, use_pos=True, buckets=True, use_cuda=False)
# text.json 是一个 文本list 文件,每行是一个短句
with open('text.json', 'rb') as f:
    data = json.load(f)
    rets = []
    for line in data:
        ret = ddp.parse([line])
        rets.append(ret)

错误详情

File "/Users/wangy/PycharmProjects/test/data.py", line 385, in get_ddparser_results
    ret = ddp.parse([line])
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/ddparser/run.py", line 399, in parse
    pred_arcs, pred_rels, pred_probs = epoch_predict(self.env, self.args, self.model, dataset.loader)
  File "<decorator-gen-270>", line 2, in epoch_predict
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 276, in __impl__
    return func(*args, **kwargs)
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/ddparser/parser/model.py", line 185, in epoch_predict
    for batch, inputs in enumerate(loader(), start=1):
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/paddle/fluid/reader.py", line 960, in __iter__
    self._init_iterable()
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/paddle/fluid/reader.py", line 909, in _init_iterable
    self._pin_memory)
RuntimeError: thread constructor failed: Resource temporarily unavailable

这里的 ddparser==1.0.6,paddlepaddle==2.1.3

感谢!

@zhangyimi
Copy link
Collaborator

这个错误能够复现么?
错误看起来是创建线程时资源不够导致的,跟你机器当时的运行状态或者配置比较相关,我本地重复调用25w次未复现。
可以考虑修改本地进程允许的最大线程数避免一下。

@WyHy
Copy link
Author

WyHy commented Dec 20, 2021

这个错误能够复现么? 错误看起来是创建线程时资源不够导致的,跟你机器当时的运行状态或者配置比较相关,我本地重复调用25w次未复现。 可以考虑修改本地进程允许的最大线程数避免一下。

可以重现,每次都会导致进程崩掉,已经这个样子一周情况了。我用的是 mac monterey 12.0.1。
这个解释中我理解的是paddle会不断创建线程,导致线程资源耗尽,我如果调高本地最大线程数,会不会在更高短句数据量下也崩溃掉?
你这边追踪bug的话还需要哪些数据,我这边尽量提供给你

@zhangyimi
Copy link
Collaborator

zhangyimi commented Dec 20, 2021

我如果调高本地最大线程数,会不会在更高短句数据量下也崩溃掉?

存在这种可能,因为这涉及到paddle的dataloader内部对资源的调度。
但目前未见过用户报类似的case,paddle下也未见相关issue,建议你先换台空闲机器或者调大最大线程数看是否可以稳定复现。
如果还不行,可以提供下可以复现的数据及脚本。

@only-yao
Copy link

only-yao commented Dec 21, 2021

我也遇到了同样的问题, 会不停的创建线程, 使用的api 是 ddp.parse_seg

paddlepaddle==2.1.0
ddparser==1.0.6
Resource temporarily unavailable

@WyHy
Copy link
Author

WyHy commented Dec 22, 2021

我用这个脚本本地运行,大概在160000+次的时候会报新的错误,无法创建线程

# 运行脚本
from ddparser import DDParser

ddp = DDParser()
count = 0
for i in range(500000):
    text = "两侧额顶叶深部白质区及侧脑室周围多发点状、小斑片及片状异常信号"
    ddp_res = ddp.parse(text)
    count += 1
    if i % 10000 == 0:
        print("==>", i)

# 错误信息
==> 170000
Traceback (most recent call last):
  File "/Users/wangy/PycharmProjects/test/tests.py", line 40, in <module>
    ddp_res = ddp.parse(text)
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/ddparser/run.py", line 399, in parse
    pred_arcs, pred_rels, pred_probs = epoch_predict(self.env, self.args, self.model, dataset.loader)
  File "<decorator-gen-270>", line 2, in epoch_predict
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 276, in __impl__
    return func(*args, **kwargs)
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/ddparser/parser/model.py", line 185, in epoch_predict
    for batch, inputs in enumerate(loader(), start=1):
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/paddle/fluid/reader.py", line 961, in __iter__
    self._start()
  File "/Users/wangy/anaconda3/lib/python3.7/site-packages/paddle/fluid/reader.py", line 947, in _start
    self._thread.start()
  File "/Users/wangy/anaconda3/lib/python3.7/threading.py", line 852, in start
    _start_new_thread(self._bootstrap, ())
RuntimeError: can't start new thread

@zhangyimi 辛苦帮忙看看是什么原因,这里的 ddparser==1.0.6,paddlepaddle==2.1.3
非常感谢!

@zhangyimi
Copy link
Collaborator

这个问题会在近期修复。

@WyHy
Copy link
Author

WyHy commented Dec 23, 2021

这个问题会在近期修复。

辛苦,非常期待!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants