MCPcopy Create free account
hub / github.com/zai-org/CodeGeeX / TopQueryLayer

Class TopQueryLayer

codegeex/torch/codegeex_model.py:479–561  ·  view source on GitHub ↗

A single top query layer. Top query layer takes input with size [b, s, h] and returns an output of the same size.

Source from the content-addressed store, hash-verified

477
478
479class TopQueryLayer(torch.nn.Module):
480 """A single top query layer.
481
482 Top query layer takes input with size [b, s, h] and returns an
483 output of the same size.
484 """
485
486 def __init__(
487 self,
488 hidden_size,
489 num_attention_heads,
490 layer_number,
491 layernorm_epsilon=1e-5,
492 ):
493 super(TopQueryLayer, self).__init__()
494 self.hidden_size = hidden_size
495 self.num_attention_heads = num_attention_heads
496 self.layernorm_epsilon = layernorm_epsilon
497 self.layer_number = layer_number
498
499 # Use FP32 for Layernorm
500 self.input_layernorm = torch.nn.LayerNorm(self.hidden_size,
501 eps=self.layernorm_epsilon)
502
503 # Self attention.
504 self.attention = TopQuerySelfAttention(self.hidden_size,
505 self.num_attention_heads,
506 self.layer_number)
507 # Layernorm on the input data.
508 self.post_attention_layernorm = torch.nn.LayerNorm(self.hidden_size,
509 eps=self.layernorm_epsilon)
510
511 # MLP
512 self.mlp = MLP(self.hidden_size)
513
514 def forward(
515 self,
516 hidden_states,
517 query_hidden_state,
518 attention_mask,
519 layer_past=None,
520 get_key_value=False,
521 prompt_length=None,
522 context_length=None,
523 ):
524 # hidden_states: [b, s, h]
525 assert query_hidden_state != None
526
527 # Use FP32 for Layernorm
528 # layernorm_output = self.input_layernorm(hidden_states.float()).half()
529 layernorm_output = self.input_layernorm(hidden_states)
530
531 # Self attention.
532 attention_output = self.attention(layernorm_output,
533 query_hidden_state,
534 attention_mask,
535 layer_past=layer_past,
536 get_key_value=get_key_value,

Callers 1

__init__Method · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected