안경잡이개발자

728x90
반응형

※ 개요 ※

 

  필자는 개인 PC에 윈도우 10 (Windows 10) 운영체제를 설치해 사용하고 있다. 가끔씩 윈도우 환경에서 PyTorch를 설치하여 GPU로 뉴럴 네트워크 모델을 학습해야 할 때가 있다.

 

※ 시스템 환경 분석하기 ※

 

  딥러닝 개발 환경을 구축하기 전에, 가장 먼저 자신의 컴퓨터 시스템 환경을 확인할 필요가 있다. 윈도우 운영체제에서 [장치 관리자]를 실행하면 다음과 같이 그래픽 카드에 대한 정보가 나온다. 필자는 NVIDIA GeForce RTX 3080 Ti를 사용하고 있다.

 

 

  이후에 [시스템 정보]를 실행하면 다음과 같은 화면이 나온다. 필자는 AMD 라이젠9-4세대 5900X를 사용하고 있다. 다음과 같이 [프로세스]란에 자신이 사용 중인 CPU 정보가 등장하는 것을 알 수 있다.

 

 

  이어서 자신이 사용 중인 메인 메모리(RAM)의 용량도 나오는 것을 확인할 수 있다.

 

 

※ 파이썬(Python) 설치하기 ※

 

  가장 먼저 파이썬(Python)을 설치하자.

 

  ▶ 파이썬 다운로드: https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

  파이썬 공식 다운로드 홈페이지로 이동한 뒤에 [Download Python] 버튼을 눌러서 파이썬 설치를 진행한다. 파이썬 설치 프로그램 다운로드가 완료되면, 단순히 실행하여 설치하면 된다. 설치가 완료된 이후에는 [Add Python to PATH] 버튼에 체크하여 Python을 PATH에 추가해주면 된다. 그러면 명령 프롬프트(CMD)와 같은 환경에서 파이썬을 손쉽게 실행할 수 있게 된다.

 

 

  필자는 이미 Python 3.10.2를 설치한 상태다. 설치가 정상적으로 완료되었다면 명령 프롬프트(CMD)를 실행한 뒤에 다음과 같이 python --versionpip --version 명령어를 입력하여 버전을 확인한다.

 

 

※ Python 가상환경 virtualenv 사용하기 ※

 

  필자는 Anaconda 대신에 virtualenv를 사용하는 편이다.

 

pip install virtualenv

 

  설치 이후에는 다음과 같이 가상환경을 생성할 수 있다. 필자는 mine이라는 이름으로 만들었다.

 

python -m virtualenv mine

 

  이후에 다음과 같이 가상환경에 접속한다. 참고로 윈도우 운영체제에서 이를 정상적으로 수행하기 위해서는 명령 프롬프트 대신에 Windows Powershell을 관리자 권한으로 실행해야 할 수도 있다. 또한 이 경우에 콘솔 창에 다음과 같은 명령어를 추가적으로 입력해야 한다.

 

Set-ExecutionPolicy Unrestricted -Force

 

  결과적으로 생성된 가상환경의 Scripts\activate 프로그램을 실행하면 된다. 그러면 다음과 같이 mine 가상환경에 접속한 것을 알 수 있다.

 

 

  참고로 가상환경에서 빠져나올 때는 deactivate 명령어를 사용하면 된다. 필자는 다음과 같은 기본적인 라이브러리를 모두 설치했다.

 

pip install numpy
pip install pandas
pip install matplotlib
pip install opencv-python
pip install scipy
pip install scikit-learn
pip install scikit-image

 

  이후에 이러한 가상환경에 PyTorch도 설치할 예정이다. (아래 부분 참고)

 

※ CUDA 환경 확인하기 ※

 

  현재 가지고 있는 GPU가 CUDA Toolkit을 사용할 수 있는지 확인한다. 구체적으로 Compute Capability를 확인하면 된다. 바로 아래의 NVIDIA CUDA GPU 홈페이지에 접속하자.

  

  ▶ NVIDIA CUDA GPU 홈페이지: https://developer.nvidia.com/cuda-gpus

 

  홈페이지에 접속한 뒤에 자신의 GPU 버전을 확인한다. 필자는 GeForce RTX 3080 Ti를 사용하고 있는데, 다음과 같이 8.6 Compute Capability에 해당하는 것을 확인할 수 있다.

 

 

  혹은 위키백과에 접속하여 동일한 내용을 확인할 수 있다.

 

  ▶ 위키백과 "CUDA" 페이지: https://en.wikipedia.org/wiki/CUDA

 

  다음과 같이 RTX 3080 Ti는 8.6 Compute Capability에 해당한다고 알려주는 것을 알 수 있다.

 

 

※ CUDA Toolkit 설치하기 ※

 

  이제 CUDA Toolkit을 설치한다. 필자는 2022년 기준으로 아직도 많이 사용되고 있는 CUDA Toolkit 11.3을 설치할 것이다. 기본적으로 NVIDIA 공식 홈페이지에서 제공하는 CUDA Tookit Archive 웹 사이트에 방문한다.

 

  ▶ CUDA Toolkit Archive: https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

 

  필자는 다음과 같이 CUDA Toolkit 11.3.0을 선택했다.

 

 

  다음과 같이 자신의 환경을 적절히 선택하여 다운로드를 진행하면 된다. 윈도우 10 (Windows 10)을 사용하는 경우 기본적으로 다음과 같이 선택하면 된다.

 

 

  필자는 다음과 같이 기본 경로를 그대로 이용하여 설치를 진행했다.

 

 

  이후에 필자는 다음과 같이 라이센스에 동의한 뒤에 [빠른 설치]를 선택하여 설치를 진행했다.

 

 

※ cuDNN 설치 ※

 

  이후에 cuDNN을 설치한다. 필자는 CUDA Toolkit 11.3을 설치했기 때문에, 이에 호환되는 cuDNN을 설치하면 된다.

 

  ▶ NVIDIA cuDNN Archive: https://developer.nvidia.com/rdp/cudnn-archive

 

cuDNN Archive

NVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.

developer.nvidia.com

 

  이때 계정 로그인이 필요하다고 나올 수 있는데, 계정이 없다면 [Join now] 버튼을 눌러 계정을 생성해준다.

 

 

  이메일 주소를 입력한 뒤에 [Next]를 누르면 된다.

 

 

  이메일 인증 이후에 프로필(profile)을 완성하여 회원가입을 마친다. 이후에 생성된 계정으로 로그인을 진행한다. 그리고 자신이 설치한 CUDA 버전에 맞는 cuDNN을 찾아 설치한다. 필자는 CUDA 11.x를 설치했으므로, 이에 맞는 cuDNN을 찾아서 선택했다.

 

 

  다음과 같이 윈도우(Windows) 운영체제에 맞는 cuDNN 라이브러리를 선택하여 다운로드한다.

 

 

  다운로드 이후에 압축을 풀면 다음과 같이 bin, include, lib 폴더가 보인다.

 

 

  앞서 설치했던 CUDA Toolkit의 설치 경로에 가보면 전체 폴더가 다음과 같이 구성되어 있는 것을 확인할 수 있다. 이제 cuDNN 폴더에 존재하는 bin, include, lib 폴더를 다음의 경로에 옮겨주면 된다. 필자는 마치 폴더를 덮어쓰듯이 그대로 옮겨주었다.

 

 

※ PyTorch 설치 ※

 

  이제 CUDA와 cuDNN이 모두 준비되었으므로, PyTorch를 설치한다. 공식 홈페이지에 접속하여 설치 명령어를 확인한다.

 

  ▶ PyTorch 설치: https://pytorch.org/get-started/locally/

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

 

  필자는 다음과 같이 패키지 관리 프로그램으로 PIP를 선택하고, 플랫폼으로는 CUDA 11.3을 선택했다. 그러면 다음과 같이 설치 명령어가 등장한다. 이것을 그대로 복사해서 사용하면 된다.

 

 

  설치 명령어가 다음과 같은 것을 확인할 수 있다.

 

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113

 

  마찬가지로 앞서 만들었던 가상환경에 접속하여 위 설치 명령어를 입력하여 PyTorch 설치를 수행한다.

 

※ GPU 기반의 PyTorch 딥러닝 개발 환경 정상 설치 여부 확인하기 ※

 

  이제 정상적으로 설치가 완료되었는지 확인할 차례다. 가장 먼저 nvidia-smi 명령어를 입력하여 CUDA 드라이버(driver)를 확인할 수 있다.

 

 

  이후에 PyTorch를 이용한 GPU 기반의 딥러닝 개발 환경이 정상적으로 설치되었는지 확인하자. 간단하게 아래의 코드를 실행하면 된다.

 

import torch

torch.cuda.is_available()
torch.cuda.device_count()
torch.cuda.current_device()
torch.cuda.device(0)
torch.cuda.get_device_name(0)

 

  필자는 다음과 같이 NVIDIA GeForce RTX 3080 Ti라는 이름으로 GPU 장치(device)가 잡히는 것을 알 수 있다. 이상으로 딥러닝 PyTorch 개발 환경 구축이 완료되었다.

 

728x90
반응형

Comment +0

728x90
반응형

※ 개요 ※

 

  컴퓨터 작업을 하다 보면, 원격 접속이 필요할 때가 있습니다. 예를 들어 현재 카페에 나와 있는데, 집에 있는 데스크톱에 접속해야 하는 경우가 대표적입니다. 이럴 때는 다양한 원격 접속 프로그램을 사용할 수 있습니다. 그 중 대표적인 것으로 편리하게 사용할 수 있는 크롬(Chrome) 원격 접속 프로그램이 있습니다.

 

※ Chrome 원격 데스크톱 설치원격 접속 설정하는 방법 ※

 

  구글(Google) 계정크롬(Chrome)이 설치되어 있다면, 원격 데스크톱 기능을 간단히 이용할 수 있습니다. 먼저 접속 대상이 되는 컴퓨터를 실행해 주세요. 다음과 같이 Chrome 원격 데스크톱 공식 웹 사이트에 접속합니다.

 

  ▶ Chrome 원격 데스크톱: https://remotedesktop.google.com/

 

Chrome 원격 데스크톱

Simple 컴퓨터, Android 기기 또는 iOS 기기를 사용하여 원하는 방식으로 연결하세요. 어떤 방법을 선택하든 필요할 때 모든 컴퓨터와 파일에 간편하게 액세스할 수 있습니다.

remotedesktop.google.com

 

  접속 이후에는 [내 컴퓨터에 엑세스]를 눌러서 외부 기기(스마트 폰, 다른 컴퓨터 등)에서 현재 컴퓨터에 접속할 수 있도록 합니다.

 

 

  이후에 [원격 액세스] 기능을 선택하여 [다운로드]를 진행합니다.

 

 

  이것은 일종의 크롬(Chrome) 확장 프로그램이므로, 일반적인 확장 프로그램을 설치하는 과정과 동일합니다. 먼저 [Chrome에 추가]를 눌러줍니다.

 

 

  이후에 [확장 프로그램 추가]를 진행합니다.

 

 

  결과적으로 [동의 및 설치]를 진행합니다.

 

 

  이제 .msi 확장자인 설치 프로그램을 실행하여 설치를 진행하면 됩니다. 이는 원격 제어를 위한 별도의 프로그램으로 보면 됩니다. [예]를 눌러서 설치를 진행합니다.

 

 

  설치가 완료되면 컴퓨터 이름을 설정하고, [다음]을 누릅니다.

 

 

  이후에 비밀번호(PIN 번호)를 입력하고, [시작] 버튼을 누르면 설정이 완료됩니다.

 

 

  결과적으로 원격으로 접속이 가능하도록, [원격 액세스] 부분이 활성화 된 것을 확인할 수 있습니다.

 

 

  (중요) 참고로 화면이 꺼진 상태에서는 원격 접속이 가능하지만, [절전 모드]일 때는 접속이 불가능합니다. 따라서 절전 모드가 실행되지 않도록, [디스플레이 설정] - [전원 및 절전] 탭으로 이동합니다. 여기에서 다음과 같이 [절전 모드] 항목에 대하여 [사용 안 함]으로 설정을 진행합니다.

 

 

※ 외부 컴퓨터(PC)에서 원격 데스크톱에 접속하는 방법 ※

 

  이제 외부 컴퓨터(PC)에서 앞서 설정한 원격 데스크톱 컴퓨터에 접속할 수 있습니다. 따라서 원격 접속을 진행할 컴퓨터를 실행합니다. 크롬(Chrome) 브라우저를 실행한 뒤에 동일한 구글 계정으로 로그인을 진행하면 됩니다.

 

 

  이후에 마찬가지로 Chrome 원격 데스크톱 웹 페이지에 접속합니다.

 

  ▶ Chrome 원격 데스크톱https://remotedesktop.google.com/

 

Chrome 원격 데스크톱

Simple 컴퓨터, Android 기기 또는 iOS 기기를 사용하여 원하는 방식으로 연결하세요. 어떤 방법을 선택하든 필요할 때 모든 컴퓨터와 파일에 간편하게 액세스할 수 있습니다.

remotedesktop.google.com

 

  이후에 [내 컴퓨터에 액세스]를 클릭하여 원격 기기를 확인할 수 있습니다.

 

 

  다음과 같이 앞서 등록했던 원격 기기 정보가 출력됩니다. 이를 클릭하여 접속을 시도합니다.

 

 

  결과적으로 PIN 번호(비밀번호)를 입력하여 접속을 진행할 수 있습니다.

 

 

  결과적으로 다음과 같이 정상적으로 원격 접속이 완료된 것을 확인할 수 있습니다.

 

 

  처음 원격 접속을 진행하면, 다음과 같이 기본적인 옵션(option)을 설정할 수 있습니다.

 

  1) 세션 옵션

 

  저는 [세션 옵션] 부분은 기본 설정을 그대로 사용합니다. 가끔 필요할 때 [전체화면]을 이용합니다.

 

 

  이후에 클립보드 설정을 진행합니다. 단순히 [시작] 버튼을 클릭하면 됩니다.

 

 

  그리고 [디스플레이][파일 전송] 옵션도 확인합니다.

 

 

  마지막으로, 필자는 단순히 크롬(Chrome) 브라우저를 이용해 원격 컴퓨터에 접속하는 것보다는 별도의 애플리케이션을 설치하는 것이 더욱 편리했습니다.

 

 

  이제 결과적으로 원격 접속 기능을 이용하면 됩니다.

728x90
반응형

Comment +0

728x90
반응형

※ 문제 상황 ※

 

  단순히 python3를 실행했을 때와 sudo python3를 실행했을 때, 프로그램이 다르게 실행될 때가 있다. 구체적으로 import 명령어로 불러올 수 있는 패키지의 차이가 있을 때가 있다. 예를 들어 sudo python3 명령어로 프로그램을 실행했을 때는 numpy 패키지가 설치되어 있지 않다고 나오는데, 단순히 python3 명령어로 프로그램을 실행했을 때는 정상적으로 실행되는 사례가 대표적이다.

 

  이럴 때는 which 명령어를 사용하여 각 python3 명령어의 경로를 찾을 수 있다. which 명령어는 리눅스(Linux)에서 특정한 명령어를 실행하기 위한 바이너리(binary) 실행 파일의 경로를 찾아주는 명령어다. which 명령어를 사용했을 때 다음과 같이 다른 경로로 지정되어 있을 것이다. 즉, 두 개의 python3 실행 파일이 다른 것이다.

 

$ sudo which python3
/usr/bin/python3

$ which python3
/home/dongbin/mine/bin/python3

 

※ 해결 방법 ※

 

  그렇다면 만약에 sudo 권한으로 개인 디렉터리에 있는 python3 명령어를 실행하고자 한다면 어떻게 하면 될까? 예를 들어 /home/dongbin/mine/bin/python3의 경로에 있는 python3 명령어를 실행하고자 한다면, 바로 다음과 같이 실행하면 된다.

 

$ sudo /home/dongbin/mine/bin/python3
728x90
반응형

Comment +0

728x90
반응형

※ PyTorch에서 특정한 학습 데이터 세트를 불러와 변형한 뒤에 저장하기 ※

 

  흔히 PyTorch를 이용해 학습을 진행하다 보면, 학습 데이터 세트에 변형을 가하는 경우가 많다. 이미지를 회전시키거나(rotation), 적대적 노이즈를 섞거나(adversarial attack), 이미지에 패치를 붙이거나(patching) 등의 작업을 수행하는 경우가 많다. 그렇다면 하나의 데이터 세트를 불러와 다양한 전처리를 수행한 뒤에, 전처리된 데이터를 저장해 놓고 나중에 사용하고자 한다면 어떻게 하면 될까?

 

  아래는 학습 데이터를 처리한 뒤에 저장하는 예시이다. 우리는 흔히 학습 데이터 세트를 데이터 로더(data loader)를 이용해 배치(batch) 단위로 불러와 학습한다. 이때 필자는 Epoch별로 서로 다른 image transformation을 적용하고, 각 Epoch마다 변형된 데이터 세트를 저장하고자 했다. 그래서 다음과 같이 코드를 작성했고, Epoch마다 전체 학습 데이터 세트를 하나의 Tensor 형태로 통째로 저장(save)하기 때문에, 많은 메모리 용량이 소요된다. (CIFAR-10 기준으로 Epoch당 약 600MB) 그래도 하나의 Tensor를 통째로 저장한다는 측면에서 저장하는 것 자체는 그다지 많은 시간이 걸리지 않았다.

 

epoch = 0 # 현재의 Epoch 명시
save = True # 저장할 것인지

saved_images = None
saved_labels = None

for batch_idx, (inputs, targets) in enumerate(data_loader):
    inputs, targets = inputs.cuda(), targets.cuda()

    """
    자신이 원하는 대로 데이터 세트를 처리하기
        - 처리된 입력 데이터: processed_inputs
        - 처리된 정답 레이블: processed_targets
    """

    # 각 배치(batch)의 데이터를 연결해 하나의 Tensor에 이어 붙이기
    if save:
        if saved_images == None:
            saved_images = processed_inputs
            saved_labels = processed_targets
        else:
            saved_images = torch.cat((saved_images, processed_inputs), 0)
            saved_labels = torch.cat((saved_labels, processed_targets), 0)

# 하나의 Tensor 형태로 처리된 데이터 세트 저장하기(epoch별로 저장)
if save:
    path = root_path + 'train_dataset/' + str(epoch) + '/'
    if not os.path.isdir(path):
        os.makedirs(path)
    torch.save(saved_images.cpu(), path + 'processed_inputs')
    torch.save(saved_labels.cpu(), path + 'processed_targets')

 

  나중에 데이터를 불러올 때는 다음과 같이 torch.utils.data.Dataset 라이브러리를 사용한다. 필자는 단순히 CIFAR-10 학습 데이터 세트에 대해서 만들었기에, 데이터 세트의 크기(length)도 50,000으로 넣었다.

 

class CustomDataset(torch.utils.data.Dataset):
    def __init__(self, images_path, labels_path):
        self.images = torch.load(images_path)
        self.labels = torch.load(labels_path)
        self.length = 50000

    def __getitem__(self, index):
        image_tensor = self.images[index]
        label_tensor = self.labels[index]
    
        return image_tensor, label_tensor

    def __len__(self):
        return self.length

 

  결과적으로 저장된 데이터 세트를 읽어오는 코드 예시는 다음과 같다.

 

images_path = root_path + 'train_dataset/' + str(prev_epoch) + '/processed_inputs'
labels_path = root_path + 'train_dataset/' + str(prev_epoch) + '/processed_targets'
custom_dataset = CustomDataset(images_path, labels_path)
custom_loader = torch.utils.data.DataLoader(custom_dataset, batch_size=batch_size, shuffle=False, num_workers=16)

 

※ 발생할 수 있는 문제 1 ※

 

  참고로 필자의 경우에는, 처음에 저장했던 Tensor를 다시 불러올 때 다음과 같은 CUDA 오류(error)가 발생했다.

 

"RuntimeError: CUDA error: device-side assert triggered"

 

  당시에 문제의 원인을 생각해 보니, 필자는 데이터를 불러와 학습을 진행할 때 DataParallel을 사용하고 있고, Tensor 데이터를 저장할 때는 Tensor를 CPU로 보내지 않고, 단순히 GPU에 올라가 있는 상태에서 Tensor 데이터를 save()했다. 그래서 저장하기 전에 cpu()를 호출하여 CPU로 보낸 상태에서 Tensor를 저장했더니 오류가 해결되었다.

 

※ 발생할 수 있는 문제 2 ※

 

  필자가 처음에 Tensor를 저장할 때는 단순히 이미지를 한 장씩 쪼개서 저장했다. 하지만 필자가 생각했던 것보다 저장되는 Tensor의 크기가 더욱 컸다. 3 X 32 X 32의 크기이기 때문에, 한 장의 이미지라는 점에서 하나당 약 12KB(3,072 X 4 Bytes)를 예상했기 때문이다. 그래서 결과적으로 이미지를 한 장씩 저장하지 않고, 60,000개의 데이터를 전부 하나의 Tensor에 concat으로 (concatenation)을 해서 저장했다. 이렇게 했을 때는 (3,072 X 50,000 X 4 Bytes) = 약 600MB의 크기로 데이터 세트가 저장되었다.

728x90
반응형

Comment +0

728x90
반응형

※ 오류 상황 ※

 

  아래 오류는 PyTorch 프레임워크를 이용하여 CNN 분류 모델의 학습 코드를 돌릴 때 마주쳤던 오류다.

 

  ▶ 오류 메시지: "RuntimeError: Function AddmmBackward returned an invalid gradient."

 

 

※ 오류 발생 원인 ※

 

  일반적으로 CNN에서는 convolutional layers에 기반한 feature extractor에서 나온 결과를 flatten한 뒤에 (벡터터로 변경한 뒤에) linear layer의 입력으로 넣는다. 다만 이때, flattened dimension과 linear layer의 input dimension이 서로 다를 때 발생할 수 있는 오류다.

728x90
반응형

Comment +1

728x90
반응형

※ 본 게시글은 필자의 경험을 기반으로 작성된 글로, 잘못된 정보가 포함되어 있을 수 있습니다. ※

 

  팀뷰어(TeamViewer)를 이용하면 다른 사람과 1:1로 연결하여 무료로 원격 제어 및 화상 통화가 가능하다. 일반적으로 ① 친구가 어려워하는 컴퓨터 작업이 있을 때, 친구의 컴퓨터 작업을 도와주기 위한 목적 등으로 원격 제어를 사용하곤 한다. ② 혹은 집 컴퓨터에 팀뷰어를 설치해 놓고, 집 밖에서 집 컴퓨터를 원격으로 제어하고자 할 때 사용하곤 한다.

 

  실제로 집 컴퓨터에 대하여 원격제어를 열어 놓으면, 중요한 발표 자료를 클라우드에 업로드하지 않았을 때, 급하게 집으로 뛰어가는 불상사를 막을 수 있다. 물론 원격 제어는 잘못 사용하는 경우, 보안 사고로 이어질 수 있기 때문에 조심히 사용해야 한다. 또한 팀뷰어는 기본적으로 유료 프로그램이다. 하지만 상업적인 목적이 아닌 비영리 목적으로 사용하는 일반 사용자의 경우 무료로 사용할 수 있다. 팀뷰어 공식 홈페이지는 아래와 같다. 기본적으로 무료 라이선스의 경우 [비상업적 사용]이 가능하다고 적혀 있다.

 

  ▶ 팀뷰어(Team Viewer) 공식 홈페이지: https://www.teamviewer.com/ko/

 

Home

TeamViewer(팀뷰어)의 원격 데스크탑 접속 솔루션: 원격 컴퓨터에 연결하고 원격 지원 및 온라인 협업을 제공할 수 있습니다 ➤ 개인용은 무료입니다!

www.teamviewer.com

 

   팀뷰어 홈페이지에 접속하여 [무료 다운로드] 버튼을 누른다.

 

 

  팀뷰어를 설치할 때는 간단히 [기본 설정으로 설치]를 진행할 수 있다.

 

 

  이후에 팀뷰어 라이센스(license)을 확인한 뒤에 동의하고 [계속] 버튼을 누른다.

 

 

  최근 팀뷰어를 이용하기 위해서는 [계정]이 필요하다. 따라서 [계정 생성]을 진행한다.

 

 

  다음과 같이 팀뷰어(TeamViewer) 계정을 생성할 수 있다. 이때 [이름]아이디의 역할을 수행한다고 보면 된다. 또한 자신이 기입한 [이메일] 주소로 이메일 인증 메일이 날아온다.

 

 

  결과적으로 팀뷰어 계정 생성이 완료되면 [종료] 버튼을 누르면 된다.

 

 

  그러면 다음과 같이 팀뷰어 계정 확인 요청 메일이 도착한다. [이메일 계정 확인] 버튼을 누르면 된다.

 

 

  다른 사람이 내 컴퓨터에 접속할 때는 나의 [아이디(ID)][비밀번호]를 알려주면 된다. 반대로 내가 접속할 때는 상대방 컴퓨터의 [아이디(ID)]를 입력하고 [연결]을 누른 뒤에, [비밀번호]를 입력하여 원격으로 접속할 수 있다.

 

728x90
반응형

Comment +0

728x90
반응형

  파이썬에서 워드클라우드(wordcloud) 라이브러리를 설치하고자 했다.

 

 

  다만, 설치가 잘 진행되다가 오류가 발생했다. 오류 메시지는 다음과 같다.

 

"error: Microsoft Visual C++ 14.0 or greater is required."

 

  아래의 그림에서부터 알 수 있듯이, 최신 버전의 Microsoft Visual C++ 빌드 툴이 필요하다고 한다. 파이썬의 워드클라우드 라이브러리가 내부적으로 C++ 기반의 확장 프로그램(extension)을 필요로 하는 것으로 보인다.

 

 

  메시지에서도 나와 있듯이 다음의 Build Tools 설치 경로로 이동하면 된다.

 

  ▶ Microsoft C++ Build Tools 설치: https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/

 

Microsoft C++ Build Tools - Visual Studio

Microsoft C++ Build Tools는 Visual Studio 없이 스크립트 가능한 독립 실행형 설치 관리자를 통해 MSVC 도구 집합을 제공합니다. 명령줄에서 Windows를 대상으로 하는 C++ 라이브러리 및 애플리케이션을 빌드

visualstudio.microsoft.com

 

  이후에 [Build Tools 다운로드] 버튼을 눌러 다운로드를 진행한다.

 

 

  설치 프로그램(installer)을 다운로드하여 설치 프로그램을 실행하면 다음과 같은 화면이 등장한다.

 

 

  결과적으로 Visual Studio Installer가 실행되면, 다음과 같이 [C++를 사용한 데크스톱 개발]을 선택하면 된다. 우리가 필요한 건 C++ 빌드 환경이기 때문이다. 결과적으로 [다운로드하는 동안 설치] 버튼을 누르고 [Install]을 진행하면 된다.

 

 

  결과적으로 다음과 같이 다운로드 및 설치가 진행되고 있는 것을 확인할 수 있다.

 

 

  설치가 완료되면 컴퓨터를 재시작하면 된다.

 

 

  컴퓨터 재시작 이후에 다시 wordcloud 라이브러리를 설치하면 정상적으로 설치가 완료된다.

 

728x90
반응형

Comment +0

728x90
반응형

  가끔 Anaconda를 이용해 파이썬 패키지(라이브러리)를 설치할 때 다음과 같은 오류가 발생하곤 한다. 필자의 경우에는 구체적으로 conda install 명령어를 이용해 fbprophet 라이브러리를 설치하고자 할 때, 다음과 같은 오류 메시지가 등장한 경험이 있다.

 

Solving environment: failed with initial frozen solve. Retrying with flexible solve.

 

1. Conda를 최신 버전으로 업데이트하기

 

  가장 먼저 할 일은 Conda를 최신 버전으로 업데이트하는 것이다. 다음의 명령어를 이용해 Conda를 업데이트하고, 다시 설치 명령어를 입력해보자.

 

conda update --all

 

2. Conda 환경(environment)을 생성한 뒤에 설치하기

 

  만약에 위 방법으로 해결이 안 되었다면 이것도 해보자. Conda는 기본적으로 여러 개의 환경을 만들어, 특정한 환경 안에서 다양한 패키지(라이브러리)를 설치할 수 있다. 예를 들어 "study"라는 이름의 환경을 생성하는 명령어는 다음과 같다.

 

conda create --name study

 

  이후에 해당 환경으로 들어가기 위해서activate 명령어를 사용하면 된다. 이제 다시 시도해보자.

 

conda activate study

 

3. Conda의 channel_priority 속성을 끄기

 

  위 방법들이 모두 통하지 않았다면, 다음의 명령어를 이용해 channel_priority 속성을 꺼보자(false).

 

conda config --set channel_priority false

 

728x90
반응형

Comment +0

728x90
반응형

  다양한 버전의 PyTorch를 사용하다 보면 다양한 오류 메시지를 만나곤 한다. 예를 들어 다음의 오류를 확인해 보자. torch.load() 메서드를 이용하여 저장된 PyTorch 모델을 불러오려고 할 때 오류가 발생한다.

 

 

  최신 버전의 PyTorch에서 해당 모델 가중치를 불러오는 것은 문제가 없지만, 이전 버전의 PyTorch를 사용할 때 이러한 오류 메시지가 출력이 되며 정상적으로 모델 파일을 불러오지 못하는 것이다. 이럴 때는 최신 버전의 PyTorch에서 모델 파일을 저장할 때 _use_new_zipfile_serialization 속성의 값을 False로 변경하도록 한다.

 

torch.save(net.state_dict(), 'model_trained.pth', _use_new_zipfile_serialization=False)

 

    이후에 다시 낮은 버전의 PyTorch을 이용해서 새롭게 저장된 모델 파일을 불러왔을 때는 오류 없이 로드(load)하는 것을 확인할 수 있었다.

 

※ 현실적인 문제 ※

 

  모델 가중치 파일을 내가 직접 학습한 경우가 아니라면, ① Google Colab 같은 서비스를 이용하여 임시로 최신 버전의 PyTorch에서 해당 모델을 불러온 뒤에 False 값을 적용하여 모델을 저장하는 것을 추천한다. 그리고 ② 낮은 버전의 PyTorch에서 해당 모델을 불러와 사용할 수 있다.

728x90
반응형

Comment +0

728x90
반응형

※ 오류 설명 ※

 

▶ 오류 메시지: "RuntimeError: CUDA error: no kernel image is available for execution on the device."

 

 

  이 오류는 잘 사용하던 GPU 서버가 있는 상태에서, GPU 장치를 변경했을 때 만날 수 있는 오류(error)다. 보통 GPU를 이용해 모델 학습이나 추론(inference)을 진행할 때 이러한 오류가 발생한다. 출력된 오류 메시지를 확인해 보면 새롭게 설치된 GPU 장치인 NVIDIA RTX A6000의 CUDA capabilitysm_8.6이라고 나와 있다. 하지만, 현재 설치된 PyTorch는 3.7, 5.0, 6.0, 7.0, 7.5와 호환된다고 나와 있다.

 

▶ 메시지: "The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70 sm_75."

 

 

  참고로 자신이 가지고 있는 GPU 장치의 Compute Capability는 다음의 경로에서 확인할 수 있다.

 

  ▶ Compute Capability 확인: https://developer.nvidia.com/cuda-gpus

 

CUDA GPUs

Your GPU Compute Capability Are you looking for the compute capability for your GPU, then check the tables below. NVIDIA GPUs power millions of desktops, notebooks, workstations and supercomputers around the world, accelerating computationally-intensive ta

developer.nvidia.com

 

※ 현재 버전 확인 방법 ※

 

1) NVIDIA 드라이버 버전 확인

 

  NVIDIA driver의 버전을 확인할 때는 nvidia-smi 명령어를 입력한다. 그러면 다음과 같이 NVIDIA driver와 호환되는 CUDA 버전 정보가 출력된다. 참고로 nvidia-smi 명령어를 이용했을 때 출력되는 CUDA 버전(version)은 사용할 수 있는 CUDA의 버전을 의미하므로, 일반적으로 현재 설치된 CUDA 버전보다 같거나 최신 버전이라면 문제가 되지 않는 경우가 많다.

 

Driver Version: 465.19.01, CUDA Version: 11.3

 

2) CUDA 버전 확인

 

  서버에 설치된 CUDA 버전을 확인할 때는 다음과 같이 입력한다.

 

cat /usr/local/cuda/version.txt

 

그러면 CUDA Version 10.1.168와 같이 현재 설치된 CUDA의 버전이 출력된다.

 

3) CUDNN 버전 확인

 

  CUDNN 버전을 확인할 때는 다음의 명령어를 사용한다.

 

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

 

  그러면 다음과 같이 출력된다. 아래 의미는 7.6.0 버전이라는 의미다.

 

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 0

 

4) PyTorch 버전 확인

 

  마지막으로 현재 설치된 PyTorch의 버전을 확인할 때는 python을 실행한 뒤에, 다음의 코드를 사용한다.

 

import torch

print(torch.__version__)

 

그러면 1.7.0+cu101와 같이 자신이 PyTorch의 버전이 출력된다.

 

※ 해결 방법 ※

 

  오류 메시지만 고려했을 때, 해결 방법은 간단하다. PyTorch를 재설치하면 된다. 먼저 현재 설치된 PyTorch를 지운다. 필자는 프로그램을 확실히 지우기 위해서 일반적으로 지우는 명령어를 2번 수행한다.

 

pip3 uninstall torch

 

  이후에 Compute Capability를 TORCH_CUDA_ARCH_LIST 환경 변수의 값으로 설정한다.

 

export TORCH_CUDA_ARCH_LIST="8.6"

 

  최종적으로 PyTorch를 재설치한다. CUDA 버전이 10.1이라면 다음과 같이 설치하면 된다. 참고로 f 옵션아카이브 링크를 찾는(finding) 옵션이다.

 

# CUDA 10.1
pip3 install torch==1.7.1+cu101 torchvision==0.8.2+cu101 -f https://download.pytorch.org/whl/torch_stable.html

 

  하지만 이렇게 해도 코드가 정상적으로 동작하지 않을 수 있다. 필자는 동일한 오류가 계속 발생하고 있는 것을 확인할 수 있었다. 찾아본 결과, 기본적으로 8.6 버전(sm_86)은 CUDA 11에 대하여 지원되기 때문에, CUDA 10을 사용하고 있는 것이 문제가 된다고 한다. 필자와 같은 상황에서는 CUDA의 버전이 낮은 것이 근본적인 원인이기 때문에 높은 CUDA 버전으로 CUDA를 재설치(혹은 추가 설치)해야 한다.

 

  ▶ [참고] 이전 버전의 PyTorch 설치https://pytorch.org/get-started/previous-versions/

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

 

※ 높은 버전의 CUDA 설치 방법 ※

 

  이럴 때는 여러 가지 해결 방법이 있다. 현재 설치된 CUDA 10.1을 제거하고, NVIDIA 드라이버와 호환되는 11.3을 설치할 수 있다. 혹은 현재 존재하는 CUDA 10.1은 그대로 둔 상태에서 새로운 버전의 CUDA를 추가적으로 설치할 수 있다. 필자는 기존에 설치된 CUDA는 내버려 둔 상태로 추가 설치를 진행하겠다.

 

  현재 설치된 CUDA 목록을 확인할 때는 /usr/local/ 경로에 있는 CUDA 폴더들을 확인하면 된다. 예시는 다음과 같다. 확인해 본 결과 CUDA 11.3은 설치되어 있지 않기 때문에, 이를 추가적으로 설치하고자 한다.

 

 

  ▶ CUDA 11.3.0 설치: https://developer.nvidia.com/cuda-11.3.0-download-archive

 

CUDA Toolkit 11.3 Downloads

Resources CUDA Documentation/Release NotesMacOS Tools Training Sample Code Forums Archive of Previous CUDA Releases FAQ Open Source PackagesSubmit a Bug

developer.nvidia.com

 

  자신의 서버 환경에 맞는 CUDA를 설치한다. 참고로 arch 명령어로 자신의 서버 아키텍처 종류를 확인할 수 있다. 또한 uname -a 명령어cat /etc/issue 명령어로 현재 자신의 OS 버전을 알 수 있다. 아래와 같이 플랫폼(platform)을 적절히 기입한 뒤에 설치 명령어를 확인할 수 있다.

 

 

  필자의 경우 다음과 같은 설치(installation) 명령어가 등장했다. 이러한 명령어를 한 줄씩 문제가 없는지 확인하면서 차례대로 입력하면 된다.

 

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu1804-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

 

  설치가 완료되었다면 다음과 같이 /usr/local 경로새로운 버전의 cuda가 설치 완료된 것을 알 수 있다.

 

 

  이렇게 CUDA가 정상적으로 설치되었다면 ~/.profile 파일을 열어서 다음과 같이 문자열을 추가한다. (자신이 설치한 버전에 맞게 적절한 폴더명을 넣어야 한다. 필자는 11.3을 기입했다.)

 

export PATH=/usr/local/cuda-11.3/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH

 

  다음과 같이 가장 마지막 줄에 해당 내용을 추가하면 된다.

 

 

  이후에 source ~/.profile 명령어를 이용해 반영하면 된다. 이후에 정상적으로 CUDA 설치가 완료되었는지 버전을 확인한다. nvcc -V 명령어를 사용하여 확인할 수 있다. (만약 nvcc가 설치되어 있지 않다면 sudo apt install nvidia-cuda-toolkit 명령어로 설치할 수 있다.) 결과적으로 다음과 같이 CUDA 11.3 버전으로 정상 동작하고 것을 알 수 있다.

 

 

※ NVIDIA 드라이버 재설치 ※

 

  결과적으로 문제가 해결되었다고 생각했는데, 이번에는 nvidia-smi 명령어를 사용했을 때 다음과 같은 오류 메시지가 출력되었다.

 

 

  그래서 필자는 깔끔하게 NVIDIA driver도 지운 뒤에 다시 설치하고자 했다. 이때는 가장 먼저 다음의 명령어로 NVIDIA driver를 제거할 수 있다.

 

sudo apt-get --purge remove *nvidia*

 

  정상적으로 driver가 완전히 제거되었는지 확인하기 위해 다음의 명령어를 사용할 수 있다.

 

sudo dpkg -l | grep nvidia​

 

  이후에 ubuntu-drivers devices 명령어로 적절한 NVIDIA 드라이버를 추천받자. (이러한 명령어가 동작하지 않는다면 sudo apt install ubuntu-drivers-common 명령어로 설치한다.)

 

 

  NVIDIA 드라이버를 설치하기 위해 가장 먼저 repository를 추가한다.

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update


  이후에 NVIDIA 드라이버를 설치하면 된다. 필자는 470을 추천 받았으므로 다음의 명령어를 사용했다.

 

sudo apt-get install nvidia-driver-470

 

  이후에 nvidia-smi 명령어를 입력했을 때 정상적으로 NVIDIA driver가 구동되는 것을 확인할 수 있다. 참고로 현재 동작 중인 주피터 노트북 서비스가 있다면, 주피터 노트북을 껐다가 다시 구동시켜주도록 하자. 마지막으로 적절한 버전의 PyTorch를 재설치하자. 최종적으로 PyTorch를 제거한 뒤에 다음의 명령어로 최신 버전의 PyTorch를 재설치했다. 이때 CUDA는 11.4보다 낮지만 호환되는 11.3으로 선택했다.

 

pip3 install torch==1.10.2+cu113 torchvision==0.11.3+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

 

  결과적으로 모든 문제가 해결되어 정상적으로 GPU를 활용한 딥러닝 모델 학습 코드가 동작하게 되었다.

728x90
반응형

Comment +0