Skip to content

[FEATURE] neuron Phase 15 — sparsity-driven edge prune (training-time dynamic param count 의 첫 실질 단계) #71

Description

@juhy0987

배경 (Phase 14 직후)

Phase 14 (PR #70 머지) 에서 block 전체가 graph 인 paradigm 완성 — attention qkv/out + FFN fc1/fc2 모두 HybridGraphLinear. 그러나 여전히 정적 위상 — 모든 채널이 동일 경로 길이, edge 가 dense topology 로 고정.

paradigm 의 ultimate goal (training-time dynamic parameter count) 의 실질적 첫 단계는 edge 자체를 추가/제거 하는 동적 위상 변화. Phase 15 는 sparsity-driven prune — 학습 중 edge magnitude 가 낮은 것들을 영구 제거.

목표

  1. edge prune mechanismHybridGraphLinear 에 buffer edge_mask 추가, 학습 중 |adj_outer · adj_inner · W| < threshold 인 edge 영구 0 처리
  2. gradient resurrection 방지 — pruned edge 는 forward 에서 mask=0, gradient 도 mask 통해 차단되어 다시 살아나지 않음
  3. sparsity tracking — 학습 후 effective sparsity ratio 측정
  4. function preservation — mask=1 (no prune) 시 Phase 14 와 forward 동치
  5. sweep: dense (no prune) vs 다양한 threshold prune — sparsity ratio 와 final_loss trade-off

설계 결정

  • buffer (학습 X)edge_mask 등록 — state_dict 에 포함, optimizer 가 업데이트 안 함
  • one-shot prune at midpoint (max_steps/2 시점 1회) — 가장 단순한 시작 형태
  • threshold 기반 prune 만 1차 구현 — top-k prune 은 향후 확장
  • prune 대상은 HybridGraphLinear 단위 — Phase 14 의 FullGraphTransformerBlock 의 모든 4 layer (qkv/out/fc1/fc2) 가 영향 받음

작업 항목 (단일 PR)

  • src/graphlm/neuron/graph_hybrid.py 확장 — edge_mask buffer + prune_by_magnitude(threshold) + effective_sparsity() 메서드
  • src/graphlm/neuron/hybrid_transformer_demo.py 확장 — train loop 에 prune step 추가 (config 의 prune_at_step + prune_threshold)
  • tests/neuron/test_graph_hybrid.py 확장 — prune 동작 / gradient blocking / sparsity ratio / state_dict 보존
  • notebooks/02-function-level/14-phase15-sparsity-prune.ipynb 신규 — dense vs prune (3 thresholds) sweep

완료 조건

  • 182 → ~200+ tests, all green
  • coverage ≥ 70%
  • 노트북 sweep 정상 실행, sparsity vs final_loss trade-off 시각화

Phase 15 의 의미

본 단계가 paradigm 의 정적 → 동적 위상 진입 의 시작점:

  • Phase 8-14: dense topology + learned magnitude (정적 위상)
  • Phase 15: edge 영구 제거 (dynamic shrink) — 채널마다 다른 effective 경로 길이 발생
  • Phase 16+: 추가/재할당 (dynamic grow) — Net2Net / LiGO / RigL 식

관련

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions