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

Questions about reuse the past "x_a" cache #32

Open
SunHaoOne opened this issue Dec 4, 2023 · 0 comments
Open

Questions about reuse the past "x_a" cache #32

SunHaoOne opened this issue Dec 4, 2023 · 0 comments

Comments

@SunHaoOne
Copy link

SunHaoOne commented Dec 4, 2023

周博士:
您好!

我在阅读您的代码时注意到了一些关于加快推理速度的技巧,特别是关于cache的使用以及如何处理帧与帧之间的agent编码问题。我有几个问题想要进一步了解和确认:
image

  • Temporal Attention中的KV Cache使用:在处理新帧时,您使用了历史的agent encodings。我理解这里应该使用的是KV Cache技巧,通过下三角矩阵的mask来保证推理结果的一致性。请问我的理解是否正确?

  • Agent数量与顺序不一致的处理:

    • 在连续的帧中,agent的数量可能不同,例如上一帧有5个agent,新一帧只有2个。如果past的维度是A, T-1, D,比如5, T-1, D,而新一帧的维度是2, 1, D,这种情况下应该如何合并这些数据?
    • 如果agent的传入顺序在不同帧中不同,比如上一帧是X, Y, Z,新一帧是Y, Z, X,这在合并时可能会造成问题。应该如何处理这种顺序变化?
  • 单帧Agent的edge和r计算:当只传入一个时间点的agent数据时,例如计算edge_index_t可能为空,这会导致无法计算rel_pos_t等相对关系,进而影响后续的Temporal Attention计算。我试了试每个agent的edge_index_t给的值为[[0],[0]],但attention的结果略有差异。这种差异可能是因为单个时间步的position_embedding和连续时间步骤的position_embedding不同导致的,在这种情况下应该如何处理能保证推理和训练结果一致性呢?

附上相关我理解的代码修改段落供参考,麻烦看看我的理解是否正确:

for i in range(self.num_layers):
    x_a = x_a.reshape(-1, self.hidden_dim)
    x_a = self.t_attn_layers[i]((x_a, x_a), r_t, edge_index_t, kv_cache = kv_cache)
    x_a = x_a.reshape(-1, 1, self.hidden_dim).transpose(0, 1).reshape(-1, self.hidden_dim)
    x_pl = x_pl.transpose(0, 1).reshape(-1, self.hidden_dim)
    x_a = self.pl2a_attn_layers[i]((x_pl, x_a), r_pl2a, edge_index_pl2a)
    x_a = self.a2a_attn_layers[i]((x_a, x_a), r_a2a, edge_index_a2a)
    x_a = x_a.reshape(1, -1, self.hidden_dim).transpose(0, 1)

if x_a_past is not None:
    x_a = torch.cat([x_a_past[1:, :, :], x_a], dim = 1) 
return x_a, kv_cache

期待您的回复和指导。

谢谢!

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

No branches or pull requests

1 participant