전체 PDF 자료!

 

개발환경 세팅(WSL CUDA 설치).pdf
1.34MB

 

1. 문제의 발단

 

- 기존 프로젝트 개발을 클라우드 서버에서 Linux OS로 개발
- CUDA가 세팅 되어있는 가상 환경을 받아서 사용
- 개발 환경 세팅의 어려움없이 이용
- Windows OS PC에서 개발환경 설정 → 경로 오류 발생으로 개발 지연 발생

 

2. 사용된 하드웨어 스펙

- CPU: Intel i9-10850K
- GPU: NVIDIA GeForce RTX 3090
 

3. 문제해결을 위한 고민

- Windows OS에서도 동작 가능하도록 경로를 모두 수정하는 방법

- Linux OS의 가상머신(Virtual Machine)을 구축하는 방법

- WSL을 활용하여 Windows에서 Linux환경을 구축하는 방법

 

4. 문제해결 방법 선택

1. Windows OS에서도 동작 가능하도록 경로를 모두 수정하는 방법

 => 하드코딩 되어있는 부분이 많아 경로를 수정하는데 시간이 많이 소요

2. Linux OS의 가상머신(Virtual Machine)을 구축하는 방법

 => 가상머신 프로그램에서 Computing Cost가 과다하게 발생할 것으로 예상

3. WSL을 활용하여 Windows에서 Linux환경을 구축하는 방법

 => CUDA를 잘 설치할 수 있을까? 의문이 들었지만, 시도해보기로 결정!

5. WSL 설치 에러

- PowerShell에서  wsl --install” 하면 설치가 됩니다!
- WSL (Windows Subsystem for Linux) 설치 오류 발생 !
- Error: 0x80370102 필요한 기능이 설치되어 있지 않아 가상 머신을 시작할 수 없습니다.
[참고URL]

- 설치 하는 중 에러가 발생한다면 확인해야 할 것들!
- BIOS에서 가상화가 사용되고 있는지 확인
-BIOS에서 가상화가 사용되고 있는지 확인(추가 예시)
 
-SVM Mode 활성화로 변경 필요!
 

 

6. WSL 전용 그래픽 드라이버 설치

- Windows의 하위 시스템이므로 Windows에 설치된 그래픽 드라이버를 사용할 수 있을 줄 알았지만, 그것은 역시나 착각
- WSL 전용 그래픽 드라이버 설치 필요!!
[설치 링크]

8. GPU 인식 실패

- WSL 전용 그래픽 드라이버와, WSL 전용 CUDA를 설치 했지만,
 
- 매뉴얼대로 설정했으나, 그래픽 카드가 인식 실패?
 
- 아무리 해도 안 돼서 쉴 겸..

- 로스트아크 실행해보니, 렉이 발생하는 것을 확인
- 컴퓨터 사양에 렉이 걸리는 것에 이상함 감지!
- 장치 관리자 디스플레이 어댑터 목록에 외장 그래픽 카드가 표시되지만 설정이 안 되는 것을 확인!
-본체 뒷면을 확인해보니, 모니터 선이 내장 그래픽 포트에 연결된 것을 확인!
-외장 그래픽 포트에 연결하니 정상적으로 작동!!

 

9. torch.cuda.fail, nvidia-smi 명령어 안됨 현상

- 이제는 될 때가 되지 않았니??
- 여전히 torch.cuda.fail, nvidia-smi 안됨 현상
- 에러 메시지

 

[폭풍 구글링 후 참고 링크]
-https://pbsquid.tistory.com/entry/WSL-Cuda-WSL-환경에서-실행하기-1-WSL에서-Cuda-사용
 

[WSL] Cuda WSL 환경에서 실행하기-3 : WSL에서 Cuda 사용

1. Nvidia Container Toolkit 설치 우분투에서 아래명령어 차래대로 실행 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add..

pbsquid.tistory.com

- Windows 업데이트가 필요하다!
- 업데이트 링크[웹에서 최신 업데이트가 필요합니다. 해당 링크를 활용하세요!]
 

Windows 10 다운로드

Windows 10용 ISO 파일을 다운로드한 경우, 해당 파일은 선택한 위치에 로컬로 저장됩니다.컴퓨터에 타사 DVD 굽기 프로그램이 설치되어 있으며 해당 프로그램을 사용하여 설치 DVD를 만들려는 경우,

www.microsoft.com

 

10. torch.cuda.is_available() == True

-드디어 True!!
-느낀점

이렇게 다양한 에러를 경험했지만 끝까지 포기하지 않고 목표를 달성했습니다.

디버깅 과정을 상세히 기록하여 다음에도 활용할 수 있도록 했으며,

해당 문서가 다른 개발자 분들에게 도움이 되길 바랍니다.

 

부록. CUDA Out of Memory 개선

- 같은 스펙의 PC에서 프로그램이 정상적으로 동작했는데,
- 다른 PC에서는 CUDA Out of memory 발생
- cuda pin memory = False
 
[참고 링크]

https://discuss.pytorch.org/t/when-to-set-pin-memory-to-true/19723
 

When to set pin_memory to true?

From the imagenet example: train_loader = torch.utils.data.DataLoader( train_dataset, batch_size=args.batch_size, shuffle=(train_sampler is None), num_workers=args.workers, pin_memory=True, sampler=train_sampler) val_loader = torch.utils.data.DataLoader( d

discuss.pytorch.org



https://discuss.pytorch.org/t/using-pined-memory-causes-out-of-memory-error-even-though-batch-size-is-set-to-low-values/30602
 

Using pined memory causes out-of-memory error even though batch size is set to low values

I am fine-tuning on a custom dataset using ResNet. I have met with this strange issue. When I try to train the model, I see the following error message: THCudaCheck FAIL file=/opt/conda/conda-bld/pytorch_1535491974311/work/aten/src/THC/THCCachingHostAlloca

discuss.pytorch.org



https://cvml.tistory.com/24
 

num_workers & pin_memory in DataLoader

pytorch를 이용해 딥러닝 모델을 학습시킬 때 custom dataset을 이용할 경우 torch.utils.data.Dataset으로 데이터셋을 정의하고(input data type, augmentation 등) torch.utils.data.DataLoader로 어떻게 데이터..

cvml.tistory.com

 
- cuda pin memory = False

연산을 빠르게 해주고, 미리 올려놓고 하는 방법으로 알고 있다.

+ Recent posts