pip의 대안으로 자리 잡은 uv를 사용하면 가상환경 생성, Python 버전 관리, 패키지 설치를 한 번에 처리할 수 있다. 이 글에서는 uv를 설치하고, Apple Silicon 맥에서 PyTorch를 올린 뒤, MPS(Metal Performance Shaders)로 GPU를 활용하는 방법까지 차례대로 확인해본다.
1. uv 설치
uv는 여러 가지 설치 방식을 지원하지만, macOS에서는 Homebrew로 설치하는 방식이 가장 간단하다.
brew install uv
설치가 성공적으로 끝났으면 버전을 확인한다.
uv --version
버전이 정상적으로 출력된다면 설치가 잘 끝난 것이다. 다음 단계로 넘어가자.
2. 프로젝트 생성
먼저 작업할 디렉터리를 만들고 uv 프로젝트를 초기화한다.
mkdir pytorch-m1-uv
cd pytorch-m1-uv
uv init
이렇게 하면 pyproject.toml을 비롯한 기본 Python 프로젝트 구조가 만들어진다.
3. Python 준비
PyTorch를 설치하기 전에 사용할 Python 버전을 준비한다. 여기서는 3.12를 기준으로 진행한다.
uv python install 3.12
이후 uv run이 이 버전을 사용하도록 프로젝트 단위로 지정해두면 편하다. 새 프로젝트를 시작할 때 이 단계를 먼저 처리해두는 편이 깔끔하다.
4. PyTorch 설치
이제 PyTorch 관련 패키지를 설치한다.
uv add torch torchvision torchaudio
설치가 끝나면 pyproject.toml과 uv.lock에 의존성이 기록된다. 이 덕분에 pip install만 쓰는 방식보다 환경 재현성이 좋다.
5. 설치 확인
PyTorch가 정상적으로 설치됐는지 먼저 버전부터 확인해 보자.
uv run python -c "import torch; print(torch.__version__)"
버전 문자열이 출력되면 기본 설치는 끝난 것이다.
6. MPS 사용 가능 여부 확인
Apple Silicon 맥에서는 CUDA 대신 MPS를 통해 GPU 가속을 사용할 수 있다. 아래와 같이 간단한 코드를 만들어 확인할 수 있다.
import torch
print("MPS built:", torch.backends.mps.is_built())
print("MPS available:", torch.backends.mps.is_available())
예를 들어 main.py에 저장한 뒤 실행하면 된다.
uv run python main.py
두 값이 모두 True라면 현재 환경에서 MPS를 사용할 수 있다는 의미다.
7. MPS로 텐서 실행
이제 실제로 텐서를 MPS 디바이스에 올려 보자.
import torch
device = torch.device("mps")
x = torch.ones(5, device=device)
y = x * 2
print(x)
print(y)
print(x.device)
출력된 디바이스가 mps:0으로 표시된다면 연산이 GPU에서 실행되고 있다는 뜻이다.
8. 간단한 모델 실행
이번에는 아주 작은 신경망 레이어를 MPS에서 실행해 보자.
import torch
import torch.nn as nn
device = torch.device("mps" if torch.backends.mps.is_available() else "cpu")
model = nn.Linear(4, 2).to(device)
x = torch.randn(3, 4).to(device)
y = model(x)
print(y)
print(y.device)
이 정도만 확인해도 PyTorch 설치 여부를 넘어, 실제 모델 연산이 Apple GPU에서 문제없이 동작하는지까지 빠르게 점검할 수 있다.
9. 최종 디렉터리 구조
여기까지 진행하면 아래와 같은 구조가 된다.
pytorch-m1-uv/
├─ pyproject.toml
├─ uv.lock
└─ main.py
실제 프로젝트를 시작하면 여기에 학습 코드, 데이터 처리 코드, 노트북 파일 등을 추가하면 된다.
10. 정리
Apple Silicon 맥에서 PyTorch를 쓰기 위한 과정은 예전보다 훨씬 단순해졌다.
uv는 빠른 패키지 설치와 프로젝트 환경 관리를 함께 처리해 준다.- Apple Silicon 맥에서는
MPS를 통해 GPU 가속을 사용할 수 있다. brew install uv부터 시작하면 macOS에서 가장 간단하게 환경을 잡을 수 있다.
새 Python 프로젝트를 만들 때 pip와 venv를 따로 조합하기보다 uv로 시작하는 편이 훨씬 깔끔하다. 다만 uv는 패키지 관리와 환경 관리를 동시에 다루는 도구인 만큼, 초반에는 개념을 익히는 데 시간이 조금 걸릴 수 있다.