AI/ML 엔지니어링을 하다 보면 모델 학습만큼이나 시간을 많이 잡아먹는 것이 바로 환경 설정(Environment Setup)입니다. 특히 무거운 PyTorch, CUDA 의존성을 conda로 관리하다 보면, solving environment... 뺑뺑이가 돌아가는 동안 커피 한 잔 마시고 와야 했던 경험, 다들 있으실 겁니다.
오늘은 그 지루한 시간을 끝내줄, Rust로 만든 압도적인 속도의 패키지 매니저 uv를 소개하고, 제가 왜 Conda에서 갈아탔는지 정리해 보려 합니다.
1. 왜 uv 인가?
결론부터 말하자면 속도와 표준 준수 때문입니다.
기존의 Conda는 Python 기반의 Solver를 사용하기 때문에 의존성이 복잡해질수록 계산 속도가 기하급수적으로 느려집니다.
반면 uv는 Rust로 작성되었습니다.
단순히 "좀 빠르다" 수준이 아니라, 체감상 10배에서 100배 이상 빠릅니다.
주요 특징
- 압도적인 퍼포먼스: 'Warm cache' 상태에서는 가상환경 생성과 패키지 설치가 거의 '즉시(Instant)' 완료됩니다.
- 디스크 효율성: 전역 캐시(Global Cache)를 사용하며, Hardlink 기능을 활용합니다. 프로젝트마다 라이브러리를 복사하지 않고 링크만 걸기 때문에 디스크 용량을 획기적으로 아낄 수 있습니다. (모델 가중치만으로도 디스크가 부족한 우리에게 매우 중요하죠.)
- 표준 준수: Conda의 독자 규격(environment.yaml)이 아닌, Python 표준인 pyproject.toml을 완벽하게 지원합니다.
2. Conda vs uv 비교
| 구분 | Conda | uv | 비고 |
| 언어 | Python | Rust | 속도 차이의 원천 |
| 의존성해결 | 매우느림(SAT Solver) | 매우 빠름(PubGrub) | 복잡한 의존성도 빠르게 해결 |
| 디스크 관리 | 환경별 중복저장 | 중앙 캐시 + Hardlink | 용량 절약 |
| 배포편의성 | 불완전 | 강력 | 재현성 보장(CI/CD 유리) |
AI 엔지니어 관점에서 가장 체감되는 건 Docker 빌드 시간입니다. CI/CD 파이프라인에서 pip install 단계를 uv pip install로만 바꿔도 배포 속도가 확연히 달라집니다.
3. 설치 및 마이그레이션
설치부터 사용까지 매우 직관적입니다.
설치
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
기본 워크플로우
Conda에서는 create -n myenv 하고 activate 하던 과정이 이렇게 바뀝니다.
# 1. 프로젝트 초기화 (가상환경 자동 생성)
uv init my-project
cd my-project
# 2. Python 버전 지정 (로컬에 없으면 알아서 다운로드함)
uv python install 3.10
# 3. 패키지 추가 (requirements.txt 관리 불필요)
uv add torch torchvision numpy pandas
# -> pyproject.toml에 자동 추가되고 uv.lock 생성됨
# 4. 스크립트 실행
uv run python train.py
기존 requirements.txt가 있다면?
uv pip install -r requirements.txt
이 명령어 하나면 기존 프로젝트도 uv의 속도를 바로 누릴 수 있습니다.
4. 물론, Conda가 필요할 때도 있습니다
uv는 PyPI(pip) 생태계를 기반으로 합니다. 따라서 Pure Python 패키지나 Wheel 파일이 잘 배포된 라이브러리는 완벽하게 처리합니다.
하지만 gdal이나 아주 구형의 과학 계산 라이브러리처럼, 시스템 레벨의 C/C++ 바이너리 의존성이 매우 복잡하고 PyPI에 Wheel이 없는 경우에는 여전히 Conda(혹은 pixi)가 필요할 수 있습니다.
하지만, 최근의 PyTorch, TensorFlow, Hugging Face 관련 생태계는 Wheel 배포가 워낙 잘 되어 있어서 AI 연구/개발 목적이라면 uv로 넘어가지 않을 이유가 없습니다.
5. 마치며
"도구는 도구일 뿐"이라지만, 그 도구가 내 개발 생산성을 갉아먹고 있다면 바꿔야 합니다. 저는 현재 개인 프로젝트와 팀 내 신규 프로젝트의 베이스를 모두 uv로 전환하고 있습니다.
특히 H100 같은 고성능 GPU 서버 세팅할 때, 환경 구축하느라 시간 쓰지 말고 uv로 1초 만에 끝내고 모델 튜닝에 집중하시길 추천드립니다.
Handy's Verdict:
"Conda는 이제 데이터 사이언스 '플랫폼'으로 남겨두고, 패키지 관리는 'uv'에게 맡기세요."