0) 지금 상태
- Ops 확장 규칙 : api.hpp + kernel.cuh, launcher.cu 패턴들의 사용
- Registry 존재 : register_all, attr_pack 구조를 통한 선택과 조합이 가능함
- Python - C++ 연결 : pyd, aicf_fw 스켈레톤으로 end-to-end loop 만들 준비가 됨
개선해야 할 사항
- 학습 단계 전체를 하나의 실행 계획, Plan 으로 고정하는 루프
- Plan 이 호출하는 커널 선택 / 생성 IR lowering or variant dispatch
- 성능 / 정확도 회귀 테스트 & 프로파일링 자동화
1) 학습 단계 커널 호출 과정을 고려 ( IR level 보다 먼저)
학습 step 을 3층으로 분해해서 고정하는 것이 우선
1-1. Step 을 Stage 로 나눠서 고정
- FWD stage : forward ops + loss
- BWD stage : backward ops (grad)
- OPT stage : optimizer update (SGD ... )
위 3개를 명시적 분리
1-2. python framework 의 Tensor / Module / Autograd 가 op trace 를 남기게
aicf_fw 에 autograd.py, trainer.py, ops.py 존재, 여기서 핵심은
- 실행 시점에 단순 _C 호출만 하는 것이 아닌
- op_kind, tensor_desc, attrs, device, dtype, layout, requires_grad, graph_tag 를 모아
- Trace(Graph) 를 만들고
- 그 Trace 를 넘겨서 C++ runtime 이 실행하도록
python : 그래프 생성 / 트레이싱, C++ : 플랜 / 실행 / 캐시를 책임짐
2) Kernel 호출 : IR 생성보다 Variant Dispatch 테이블부터 완성
IR 기반 codegen 은 최종 목표, 당장은
2-1 registry / dispatch
- op_kind.hpp : op id
- kernel_variant.hpp : variant id + constraints
- attr_pack.hpp : attrs
- tensor_desc.hpp : shape / stride / dtype
- dispatch.hpp : 이 조합으로 variant 를 고르고 launcher 호출
먼저
- 각 op 마다 최소 2개 variant
- baseline
- optimized
- dispatch 가 제약조건을 만족하는 것 중 best 선택을 하도록
3) 다음 로드맵
- Step trace 생성
- GraphKey + cache 안정화
- dispatch 강화
- 회귀 테스트 + ncu 자동 루프
'AI Compiler framework' 카테고리의 다른 글
| 학습 구조 완성의 기준 ? - 모든 operation 구현이 아닌 프레임워크 루프, Trace - Plan - Execute - Measure 의 기능 완성임 (0) | 2025.12.21 |
|---|---|
| Trainer 의 역할 정의 ( AICF Framework - Execution Orchestrator ) 학습을 위해서가 아닌 실행을 고정하고 성능을 관찰하기 위해 등장한 구조 (0) | 2025.12.21 |
| 자동 생성 / 스캐폴딩을 위한 수정 내용 (Tensor Desc, ... ) (0) | 2025.12.20 |
| 현재 통일된 바인딩 코드 사용, 바인딩이 수정이 될 경우는? (0) | 2025.12.20 |
| AICF Python Binding - Plan A (Unified op_call) 설계 문서 (0) | 2025.12.20 |