딥러닝 프로젝트를 시작할 때 GPU 가속을 위해 PyTorch 라이브러리를 설치해보신 적이 있나요? 하나의 프로젝트만 진행할 때는 문제가 없지만, 여러 개의 가상 환경(venv)을 만들 때마다 수십 GB에 달하는 PyTorch 패키지를 중복해서 설치하게 되면 디스크 공간 낭비가 심해집니다.

 

저도 패키지 관리 효율성을 높이는 방법을 고민하다가, 기존에 설치된 PyTorch 라이브러리를 다른 가상 환경에서 재사용하는 방법을 알게 되었습니다. 이번 포스트에서는 이 방법을 여러분과 공유하려 합니다. 물론 이 방법이 완벽한 해결책은 아니며, 장단점이 존재한다는 점을 염두에 두고 봐주시면 좋겠습니다.


문제 제기: PyTorch 설치의 저장 공간 낭비

제가 사용하는 원격 리눅스 GPU 서버는 RTX 3090 그래픽카드를 사용하고 있습니다. Nvidia CUDA와 cuDNN 라이브러리는 시스템 전역(system-wide)에 설치되어 있어서 가상 환경을 만들 때마다 새로 설치할 필요가 없습니다. 하지만 프로젝트별로 다른 버전의 PyTorch가 필요할 수 있고, 저의 경우 PyTorch 2.6.0 버전을 주로 사용합니다.

문제는 PyTorch, Torchaudio, Torchvision 같은 필수 패키지들이 각각 상당한 용량을 차지한다는 점입니다.

  • torch: 1.5 GB
  • torchaudio: 11 MB
  • torchvision: 13 MB

이 패키지들을 합치면 총 1.5 GB 정도의 공간을 차지합니다. 만약 10개의 프로젝트를 진행하면서 10개의 가상 환경을 만든다면, PyTorch만으로도 약 15 GB의 디스크 공간이 낭비되는 셈입니다.


해결책: .pth 파일을 이용한 라이브러리 상속

저장 공간을 효율적으로 활용하기 위해, 이미 설치된 PyTorch 라이브러리를 새로운 가상 환경에서 "상속"하여 사용하는 방법을 소개합니다. 이 방법은 Python의 .pth 파일을 활용하여 특정 가상 환경이 다른 가상 환경의 패키지 경로를 참조하도록 만드는 것입니다.

site-packages 디렉터리와 .pth 파일: Python은 모듈을 불러올 때 sys.path에 등록된 경로들을 탐색합니다. 가상 환경의 site-packages 디렉터리 내부에 있는 .pth 파일은 이 sys.path에 추가 경로를 등록해주는 역할을 합니다. 우리는 이 특성을 이용해 기존 PyTorch 라이브러리가 있는 경로를 새로운 가상 환경에 추가할 것입니다.

1. 소스(Source) 가상 환경 경로 확인

먼저, PyTorch가 이미 설치되어 있는 기존 가상 환경의 site-packages 경로를 확인합니다.

# Source 가상 환경 경로 확인
/home/wb2x/workspace/text-recognition/venv/bin/python -c "import site; print(site.getsitepackages()[0])"

# 결과 예시
/home/wb2x/workspace/text-recognition/venv/lib/python3.10/site-packages


2. 타겟(Target) 가상 환경 경로 확인

다음으로, PyTorch를 재사용하고 싶은 새로운 가상 환경의 site-packages 경로를 확인합니다.

# Target 가상 환경 경로 확인
/home/wb2x/workspace/nlp-advanced/.venv/bin/python -c "import site; print(site.getsitepackages()[0])"

# 결과 예시
/home/wb2x/workspace/nlp-advanced/.venv/lib/python3.10/site-packages


3. .pth 파일 생성 및 적용

이제 소스 가상 환경의 site-packages 경로를 타겟 가상 환경의 site-packages 디렉터리에 .pth 파일로 저장합니다.

# Source 경로를 Target에 .pth 파일로 추가
echo "/home/wb2x/workspace/text-recognition/venv/lib/python3.10/site-packages" > /home/wb2x/workspace/nlp-advanced/.venv/lib/python3.10/site-packages/reuse_torch.pth


4. PyTorch 재사용 테스트

마지막으로, 타겟 가상 환경을 활성화하고 PyTorch가 정상적으로 불러와지는지 확인합니다.

# 타겟 가상 환경 활성화
source /home/wb2x/workspace/nlp-advanced/.venv/bin/activate

# PyTorch 버전 확인
python -c "import torch; print(torch.__version__)"


결론: 장점과 단점, 그리고 주의사항

이 방법은 디스크 공간을 절약하는 데 매우 효과적이지만, 몇 가지 단점과 주의사항이 있습니다.

장점:

  • 디스크 공간 절약: PyTorch 같은 대용량 라이브러리를 여러 가상 환경에서 중복 설치할 필요가 없습니다.

단점 & 주의사항:

  • 버전 관리의 어려움: 이 방법의 가장 큰 단점은 버전 충돌 가능성입니다. 만약 소스 가상 환경의 PyTorch 버전(예: 2.6.0)이 타겟 프로젝트의 다른 종속성(dependencies)과 호환되지 않으면 문제가 발생할 수 있습니다. 각 프로젝트가 엄격하게 특정 버전을 요구하는 경우, 이 방법을 사용하지 않는 것이 좋습니다.
  • 환경의 독립성 저해: 가상 환경의 핵심 목적은 프로젝트별로 독립적인 환경을 구축하는 것입니다. 이 방법은 가상 환경 간의 종속성을 만드므로, 환경의 독립성을 일부 해칠 수 있습니다.

이 방법을 사용할 때는 여러분의 프로젝트 환경과 요구사항을 충분히 고려해야 합니다. 무조건적인 사용보다는, 디스크 공간 절약이 꼭 필요한 경우에만 신중하게 적용하는 것을 추천합니다.

'Pytorch' 카테고리의 다른 글

[PyTorch 기초] PyTorch 환경 설정 가이드  (2) 2025.06.19

PyTorch 환경 설정 가이드

 

안녕하세요! 이번 포스트에서는 딥러닝과 데이터 사이언스를 위한 개발 환경 구축 방법을 상세히 알아보겠습니다. Conda와 PIP을 사용한 PyTorch 설치 방법부터 시작하여, 효율적인 작업을 위한 가상환경 구성 방법까지 단계별로 안내해 드리겠습니다. 특히 Conda와 Venv를 활용한 가상환경 생성 및 관리 방법을 통해 프로젝트별로 독립된 환경을 구성하는 방법을 배우실 수 있습니다.

또한 데이터 사이언스 작업에 필수적인 NumPy, Pandas, Matplotlib 등의 핵심 패키지 설치 방법과 함께, VS Code와 PyCharm에서 Python 인터프리터를 올바르게 설정하는 방법도 자세히 다루겠습니다. 이를 통해 IDE에서 가상환경을 원활하게 사용할 수 있게 될 것입니다.

마지막으로, 많은 분들이 혼란스러워하는 nvcc --version과 nvidia-smi 명령어가 보여주는 CUDA 버전의 차이점에 대해 설명해 드리겠습니다. 이 두 명령어가 각각 어떤 정보를 제공하는지, 왜 버전이 다르게 표시되는지, 그리고 개발 과정에서 어떤 버전을 참고해야 하는지에 대한 명확한 이해를 제공해 드리겠습니다. 이 포스트를 통해 딥러닝 개발 환경 설정에 관한 궁금증을 해소하고, 초보자들도 안정적인 입문자들이 사용할 수 있는 개발 환경을 구축하는 방법을 배울 수 있을 것 입니다.

목차

  1. 시스템 요구사항 확인
  2. 가상환경 생성
  3. PyTorch 설치
  4. 설치 확인
  5. 추가 패키지 설치
  6. 개발 환경 설정
  7. 설치 테스트
  8. 문제 해결
  9. 마무리

1. 시스템 요구사항 확인

Python 버전 확인

python --version
# 또는
python3 --version

권장: Python 3.8 이상 (3.10-3.11 권장)

GPU 확인 (선택사항)

# NVIDIA GPU 확인
nvidia-smi

# CUDA 버전 확인
nvcc --version

2. 가상환경 생성 (권장)

Conda 사용

# 새 환경 생성
conda create -n pytorch_env python=3.10

# 환경 활성화
conda activate pytorch_env

# 환경 비활성화 (필요시)
conda deactivate

venv 사용

# 가상환경 생성
python -m venv pytorch_env

# 활성화 (Windows)
pytorch_env\Scripts\activate

# 활성화 (macOS/Linux)
source pytorch_env/bin/activate

# 비활성화
deactivate

3. PyTorch 설치

🔥 공식 설치 방법

PyTorch 공식 웹사이트 (https://pytorch.org/)에서 시스템에 맞는 설치 명령어를 확인하세요.

CPU 버전

# pip 사용
pip install torch torchvision torchaudio

# conda 사용
conda install pytorch torchvision torchaudio cpuonly -c pytorch

GPU 버전 (CUDA)

# CUDA 11.8 (pip)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# CUDA 12.1 (pip)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# conda 사용 (CUDA 11.8)
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

macOS (Apple Silicon)

# MPS 지원 (M1/M2 Mac)
pip install torch torchvision torchaudio

# conda
conda install pytorch torchvision torchaudio -c pytorch

4. 설치 확인

기본 설치 확인

import torch
import torchvision
import torchaudio

print(f"PyTorch 버전: {torch.__version__}")
print(f"TorchVision 버전: {torchvision.__version__}")
print(f"TorchAudio 버전: {torchaudio.__version__}")

CUDA 사용 가능 여부 확인

import torch

print(f"CUDA 사용 가능: {torch.cuda.is_available()}")
if torch.cuda.is_available():
    print(f"CUDA 버전: {torch.version.cuda}")
    print(f"GPU 개수: {torch.cuda.device_count()}")
    print(f"현재 GPU: {torch.cuda.get_device_name(0)}")

MPS 확인 (Apple Silicon)

import torch

print(f"MPS 사용 가능: {torch.backends.mps.is_available()}")
print(f"MPS 빌드됨: {torch.backends.mps.is_built()}")

5. 추가 패키지 설치

필수 패키지

pip install numpy matplotlib pandas jupyter notebook

# 또는 한 번에
pip install numpy matplotlib pandas jupyter notebook scikit-learn seaborn

딥러닝 관련 패키지

# 이미지 처리
pip install Pillow opencv-python

# 자연어 처리
pip install transformers datasets tokenizers

# 시각화
pip install tensorboard wandb

# 유틸리티
pip install tqdm requests

6. 개발 환경 설정

Jupyter Notebook 설정

# Jupyter 설치 및 실행
pip install jupyter
jupyter notebook

# 또는 JupyterLab
pip install jupyterlab
jupyter lab

VS Code 설정

  1. Python Extension 설치
  2. Jupyter Extension 설치
  3. Python Interpreter 설정 (Ctrl+Shift+P → "Python: Select Interpreter")

PyCharm 설정

  1. File → Settings → Project → Python Interpreter
  2. 생성한 가상환경의 Python 경로 선택

참고: 새 프로젝트의 기본 인터프리터를 설정하려면 'Settings for New Projects' 메뉴를 사용하세요.

(출처: https://stackoverflow.com/questions/19679150/how-to-set-default-pycharm-interpreter)
(출처: https://stackoverflow.com/questions/19679150/how-to-set-default-pycharm-interpreter)

7. 설치 테스트

다음 코드를 실행하여 PyTorch가 정상적으로 설치되었는지 확인해보세요:

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np

# 디바이스 설정
if torch.cuda.is_available():
    device = torch.device('cuda')
    print("GPU 사용")
elif torch.backends.mps.is_available():
    device = torch.device('mps')
    print("MPS 사용")
else:
    device = torch.device('cpu')
    print("CPU 사용")

# 간단한 신경망 생성
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(10, 5)
        self.fc2 = nn.Linear(5, 1)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 모델 생성 및 디바이스로 이동
model = SimpleNet().to(device)
print(f"모델이 {device}에 생성되었습니다.")

# 더미 데이터로 테스트
x = torch.randn(32, 10).to(device)
y = model(x)
print(f"출력 형태: {y.shape}")
print("🎉 PyTorch 설치 및 설정 완료!")

8. 문제 해결

자주 발생하는 문제들

CUDA 버전 불일치

nvidia-smi # 에 표시되는 CUDA 버전은 드라이버와 호환되는 최대 CUDA 버전을 나타냅니다.

nvcc --version # 반변, nvcc는 개발용으로 설치된 실제 CUDA 툴킷 버전을 보여준다는 점에 유의하세요.

# PyTorch CUDA 버전 확인 python -c "import torch; print(torch.version.cuda)"

해결방법: 시스템의 CUDA 버전과 PyTorch CUDA 버전이 호환되는지 확인하고, 필요시 적절한 버전으로 재설치하세요.

 

NVIDIA GPU 관련 명령어 설명

다음은 시스템에서 NVIDIA GPU 관련 정보를 확인하는 데 사용되는 두 가지 다른 명령어입니다:

nvcc --version

이 명령어는 시스템에 설치된 NVIDIA CUDA 컴파일러(nvcc)의 버전을 표시합니다.

  • 목적: 설치된 CUDA 툴킷 버전을 보여줍니다
  • 알려주는 정보: CUDA 코드 컴파일에 사용할 수 있는 CUDA 컴파일러 도구의 버전
  • 출력 예시:
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2023 NVIDIA Corporation
    Built on Fri_Jan_20_15:28:54_PST_2023
    Cuda compilation tools, release 12.1, V12.1.66
    Build cuda_12.1.r12.1/compiler.32415258_0
  • 사용 시기: 개발 환경에서 어떤 CUDA 버전을 사용하고 있는지 확인해야 할 때

nvidia-smi

이 명령어는 NVIDIA 시스템 관리 인터페이스를 실행하며, NVIDIA GPU에 대한 모니터링 및 관리 기능을 제공합니다.

  • 목적: 시스템의 모든 NVIDIA GPU에 대한 정보를 표시합니다
  • 알려주는 정보:
    • GPU 모델
    • 드라이버 버전
    • 드라이버와 호환되는 CUDA 버전
    • GPU 사용률
    • 메모리 사용량
    • 온도
    • 전력 소비량
    • GPU를 사용 중인 실행 프로세스
  • 출력 예시:
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 535.104.05   Driver Version: 535.104.05   CUDA Version: 12.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
    | 30%   45C    P8    13W / 200W |   1234MiB /  8192MiB |      5%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
  • 사용 시기: GPU 상태 확인, 사용량 모니터링 또는 드라이버 설치 확인이 필요할 때

주요 차이점

  • nvcc --version은 CUDA 컴파일러 툴체인(개발)에 관한 것입니다
  • nvidia-smi는 물리적 GPU와 현재 상태(런타임)에 관한 것입니다

nvidia-smi에 표시되는 CUDA 버전은 드라이버와 호환되는 최대 CUDA 버전을 나타내는 반면,
nvcc --version은 개발용으로 설치된 실제 CUDA 툴킷 버전을 보여준다는 점에 유의하세요.

 

메모리 부족

# GPU 메모리 정리
torch.cuda.empty_cache()

# 메모리 사용량 확인
print(f"할당된 메모리: {torch.cuda.memory_allocated() / 1024**2:.2f} MB")
print(f"캐시된 메모리: {torch.cuda.memory_reserved() / 1024**2:.2f} MB")

패키지 충돌

# 환경 완전 재설치
conda remove -n pytorch_env --all
conda create -n pytorch_env python=3.10
conda activate pytorch_env

# 또는 pip 캐시 정리
pip cache purge

ImportError 해결

# 패키지 재설치
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio

 

 

9. 마무리

이번 포스트에서는 Conda와 PIP을 사용하여 PyTorch를 설치하는 방법에 대해 상세히 알아보았습니다. 또한, PyTorch나 CUDA를 설정하면서 자주 발생하는 라이브러리 충돌 및 호환성 문제를 예방하기 위해 Conda와 Venv를 이용한 가상환경 구성 방법도 함께 살펴보았습니다.

추가적으로 VS Code와 PyCharm에서 개발환경(기본 파이썬 인터프리터)을 설정하는 방법까지 다루어 실제 개발 과정에서 필요한 전반적인 환경 구성을 완료할 수 있도록 안내했습니다.

데이터 사이언스 작업에 필수적인 패키지들을 설치하는 방법도 소개하여, 딥러닝 프로젝트를 바로 시작할 수 있는 기반을 마련해 드렸습니다. 또한 GPU 상태 확인을 위한 nvidia-smi 명령어와 CUDA 컴파일러 버전을 확인하는 nvcc --version 명령어의 차이점을 설명하여, 개발 환경이 제대로 구성되었는지 검증할 수 있는 방법도 제공했습니다.

앞으로 더 상세한 내용과 추가적인 팁들을 정리하여 후속 포스트로 공유해 드리도록 하겠습니다. 여러분의 딥러닝 개발 환경 설정에 이 글이 도움이 되었기를 바랍니다.

 

유용한 리소스

+ Recent posts