大型prob的Python n_作业
当我在大型prob的Python n_作业,python,scikit-learn,multiprocessing,Python,Scikit Learn,Multiprocessing,当我在cross\u val\u score()中使用参数n\u jobs时 当我的数据规模较小时,它工作得很好,但当我扩大数据规模时,多处理似乎不起作用 这怎么可能 附言:我使用IPythonn\u jobs来完成工作并提供帮助 鉴于您的“小规模”多处理经验令人满意,n_作业没有理由停止在更大规模上加速实际处理 机器学习处理管道在许多情况下表现出多项式复杂性,O(nf)其中N是观测数据集(X)中的示例数,f在各种论文中被引用,用于各种学习算法,不少于2+ 随着数据集大小的增长,计算时间将以多项
cross\u val\u score()中使用参数n\u jobs
时
当我的数据规模较小时,它工作得很好,但当我扩大数据规模时,多处理
似乎不起作用
这怎么可能
附言:我使用IPythonn\u jobs
来完成工作并提供帮助
鉴于您的“小规模”多处理
经验令人满意,n_作业
没有理由停止在更大规模上加速实际处理
机器学习处理管道在许多情况下表现出多项式复杂性,O(nf)其中N是观测数据集(X)中的示例数,f在各种论文中被引用,用于各种学习算法,不少于2+
随着数据集大小的增长,计算时间将以多项式形式扩展。
然而,即使是n_工作
也可以(在大多数乐观的情况下)减少增长,但减少的幅度不超过1/{2,3,4,…,8,…,}
(但由于以下原因,该恒定系数进一步显著降低)(参考下图),这取决于在此类n_作业上可以并行运行的工作量有多少
v/s无论要启动和运行多少个作业,仍有多少工作是串行执行的。调整O/s进程优先级会有所帮助,但大型n
-s仍然会大量增加,因此在这里应用的时间越多越好)
另外一些不利影响来自于分配复制数据结构的需要,因此[PSPACE]增加了本已痛苦的[PTIME]头痛
即使是最有前途的ML学习者,其复杂性的[时间]维度也会增长O(N log(N))
因此,n\u工作
总是很有帮助,
如果不使用n_作业
,您将不得不等待更长的时间,只需尝试对n_作业=1
和n_作业=-1
运行相同的问题即可
无论如何,请继续关注。AI/ML域充满了[*时间,*空间],其中*
不仅是多项式,正如您迄今为止所经历的那样,而且是指数的许多倍,所以准备好与龙搏斗:o)
后记:
好消息是,对于先进的AI/ML处理,现代技术可以提供基础设施,这些基础设施具有合理数量的TB RAM,用于战斗[PSPACE]/[EXPSPACE]前线,同时有效地利用数千个真实CPU,因此,如果研究需要加上资金允许,你可以创造多达数千个工作岗位
是的,成千上万的人——因此,与不利用此类基础设施相比,人们可以更快地收到scikit
结果(云不是这里的答案…(如果您需要这样的高性能基础设施来解决您的大规模问题,请不要犹豫给我留言,好吗?)
(如果过程图的阿姆达尔定律视图可能的加速比对缩放有意义)
图片很好,
但是可以看到“闻到烟味”的绝对数字
[hr]v/s[min]:
最后但并非最不重要的一点是,我从标准的python
运行所有AI/ML引擎,从未在生产中从iPython运行过。使用n_jobs=-1
和其他加速技巧,全局模型搜索和超参数优化管道仍然会跨越许多天,以稳健地将t转化为最佳泛化模型的全局最小值。感谢您的回复。感谢您的回复。但我真正的问题是,当数据规模太大时,n_jobs会停止工作。它创建子进程,但它们不工作,不占用CPU资源。也许它检测到我的内存不足并停止了?[步骤0:]在iPython之外运行相同的场景(IDE-GUI/核心引擎)通信监视器过去常常挂断,这就是为什么我停止在大规模作业中使用iPython)[步骤1:]为假设粗略(相反)配置内存分配(O/s profiler或PSUTIL)-指示您是否介意重新浏览您的帖子,查看您的问题的答案,并单击[接受]选择最佳答案?这是StackOverflow的工作方式,也是会员奖励知识赞助者的方式,也有助于指导更多的读者。
>>> procPAR_SEQ_percent = 1.00
#100 % PAR:
n_jobs: Speedup x| [hr] = [s] = [min]
-----------------------------:-------------|------------=--------------=-------------
1: 1.000000 x| 3.000 [hr] = 10800.00 [s] = 180.00 [min]
2: 1.999985 x| 1.500 [hr] = 5400.04 [s] = 90.00 [min]
4: 3.999941 x| 0.750 [hr] = 2700.04 [s] = 45.00 [min]
8: 7.999763 x| 0.375 [hr] = 1350.04 [s] = 22.50 [min]
16: 15.999052 x| 0.188 [hr] = 675.04 [s] = 11.25 [min]
32: 31.996208 x| 0.094 [hr] = 337.54 [s] = 5.63 [min]
64: 63.984833 x| 0.047 [hr] = 168.79 [s] = 2.81 [min]
128: 127.939347 x| 0.023 [hr] = 84.42 [s] = 1.41 [min]
256: 255.757504 x| 0.012 [hr] = 42.23 [s] = 0.70 [min]
512: 511.030934 x| 0.006 [hr] = 21.13 [s] = 0.35 [min]
1024: 996.309963 x| 0.003 [hr] = 10.84 [s] = 0.18 [min]
2048: 996.309963 x| 0.003 [hr] = 10.84 [s] = 0.18 [min]
4096: 996.309963 x| 0.003 [hr] = 10.84 [s] = 0.18 [min]
8192: 996.309963 x| 0.003 [hr] = 10.84 [s] = 0.18 [min]
>>> procPAR_SEQ_percent = 0.99
# 99 % PAR:
n_jobs: Speedup x| [hr] = [s] = [min]
-----------------------------:------------|------------=--------------=-------------
1: 1.000000 x| 3.000 [hr] = 10800.00 [s] = 180.00 [min]
2: 1.980183 x| 1.530 [hr] = 5507.50 [s] = 91.79 [min]
4: 3.883439 x| 0.795 [hr] = 2861.23 [s] = 47.69 [min]
8: 7.476428 x| 0.427 [hr] = 1538.09 [s] = 25.63 [min]
16: 13.912327 x| 0.243 [hr] = 876.53 [s] = 14.61 [min]
32: 24.425271 x| 0.152 [hr] = 545.74 [s] = 9.10 [min]
64: 39.258095 x| 0.106 [hr] = 380.35 [s] = 6.34 [min]
128: 56.375891 x| 0.083 [hr] = 297.66 [s] = 4.96 [min]
256: 72.093421 x| 0.071 [hr] = 256.31 [s] = 4.27 [min]
512: 83.771055 x| 0.065 [hr] = 235.63 [s] = 3.93 [min]
1024: 90.961156 x| 0.063 [hr] = 225.54 [s] = 3.76 [min]
2048: 90.961156 x| 0.063 [hr] = 225.54 [s] = 3.76 [min]
4096: 90.961156 x| 0.063 [hr] = 225.54 [s] = 3.76 [min]
8192: 90.961156 x| 0.063 [hr] = 225.54 [s] = 3.76 [min]
>>> procPAR_SEQ_percent = 0.98
# 98 % PAR:
n_jobs: Speedup x| [hr] = [s] = [min]
-----------------------------:------------|------------=--------------=-------------
1: 1.000000 x| 3.000 [hr] = 10800.00 [s] = 180.00 [min]
2: 1.960770 x| 1.559 [hr] = 5613.88 [s] = 93.56 [min]
4: 3.773532 x| 0.839 [hr] = 3020.80 [s] = 50.35 [min]
8: 7.017361 x| 0.479 [hr] = 1724.26 [s] = 28.74 [min]
16: 12.307131 x| 0.299 [hr] = 1075.99 [s] = 17.93 [min]
32: 19.751641 x| 0.209 [hr] = 751.85 [s] = 12.53 [min]
64: 28.315614 x| 0.164 [hr] = 589.79 [s] = 9.83 [min]
128: 36.153350 x| 0.141 [hr] = 508.75 [s] = 8.48 [min]
256: 41.960691 x| 0.130 [hr] = 468.24 [s] = 7.80 [min]
512: 45.625087 x| 0.124 [hr] = 447.98 [s] = 7.47 [min]
1024: 47.656029 x| 0.122 [hr] = 438.09 [s] = 7.30 [min]
2048: 47.656029 x| 0.122 [hr] = 438.09 [s] = 7.30 [min]
4096: 47.656029 x| 0.122 [hr] = 438.09 [s] = 7.30 [min]
8192: 47.656029 x| 0.122 [hr] = 438.09 [s] = 7.30 [min]