1) 변경 요약
Before
- AdamStep 의 의미가 암묵적
- constraints = {"inplace_ok":True} 같은 힌트는 있었지만
- 백엔드 / 패스가 이 Op 가 optimizer 이며 상태를 바꾸고 그래프 말단이다를 신뢰 가능한 정적 신호로 받지 못함
After
- OpFlags 를 도입해 AdamStep 의 성질을 정적 비트로 선언한다
- constraints.inplace_ok 가 켜져 있으면 OpFlags.INPLACE_PREF 까지 포함시켜
- 가능한 inplace 로 가라를 policy-level 로 승격시킴
- 결과적으로 AdamStep 은 다음 의미를 갖는 노드로 명시적 태깅됨
- Optimizer
- Stateful
- Terminal
- Inplace 선호
2) 코드 레벨 변경 포인트
임포트 변경
from .base import emit_resolved, OpFlags
- emitter 에서 직접 OpFlags 를 사용해 정적 의미를 구성함
정적 플래그 구성
static = OpFlags.IS_OPTIMIZER | OpFlags.HAS_STATE | OpFlags.TERMINAL
- AdamStep 의 불변 성질을 비트로 표현
constraints - static_flags 로 반영
final_constraints = constraints or {"inplace_ok": True}
if final_constraints.get("inplace_ok"):
static |= OpFlags.INPLACE_PREF
- constraints 는 여전히 runtime / plan 제약으로 남기되
- 인플레이스 선혼느 플래그로도 올려서 패스들이 더 쉽게 결정하게 함
emit_resolved 에 static_flags 전달
emit_resolved(..., static_flags=static)
- 통합 엔트리에서 Op 객체에 정적 메타를 주입하는 구조에 맞춰, AdamStep 도 해당 계약을 따르게 됨
'operator 의 연산 의미 분석' 카테고리의 다른 글
| AICF: Semantic-Preserving Optimization Architecture (0) | 2026.03.02 |
|---|---|
| Add Emitter 변경 문서 (0) | 2026.02.27 |
| ReLU Semantic Specification - 비선형 게이팅 / 반공간 정류 (0) | 2026.02.19 |
| LayerNorm Semantic Specification (0) | 2026.02.19 |
| BathNorm Semantic Spectification (0) | 2026.02.19 |