Open abilashasomi opened 1 year ago
@xadupre, do you have any idea?
If the highest value is 289, then it is an issue with the converter or xgboost, not onnxruntime. There should be a way to dump a xgboost model and check if the xgboost model contains the feature 289 or not. If yes, then xgboost finds at least 289 features. Otherwise, it is an issue with the converter.
@xadupre @wschin thanks for checking the issue, With the help of Netron app, I have visualized the graph for the onnx model and I could see only 128 features , PFA for the reference, Also please let me know what else information I can share to find the root cause
A very similar thing is happening to me, narrowed down that this happens on the change from 1.12.1 to 1.13.1.
Hi @abilashasomi @mvelax, Is this issue fixed. I'm facing the same issue !
I'm experiencing the same issue
ONNX: Non-zero status code returned while running TreeEnsembleClassifier node. Name:'TreeEnsembleClassifier' Status Message: E:\workspace\external\onnx\onnx-runtime\core\providers\cpu\ml\tree_ensemble_common.h:450 onnxruntime::ml::detail::TreeEnsembleCommon<float,float,float>::ComputeAgg One path in the graph requests feature 45 but input tensor has 44 features.
I was able to resolve the issue by rearranging the dataframe columns. The columns not being used to train, including the label column should be at the end (to the right)
Describe the issue
Converted xgbclassifier model to ONNX and when inferred via onnxruntime getting below error ERROR:root:[ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Non-zero status code returned while running TreeEnsembleClassifier node. Name:'TreeEnsembleClassifier' Status Message: C:\a_work\1\s\onnxruntime\core\providers\cpu\ml\tree_ensemble_common.h:418 onnxruntime::ml::detail::TreeEnsembleCommon<float,float,float>::ComputeAgg One path in the graph requests feature 289 but input tensor has 128 features.
I have debugged and verified the features of model and input data both seems to have 128 only. Also tried below
To reproduce
### XGBClassifier to ONNX model conversion after model training:
Define the initial type for input variables
input_type = [('float_input', FloatTensorType([None, <128>]))]
Convert the model to ONNX format
onnx_model = onnxmltools.convert.convert_xgboost(,initial_types=input_type,target_opset=8)
Save the ONNX model
onnx_model_output_path_xgb = os.path.join(args.model_dir, "model.onnx")
onnxmltools.utils.save_model(onnx_model,onnx_model_output_path_xgb)
with open(onnx_model_output_path_xgb, "wb") as f: f.write(onnx_model.SerializeToString())
### ONNX Model Inference code in the Python application:
import onnxruntime as ort
sess = ort.InferenceSession(model_path, providers=ort.get_available_providers()) input_name = sess.get_inputs()[0].name output_name = sess.get_outputs()[0].name output = sess.run([output_name], {input_name: inference_data_np})[0]
ONNX_Model_Details.txt
Urgency
No response
Platform
Linux
OS Version
Ubuntu 22.04
ONNX Runtime Installation
Released Package
ONNX Runtime Version or Commit ID
1.15.0
ONNX Runtime API
Python
Architecture
X64
Execution Provider
Default CPU
Execution Provider Library Version
No response