← 문제 목록/Combined Causal + Padding Mask (B, L, L) [medium]
문제 해설

Combined Causal + Padding Mask (B, L, L) [medium]

신경망 · medium

preview

Combined Causal + Padding Mask [medium]

v1 padding mask(B, L) 키 마스크만 만듦. Transformer decoder 학습에서는 causal + padding 을 동시에 적용하는 (B, L, L) 마스크가 필요:

Mb,i,j=[ji][j<lengths[b]]M_{b, i, j} = [\,j \le i\,] \wedge [\,j < \text{lengths}[b]\,]

왜 (B, L, L) 인가

  • Causal 은 정사각, padding 은 배치마다 다름 → 배치 차원이 필수.
  • Attention score 에 ~M 위치를 -inf 로 넣고 softmax → 무효 위치 확률 0.
  • 한 번에 양쪽을 처리해야 CUDA/CPU 커널이 효율적.

구현 힌트

  1. Causal part: j <= i (shape (L, L)).
  2. Padding part: j < lengths[b] (shape (B, L)).
  3. Broadcast 로 곱: (1, L, L) & (B, 1, L) → (B, L, L).

과제

함수 causal_padding_mask(lengths, L) 를 완성하세요.

  • lengths shape (B,), L max length.
  • 반환 shape (B, L, L), dtype bool.

테스트 케이스

#이름검증
1shape (B, L, L), bool
2causal 유지: 상삼각 False모든 batch
3key padding 제외j ≥ len[b] 위치 False
4lengths=[L,...] → full tril
5lengths=0 → 모두 False
6row i True 개수 = min(i+1, len[b])
7알려진 예시 (lengths=[3,5,2], L=5)
코드 작성
Loading...
실행 결과

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