xgboost 加载模型时,出现 AssertError:read can not have position excceed buffer length 错误,如果是线上的 java 服务有可能导致 java 进程挂掉,那是什么原因导致的呢?解决方法是什么?
报错信息及原因
报错信息如下:
AssertError:read can not have position excceed buffer length
原因最有可能的是,训练出来的模型的 xgboost 版本与线上使用的 xgboost jar 包版本不一致导致兼容性问题,一般情况下,离线的 xgboost 版本高于线上使用的。
解决方法
xgboost 的 model 文件有兼容性问题。
高版本的 xgboost 可以兼容低版本的,但是低版本的 xgboost 不能兼容高版本。
笔者 case 的解决方式是升级线上的 xgboost 版本让其大于等于离线的 xgb 版本,或者离线的 xgb 版本对齐线上的。