torch(7)
-
정보성) cuda11.4 와 맞는 torch version 2.0.1
cuda 11.4일 때 pytorch 2.0 대를 쓰고 싶어서 인터넷에서 찾아봤고 공유드린다. 바로 2.0.1이다(2024.02.25 기준) (python 3.10) pip install torch==2.0.1 그렇다면 어떻게 찾을 수 있을까? - 모르겠다..ㅎ 일단 재 설치되는 기준으로 보면 아래와 같은 것들이 설치가 되기는 했다. pip list | grep cuda cuda 11.7 관련한 것들을 자동으로 설치하는 것 같다. Collecting nvidia-cuda-nvrtc-cu11==11.7.99 (from torch==2.0.1) Downloading nvidia_cuda_nvrtc_cu11-11.7.99-2-py3-none-manylinux1_x86_64.whl.metadata (1.5 kB..
2024.02.25 -
Tabular) 좋은 피처 만드는 전처리 방법 정리해보기 (preprocessing)
정형 데이터를 딥러닝에 사용할 때 임베딩하는 방법에 대해서 정리해보고자 한다. 흔히 아는 머신러닝과 딥러닝의 차이를 이런 식으로 표현한다. (물론 딥러닝은 머신러닝의 부분집합이긴 해서 이렇게 구분하는 게 맞지는 않기는 한 것 같다) 여기서 말하는 머신 러닝은 흔히 이야기하는 tree 계열 알고리즘이나 회귀분석 같은 통계 기반의 방법론들을 생각해 주면 될 것 같다. 정형데이터 AI 모델 개발 방식 말하고자 하는 것은 흔히 딥러닝을 써서 얻을 수 있는 기대효과는 알아서 데이터에 대한 정보를 추출(feature extraction)할 수 있다는 믿음하에 딥러닝 방법론을 많이 사용하게 된다. 정형데이터 AI 모델 개발 방식 트렌드 크게 현재 데이터로 많이 사용하는 것이 tabular, image, text, g..
2023.10.04 -
[RL] PPO 학습 중에 nan 나오는 특이한 경우
강화 학습 학습 도중에 에러가 나는 경우를 공유한다. 바로 액션 공간이 좀 큰 상황에서 특정 값이 너무 작게 나오는 데 선택하는 경우이다. 아래처럼 예시를 만들면 다음과 같다. 특정 logit들은 엄청 크게 나오지만, 한 개의 logit은 엄청 작게 나오는 데 그것을 선택하는 경우 문제가 발생한다. 바로 아래와 같은 경우이다. logit = torch.randint(low=1000000,high=2000000,size=(1,128*128*2)) logit[0,0] = 1e-4567 dist = Categorical(logits=logit) log_prob = dist.log_prob(torch.tensor([0])) ## tensor([-1999934.]) PPO에서는 아시다시피 old log prob와..
2022.05.12 -
Pytorch 1.11 이후) functorch 알아보기
22년 3월 14일 기준 현재까지는 Beta 버전입니다. Google JAX에서 크게 영감을 받은 functorch는 구성 가능한 함수 변환을 PyTorch에 추가하는 라이브러리입니다. PyTorch 모듈 및 PyTorch autograd와 함께 작동하는 구성 가능한 vmap(벡터화) 및 autodiff 변환을 우수한 eager-mode 성능으로 제공하는 것을 목표로 합니다. 구성 가능한 함수 변환은 오늘날 PyTorch에서 수행하기 어려운 여러 사용 사례에 도움이 될 수 있습니다. computing per-sample-gradients (or other per-sample quantities) running ensembles of models on a single machine efficiently b..
2022.03.14 -
einsum 알아보기
목차 개념 가끔 보면 einsum을 홍보하는 글을 보거나 코드에서 본 것 같다. 처음에는 대수롭지 않게 생각을 했는데, 좀 더 자세히 보니 매력적인 부분이 많은 것 같아 알아보려고 한다. 특히 매력적인 부분은 이것만 알고 있으면 numpy , pytorch, tensorflow 다 동일하게 적용할 수 있다는 점이다. 선형 대수학은 딥러닝 분야에서 근본적인 역할을 하는데, 아직까지는 춘추전국시대라서 통일된 라이브러리가 없고 계속 생겨나는 시점이라 이럴수록 하나로 통일해주는 것을 배우면 좋을 것 같다고 생각했다. 그리고 잘만쓰면, 복잡한 연산도 쉽게 구현할 수 있는 것 같아서 좋은 것 같다. einsum 연산을 통해서, 행렬 내적, 외적, 내적, 행렬곱 등을 동일한 형태로 할 수 있다는 것이 참 매력적인 부..
2021.12.07 -
[Pytorch] Error : Leaf variable has been moved into the graph interior 해결 방법 공유
torch에서 loss.backward()를 할 때 다음과 같은 에러를 경험을 했다 특정값에 inplace를 하게 되면 다음과 같은 에러가 생긴다. 필자는 아래와 같은 것이 loss에 들어가 있었다. ## 1 array[array==1] = 0.0 ## 2 array[idx] = logit 그래서 필자는 다음과 같이 여러개의 글을 보고 수정했다. 하나는 새로운 객체로 만드는 것이다 애는 단순히 개수를 세주는 역할이라서 해결됐다. array[array==1.0] = 1 count = array.sum() 두 번째는 torch.cat을 사용했다. (불확실!) 사용하지 않는 것과 사용하는 것들을 모아서 새로운 tensor를 만드니 작동했다. 물론 근데 update는 된 거지만 실제로 반영됐지는 아직 필요하다 ..
2021.01.16 -
[TIP / Pytorch] torch class name 얻는 방법
torch class 이름을 얻고자 할 때, 삽질을 하였기 떄문에, 블로깅다른 사람들은 삽질을 덜 하셨으면 한다!layer = torch.nn.Linear(10,5) layer.__class__.__name__
2020.10.31