Causal Mask & Next-Token Loss
Training에서는 정답 sequence가 이미 주어져 있으므로 모든 positions를 한 번에 계산할 수 있다. 그런데 다음 token을 예측하는 position이 그 정답 token을 Attention으로 미리 읽으면 문제가 된다. Causal Mask는 계산을 순차적으로 만들지 않고 정보가 흐를 수 있는 연결을 제한하여 이 누설을 막는다. 계산의 병렬성과 정보 접근 범위는 다른 문제다.
- Known input sequence
- causal / document mask
- parallel
logits - shifted targets
- valid losses 평균
- one backward
Visibility & Loss
Causal Attention은 position i에서 key 만 허용한다. Independent packed documents에서는 doc_id도 같아야 한다.
Attention mask는 정보가 흐를 pair를, Loss mask는 loss에 기여할 position을 정한다. Padding의 loss weight는 0이다. Cross-document 연결은 이어진 sequence로 의도한 경우에 의미가 있다.
Reading the Mask Matrix
행이 Query position , 열이 Key position 라면 additive Causal Mask는 다음과 같다.
첫 row는 첫 Key만 읽고 마지막 row는 네 Keys를 읽는다. Mask를 score에 더한 뒤 Softmax하면 미래 위치의 weight가 0이 된다. 이것이 position-dependent connectivity이며, Causal Mask가 없는 full Self-Attention과 구분된다. 모든 Language Model에 같은 Causal Mask가 필수인 것은 아니다.
독립 문서 A와 B를 한 sequence로 pack했다면, B가 앞의 A를 읽는 것도 막아야 할 수 있다. 예를 들어 앞 두 positions가 A, 뒤 두 positions가 B라면 다음처럼 block 내부의 causal 연결만 남긴다.
다만 관련 문서를 이어 읽는 task라면 문서가 다르다는 이유만으로 무조건 끊지 않는다. 어떤 sequence를 독립 sample로 의도했는지가 기준이다. 구현에서도 반드시 dense mask matrix를 물리적으로 저장해야 하는 것은 아니며, 경계 indices로 같은 visibility를 처리할 수 있다.
Loss mask는 또 다르다. 예를 들어 user instruction은 assistant 답변을 예측할 context로 읽어야 하지만, instruction token 자체를 맞히는 loss는 제외할 수 있다. 이전 turns를 읽고 마지막 assistant turn만 학습하려는 경우도 같다. 보지 못하게 하는 Attention Mask와, 보되 채점하지 않는 Loss Mask를 바꾸어 쓰면 학습 목적이 달라진다. Padding targets도 loss weight 0으로 제외한다.
Parallel Training
RNN은 이전 hidden state를 기다리지만 Transformer는 known training sequence의 모든 위치에서 QK scores를 함께 계산한다. Mask는 미래 정보를 막으며 병렬 계산을 막는 것이 아니다.
Autoregressive generation은 아직 모르는 next token에 의존하므로 sequential하다.
Shifted Targets
The / cat / sat / on / the / mat input의 targets는 cat / sat / on / the / mat / ignored로 한 칸 shift된다. 유효 를 평균한 scalar 로 한 번 backward한다. Position t에서 를 예측하지만 Attention으로 그 target을 보지 않는다. 마지막 position은 다음 target이 없어 제외하는 예시다.
RNN은 다음 state를 계산하려면 이전 state가 필요하다. Transformer layer는 known sequence의 QK scores를 함께 계산하고 그 안에서 미래 연결을 가린다. 두 방식 모두 positions별 loss를 만들 수 있지만, 계산 의존성이 다르다. Generation에서는 아직 다음 token이 주어지지 않았으므로 순차 생성이 필요하다.
| Input position | Input token | Next-token target | Loss |
|---|---|---|---|
| 1 | The | cat | ℓ₁ |
| 2 | cat | sat | ℓ₂ |
| 3 | sat | on | ℓ₃ |
| 4 | on | the | ℓ₄ |
| 5 | the | mat | ℓ₅ |
| 6 | mat | 없음 | ignored |
이 예시의 유효 losses를 평균한 하나의 scalar L로 backward한다. Position마다 별도의 optimizer step을 실행한다는 뜻이 아니다. 마지막 position은 다음 target이 없어서 제외한 예시이며, dataset에 종료 token target을 주는 경우와 구분한다. Code에서는 logits의 마지막 position과 labels의 첫 position을 shift하고, ignore index로 제외할 targets를 표시할 수 있다.
Loss를 제외한 token도 context로 볼 수 있다. 마지막 target 제외 예시를 모든 dataset의 sequence 끝 처리로 일반화하지 않는다.
미래 정보 차단과 parallel computation은 양립한다.
Attention Mask · Loss Mask
보지 못하는 것과 보아도 채점하지 않는 것은 다르다.
| Aspect | Attention Mask | Loss Mask |
|---|---|---|
| 결정 | Query/key pair의 visibility | Position별 loss 기여 |
| 예시 | Future 차단 / doc boundary 차단 | Padding / 일부 instruction target 제외 |
| 학습 신호와 관계 | 정보 누설을 막는 경로 제어 | Scalar loss의 valid target 선택 |
| Parallelism | Causal mask도 병렬 계산 가능 | 유효 위치를 집계해 one backward |
Check
Attention mask와 Loss mask를 정보 흐름·학습 신호 관점으로 구분하라.
Answer
Attention mask는 어느 Query/Key pair가 서로 볼 수 있는지 정한다. Loss mask는 어느 position의 예측을 학습 loss에 포함할지 정한다.
Causal인데 Training은 parallel, Generation은 sequential인 이유는?
Answer
Training은 정답 sequence가 이미 알려져 positions를 함께 계산하고 mask로 누설을 막는다. Generation은 새 token이 아직 없으므로 이전 생성 결과가 나온 뒤 다음 step을 진행한다.
6-token 예시의 valid loss 수·평균 분모·backward 횟수는?
Answer
마지막 target이 없다는 예시에서 5 losses를 5로 나누어 scalar로 합치고 한 번 backward한다.
Known sequence의 input→target→loss→backward를 설명하라.
Answer
Causal mask로 future leakage 차단 → positions 병렬 logits → labels를 한 칸 shift → valid target CE 평균 → scalar loss로 one backward.
Attention Mask · Loss Mask를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.
Answer
보지 못하는 것과 보아도 채점하지 않는 것은 다르다.
결정: Attention Mask=Query/key pair의 visibility / Loss Mask=Position별 loss 기여
예시: Attention Mask=Future 차단 / doc boundary 차단 / Loss Mask=Padding / 일부 instruction target 제외
학습 신호와 관계: Attention Mask=정보 누설을 막는 경로 제어 / Loss Mask=Scalar loss의 valid target 선택
Parallelism: Attention Mask=Causal mask도 병렬 계산 가능 / Loss Mask=유효 위치를 집계해 one backward
Training · Prefill · Decode를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.
Answer
Known sequence의 병렬 처리와 아직 모르는 다음 token 생성을 구분한다.
입력: Training=Known sequence / gold targets / Prefill=Prompt 전체 / Decode=새로 생성한 token
계산: Training=Positions parallel + mask / Prefill=Prompt positions 처리 / Decode=이전 생성에 의존하는 sequential steps
저장/신호: Training=Valid target CE / backward / Prefill=Prompt / cache 생성 / Decode=새 / 추가 / prefix cache 읽기
latency 관점: Training=학습 처리량 / Prefill=TTFT에 큰 영향 / Decode=TPOT에 큰 영향
조건: TTFT에는 queueing/first generation도 포함되고 긴 cache는 Decode latency에도 영향을 준다.