{"record":{"id":"b1a56314984a6e55","repo":"invoke-ai/InvokeAI","slug":"you-should-call-create-session-before-running-mode","errorCode":null,"errorMessage":"You should call create_session before running model","messagePattern":"You should call create_session before running model","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"invokeai/backend/onnx/onnx_runtime.py","lineNumber":180,"sourceCode":"            if \"TensorrtExecutionProvider\" in providers:\n                providers.remove(\"TensorrtExecutionProvider\")\n            try:\n                self.session = InferenceSession(self.proto.SerializeToString(), providers=providers, sess_options=sess)\n            except Exception as e:\n                raise e\n            # self.session = InferenceSession(\"tmp.onnx\", providers=[self.provider], sess_options=self.sess_options)\n            # self.io_binding = self.session.io_binding()\n\n    def release_session(self):\n        self.session = None\n        import gc\n\n        gc.collect()\n        return\n\n    def __call__(self, **kwargs):\n        if self.session is None:\n            raise Exception(\"You should call create_session before running model\")\n\n        inputs = {k: np.array(v) for k, v in kwargs.items()}\n        # output_names = self.session.get_outputs()\n        # for k in inputs:\n        #     self.io_binding.bind_cpu_input(k, inputs[k])\n        # for name in output_names:\n        #     self.io_binding.bind_output(name.name)\n        # self.session.run_with_iobinding(self.io_binding, None)\n        # return self.io_binding.copy_outputs_to_cpu()\n        return self.session.run(None, inputs)\n\n    # compatability with RawModel ABC\n    def to(self, device: Optional[torch.device] = None, dtype: Optional[torch.dtype] = None) -> None:\n        pass\n\n    # compatability with diffusers load code\n    @classmethod\n    def from_pretrained(","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/backend/onnx/onnx_runtime.py#L162-L198","documentation":"OnnxRuntimeModel.__call__ requires an ONNX InferenceSession to have been created before inference. If self.session is None (create_session() was never called or the model was constructed without loading), the generic Exception is raised.","triggerScenarios":"Calling the model (i.e. onnx_model(**inputs)) directly after instantiation without first calling onnx_model.create_session(), or after a session that failed to initialize silently.","commonSituations":"Custom pipeline code instantiating OnnxRuntimeModel manually; reusing a model object across processes/threads where session creation never ran; failures during model load swallowed upstream leaving session None.","solutions":["Call model.create_session() once before the first inference call.","Use the standard diffusers from_pretrained() path, which sets up the session for you.","If the session was dropped after an error, recreate it before reusing the model."],"exampleFix":"// before\nmodel = OnnxRuntimeModel(...)\noutputs = model(**inputs)  # raises\n// after\nmodel = OnnxRuntimeModel(...)\nmodel.create_session()\noutputs = model(**inputs)","handlingStrategy":"validation","validationCode":"if getattr(model, 'session', None) is None:\n    model.create_session()\noutputs = model(**inputs)","typeGuard":"def session_ready(model) -> bool:\n    return getattr(model, 'session', None) is not None","tryCatchPattern":"try:\n    outputs = model(**inputs)\nexcept Exception as e:\n    if 'create_session before running model' in str(e):\n        model.create_session()\n        outputs = model(**inputs)\n    else:\n        raise","preventionTips":["Always call create_session() immediately after constructing OnnxRuntimeModel.","Prefer from_pretrained(), which initializes the session for you.","Never share a model object across processes without re-creating the session."],"tags":["onnx","lifecycle","initialization"],"backgroundTag":"session-not-initialized","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}