본문 바로가기

dev_AI_framework

dropout 의 scaling 과 constexpr 을 통한 compile 내 최적화 - 결정론적이려면 어떻게 해야 하는지

학습 시, 특정 뉴런의 확률적 비활성화,

이 때 남은 뉴럭의 출력은 1/(1-p) 로 스케일링, 전체 기댓값의 유지 - 출력 분포의 유지

Graph Capture 환경에서는 이 scaling 을 커널 내부에서 constexpr 로 고정하는 방식으로 사용, 

 

RNG 를 통한 결정론적 보장

 

Dropout 의 출력은 RNG 의 상태에 종속, 인관성 있는 관리 필요, 

GPU 병렬 환경에서는 RNG 가 thread 단위로 분리되어 있음, 같은 seed 로도 thread 스케줄이 달라지면 mask 가 달라지는 문제 발생

 

Graph Capture, 임베디드 환경에서는 그대로 replay 해야 하므로 RNG 가 동일하게 동작해야 함

고정 seed

RNG step 관리

thread-safe, stream-safe RNG 구현

비동기 호출 간 상태 충돌 방지

 

capture 시점의 RNG state 를 저장하고, replay 시점에 동일 state 로 복원하는 구조가 필요