dev.Log

CUDA + PyTorch에서 pip vs conda 차이 본문

인공지능

CUDA + PyTorch에서 pip vs conda 차이

초코푸딩 2026. 1. 2. 14:15

같은 PyTorch인데 왜 설치 방법에 따라 지옥이 갈릴까?

PyTorch를 CUDA 환경에서 설치할 때 대부분 한 번쯤 겪는다.

  • pip install torch → 에러
  • conda install pytorch → 갑자기 잘 됨
  • 서버에선 또 안 됨
  • Docker에선 다시 다름

이 글에서는 CUDA + PyTorch 환경에서 pip와 conda가 근본적으로 무엇이 다른지,
그리고 언제 무엇을 써야 하는지를 실전 기준으로 정리한다.


1. 핵심 결론 요약

구분pipconda
CUDA 포함 여부 ❌ (wheel에 포함) ⭕ (패키지로 관리)
libc / libstdc++ OS 의존 conda가 제공
설치 안정성 환경 의존 매우 안정
운영 서버
연구/실험
Docker 궁합

한 줄 요약하면:

pip은 OS에 맞춰 얹는 방식,
conda는 CUDA 생태계를 통째로 들고 오는 방식


2. pip로 설치한 PyTorch + CUDA 구조

설치 예시

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

내부 구조

  • PyTorch wheel 안에:
    • CUDA runtime
    • cuDNN
    • cuBLAS
    • NCCL (일부)
  • 하지만 다음은 포함하지 않음
    • glibc
    • libstdc++
    • NVIDIA driver

즉,

 
[OS glibc] ← 반드시 호환돼야 함 [GPU Driver] [PyTorch wheel (CUDA 포함)]

특징

  • wheel은 특정 glibc 버전 이상을 전제로 빌드
  • OS가 오래되면 바로 터짐

자주 나는 에러

 
GLIBC_2.28 not found GLIBCXX_3.4.26 not found

요약

  • pip + CUDA PyTorch는 OS 의존성이 매우 강함
  • 대신 가볍고 Docker에 적합

3. conda로 설치한 PyTorch + CUDA 구조

설치 예시

 
conda install pytorch pytorch-cuda=12.1 -c pytorch -c nvidia

내부 구조

  • conda env 안에 포함:
    • CUDA runtime
    • cuDNN
    • cuBLAS
    • NCCL
    • libc
    • libstdc++
    • OpenMP / MKL

구조는 사실상 이렇다.

 
[OS kernel] [GPU Driver] [conda env = mini OS]

특징

  • OS glibc와 거의 독립
  • 오래된 서버에서도 잘 동작
  • 연구 환경에서 “설치 스트레스 0”

단점

  • env 하나가 수백 MB ~ 수 GB
  • LD_LIBRARY_PATH 오염
  • 운영 서버에선 위험

4. 왜 conda는 “잘 되고”, pip는 “자주 깨질까?”

핵심 차이는 ABI 책임 범위다.

pip

  • ABI 책임: OS
  • PyTorch wheel은 “이 OS가 최신일 거라 가정”

conda

  • ABI 책임: conda
  • OS 위에 자체 ABI 계층을 깔아버림

그래서:

  • 오래된 CentOS 7
  • glibc 2.17
  • libstdc++ 낮은 서버

→ pip는 실패
→ conda는 성공


5. 운영 서버에서 conda가 위험한 이유 (요약)

conda가 잘 되는 이유 = 운영에서 위험한 이유

  • libc / libstdc++를 자체 제공
  • LD_LIBRARY_PATH를 강제로 우선 적용
  • 다른 C++ 서비스와 충돌
  • systemd, cron, Jenkins와 궁합 나쁨

즉:

“conda는 서버 전체에 영향”
“pip는 해당 프로세스에만 영향”


6. Docker에서는 왜 pip가 더 선호될까?

Docker에서는 상황이 바뀐다.

이유

  • OS 환경이 고정됨
  • glibc 버전 예측 가능
  • 이미지 자체가 격리

그래서:

  • nvidia/cuda:12.x-runtime + pip torch
    → 가장 안정적인 운영 조합

반대로:

  • Docker 안에서 conda
    → 이미지 커짐 + 복잡도 증가

7. 실전 선택 가이드

연구 / 실험

  • 로컬 PC
  • 연구 서버
  • Jupyter

conda


운영 서버 (Bare-metal / VM)

  • REST API
  • STT / RAG 서비스

pip + venv
(또는 Docker로 감싸기)


운영 서버 (Docker / Kubernetes)

  • GPU 추론
  • LLM 서빙

CUDA runtime 이미지 + pip torch


학습 전용 서버

  • 장시간 GPU 학습
  • 여러 CUDA 버전 실험

conda or PyTorch 공식 Docker


8. 가장 안전한 조합 정리

환경추천
로컬 ML 실험 conda
서버 Python 서비스 venv + pip
GPU 추론 (Docker) CUDA runtime + pip
대규모 학습 PyTorch 공식 Docker
운영 서버 + conda

결론

  • pip이 불안한 게 아니라
    OS와 CUDA ABI를 그대로 믿는 구조일 뿐이다.
  • conda가 편한 대신
    운영 안정성을 대가로 삼는다.

연구에는 conda
운영에는 pip + Docker

이 경계만 지켜도
CUDA + PyTorch로 인한 장애는 크게 줄어든다.

Comments