如何解决如何修复/调试scikit中引发的此多进程终止的工作程序错误学习
我发现我的scipy模块与Windows 10 C ++可再发行版本不兼容。
我所做的只是下载了最新的Visual Studio,并安装了“单个组件”部分中列出的C ++可再发行的更新。
安装后,我将重新启动计算机并运行。
import scipy
scipy.test()
一旦实际运行,我就尝试在上面的代码块修复它。
我认为这归结为使用全新版本的python和scipy安装Windows 10的旧版本
解决和调试花费了很长时间。希望它会有所帮助。
解决方法
我最近安装了一台新机器,以帮助减少拟合模型和数据整理的运行时间。
我做了一些初步的基准测试,一切都变得很顺畅,但是当我尝试使用scikit学习启用多进程工作者时遇到了麻烦。
我将错误简化为不与原始代码相关联,因为我启用了此功能,而在其他计算机和VM上都没有问题。
我还做了内存分配检查,以确保我的机器没有耗尽可用的RAM。我有16gb的RAM,所以应该没有问题,但是如果我错过了一些东西,我就保留了测试的输出。
考虑到附近的回溯错误,我可以告诉我的操作系统正在杀死它,但是对于我一生来说,我不知道为什么。据我所知,我的代码仅在使用单个CPU内核时才运行。
我正在运行Windows 10,AMD ryzen 7 2700x,16GB RAM
码
import sklearn
import numpy as np
import tracemalloc
import time
from sklearn.model_selection import cross_val_score
from numpy.random import randn
from sklearn.linear_model import Ridge
##################### memory allocation snapshot
tracemalloc.start()
start_time = time.time()
snapshot1 = tracemalloc.take_snapshot()
###################### model
X = randn(815000,100)
y = randn(815000,1)
mod = Ridge()
sc = cross_val_score(mod,X,y,verbose =10,n_jobs=3)
################### Second memory allocation snapshot
snapshot2 = tracemalloc.take_snapshot()
top_stats = snapshot2.compare_to(snapshot1,'lineno')
print("[ Top 10 ]")
for stat in top_stats[:5]:
print(stat)
由此产生的预期结果非常明显,只是拟合模型返回的分数。
错误输出
[Parallel(n_jobs=3)]: Using backend LokyBackend with 3 concurrent workers.
[Parallel(n_jobs=3)]: Done 3 out of 3 | elapsed: 0.2s remaining: 0.0s
---------------------------------------------------------------------------
TerminatedWorkerError Traceback (most recent call last)
<ipython-input-18-b2bdfd425f82> in <module>
16 y = randn(815000,1)
17 mod = Ridge()
---> 18 sc = cross_val_score(mod,n_jobs=3)
..........
TerminatedWorkerError: A worker process managed by the executor was unexpectedly terminated.
This could be caused by a segmentation fault while calling the function or by an excessive memory usage causing the Operating System to kill the worker.
记忆输出
[ Top 5 ]
<ipython-input-18-b2bdfd425f82>:15: size=622 MiB (+622 MiB),count=3 (+3),average=207 MiB
<ipython-input-18-b2bdfd425f82>:16: size=6367 KiB (+6367 KiB),average=2122 KiB
~python37\lib\inspect.py:732: size=37.2 KiB (+26.2 KiB),count=596 (+419),average=64 B
~python37\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py:292: size=7072 B (+3808 B),count=13 (+7),average=544 B
~python37\lib\pickle.py:549: size=5728 B (+3408 B),count=14 (+8),average=409 B
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。