Programming

Programming/PyTorch

[ PyTorch ] hook - tensor_hook, forward_pre_hook, forward_hook, full_backward_hook

ACL 2024에 accept된 MEFT: Memory-Efficient Fine-Tuning through Sparse Adapter라는 논문에서 4,096의 bottleneck size를 가진 `Parallel Adapter`를 `Natural Question` 데이터셋에 대해 학습한 후 4,000 토큰으로 구성된 test set에 대한 adapter의 FFNs layer의 뉴런의 activation value를 추출한다. activation value를 기준으로 neuron들을 정렬하고, 시각화를 위해 [0, 1]의 값으로 정규화를 해주면 다음과 같은 그래프가 구성된다. 해당 그래프를 통해 adapter의 activation이 매우 `sparse`하며, 모델 예측에 일부 뉴런만이 기여해 대부분의 뉴..

Programming/Python

[Python] 내가 작성한 모듈을 자동으로 reload 하기 - autoreload

%load_ext atoreload %autoreload 2 `%autoreload 2`의 의미는 파이썬 코드를 실행하기 전에 항상 모듈을 Reload하라는 의미이다. 모듈이 사용 중인 경우에도 자동으로 다시 로드 같은 디렉토리 내 모듈을 불러오는 데 사용 Reference [1] https://m.blog.naver.com/wideeyed/221225290242 [2] https://rogerheederer.github.io/Colab_ModuleReload/

Programming/PyTorch

[ PyTorch ] if __name__ == '__main__'

파이썬 코드를 보면 `if __name__ == '__main__':` 이런 코드를 확인할 수 있다. 이는 파이썬 코드를 모듈로 사용할 때와 직접 실행할 때를 구분하기 위해 사용하는 코드 패턴으로. 해당 모듈이 임포트된 경우가 아니라 인터프리터에서 직접 실행된 경우에만 if문 코드를 실행하라는 명령어이다. 다음과 같은 코드 예시가 있다고 하자.# my_module.pydef my_function(): print("모듈 내 함수 실행")if __name__ == '__main__': print("직접 실행됨")여기서 다른 모듈 `another_module.py`에서 다음과 같이 `my_function()`이라는 함수를 호출하면 "모듈 내 함수 실행"이라는 실행 결과가 나온다.# another_m..

Programming/PyTorch

[ PyTorch ] 모델 학습 및 예측 코드 - torch.no_grad(), loss.backward(), optimizer.step(), optimizer_zero_grad()

def training(epoch, model, trainloader, validloader): correct = 0 total = 0 running_loss = 0 model.train() for b in trainloader: x, y = b.text, b.label x, y = x.to(device), y.to(device) # 반드시 모델과 같은 device y_pred = model(x) loss = loss_fn(y_pred, y) optimizer.zero_grad() loss.backward() optimizer.step() with torch.no_grad(): ..

Programming/PyTorch

[ PyTorch ] F.relu()와 nn.ReLU()의 차이점

nn.ReLU() 파이토치의 신경망 모듈 중 하나인 활성화 함수 모듈`nn.Sequential()` 모델에 추가할 수 있는 `nn.Module`을 만듬모델의 `__init__` 메서드에서 레이어로 초기화되며, 그 레이어가 `forward()` 메서드에서 사용될 때 활성화 함수가 적용F.relu()파이토치의 함수 라이브러리인 `torch.nn.functional`의 함수함수로서 주로 모델의 forward 연산 내에서 활성화 함수를 적용하는 데 사용모델의 forward 메서드에서 함수로 직접 호출https://discuss.pytorch.org/t/whats-the-difference-between-nn-relu-vs-f-relu/27599https://asidefine.tistory.com/80

Junyeong Son
'Programming' 카테고리의 글 목록