使用多进程进行XGBoost模型批量预测时进程挂起问题排查求助
使用多进程进行XGBoost模型批量预测时进程挂起问题排查求助
大家好,我最近碰到一个多进程批量预测的棘手问题,想请各位大佬帮忙分析排查下。我的业务场景是用Python多进程实现批量预测,具体流程如下:
- 主进程中先通过
with mp.Pool(processes=num_processes) as pool创建进程池,接着用with Dataset(dataset_code) as data通过websocket获取数据,这部分运行完全正常。 - 之后启动多进程预测任务,核心代码如下:
result = pool.apply_async(pred_data_from_db, args=(start_index, chunk)) - 在
pred_data_from_db函数内部,我通过动态导入的方式加载用户自定义的预测逻辑:predict = getattr(module, customized_pred_func_name) - 问题就出在XGBoost的pkl模型执行预测的环节——进程直接挂起,没有任何报错日志或输出,完全卡死。
补充信息
- 模型是在多进程启动前就已经加载完成的
- 我用Flask搭建了一个进度查询接口,供其他服务获取批量预测的实时进度
- 换成SVM的pkl模型做相同流程的预测时,完全不会出现这个问题
- 我已经将XGBoost模型的
n_job参数设置为1了
希望各位能给我一些排查问题的方向或思路,非常感谢!
备注:内容来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

