레이블이 pytorch인 게시물을 표시합니다. 모든 게시물 표시
레이블이 pytorch인 게시물을 표시합니다. 모든 게시물 표시

2023년 1월 5일 목요일

[pytorch]CUDA11.2, CuDNN8.1.1, Ubuntu 20.04LTS에 pytorch 설치

 * CUDA11.2 버전에 적합한 pytorch를 설치해야 GPU 사용 가능

    - https://pytorch.org/get-started/locally/

    - 접속해서 아래와 같이 선택

    - 현재 서버의 CUDA 버전은 (nvcc -V 로 확인) 11.2 이지만 11.2에 적합한 pytorch는 몇몇 블로그를 확인해보니 아래와 같이 설치하라고 되어있음

pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html

    - 하지만 위와 같이 해보니 pytorch를 불러오지 못함

    - 따라서 아래와 같이 CUDA 11.6 버전용 pytorch를 설치하고 기도메타 수행

1
 conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
     - python 실행 후 cuda가 연결되었는지 확인, True 로 나옴




또는

pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html
와 같이 11.0에 맞는 pytorch 버전을 설치해도 됨 (현재 상태)
 - PIL 설치, numpy 버전 업을 추가로 수행해야 할 수도 있음


2020년 10월 7일 수요일

[Machine learning] model.zero_grad() 와 optimizer.zero_grad()

 pytorch를 사용할 때 매 mini-batch 학습마다 model.zero_grad()를 해야한다.

pytorch는 한 mini-batch로 모델을 업데이트 한 후 모델 업데이트에 사용한 gradient를 버리는 것이 아니라 다음 mini-batch 계산에 누적해서 사용한다. 

학습 시 이전 mini-batch를 이용하여 계산한 gradient를 다음 mini-batch에서 계산한 gradient에 누적하면 안되기 때문에 다음 mini-batch를 이용하여 학습을 수행하기 전 이전 mini-batch를 이용하여 계산된 gradient를 초기화시켜주는 단계를 거쳐야한다. 따라서 매 mini-batch 학습마다 model.zero_grad()를 불러와야한다. 

하지만 pytorch 예제들을 보면 어떤 경우에는 model.zero_grad()를 사용하고 어떤 경우에는 optimizer.zero_grad()를 사용한다. 

검색해보니 비슷한 질문에

"model.zero_grad() and optimizer.zero_grad() are the same IF all your model parameters are in that optimizer. I found it is safer to call model.zero_grad() to make sure all grads are zero, e.g. if you have two or more optimizers for one model.”


라는 댓글이 있었다.

model.zero_grad()와 optimizer.zero_grad() 는 같으므로 쓰는 사람에 따라 선호하는 방식을 사용하는 듯 하다. 


출처: https://discuss.pytorch.org/t/model-zero-grad-or-optimizer-zero-grad/28426/5