先说解决方案:把xgboost model的num_worker参数调小。
这个问题是在本地测试xgb时候碰到的,之前code在分布式集群上面测试过了,并没有问题。
bug诡异,所以查了一波几乎没有答案,只有一个,说可能是某个partition上data size为0。于是把问题定位在partition不合适上,但是本地partition不合适…emm觉得可能是df的partition分的太大了,而本地测试为了run起来只用了很少量的数据导致的,于是拼命在repartition的时候设置超小的值,but it doesn't work...
调了好半天发现是xgb的num_worker这个参数设置太大了。xgb中num_worker这个参数是表示模型在run的时候,会并行跑多少个worker,而每个worker起码是会分配到一个partition的。所以partition设置的越小,反而越多worker没有数据,嗷嗷待哺。
网友评论