← 목록
기타 2026-06-30 2KB 읽기 2분

어텐션스택.한선 — N블록 병렬 삼진 트랜스포머 스택

개요

crowny-butler/libs/어텐션스택.한선: 어텐션블록2 기반 N블록(2~3) 스택 구현.

설계 결정: 병렬 가산 스택

시도한 설계: 순차 브로드캐스트 (y_{b-1} → [y,y,y] → block_b) 문제: 균일 입력 → attention 위치구별불가 → W_V 상충목표(sample0=+1, sample1=-1이 모두 position0 선택) → 수렴불가

채택한 설계: 병렬 가산 스택

  • 모든 N블록이 동일한 원본 inp 처리 (위치정보 보존)
  • r_acc = sum(block_b_y)
  • y_final = STE(r_acc, θ=0) = sign(r_acc) ← 최종 STE 1회

핵심 함수

  • 스택_파라_초기화(N, n_heads, seq, ffn_dim) → 파라_A[N×20]
  • 스택_순전파(inp, 파라_A, N, n_heads, seq, ffn_dim, θ_intra) → 스택상태[2+N×23]
  • 스택_역전파(inp, 파라_A, 스택상태, 타깃, N, ...) → 파라_A in-place 갱신

상태 레이아웃

  • [0]: y_final, [1]: r_acc, [2..2+N23-1]: 블록상태들

파라미터 레이아웃

  • 블록b: b20 + [W_K(6), W_V(6), W1(4), W2(4)]

진단: FFN d_r1 폭발 함정

  • 순차 설계 + W_K=[5], W_V=3 → r1=2, W1=[3,-3,5,-5] → r2=18 > clip=16 → STE역전파=0 → grad사망
  • 처방: W1/W2=[1,-1,1,-1] 소형초기값 → r2≤10 < clip=16 ✓

테스트 결과 (3블록)

  • 테스트1 grad전파: 5/5 (블록0·1·2 W_V·W2 동시 갱신)
  • 테스트2 수렴: 3/3 (에폭1, 60파라미터 vs 1블록 20파라미터)
  • 테스트3 GC100(N=2): PASS (안전, 상태크기48)

관련 파일

  • /Users/ef/crowny-butler/libs/어텐션스택.한선
  • /Users/ef/crowny-butler/libs/어텐션블록2.한선 (기반)
  • /Users/ef/crowny-butler/libs/삼진STE.한선 (STE투영/역전파)

크라우니코드

  • MISS → 생성 → learn완료: 다층어텐션스택_병렬가산