PyTorch👩🏻‍💻

    [PyTorch] 데코레이터랑 친해지기 @torch.jit.script / @torch.no_grad..

    [PyTorch] 데코레이터랑 친해지기 @torch.jit.script / @torch.no_grad..

    한달에 한번은 블로그 포스팅 하려고 하는데.. 절대 의무감에 하는 포스팅은 아니고 암튼 ㅎㅎ.. PyTorch 코드를 보다보면 @가 붙어있는 데코레이터를 볼 수 있다. 매번 흐린눈 하기에는 요즘 너무 자주 보이는 것 같아서 더이상 외면하지 않으려고 포스팅을 준비했다. 대표적은 PyTorch 데코레이터에 대해 포스팅하려고 한다. 다음에 기회가 되면 python 데코레이터도 포스팅 하는걸로.. @torch.jit.script @torch.jit.script는 pytorch의 데코레이터 중 하나로 이 데코레이터를 사용하여 Python 함수를 TorchScript로 변환할 수 있다. 여기서 TorchScript는 PyTorch의 JIT(Just-In-Time) 컴파일러를 통해 Python 코드를 최적화된 실행 ..

    [PyTorch] 모델 efficiency 측정하기 (used gpu memory / parameter 개수 / Inference time)

    [PyTorch] 모델 efficiency 측정하기 (used gpu memory / parameter 개수 / Inference time)

    모델 efficiency를 측정하다가, 아래와 같은 수치가 필요해져서 한번 정리해놓는다. # GPU memory consumption 참고 doc def to_MB(a): return a/1024.0/1024.0 print(f"After model to device: {to_MB(torch.cuda.memory_allocated()):.2f}MB") 위에서 출력된 nividia-smi 와 다르니 주의해아한다. 왜냐면 nvidia-smi는 reserved memory를 반환하고, 위 코드는 allocated memory를 반환하기 때문이다. 흔히 reserved memory는 캐시까지 포함한 메모리를 일컫는다고 한다. # Parameter count 이건 단순 trainable parameter의 개수를 ..

    [PyTorch] mmcv 설치하기 / cuda 버전에 맞게 mmcv downgrade하기 / mmcv._ext error 해결

    [PyTorch] mmcv 설치하기 / cuda 버전에 맞게 mmcv downgrade하기 / mmcv._ext error 해결

    오늘은 잊을만하면 나오는 mmcv 설치 방법에 대해 총정리하는 포스팅을 해보려고 한다. 사실 항상 설치할 때마다 열받는 것 같아서, 한번에 정리해보기로 했다. (미래에 내가 볼 수 있도록..) # mmcv 설치하기 - 버전 상관 없을 때 일단 mmcv 설치를 위해서는 본인의 cuda 버전에 맞는 알맞은 torch가 설치되어 있어야 한다. (자신의 cuda에 맞는 torch version 탐색은 여기를 참고하면 된다) 사실 mmcv 버전이 상관 없고, 그냥 설치만 하면 되는 상황이라면 공식 홈페이지에서 나와있듯 아주 쉽게 설치할 수 있다. 아래와 같이 openmim을 사용하면 된다. pip install -U openmim mim install mmcv 특정 버전의 mmcv (아마 버전 2 이상)을 이렇게..

    [PyTorch] nvcc가 안될 때 ~/.bashrc 수정해 환경변수 설정하기

    [PyTorch] nvcc가 안될 때 ~/.bashrc 수정해 환경변수 설정하기

    하.... 몇시간 째 나를 괴롭히던 nvcc ...................... 모든 코드를 돌리려고 할 때 무언가가 계속 삐걱거리고 잘 돌아가지 않는다면(특히 setup.py 등을 build 할 때, nvcc~ 어쩌고 ~ 이런 뉘양스를 풍긴다면..)그건 nvcc 문제일 가능성이 높다. 특히 비전공자인 필자는 이로 인해 각종 setup.py build 실패와.. apex 설치 실패 등의 난항을 겪었다. (ㅋㅋ) 이 원인은 바로 bashrc에 환경변수를 추가하지 않아서 그렇다...... 따라서 아래 과정대로 꼭 추가해주자. 일단 bashrc를 다음과 같이 열어준다. $ vi ~/.bashrc이렇게 열린 .bashrc 맨 끝에 다음 두 줄을 추가해주자. vim으로 수정하면 된다. (참고로 a를 누르면 ..

    [PyTorch] Multi-GPU 사용하기 (torch.distributed.launch)

    [PyTorch] Multi-GPU 사용하기 (torch.distributed.launch)

    PyTorch 환경에서 train 할 때, CUDA OOM(Out Of Memory) 에러 때문에 여러개의 gpu로 동시에 병렬적으로 train 하고싶을 때가 있다. 이때는 torch.distributed.launch 를 사용하면 되는데 이는 다음과 같다. $ python -m torch.distributed.launch --nproc_per_node=2 train.py --launcher pytorch 참고로 위에서 --launcher는 내가 사용하는 code의 argments 중 하나이다!

    [TIL] OpenPCDet 가상환경 세팅하기 (cuda11.1 + spconv)

    [TIL] OpenPCDet 가상환경 세팅하기 (cuda11.1 + spconv)

    사실 내가 까먹을까봐 적어놓는 프로세스! :( # OpenPCDet 우선 OpenPCDet은 Pointcloud를 이용한 3D detection 분야에서 흔히 쓰이는 패키지 모듈이다. Autonomous driving 분야에서 꽤 유명한 git 레포이고, star도 2.7k 정도이다! 거의 pointcloud를 이용한 3D detection 모델이 모두 들어있고, 이 패키지로 거의 모든 모델을 동일한 환경에서 실험할 수 있어 매우 유용한 패키지이다. 하지만 가상환경 세팅하는게 조금 빡쎄서, 고생했던 기억이 있다. 따라서 이를 공유하고, 미래의 나에게도 혼동하지 않도록 하기 위해 프로세스를 기록한다! :) # Process 1. 우선 python 3.8의 가상환경 만들기. 만약 3.7로 해버렸다면 다음과 ..

    [PyTorch] torch-sparse, torch-scatter, torch-geometric 패키지 install 하기 + 오류 해결 방법

    [PyTorch] torch-sparse, torch-scatter, torch-geometric 패키지 install 하기 + 오류 해결 방법

    GNN관련 코드를 보다가 원래 pip install torch-sparse만 해도 예전에는 설치가 잘 되었었는데, 어느 순간부터 이렇게 했더니 패키지 종속관계가 맞지 않는 문제가 발생해 설치가 되지 않았다. 아마 업데이트가 된 모양인데...! 생각보다 설치하는 과정이 까다로워서 블로그에 정리해보려고 한다. torch-geometric과 torch-sparse, torch-scatter 등은 무언가 dependency가 존재하는 패키지인 듯 했다. (나는 torch-sparse와 torch-scatter 패키지만 필요한 상황이었다.) 우선 torch-geometric의 공식 홈페이지인 이 곳에 방문하면, torch가 1.8.0 이상이면 다음과 같이 설치하라고 안내한다. > conda install pyg ..

    [PyTorch] PyTorch Autograd 이젠 공부하자 - pytorch.autograd 총정리하기 (+code)

    [PyTorch] PyTorch Autograd 이젠 공부하자 - pytorch.autograd 총정리하기 (+code)

    오늘은 평소 간과하고 넘어갔던 Pytorch의 Autograd에 대해 포스팅해보려고 합니다. 최근 backward 함수를 변형해야할 일이 있어서 여러가지를 시도해보다가 제가 정작 PyTorch를 잘 모르고 있다는 사실을 깨달아 버렸네요..ㅎㅎ !! Autograd를 이해하기 위한Background 부터 차근차근 정리해보도록 하겠습니다. :) Background # 순전파와 역전파 우리가 아는 신경망(Neural Network)은 흔히 순전파(Forward propagation)와 역전파(Backward Propagation)으로 나뉩니다. 각각의 역할은 다음과 같이 요약할 수 있겠습니다. - 순전파(Forward Propagation) : 모델이 input을 받아 prediction을 생산하는 부분 - ..