예시를 통해 토큰 ID를 임베딩 벡터로 변환하는 방법을 알아보죠. 다음과 같은 4개의 입력 토큰(토큰 ID가 2, 3, 5, 1)이 있다고 가정해 보겠습니다.
input_ids = torch.tensor([2, 3, 5, 1])
간단한 설명을 위해 (GPT-2의 BPE 토크나이저에 있는 50,257개의 단어로 구성된 어휘사전 대신) 단 6개의 단어로 구성된 작은 어휘사전을 가정해 보겠습니다. 크기가 3인 임베딩을 만들겠습니다(GPT-3의 임베딩 크기는 12,288차원입니다).
vocab_size = 6
output_dim = 3
vocab_size와 output_dim을 사용해 파이토치의 임베딩 층을 초기화할 수 있습니다. 결과를 재현 가능하도록 만들기 위해 랜덤 시드(random seed)를 123으로 지정합니다.
torch.manual_seed(123)
embedding_layer = torch.nn.Embedding(vocab_size, output_dim)
print(embedding_layer.weight)