[Tokenizer]token_embedding

ma-kjh·2024년 12월 23일
0

LLM

목록 보기
15/15

NLP 모델을 학습할 때 tokenizer의 output은 tokenized된 text 꾸러미들이다. (text_embedding이 아님)

LLM(대규모 언어 모델)의 가장 앞단에서는 토크나이저의 출력(Token IDs)이 입력으로 사용되며, 이를 임베딩(Embedding)으로 변환하는 과정을 거치게됨. 이를 단계적으로 살펴보면 다음을 따름:


1. Tokenizer의 역할

  • 입력 텍스트 → Token IDs 변환

    • 토크나이저는 입력 텍스트를 토큰화하여 모델의 vocabulary Size에 해당하는 정수 ID로 변환.
    • 예를 들어, "Hello, world!"라는 텍스트가 주어졌을 때, 이를 아래와 같이 변환한다고 가정:
      tokenizer("Hello, world!")
      # 출력: [15496, 11, 995]
      여기서 각 숫자는 해당 토큰의 ID입니다.
  • 출력: Vocabulary Size의 정수값 (Token IDs)

    • 토큰 ID의 범위는 [0, vocab_size-1].

2. Embedding Layer의 역할

  • Token IDs → Dense Embedding Vector 변환
    • 토크나이저의 출력(Token IDs)은 정수 리스트이므로, 이를 학습 가능한 실수 벡터로 변환해야 함.
    • 각 Token ID는 Embedding Layer에서 Dense Vector로 매핑됨.
    • 임베딩 벡터의 차원은 모델에서 정의된 embedding_dim(예: 768, 1024 등).

임베딩 프로세스:

  • 토큰 ID가 vocab_size(어휘 크기)의 one-hot vector로 변환된 뒤, Embedding Matrix와 곱해져 Dense Embedding을 만듬.
  • 임베딩 행렬 크기: [vocab_size, embedding_dim]
    • 예: vocab_size=50,000, embedding_dim=768[50,000, 768]

예시:

token_ids = [15496, 11, 995]  # 토크나이저 출력
# 임베딩 벡터로 변환
embedding = Embedding(vocab_size, embedding_dim)
output = embedding(token_ids)
# 출력: Tensor of shape [3, embedding_dim]

3. LLM 모델의 가장 앞단에서 작동

  • Embedding Layer는 입력 데이터의 첫 번째 단계로 작동합니다.
  • 변환 과정:
    1. 텍스트 → Token IDs (tokenizer)
    2. Token IDs → Embedding Vectors (Embedding Layer)
    3. Embedding Vectors → 모델의 첫 번째 레이어(Transformer 블록)로 전달

Transformer 블록의 입력:

  • 일반적으로, 각 토큰의 Dense Embedding + Position Embedding의 합.
  • 입력 텐서 크기: [batch_size, seq_len, embedding_dim]

LLM의 입력 단계:
1. Tokenizer가 텍스트를 Token IDs로 변환 (범위: [0, vocab_size-1]).
2. Embedding Layer가 각 Token ID를 Dense Embedding Vector로 변환.
3. 변환된 임베딩 벡터와 Position Embedding을 더하여(일반적인 경우) 모델의 첫 번째 Transformer 블록에 입력.

profile
거인의 어깨에 올라서서 더 넓은 세상을 바라보라 - 아이작 뉴턴

0개의 댓글