본문 바로가기

pytorch8

윈도우 파이토치 쿠다 버전 안 맞는 오류 해결법 AssertionError : torch not compiled with cuda enabled 최근 Windows 환경에서 Pytorch를 GPU버전으로 설치하려는데, torch는 실행이 잘 되는데 GPU와의 연결이 잘 안되는 경우가 생겼다. 에러 메시지는 다음과 같다. (리눅스에서도 뜨는 경우를 봤던 것 같다) AssertionError : torch not compiled with cuda enabled 참고로 pytorch 설치는 다음과 같이 진행하였다. conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia 이 중 한 깃헙 이슈에서 발견한 좋은 해결책을 공유한다. pip uninstall torch pip cache purge pip install torch -f https://download.p.. 2023. 11. 3.
[머신러닝 응용] Convolutional layer로 곱을 표현하기 최근 인공 지능이 급부상함에 따라 함께 뜬 유명한 키워드는 CNN일 것입니다. 아마 인공 지능을 조금이라도 공부해보셨다면 CNN을 들어봤을텐데, 정확하게 이해하지 못하고 사용하는 경우도 많을 것이라고 생각합니다. 특히, 점점 인공 지능에 대한 정확한 이해 없이 누구나 쉽고 간편하게 인공 지능 모델을 만들고 테스트할 수 있도록 여러 툴들이 개발되고 간소화되고 있기도 합니다. 뉴럴 네트워크에는 그 형태나 사용하는 테크닉에 따라 Convolutional neural network, Recurrent neural network, Graph neural network 등 다양한 이름들이 있는데 사실 정확하게 구분이 되지 않않을때가 많습니다. 어찌 되었건 그 중 가장 널리 알려지고 주로 사용되는 이름이자 분류는 C.. 2022. 1. 14.
[Pytorch] 진짜 커스텀 데이터셋 만들기, 몇 가지 팁 Pytorch 개발자들이 이미 데이터셋, 데이터로더 클래스를 여러 개 만들어 두었다. 데어터셋의 경우 ImageFolder, DatasetFolder 와 같이 내 폴더 안에 있는 데이터들을 돌게 해주는 애들과 CIFAR10, ImageNet 등 유명한 베이스라인 데이터셋을 다운로드부터 train/test 스플릿까지 손쉽게 해주는 클래스 들이 있다. 이번에는 이런 것보다 조금 더 low-level로 직접 데이터셋 클래스를 만들어서 이를 데이터로더에 집어 넣는 것까지 해보겠다. 핵심은 바로 위 사진에 있는 torch.utils.data.Dataset 이라는 class를 상속받는 자식 클래스를 만들 것이다. 이 자식 클래스가 필요로 하는 메소드는 3가지이며, 다음과 같다. (언더바가 두 개임) 설명을 잘 모르.. 2021. 10. 4.
[CUDA] GPU 메모리는 할당되어 있는데 프로세스가 안 나올때 사진은 없긴 한데 또 생기면 캡쳐해서 올리겠습니다. nvidia-smi 는 GPU의 사용량을 모니터링하기 위해 사용합니다. 여기에는 GPU가 몇 개인지 어떤 GPU인지, 메모리는 얼마나 사용하고 있는지, 파워나 온도 등 여러 정보가 나옵니다. 추가로 watch -n 1 nvidia-smi 를 터미널에 치면 1초마다 업데이트 됩니다. nvidia-smi를 1초마다 눌러라 라는 명령이라서요. 그런데 가끔 코드를 돌리다가 Ctrl + C를 통해서 코드를 Terminate 시킬 때 어떻게 잘못하게 되면 nvidia-smi의 위쪽 부분에서 분명 메모리는 할당되어 있는데 아래에 Process에는 아무것도 없는 상황이 생길 때가 있습니다. 이 때에는 실제로 다시 코드를 돌려보면 GPU Out of Memory가 뜨게.. 2021. 5. 4.
러닝레이트 줄이기 vs 배치사이즈 키우기 "[1] Don't decay the learning rate, increase the batch size" 리뷰, 설명입니다. Learning rate decay 라는 것을 들어보셨나요? 머신 러닝에서 굉장히 중요하고 민감한 learning rate라는 하이퍼 파라미터를, 학습이 진행됨에 따라 점차 줄이는 것입니다. 대부분의 머신 러닝 테크닉이 그렇듯이 learning rate decay를 해보니 generalization이 잘 되더라, 로 시작해서 이러이러해서 잘 되는 것 같다라고 설명합니다. "[2] On large-batch training for deep learning: Generalization gap and sharp minima"라는 논문에서 해답을 찾을 수 있습니다. 1. General.. 2020. 5. 16.
[torchsummary] Pytorch에서 keras처럼 모델 출력하기 [수정 2022/06/12] torchsummary 패키지는 torchinfo 라는 패키지로 업그레이드되며 이름이 바뀌었습니다. pytorch와 함께 사용할 수 있는 torchsummary라는 파이썬 패키지입니다. pip install torchsummary git clone https://github.com/sksq96/pytorch-summary 위와 같이 pip를 통해서 설치할 수 있고, 아래와 같이 직접 깃허브에 있는 소스코드를 다운받아 사용할 수 있습니다. Pytorch는 keras에 비해 모델을 출력했을 때 깔끔하게 볼 수 가 없습니다. keras의 경우는 파라미터의 개수 레이어의 종류, 넘버 등을 표로 정리해서 알려주는 것과 비교해보면 말이죠. 위 torchsummary 라는 패키지가 pyt.. 2020. 5. 6.
[Pytorch] 모델 '적절하게' 저장하기 (+ 여러 모델) 파이토치에는 모델을 저장하는 방법이 여러 가지 있습니다. 단순히 1. torch.save(path, model) 이렇게 하면 모델이 통채로 저장이 되기는 합니다. 2. torch.save(path, model.state_dict()) 이렇게 하면 모델 안에 있는 파라미터들을 저장하는 것입니다. 첫번째 방식의 경우 1. model = torch.load(path) 이렇게 하면 load가 가능하고 두 번째 방식의 경우에는 모델을 선언도 해줘야 하고 모델의 구조가 다르면 안됩니다. model = MODEL().cuda() model.load_state_dict(torch.load(path)) 이렇게 모델을 선언하고, 그 모델에 파라미터들을 대입하는 과정이 필요합니다. 아무리 생각해도 첫 번째 방식이 편한 것 .. 2020. 4. 15.
[Pytorch] Dataloader 다양하게 사용하기 (custom loader) 파이토치의 데이터로더는 아래의 형태와 같이 사용합니다. path = 'C:/test' dataset = torchvision.dataset.ImageFolder(root=path, transform=transforms.Compose([ transforms.Grayscale(), transforms.ToTensor(), ])) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True) 이미지든 어떠한 형태의 데이터를 모두 다룰 수 있지만, 위에 사용한 ImageFolder는 이미지를 다루는 애고 다른 형식의 데이터는 조금 후에 말하겠습니다. 데이터로더는 만들어진 이유가 Classification 태스크를 다루기.. 2020. 4. 15.