본문 바로가기

dev_AI_framework

optimizer 의 backend 내 구현 완료, 학습 과정 정리

전체 학습 단계 구조

1. 예측 

loss = ge.run_graph_with_loss_entry(...)
  • E (계산 그래프) 에 따라 입력을 순차적으로 처리
  • 각 노드의 출력은 tensors[output_id] 에 저장
  • LOSS 노드는 y_pred, y_true 를 받아 CUDA 로 손실 계산

run_graph_with_loss_cuda() 내부에서 CUDA 커널로 연산 수행

 

2. 역전파

gradient_ptrs = ge.run_graph_backward_entry(...)
  • 계산 그래프 E 를 역순으로 순회
    • 각 노드에 대해 해당 연산의 CUDA backward kernel 수행
  • output_id 기준 gradient 가 gradient[param_id], gradients[input_id] 에 기록됨

 

3. 가중치 업데이트 

ge.optimizer_update(
    param_ptr=w.data.ptr,
    grad_ptr=grad_w.data.ptr,
    ...
    opt_type=ge.OptimizerType.SGD
)