MCPcopy Create free account
hub / github.com/OpenBitSys/BitDistiller / LlamaAttentionFused

Class LlamaAttentionFused

inference/models/llama.py:73–221  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

71
72
73class LlamaAttentionFused(nn.Module):
74 def __init__(self, args):
75 super().__init__()
76 self.args = args
77 self.n_local_heads = args.num_attention_heads
78 self.hidden_size = args.hidden_size
79 self.num_heads = args.num_attention_heads
80 self.head_dim = self.hidden_size // self.num_heads
81
82 self.num_key_value_heads = args.num_key_value_heads
83 self.num_key_value_groups = self.num_heads // self.num_key_value_heads
84 self.max_position_embeddings = args.max_position_embeddings
85 # self.rope_theta = args.rope_theta
86
87 kv_max_seq_len = min(max_seq_len, self.max_position_embeddings)
88
89 self.q_proj = nn.Linear(
90 self.hidden_size,
91 self.num_heads * self.head_dim,
92 bias=False,
93 )
94 self.k_proj = nn.Linear(
95 self.hidden_size,
96 self.num_key_value_heads * self.head_dim,
97 bias=False,
98 )
99 self.v_proj = nn.Linear(
100 self.hidden_size,
101 self.num_key_value_heads * self.head_dim,
102 bias=False,
103 )
104 self.o_proj = nn.Linear(
105 self.num_heads * self.head_dim,
106 self.hidden_size,
107 bias=False,
108 )
109
110 # following fastertransformer definition
111 self.cache_v = (
112 torch.zeros(
113 (
114 max_batch_size,
115 self.num_key_value_heads,
116 # args.max_position_embeddings,
117 kv_max_seq_len,
118 self.head_dim,
119 )
120 )
121 .cuda()
122 .half()
123 ) # added to half
124 # 8: pack 8 fp16 in FT, if fp32 then use 4
125 self.cache_k = (
126 torch.zeros(
127 (
128 max_batch_size,
129 self.num_key_value_heads,
130 self.head_dim // 8,

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected