본문 바로가기

dev_AI_framework

지금까지 실행 파이프 라인 ( graph_capture, planner ... ) 향후 pattern matting 을 추가하기 위해 확인

전체 실행 파이프라인

  1. 모델 / 배치 입력 - 동력 경로 평탄화
    • sequential._linearize_path(X, ctx) 가 If/Repeat/EarlyExit 를 실제로 실행될 순차 레이어열로 전개
    • 전개 결과는 ctx["path_fingerprint"] 와 ctx["branch_path"] 로 기록
  2. GraphKey 생성 & 풀 조회
    • 입력 서명 + branch_path + variant 으로 해시 안정 키 생성
    • graph_pool 또는 로컬에서 이미 캡처된 그래프가 있으면 재사용
  3. Capture Plan & Optimizer Rebind
    • Capture Plan 작성
    • 경로에 실제로 등장한 파라미터만 추출해 옵티마이저에 그래드 버퍼를 재바인딩
  4. Execution Planner - ExecPlan( 축소판 )
    • DAG 를 선형 스케줄로 변환
    • plan.exec_plan 에 저장되어 런타임이 그대로 해석
  5. CUDA Graph 캡처 / 재생
    • GraphRuntime.run_step() 가 fwd - loss - bwd - opt 한 스텝을 스트림 위에서 수행
    • 캡처 성공 시 instantiate 로 그래프 실행자 생성 - 이후 동일 키면 그대로 재생
    • NVTX 태그

런타임·플래너 관점의 핵심 변화

  • Execution Planner(축소판)
    • DAG → 선형 스케줄 생성(단일 스트림).
    • 차후 멀티 스트림/이벤트 삽입을 위한 ExecPlan 구조를 표준화.
  • Graph Runtime / Autograd Engine
    • GraphRuntime.run_step()에 단일 진입점:
      forward → loss(_loss_forward shim) → zero grads → backward(Conv2D WS 보장 & BN X_saved) → optimizer.step.
    • Conv2D는 WS 사전할당(capture-safe), BN은 항상 X_saved 사용.
    • 손실 함수의 구버전/신버전 시그니처를 _loss_forward()에서 호환.
  • 캐시 키 안정화
    • GraphSignature(shape, dtype, layout) + branch_path + variant + path_fingerprint로 충돌 없이 재사용 보장.
  • Optimizer Rebind
    • 경로에 등장한 실제 파라미터만 수집하여 grad 버퍼를 pointer-stable로 재바인딩.
    • 원본 옵티마이저가 rebind 미지원이면 경로 전용 인스턴스를 생성해 바인딩.
  • NVTX 통일 태깅
    • [CAPTURE] warmup / cudaGraphCapture
    • [DYN] path_linearize / make_pool_key / record_step_graph / replay xT
    • Nsight Systems에서 캡처 vs 재생 타이밍과 **동적 반복 횟수(T)**를 직관적으로 확인 가능.