GPT 모델의 절대 임베딩 방법에서는 token_embedding_layer와 동일한 임베딩 차원을 가지는 또 다른 임베딩 층을 만들면 됩니다.
context_length = max_length
pos_embedding_layer = torch.nn.Embedding(context_length, output_dim)
pos_embeddings = pos_embedding_layer(torch.arange(context_length))
print(pos_embeddings.shape)
pos_embeddings의 입력은 일반적으로 플레이스홀더(placeholder) 벡터인 torch.arange(context_length)입니다. 이 벡터는 숫자 0, 1, … 최대 입력 길이 -1까지의 시퀀스를 담고 있습니다. context_length는 LLM이 지원하는 입력 크기를 나타내는 변수입니다. 여기서는 입력 텍스트의 최대 길이와 같게 설정했습니다. 실제로 입력 텍스트는 지원하는 문맥 길이보다 길 수 있으며 이 경우 텍스트를 잘라야 합니다.
앞 코드의 출력은 다음과 같습니다.
torch.Size([4, 256])