Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for sharing an ORT session #248

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

quic-suppugun
Copy link

For every instance in a model instance group a new ORT session is created. This code adds support to share a session per instance group.
This support can be enabled by defining
'share_session_between_instances' to true
in triton model config "parameters". Example:
parameters [
.....
{
key: "share_session_between_instances"
value: {string_value: "true"}
}
]

This is a global parameter and cannot be defined per instance group. The user should determine if the parameter makes sense for their setup.

When log-info option of tritonserver is set to "1", the logs will indicate that a session is mapped for the instance group during the first initialized instance and reused for other instances.
Example:
TRITONBACKEND_ModelInstanceInitialize: _0_1 (CPU device 0)
TRITONBACKEND_ModelInstanceInitialize: _0_0 (CPU device 0)
Could not find a session corresponding to instance group: _0
Created session for instance: _0_1
Mapped session for instance group: _0
Reusing session for instance: _0_0

Change-Id: I6dc509b9c2451e3dd14d45f6f150b37f50b5db89

For every instance in a model instance group a new ORT session is
created. This code adds support to share a session per instance
group.
This support can be enabled by defining
'share_session_between_instances' to true
in triton model config "parameters". Example:
parameters [
.....
  {
    key: "share_session_between_instances"
    value: {string_value: "true"}
  }
]

This is a global parameter and cannot be defined per instance
group. The user should determine if the parameter makes sense for
their setup.

When log-info option of tritonserver is set to "1",
the logs will indicate that a session is mapped for the
instance group during the first initialized instance and reused for other
instances.
Example:
 TRITONBACKEND_ModelInstanceInitialize: <model>_0_1 (CPU device 0)
 TRITONBACKEND_ModelInstanceInitialize: <model>_0_0 (CPU device 0)
 Could not find a session corresponding to instance group: <model>_0
 Created session for instance: <model>_0_1
 Mapped session for instance group: <model>_0
 Reusing session for instance: <model>_0_0

Change-Id: I6dc509b9c2451e3dd14d45f6f150b37f50b5db89
@Jackiexiao
Copy link

I have compiled two images based on this PR for easy use. They are:

  • docker pull jackiexiao/tritonserver:24.03-py3-onnx-share-session
  • docker pull jackiexiao/tritonserver:24.03-onnx-py-cpu-onnx-share-session

The first image only replaces the ONNX backend while keeping everything else unchanged. The second image provides a smaller CPU version.

@adityagoel4512
Copy link

Hey! I was going to work on resolving the same issue with session sharing and noticed that this PR already exists, so thanks. Is there a reluctance to do this that I'm missing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants