def bind_kv_io(self, io_binding: "IOBinding"):
        """Bind the cache tensors to the IO binding object.

        Both past and present key-value tensors are bound to the same cache with length max_cache_len.
        Appropriate attention mask should be used to inform the GroupQueryAttention contrib op about the
            valid length of the key-value tensors and input tokens.

        :param io_binding: IOBinding object to bind the cache tensors.
        """
        for past_k, present_k in zip(self.past_names, self.present_names):
            io_binding.bind_ortvalue_input(past_k, self.cache[past_k])
            io_binding.bind_ortvalue_output(present_k, self.cache[past_k])
Bind the cache tensors to the IO binding object.

        Both past and present key-value tensors are bound to the same cache with length max_cache_len.
        Appropriate attention mask should be used to inform the GroupQueryAttention contrib op about the
            valid length of the key-value tensors and input tokens.

        :param io_binding: IOBinding object to bind the cache tensors.
        
examples/utils/kv_cache_utils.py