본문 바로가기

Pytorch/Tips8

터미널마다 다른 CUDA버전 적용하는 법 코드를 돌리다보면 어쩔 수 없이 다른 CUDA 버전을 사용해야 할 때가 있다.먼저 컴퓨터에 설치된 cuda 종류를 확인하자.ls /usr/local/ | grep cuda이제 원하는 버전을 아래 코드를 실행하여 적용하면 된다.export CUDA_HOME=/usr/local/cuda-11.3export PATH=$CUDA_HOME/bin:$PATHexport LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH이러면 그 터미널에서는 cuda 버전이 11.3 으로 적용된다. 아래 코드로 확인하자nvcc -V 2025. 3. 27.
랜덤시드 고정 안될때 Pytorch 실험할 때는 재현성을 위해 랜덤 시드를 고정해야 한다.이때 보통 다음코드를 써서 고정을 한다.print("random seed fix--")torch.manual_seed(args.seed)random.seed(args.seed)os.environ['PYTHONHASHSEED'] = str(args.seed)np.random.seed(args.seed)torch.cuda.manual_seed(args.seed)torch.cuda.manual_seed_all(args.seed)torch.backends.cudnn.deterministic = Truetorch.backends.cudnn.benchmark = Falsetorch.backends.cudnn.enabled = False이렇게 see.. 2025. 3. 25.
Pytorch Weighted cross entropy 구현 cross entropy는 일반적으로 torch.nn 라이브러리를 통해사용할 수도 있지만, 이를 변형하기 위해서는 cross_entropy를 구현할 수도 있어야 한다. 다음은 일반적인 cross entropy다.output = model(input)output = F.log_softmax(output, dim=-1)target = F.one_hot(label, num_classes = N)loss = -(target*output).sum(dim=-1)loss = loss.sum()/output.shape[0] 이때 weighted 옵션을 주면 다음과 같다.output = model(input)output = F.log_softmax(output, dim=-1)target = F.one_hot(label,.. 2024. 4. 26.
Pytorch Learnable parameter, 학습가능한 파라미터 만들기 우리가 pytorch 내에서 학습 가능한 파라미터를 만들어야 할 때가 종종 있다. 1 이때 nn.Module 내에 파라미터를 선언할 경우 parameter = nn.Parameter(torch.randn(10).cuda()) 위와 같이 선언하여 사용하면 된다. 2 nn.Module 외에서 위 파라미터를 선언한 후 아래와 같이 연산을 한다면 parameter = parameter.exp() parameter = parameter.double() 아래와 같은 ValueError: can't optimize a non-leaf Tensor 에러를 만나게 된다. 이는 이미 만들어진 파라미터를 다른연산으로 casting하였기 때문이라고 하는데 pytorch를 자세히 공부하지 않아서 이해는 안된다. 하지만 해결 방.. 2024. 3. 14.
우분투 Ubuntu Nvidia 드라이버, CUDA, cuDNN 설치 초보자때 CUDA 버전 업을 하려니까 Nvidia 드라이버 날아가고.. cuDNN 에러나고 난리났었는데설치 방법을 제대로 알려주는 블로그가 없었어서한번에 확실하게 설치하기 위해 정리했습니다.cnDNN 버전 9부터 사이트가 변경된것 같은데, cnDNN 8버전을 설치하는법을 기록해두었습니다.(cnDNN 8으로도 웬만하면 이상없이 사용가능할것입니다.) nvidia driver 삭제 및 설치부터 CUDA, cuDNN 삭제 및 설치까지 모두 정리했습니다.(본인도 nvidia 드라이버나 cuda 다시 설치할 때 이거 보고 설치합니다) 1. nvidia driver 삭제sudo apt-get purge nvidia*sudo apt-get autoremovesudo apt-get autoclean 어떤 블로그는 CUD.. 2023. 6. 8.
Pytorch dataset에서 특정 class만을 load하는 Dataloader 만드는법 torchvision 라이브러리는 웬만한 dataset을 모두 지원해주기 때문에 매우 편한 라이브러리다. 그러나 연구를 하다보면 가끔 dataset class 중 특정 class만이 필요할 때가 있다. 이때 다음과 같은 방법으로 손쉽게 특정 class를 추출할 수 있다. 먼저 원하는 데이터셋을 torchvision 코드로 설정한다. (STL 10을 예시로 들겠다.) training_data = torchvision.datasets.STL10( root=".", split='train', download=True, transform=transform ) 위는 일반적인 dataset을 불러오는 방법이다. 이렇게 만든 dataset은 모든 class가 포함되어 있다. 이제 Subset 모듈을 사용하면 된다. .. 2023. 5. 12.