[PyTorch] 데코레이터랑 친해지기 @torch.jit.script / @torch.no_grad..
·
PyTorch👩🏻‍💻
한달에 한번은 블로그 포스팅 하려고 하는데.. 절대 의무감에 하는 포스팅은 아니고 암튼 ㅎㅎ.. PyTorch 코드를 보다보면 @가 붙어있는 데코레이터를 볼 수 있다. 매번 흐린눈 하기에는 요즘 너무 자주 보이는 것 같아서 더이상 외면하지 않으려고 포스팅을 준비했다. 대표적은 PyTorch 데코레이터에 대해 포스팅하려고 한다. 다음에 기회가 되면 python 데코레이터도 포스팅 하는걸로.. @torch.jit.script @torch.jit.script는 pytorch의 데코레이터 중 하나로 이 데코레이터를 사용하여 Python 함수를 TorchScript로 변환할 수 있다. 여기서 TorchScript는 PyTorch의 JIT(Just-In-Time) 컴파일러를 통해 Python 코드를 최적화된 실행 ..
[Python] Python Class에 대한 기초 정리하기
·
Python
절대 내일 객체지향 시험이라서 쓰는 포스팅 아님 지금까지 계속 공부 해야지 해야지 했던 객체지향에 대한 내용을 포스팅 해보겠다 ! :3 # Python의 Class Python에서 Class는 user-defined abstract data type이라고 볼 수 있다. 여기서 Abstract Data Type(ADT)란 (1) Encapsulation과 (2) Information hiding을 만족하는 객체의 class를 일컫는다. 각각을 자세히 이론적으로 알아보자면 다음과 같다. Encapsulation : 절차지향언어들과 달리 data type declaration과 operation이 함께 제공되는 것 Information hiding : 알고리즘과 데이터에 대한 detail을 굳이 제공하지 않는..
[PyTorch] 모델 efficiency 측정하기 (used gpu memory / parameter 개수 / Inference time)
·
PyTorch👩🏻‍💻
모델 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 설치 방법에 대해 총정리하는 포스팅을 해보려고 한다. 사실 항상 설치할 때마다 열받는 것 같아서, 한번에 정리해보기로 했다. (미래에 내가 볼 수 있도록..) # mmcv 설치하기 - 버전 상관 없을 때 일단 mmcv 설치를 위해서는 본인의 cuda 버전에 맞는 알맞은 torch가 설치되어 있어야 한다. (자신의 cuda에 맞는 torch version 탐색은 여기를 참고하면 된다) 사실 mmcv 버전이 상관 없고, 그냥 설치만 하면 되는 상황이라면 공식 홈페이지에서 나와있듯 아주 쉽게 설치할 수 있다. 아래와 같이 openmim을 사용하면 된다. pip install -U openmim mim install mmcv 특정 버전의 mmcv (아마 버전 2 이상)을 이렇게..
[선형대수] - (2) Solving Linear Equations
·
Linear Algebra
이 포스팅에서는 지난 포스팅에 이어 linear equation 관련된 이야기를 해보겠다. 선형대수에 관한 기초가 궁금하신 분은 이 전 게시물을 참고해주시면 된다! 참고로, 본 챕터에서 Elimination 연산에 관한 내용은 제외할 예정이다. 2023.04.27 - [Linear Algebra] - [선형대수] - (1) Introduction to the vector [선형대수] - (1) Introduction to the vector 인턴을 하면서 선형대수가 부족하다고 느껴서, 이번 4학년 1학기를 이용해 선형대수 과목을 수강하고 있다! :3 선형대수가 참.. 되게 기초적이면서도 간과하기 쉬운데 또 중요한 .. 그렇지만 잘 daeun-computer-uneasy.tistory.com # Row/C..
[선형대수] - (1) Introduction to the vector
·
Linear Algebra
인턴을 하면서 선형대수가 부족하다고 느껴서, 이번 4학년 1학기를 이용해 선형대수 과목을 다시 ㅋㅋ 수강하고 있다! 선형대수가 참.. 되게 기초적이면서도 간과하기 쉬운데 또 중요한 .. 그렇지만 잘 까먹게 되는 과목인 것 같다. 아무튼 선대는 나중에 계속 필요한 내용이니까.. 중간고사가 막 끝나서 공부했던 내용을 블로그에 남겨놓기로 했다. 본 게시글에서는 기초적인 벡터와 행렬에 대한 이야기를 다룬다. # Linear Combination 흔히 선형대수에서는 linear combination 이야기가 많이 나오는데, 이는 별게 아니고 두개의 벡터를 $cv + dw$ 형태로 나타내 새로운 벡터를 만드는 것이라고 이해했다. (그림에서는 빨간색 벡터가 될 것) 여기서 $cv$는 하나의 벡터 라인이 될 텐데, 만..
[NLP] LORA : Low-Rank Adaptation of Large Language Models 논문 리뷰
·
NLP
# Problem statement Pre-trained model을 다양한 downstream task에 adaptation ex) Summarization 그리고 이는 주로 Fine-tuning으로 해결한다. 일단 위 downstream task들은 training data of context-target pairs $z$ = ($x$, $y$) 로 표현됨 Fully Fine-tuning? Downstream task의 log likelihood를 maximize 시키는 값을 찾겠다 ($x$, $y$는 example) 위 값은 거의 gradient descent 값으로 찾음 (w/ optimizer) > 전체 100% 파라미터 업데이트 하지만 위 gradient descent에는 이전 step의 정보..
[PyTorch] nvcc가 안될 때 ~/.bashrc 수정해 환경변수 설정하기
·
PyTorch👩🏻‍💻
하.... 몇시간 째 나를 괴롭히던 nvcc ...................... 모든 코드를 돌리려고 할 때 무언가가 계속 삐걱거리고 잘 돌아가지 않는다면(특히 setup.py 등을 build 할 때, nvcc~ 어쩌고 ~ 이런 뉘양스를 풍긴다면..)그건 nvcc 문제일 가능성이 높다. 특히 비전공자인 필자는 이로 인해 각종 setup.py build 실패와.. apex 설치 실패 등의 난항을 겪었다. (ㅋㅋ)이 원인은 바로 bashrc에 환경변수를 추가하지 않아서 그렇다...... 따라서 아래 과정대로 꼭 추가해주자. 일단 bashrc를 다음과 같이 열어준다.  $ vi ~/.bashrc이렇게 열린 .bashrc 맨 끝에 다음 두 줄을 추가해주자. vim으로 수정하면 된다. (참고로 a를 누르면 ..