해당 내용은 Anaconda를 사용하지 않고 진행하였습니다
제품 사항 : Apple M2 pro
1. 제품의 GPU가속 진행전 제품 지원을 확인합니다.
https://pytorch.org/get-started/locally/
들어가시면 아래 사진과 같이 나옵니다.
여기서 중점으로 봐야할 부분은 [Compute Platform]에서 CUDA지원을 안하기 때문에 다른 방식으로 사용을 합니다.
가상환경 생성 및 활성화 하기
1. 간단한 가상환경 생성
python3 -m venv /원하는 가상환경 경로/virtualenv/test
※저는 virtualenv/test라는 폴더 내부에 생성하도록 하였습니다.
2. 가상환경 활성화
source /지정한 경로/virtualenv/test/bin/activate
이렇게 하셔서 오류가 없으면 이상없이 가상환경 활성화가 된 것입니다.
torch 설치 및 사용하기
1. 가상환경 활성화
# 가상환경 활성화
source /자신의 가상환경 경로/virtualenv/test/bin/activate
2. 해당 가상환경에서 torch설치
Pytorch에서 설치방법
pip3 install torch torchvision
https://pytorch.org/get-started/locally/
Apple.Developer에서 설치방법
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
https://developer.apple.com/metal/pytorch/
저는 Pytorch에서 설치방법를 사용하여 진행하였습니다.
jupyter notebook 실행 후 파일을 생성하여 테스트 진행
필요 모듈 import
import torch
버전 확인
print(torch.__version__)
임이의 값 5열 3행을 생성
x = torch.rand(5, 3)
print(x)
사용중인 shape, dtype, device 확인
print(f'shape: {x.shape}')
print(f'dtype: {x.dtype}')
print(f'device: {x.device}')
가속화 사용가능 여부 확인
torch.backends.mps.is_available()
torch.backends.mps.is_built()
해당 2개의 코드가 전부 True가 나오면 가속화 사용이 가능합니다.
가속화 사용여부 체크 및 변경
tensor = x.reshape(5, 3)
tensor = x.int()
if torch.backends.mps.is_available():
print('MPS 사용 가능')
tensor = tensor.to('mps')
print(f'shape: {tensor.shape}')
print(f'dtype: {tensor.dtype}')
print(f'device: {tensor.device}')
다른 테스트 방법
if torch.backends.mps.is_available():
mps_device = torch.device("mps")
x = torch.ones(1, device=mps_device)
print (x)
else:
print ("MPS device not found.")
결과값이 tensor([1.], device='map:0')으로 나오면 정상적으로 된것입니다.
테스트
import torch
import time
# 1. 테스트용 텐서 준비
x = torch.randn(20000, 20000)
# 2. 연산 정의 (행렬 곱셈)
def matmul(tensor):
return torch.matmul(tensor, tensor)
# 3. CPU 성능 테스트
start_time = time.time()
cpu_result = matmul(x)
cpu_time = time.time() - start_time
print(f"CPU 시간: {cpu_time}초")
# 4. MPS 성능 테스트 (MPS 사용 가능한 경우)
if torch.backends.mps.is_available():
x_mps = x.to('mps')
start_time = time.time()
mps_result = matmul(x_mps)
mps_time = time.time() - start_time
print(f"MPS 시간: {mps_time}초")
# 5. 결과 비교
print(f"CPU와 MPS의 시간 차이: {cpu_time - mps_time}초")
▶ 확실히 데이터값이 커질 수 록 CPU의 처리시간이 늘어나는 방면, MPS는 많이 빠르게 진행하는 것을 볼 수 있습니다.
▷ 추가 여러가지 데이터셋으로 테스트 결과, 낮은 값 10000 이하는 CPU가 빠르고, 15000 이상은 GPU가 빠릅니다.
'System > Mac' 카테고리의 다른 글
[Mac] 환경변수(PATH)오류 "zsh: command not found: sudo" (0) | 2023.11.01 |
---|---|
[Mac] Jupyter notebook 설치방법 (1) | 2023.09.18 |