대규모 언어 모델, 핵심만 빠르게! 챌린지 4/5

1장. 머신러닝과 기초

2장. 언어 모델링 기초

3장. 순환 신경망

 

4장. 트랜스포머

  • 트랜스포머 모델의 유형
    • 인코더-디코더 기반 구조 : 기계 번역
    • 인코더 기반 구조 : 분류
    • 디코더 기반 구조 : 채팅 LM
  • 자기회귀 언어 모델 훈련에 많이 사용하는 디코더 기반 트랜스포머 중심으로 구성
  • 트랜스포머의 혁신 : 셀프 어텐션, 위치 인코딩
    • 셀프 어텐션 : 각 단어가 다른 모든 단어와 얼마나 관련이 있느지 평가
    • 위치 인코딩 : 단어의 순서와 순차 패턴을 포착
    • 모든 토큰을 동시에 처리 ↔ RNN
    • 위치 인코딩으로 순차적인 맥락을 유지
  • 디코더 기반 트랜스포머(decoder only transformer)
    • 디코더 블록을 여러 개 쌓아올린 형태
    • 블록 구조는 동일하지만 각 블록마다 파라미터는 다름
    • 입력 시퀀스 + 타겟 시퀀스(= 입력 시퀀스 한 토큰씩 이동시킨)

    transformer decoder

  • 디코더 블록
    • 셀프 어텐션 층 + 위치별 MLP 층
    • 연산
      • 셀프 어텐션 층 = 1~L 모든 토큰에 대해 입력 임베딩 벡터(x)를 새로운 벡터(g)로 변환
      • MLP 층 = 토큰별 g를 독립적으로 처리.. 뭘 처리??

셀프 어텐션

  • 세 개의 파라미터 텐서 W_Q, W_K, W_V를 사용(Query, Key, Value)
  • 6단계의 계산
    • 1단계 : Q(쿼리 벡터) = 입력 X * W_Q, K(키 벡터) = 입력 X * W_K, V(값 벡터) = 입력 X * W_V
    • 2단계 : 쿼리 벡터와 키 벡터를 dot product 해서 attention score 계산
    • 3단계 : attention score 스케일 조정(키 벡터 차원의 제곱근으로 나누기)
    • 4단계 : 코잘 마스크(causal amsk) 적용→ masked score
    • 5단계 : 소프트맥스 → attention weight
    • 6단계 : 값 벡터의 가중치 합을 구해 입력 임베딩 에 대한 출력 벡터 g를 계산
  • q, k, v의 의미 : 각 입력 위치는 다른 위치에 대한 정보를 찾는다..
  • q와 k 사이에서 점곱 계산 → 유사도 → 밀접한 연관

위치별 MLP

  • W2(ReLU(W1*g_t + b_1)) + b2

로터리 위치 임베딩

  • 트랜스포머는 모든 토큰 동시에 처리 → 로터리 위치 임베딩 없으면 위치 정보 무시됨
  • RoPE : 쿼리 벡터와 키 벡터를 위치에 따라 회전하여 위치 정보를 인코딩
  • 회전한 두 벡터 사이의 각도가 시퀀스에 있는 두 벡터 사이의 거리를 인코딩 한다..
  • 아..내 머리도 회전한다..

멀티헤드 어텐션

  • 멀티헤드 어텐션 → 셀프 어텐션의 고급 버전, 여러 정보에 동시에 초점을 맞춤, 구문 관계 포착, 의미 유사성 포착, 토큰 사이 장거리 의존성 감지, …
  • 최신 모델은 최대 128개의 헤드를 사용하기도
  • 각각의 헤드에 QKV 가중치

잔차 연결

  • 그레이디언트 소실 문제 해소
  • 출력 + 입력 해주기

RMS 정규화

  • RMSNorm
  • 훈련 안정화
  • RMS 하고 스케일 인자(r) 곱하기
  • r는 파라미터

키 값 캐싱

  • KV Cache?
  • 추론할 때 적용, 계산 단축

디코더 기반 트랜스포머 구현

  • 코드 자체는 어렵지 않네. 근데 이론 이해가 어렵다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다