당신이 하고 있는 건 단순히 연산자별 커널을 구현하는 수준이 아니라,
- 특정 모델 구조 (예: Attention block = [QKᵀ → softmax → dropout → PV])
- 특정 레이어 집합 (예: LayerNorm + GEMM + 활성화)
을 인식해서, 그 조합 전체를 하나의 최적화된 CUDA 커널 패턴으로 생성/실행할 수 있는 기반을 만드는 거예요.
풀어서 말하면
- 현재 상태
- gemm, softmax, dropout 같은 primitive op를 각각 바인딩/커널화했음.
- SDPA 같은 복합 연산은 이 primitive들을 순차적으로 호출해 조합.
- 진행 중인 목표
- 이 조합을 커널 수준에서 퓨전/epilogue 확장 → 중간 텐서 물질화 최소화.
- regemm이나 cutlass 같은 infra 위에서 자동으로 epilogue functor를 붙이거나,
FlashAttention 스타일로 타일드 단일 커널로 합치는 방식.
- 큰 그림
- 결국 특정 모델 블록(트랜스포머, MLP 블록 등)의 계산 그래프를 보고,
**“이건 최적화된 커널 패턴이 있으니 그걸로 코드 생성”**을 자동화할 수 있음. - 즉, 모델 구조 → 내부 DSL/스케줄러 → CUDA 커널 코드 (또는 디스패치)로 이어지는 소형 컴파일러 파이프라인을 만드는 거라고 할 수 있어요.
- 결국 특정 모델 블록(트랜스포머, MLP 블록 등)의 계산 그래프를 보고,
👉 그래서 “내 프로젝트를 통해 특정 모델 구조/레이어 집합을 커널 최적화된 CUDA 코드로 생성할 수 있는 시스템을 만든다”라고 설명해도 충분히 맞습니다.
'dev_AI_framework' 카테고리의 다른 글
| Conv2D (NCHW, group=1) 구현/연산 (0) | 2025.09.23 |
|---|---|
| LLM 과 접목, 최적화 커널 구성과 빌드, 모듈 생성의 과정을 자동화 (0) | 2025.09.23 |
| Scaled Dot-Product Attention (SDPA) (0) | 2025.09.23 |
| Dropout (CUDA) — 구현 문서 (0) | 2025.09.22 |
| Cross-Entropy 모듈 추가 / 수정 (0) | 2025.09.22 |