Café

맥(M1, M2, M3 ···) 파이토치(torch) 설치 방법 - 매우 쉬움 본문

딥러닝

맥(M1, M2, M3 ···) 파이토치(torch) 설치 방법 - 매우 쉬움

hyunicecream 2024. 4. 22. 15:56
반응형
맥(Mac)으로 파이토치(torch) 설치 방법에 대해 알려드리겠습니다. 
순서는 다음과 같습니다.
1. conda 가상환경 만들기
2. torch 설치하기
3. GPU 사용 여부 확인
4. GPU 사용 테스트 
※먼저 아나콘다가 설치되었다는 가정하에 설명드리겠습니다. (설치방법은 패스할게요)

1.  conda에서 가상환경을 만들어 줍니다.

파이썬 버전은 찾으셔도 되고 아니면 자신이 원하는 파이썬 버전을 설치해 줍니다. 

가상 환경 이름을 torch-gpu라고 만들고, 파이썬 버전은 3.12.2로 설치하겠습니다. 

Python 3.12.2 버전
Python 3.12.2 버전 설치

본인이 만들고 싶은 이름으로 변경하시면 됩니다. 

# python 버전 찾기 
conda search python
# 가상환경 만들기 
conda create -n torch-gpu python=3.12.2

2. 파이토치 공식 홈페이지에 들어가서 Run this Command 확인하기

파이토치 공식 홈페이지에 들어가시면 다음과 같은 화면이 나옵니다. 아래 os, 언어 등 설정해 주시고, 아래 Run this Command:에 있는 명령어를 복사해 줍니다. 

파이토치 설치
INSTALL PYTORCH

3. 파이토치(torch) 설치하기 

좀 전에 만드신 가상환경에 접속하시고 난 후에 복사해서 붙여줍니다. 

# 가상환경 접속 
source activate torch-gpu

파이토치 설치하기 

conda install pytorch::pytorch torchvision torchaudio -c pytorch

Proceed ([y]/n)? 문구가 나오면 y 눌러서 설치해 주시면 됩니다. 

파이토치 설치
파이토치 설치화면

여기까지 하면 설치가 완료되었습니다. 이제 테스트해 보겠습니다. 

4. GPU 테스트 

먼저 테스트를 하기 위해 vscode에 들어가서 다음 코드를 입력하여 사용 가능한지 확인합니다.

M1, M2, M3 등 애플실리콘 칩을 사용하는 경우에는 Cuda가 아닌 MPS로 GPU를 가속화 합니다. 

import torch

def check_mps_availability():
    # MPS 사용 가능 여부를 확인합니다.
    if torch.backends.mps.is_available():
        print("이 장치에서 MPS(GPU 가속)를 사용할 수 있습니다.")
    else:
        print("MPS를 사용할 수 없습니다. CPU를 사용합니다.")

#  GPU 사용 가능 여부를 확인합니다.
check_mps_availability()

맥 GPU 사용 확인
맥 GPU 사용 확인

여기서 잠깐! Cuda? 그리고 MPS란? 

맥 M1, M2, M3 등과 같은 Apple Silicon 칩은 NVIDIA가 아닌 Apple이 자체적으로 개발한 ARM 기반의 프로세서입니다. CUDA는 NVIDIA의 GPU 전용 프로그래밍 인터페이스로, NVIDIA의 GPU 하드웨어에서만 작동합니다. 

반면에, Apple은 자체 GPU 아키텍처를 개발했고, 프로그래밍 인터페이스인 Metal을 사용합니다. Metal은 Apple의 하드웨어에 최적화된 저수준의, 고효율의 그래픽스 및 컴퓨트 프로그래밍 인터페이스입니다. Apple Silicon 칩에서는 이 Metal을 기반으로 하는 Metal Performance Shaders (MPS)를 사용하여 GPU 가속을 제공합니다. MPS는 특히 머신러닝과 같은 작업을 위해 최적화된 라이브러리 세트를 포함합니다.
따라서, 맥 M1 실리콘과 같은 Apple Silicon에서는 CUDA 대신 MPS를 사용하는 것입니다.

5. 실제 GPU 사용하는지 확인하기

이제 실제로 간단한 코드를 통해 GPU를 사용하는지 확인해 보겠습니다. 

import torch
import math
dtype = torch.float
device = torch.device("mps")

# Create random input and output data
x = torch.linspace(-math.pi, math.pi, 2000, device=device, dtype=dtype)
y = torch.sin(x)

# Randomly initialize weights
a = torch.randn((), device=device, dtype=dtype)
b = torch.randn((), device=device, dtype=dtype)
c = torch.randn((), device=device, dtype=dtype)
d = torch.randn((), device=device, dtype=dtype)

learning_rate = 1e-6
for t in range(5000):
    # Forward pass: compute predicted y
    y_pred = a + b * x + c * x ** 2 + d * x ** 3

    # Compute and print loss
    loss = (y_pred - y).pow(2).sum().item()
    if t % 100 == 99:
        print(t, loss)

# Backprop to compute gradients of a, b, c, d with respect to loss
    grad_y_pred = 2.0 * (y_pred - y)
    grad_a = grad_y_pred.sum()
    grad_b = (grad_y_pred * x).sum()
    grad_c = (grad_y_pred * x ** 2).sum()
    grad_d = (grad_y_pred * x ** 3).sum()

    # Update weights using gradient descent
    a -= learning_rate * grad_a
    b -= learning_rate * grad_b
    c -= learning_rate * grad_c
    d -= learning_rate * grad_d


print(f'Result: y = {a.item()} + {b.item()} x + {c.item()} x^2 + {d.item()} x^3')

다음 코드를 통해, 실시간으로 GPU를 사용하는지 확인해 보겠습니다. 

asitop - GPU 실시간 사용 확인
asitop - GPU 실시간 사용 확인
GPU 사용 확인
GPU 사용 확인 - 기본
GPU 사용 확인
Mx Power Gadget - GPU 사용 확인

테스트 코드에서 GPU를 사용하는 것을 확인할 수 있습니다.

맥에서 실시간 GPU, CPU 사용량 확인하는 방법을 알고 싶으시면 이 글을 읽는 것을 추천드립니다. 

 

[GPU] 맥 실시간 GPU, CPU 사용량 확인하기

안녕하세요. 이번에는 실시간 GPU, CPU 사용량 확인하는 방법에 대해 소개드리겠습니다. 또한 마지막에 컴퓨터 온도 확인 하는 앱도 소개해 드리겠습니다. 제가 소개해 드릴 방법은 터미널을 이용

hyunicecream.tistory.com

 

반응형