
특징:
장점:
단점:
특징:
장점:
단점:
# MQA
def multi_query_attention(query, key, value):
# 하나의 key/value 쌍을 여러 query와 공유
attention_scores = dot_product(query, key)
attention_weights = softmax(attention_scores)
output = dot_product(attention_weights, value)
return output
# GQA
def grouped_query_attention(query, key, value, num_groups):
# query를 그룹으로 나누어 처리
query_groups = split_into_groups(query, num_groups)
outputs = []
for group in query_groups:
attention_scores = dot_product(group, key)
attention_weights = softmax(attention_scores)
output = dot_product(attention_weights, value)
outputs.append(output)
return concatenate(outputs)
이러한 어텐션 메커니즘들은 모델의 효율성과 성능 사이의 균형을 맞추는 데 중요한 역할을 합니다.
멀티 쿼리 어텐션(MQA)과 그룹 쿼리 어텐션(GQA)은 주로 인퍼런스(추론) 단계에서 사용됩니다.
인퍼런스:
# 학습된 MHA 모델을 MQA/GQA로 변환
def convert_to_mqa(mha_model):
# Key/Value 헤드 평균화
averaged_kv = average_heads(mha_model.kv_heads)
return MQAModel(
query_heads=mha_model.query_heads,
shared_kv=averaged_kv
)
이러한 어텐션 메커니즘은 실제 서비스 배포 시 효율적인 추론을 위해 중요합니다.
그러나 학습/파인튜닝에도 MQA/GQA를 사용하는 경우가 있습니다.
단점:
따라서 상황과 요구사항에 따라 학습 단계에서도 MQA/GQA를 선택할 수 있습니다.