1. 파이토치 - 인공지능 고급(시각) 강의 복습

안상훈·2024년 5월 28일
0

인공지능-시각

목록 보기
1/54
post-thumbnail

개요

본 블로그 포스팅은 수도권 ICT 이노베이션 스퀘어에서 진행하는 인공지능 고급-시각 강의의 CNN알고리즘 강좌 내용을 필자가 다시 복기한 내용에 관한 것입니다.


1. 파이토치(Pytorch)

Pytorch는 신경망 구축에 사용되는 소프트웨어 기반 오픈소스 딥 러닝 프레임 워크로, Torch의 백엔드 머신 러닝 라이브러리와 Python 기반의 API를 결합한 것이다.(https://www.ibm.com/kr-ko/topics/pytorch)

설명은 이정로도 하고 Local PC에서 GPU를 사용한 Pytorch를 사용하면 몇가지 사전 설정이 필요하다

1) GPU 드라이버 설치

https://pytorch.kr/get-started/locally/
설치 전에 Pytorch 공식 홈페이지에 접속하여 지원 OS, 패키지 매니저, 플랫폼을 확인하고 진행하는 것이 좋다.

필자는 Windows - Pip - Python - CUDA 12.1환경으로 GPU 사용이 가능한 Pytorch 구동환경을 구축하고 자 한다.

https://www.nvidia.com/download/index.aspx

우선 첫번째로 Nvidia GPU를 사용한다면 그래픽 드라이버를 최신으로 다운받는 것이 좋으며,
이때 드라이버 설치 버전을 GRD, SD을 선택 가능한데 딱히 어느버전을 선택하던 상관이 없다.
경험상 신규 그래픽 드라이버의 릴리즈가 자주 발생하는건 GRD 버전이었고 SD버전은 릴리즈 텀이 긴 편에 속해서 한번 그래픽 카드 드라이버 설치 후 관리가 귀찮다면 SD을 추천한다.


그래픽 드라이버를 설치 후
명령 프롬포트(CMD)을 열고 아래의 명령어를 친다

nvidia-smi

그러면 현재 탑재된 Nvidia GPU의 드라이버 및 상태정보를 확인이 가능한데
여기서 노란색 박스으로 처리한 CUDA Version
해당 그래픽 카드가 추천하는 CUDA버전을 의미하는 것이지 현재 PC에 설치된 버전을 말하는 것은 아니다.

2) CUDA, Cudnn 설치

https://developer.nvidia.com/cuda-toolkit-archive
다음으로 Pytorch에서 지원하는 CUDA 12.1을 설치하기 위해 위 CUDA Toolkit Archive에 접속한다.
여기 말고 CUDA Toolkit에 접속하면 최신 버전의 CUDA만 다운받게 홈페이지 구성을 꾸며놔서 아카이브로 접속하는게 속이 편하다.

해당 홈페이지에 접속하여 CUDA Toolkit 12.1.0을 선택한 뒤(어차피 cudnn을 설치하기에 12.1.1을 다운받을 필요는 없다)

위 사진처럼 OS(Windows), 아키텍쳐, 버전(윈도우 11을 의미함), 설치파일(로컬exe파일) 선택 후 다운받아서 설치를 진행하면 된다.

설치 후
명령 프롬포트(CMD)을 열고 아래의 명령어를 친다

nvcc --version

이 명령어를 수행하면 설치된 CUDA Toolkit의 버전을 확인할 수 있으며, CUDA 12.1이 재대로 설치됨을 확인할 수 있다.

여기까지만 해도 Pytorch를 설치하는데는 상관이 없으나, cudnn도 마저 설치하자

cudnn버전은 굉장히 많은데 마지막에 'for CUDA 12.x'이것만 잘 확인해서 다운받으면 되고, 필자는 v8.9.6으로 다운받았다.

zip파일을 다운받아서 압축을 풀면 bin, include, lib 3개의 폴더가 있으니, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1경로로 가서 똑같은 폴더들이 있으니 이걸 덮어쓰기로 붙여넣으면 된다.

3) Pytorch-GPU 설치

https://pytorch.kr/get-started/locally/
이제 다시 Pytorch 공식 홈페이지로 가서
위 사진처럼 OS종류, 패키지 매니저, 언어, 플랫폼 설정 후

이 명령을 실행하세요 에 나와있는 명령어 코드를 복사해서 명령프롬포트(CMD)에 붙여넣는다

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

필자의 경우 설치를 완료한 사진을 첨부했지만 처음 설치라면 뭔가 많은 명령어들이 지나쳐 갈 것이다.

설치가 완료된 뒤에는 아무 파이썬 코드 파일을 생성하거나 cmd에서 python을 치는 등 어떠한 방식을 통해서든 위 코드를 수행하면
설치된 Pytorch의 버전을 확인할 수 있다.

import torch	

print(torch.__version__)

여기까지 완료를 하고 파이토치 코드 작성을 시작하면 된다.


2. 파이토치 기본코드 작성

다음으로 vscode에서 *.ipynb 혹은 *.py파일로 파이썬 코드 작성이 가능한 파일을 생성한 뒤, 가장 간단한 파이토치 프로그램을 작성해보자

import torch

w = torch.tensor(2.0, requires_grad=True)
b = torch.tensor(0.7, requires_grad=True)

#입력값
x = 1.5
#선형 회귀 계산
y = w * x + b

print(f"y : {y.item():.3f}, shape: {y.shape}, dtype: {y.dtype}")

# 부동 소수점 비교를 위한 임계값 설정
epsilon = 1e-6

if abs(y.item() - 3.7) < epsilon:
    print("True")
else:
    print("False")

코드를 한줄씩 리뷰해보자

w = torch.tensor(2.0, requires_grad=True)
b = torch.tensor(0.7, requires_grad=True)

여기서 변수로 선언한 w, b는 각각 torch라이브러리가 제공하는 tensor 자료형으로 선언하겠다는 뜻이고
tensor에 마우스 커서를 갖다 대면 이 항목에 대한 설명을 확인할 수 있다.
인자로 해당 자료형에 대한 여러 설정이 가능한데
지금 당장 알아둘 중요한 인자값은 requires_grad=True 이다.

이것의 의미는 텐서 자료형에서 연산이 주적되고 자동 미분이 가능해지게 설정하여, 향후 역전파(backpropagation) 과정을 수행할 시 손실(loss)에 대해 해당 텐서의 기울기(gradient)를 계산 가능해진다... 뭐 이런뜻인데..

이게 맞는 말은 아니지만 이렇게 알아두자

텐서 자료형에서 나중에 변하는 변수에 해당하면 requires_grad=True이걸 넣어주고,
변하지 않는 상수면 위 코드를 작성하지 않던가, requires_grad=False라고 명시하면 된다.

따라서 지금 같은 경우 x는 변하지 않는 input data이니

x = torch.tensor(1.5)

이렇게 선언하는게 더 맞는 것이고
w, b는 딥러닝 공부할 때 항상 변하는 값에 속하는 weight, bias에 속하는 것이니
requires_grad=True 옵션을 붙인다 보면 된다.

그 다음 설명할 코드로는
y.item()으로 Tensor 자료형으로 선언되거나 지정된 변수는 그 Value에 접근하기 위해서는
(정확히는 그 Value에 접근하여 해당 Value를 Python 자료형과 연산하기 위해서는)

tensor.item()

와 같이 .item() 메서드로 Value를 꺼내서 Python 자료형으로 변환하는 작업을 해줘야한다.

지금 코드의 경우는 부동소수점 문제로 epsilon을 활용하여 해당 변수가 3.7이라는 숫자랑 일치/불일치를 테스트 하는 기본 코드를 수행한다 볼 수 있다.

profile
자율차 공부중

0개의 댓글