← 문제 목록/SwiGLU Activation (LLaMA FFN) [medium]
문제 해설

SwiGLU Activation (LLaMA FFN) [medium]

신경망 · medium

preview

SwiGLU Activation [medium]

v1 GELU 는 element-wise. 하지만 LLaMA/Mistral/Qwen 의 FFN 은 단순 활성화가 아닌 gated 구조를 씀 — SwiGLU (Shazeer 2020):

SwiGLU(x)=swish(xWgate)(xWup)\text{SwiGLU}(x) = \text{swish}(x W_{\text{gate}}) \odot (x W_{\text{up}})

구성요소

  • Swish/SiLU: swish(z)=zσ(z)=z/(1+ez)\text{swish}(z) = z \cdot \sigma(z) = z / (1 + e^{-z}). ReLU/GELU 와 비슷한 smooth 활성화.
  • Gate: swish(x W_gate) 가 0~선형 사이를 softly 골라냄.
  • Up projection: x W_up 은 활성화 없이 넘김.
  • 두 프로젝션 출력을 element-wise 곱 → hidden dim h.

후속에 W_down 을 통과해 원래 차원으로 복귀하는 게 전체 FFN. 이 문제는 SwiGLU 본체만.

왜 SwiGLU 가 주류인가

  • GLU (Dauphin 2017) 가 증명: 곱셈 gating 이 FFN 성능을 크게 올림.
  • Swish 가 ReLU/GELU 보다 deep net 에서 약간 우수.
  • LLaMA-2, Mistral, Gemma, Qwen — 전부 SwiGLU 사용.

과제

함수 swiglu(x, W_gate, W_up) 를 완성하세요.

  • x shape (N, d).
  • W_gate, W_up shape (d, h).
  • 반환 shape (N, h).

테스트 케이스

#이름검증
1shape (N, h)
2W_up=0 → 출력 0
3큰 음수 gate → 출력 ≈ 0swish(-∞)=0
4큰 양수 gate → swish ≈ x·W_gate → 선형 gated
5x=0 → 출력 0swish(0)=0
6알려진 toy 값
7element-wise gating (독립 컬럼)
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.