본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

Channels, binary, solver, pip과 함께 쓰기

~12 min · conda, concepts, internals

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

실제로 conda를 쓸 때 반복해서 중요한 네 가지 개념이 있어.

Channels. Channel은 패키지 저장소야. Anaconda Inc가 운영하는 defaults가 원조지만 conda-forge보다 패키지가 적고 상업적 사용 조건도 더 엄격해. conda-forge는 30,000개가 넘는 패키지와 활발한 유지관리자를 가진 커뮤니티 channel이고, bioconda는 생물정보학 도구를 제공해. pytorchnvidia 같은 특정 구성용 vendor channel도 있어. 특별한 이유가 없다면 설치에 -c conda-forge를 우선해.

Binary 패키지. conda의 핵심 기능이야. 패키지 안에 컴파일된 C/C++ 라이브러리, CUDA 런타임, R 패키지, Java까지 포함할 수 있어. pytorch를 설치하면 운영체제, CPU 아키텍처, CUDA 버전에 맞는 미리 컴파일된 binary를 받아 직접 컴파일할 필요가 없어. conda가 머신 러닝과 데이터 과학의 기본값이 된 이유야.

Solver. 예전 conda는 복잡한 환경을 푸는 데 몇 분씩 걸리는 느린 Python 기반 SAT solver로 악명이 높았어. conda 23.10부터 기본이 된 libmamba solver는 일반적인 환경에서 5~10배 빨라. 오래된 conda라면 conda install -n base conda-libmamba-solverconda config --set solver libmamba로 활성화할 수 있어.

conda와 pip 함께 쓰기. 어떤 conda channel에도 없고 PyPI에만 있는 패키지가 있어. 이때는 conda 패키지를 모두 먼저 설치하고 나머지를 pip으로 설치해야 해. 순서를 거꾸로 하면 환경이 손상될 수 있어. pip 계층은 environment.yml의 pip: 아래에 기록해 재현 가능하게 만들어.

Code

conda와 pip을 안전하게 함께 쓰기·yaml
# environment.yml — conda 먼저, pip 두 번째
name: my-env
channels:
  - conda-forge
  - pytorch
dependencies:
  # Conda layer — 먼저 install
  - python=3.12
  - pytorch
  - pandas
  - jupyterlab
  # Pip layer — 후에 install
  - pip
  - pip:
    - some-pypi-only-package
    - another-pypi-only-package

# 'conda env create -f environment.yml' 이 conda 먼저, pip 두 번째 install.
# 역순이 가끔 env 손상.
libmamba solver 활성화 확인·bash
# 현재 solver 체크
conda config --show solver
# solver: libmamba    ← 원하는 거

# 'classic' 이면 업그레이드:
conda install -n base conda-libmamba-solver
conda config --set solver libmamba

External links

Exercise

'conda config --show solver'를 실행해. 결과가 'classic'이면 위 명령으로 libmamba를 활성화해. 이어서 'conda create -n speed-test python=3.12 numpy pandas matplotlib jupyterlab pytest scipy'로 무거운 새 환경을 만들며 시간을 재 봐. 빨라진 solver는 환경을 만드는 습관 자체를 바꿀 만큼 차이가 커.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.