현재 사용하는 주요 라이브러리들 버전을 정리하면 다음과 같습니다.
conda deactivate
conda remove -n tf_env --all
conda create -n tf_env python=3.10.16
# yaml파일을 이용해서 새로운 환경 생성
# conda env create -n new_env -f old_env.yml
conda activate tf_env
# Kernel 등록 전에 jupyter를 먼저 설치
conda install jupyter
# 가상환경을 Jupyter 커널로 등록
python -m ipykernel install --user --name=tf_env --display-name="tf_env"
jupyter kernelspec list
jupyter kernelspec uninstall tf_env
# jupyter lab 실행 시 아래와 같이 실행해야 함.
jupyter lab --no-browser --ip=0.0.0.0
# 실행 후 나온 token값을 이용해서 windows browser에 url을 입력해서
# jupyter lab 서버에 접속한 후 사용
# 실행방법이 불편하니 설정을 통해 조금 더 쉽게 사용하자!
jupyter lab --generate-config # 환경설정파일 생성
# ~/.jupyter/jupyter_lab_config.py 파일 생성
# 해당 파일을 vi로 열어서 다음의 내용을 찾아 수정
c.ServerApp.notebook_dir = '/home/moon9342/jupyter_home'
c.ServerApp.token = '' # ← 빈 문자열로 설정하면 토큰 없이 접속 가능
c.ServerApp.password = '' # ← 비밀번호도 제거
c.ServerApp.ip = '0.0.0.0' # ← 모든 IP에서 접속 허용
c.ServerApp.open_browser = False
c.ServerApp.port = 8888 # ← 포트 번호 고정
ServerApp.iopub_msg_rate_limit=1000000
ServerApp.rate_limit_window=10.0
# 설정을 끝내고 jupyter lab 실행 후
# windows browser에서 http://localhost:8888 접속
항목 | 한 번에 설치 | 따로따로 설치 |
---|---|---|
의존성 해결 | 전체 패키지를 동시에 고려해 가장 호환되는 조합을 계산 | 순차적로 설치되면서 기존 패키지와 충돌 위험이 있음 |
설치 속도 | 빠르고 일관됨 | 여러 번 재계산 → 느릴 수 있음 |
충돌 위험 | 낮음 (최적 조합을 conda가 계산) | 높음 (후속 설치가 앞선 패키지를 강제로 업/다운그레이드할 수 있음) |
안정성 | 매우 높음 (추천 방식) | 상황에 따라 예기치 못한 dependency 충돌 발생 |
conda install numpy=1.26.4 pandas=2.2.2 matplotlib=3.8.4 scikit-learn=1.4.2
pip install imbalanced-learn==0.12.2
# conda install statsmodels
pip install statsmodels
pip install ipython==8.12.2 # 버전충돌을 피하고 안정적 사용을 위해 버전 다운그래이드
# tensorflow 호환성을 위해 설치(TensorFlow 2.13일 경우 아래코드 실행)
# pip install typing-extensions==4.5.0
# conda install로 설치하지 않는다. (GPU가속때문)
pip install tensorflow==2.16.2
# 호환버전으로 설치
# PyTorch + torchvision (CUDA 11.8용 공식 PyTorch 인덱스 사용)
# pip install torch==2.1.2 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118
# PyTorch + torchvision (CUDA 12.1용 공식 PyTorch 인덱스 사용)
pip install torch==2.2.2+cu121 torchvision==0.17.2+cu121 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu121
# Lightning (v2 계열)
# lightning은 2023년 이후로 이름이 "lightning"으로 변경
pip install lightning==2.2.4
# HuggingFace Transformers & Datasets
# datasets==2.16.0은 2023년 11월경 릴리스
# 이 시점의 transformers 최신 안정 버전은 4.36.2
# 이후 버전(4.37+)에서는 typing-extensions>=4.6 및 기타 dependency 업데이트가
# 포함되어 typing-extensions==4.5와 충돌 가능
pip install transformers==4.39.3 datasets==2.19.1
pip install sentence-transformers==2.6.1
pip install kobert-transformers # tokenizer
# pip install huggingface-hub==0.22.3
# (0.33.0 버전이 이미 설치됨)
conda install -c conda-forge faiss-gpu # 시간이 오래 걸림.
# pip install faiss 또는 pip install faiss-gpu는 공식적으로 잘
# 동작하지 않음. → 반드시 conda 사용 추천
# conda 설치 시 cudatoolkit=12.1을 명시하지 않고, 시스템에 이미 설치된
# CUDA 12.x을 사용하게 한다. WSL2에서 직접 설치된 CUDA는 PyTorch나
# FAISS가 런타임에 자동으로 찾는다.
conda-forge 채널에서 TensorFlow를 설치할 수 있다. 하지만 conda-forge에서 설치한 TensorFlow는 CPU 전용 버전이다. GPU 가속이 필요하다면 pip로 설치하는 것이 유일한 방법이다.
PyTorch에서 GPU(CUDA)를 사용하기 위해서는 python-cuda=12.1을 conda 환경안에 별도로 설치해야 한다. 심지어 WSL2의 Ubuntu 시스템에 이미 CUDA 12.3과 cuDNN 8.9를 전역 설치해두었다고 하더라도 그렇다.
프레임워크 | CUDA 연동 방식 |
---|---|
TensorFlow | 시스템에 설치된 CUDA/cuDNN를 사용함 (시스템 환경 변수 기반) |
PyTorch | 자체적으로 CUDA runtime과 라이브러리를 번들로 관리함 (환경 내부에서 처리) |
sudo apt install libopencv-dev
항목 | 설명 |
---|---|
설치 위치 | 시스템 전체 (global)에 설치됨 (/usr/lib , /usr/include 등) |
언어 지원 | C++ 기반 OpenCV 라이브러리와 헤더 파일이 설치됨 |
Python 바인딩 | 기본적으로 포함되지 않음 (따로 opencv-python 를 설치해야 함) |
버전 | Ubuntu 저장소 기준으로 고정된 구버전일 가능성이 높음 (예: OpenCV 4.2.x) |
용도 | C++ 개발용 또는 시스템 전역에서 사용하는 OpenCV 애플리케이션 |
예시 | g++ , cmake 등을 이용한 컴파일에 사용 |
OpenCV-Python 4.7.0.72 버전을 설치 (TensorFlow 2.13 버전일 경우)
(Python 3.10과 호환 가능, Numpy 1.24.3과 충돌 없음, TensorFlow 2.13과 병행 사용 시 주요 의존성 충돌 없음)
pip install opencv-python==4.7.0.72
pip install opencv-python==4.9.0.80
항목 | 설명 |
---|---|
설치 위치 | 현재 Python 환경(가상환경 포함)에만 설치됨 (site-packages 내부) |
언어 지원 | Python 바인딩만 포함 (C++ 개발은 불가) |
버전 | PyPI에서 최신 버전 설치 가능 (예: OpenCV 4.9.x) |
용도 | Python 기반 딥러닝/컴퓨터 비전 코드 실행용 |
특징 | 가상환경마다 독립 설치 가능 → TensorFlow, PyTorch와 함께 사용 권장 |
protoc 3.20.x 는 TensorFlow/odels 레포지토리의 최신 Object Detection API와 안정적으로 작동한다. 3.21+ 버전은 create_pascal_tf_record.py 등에서 오류가 발생할 수 있다.
protoc 버전 확인
protoc --version # libprotoc 29.3
# 만약 3.20.3 버전이 아니라면 삭제 후 다시 수동 설치
sudo apt remove protobuf-compiler
# 만약 설치안되있고 binary로 설치되어 있는 경우
# which로 찾아서 제거
rm -rf /home/moon9342/anaconda3/envs/tf_env/bin/protoc
# sudo rm -f /usr/local/bin/protoc
# which protoc 명령어로 경로를 확인하고 해당 바이너리 파일 제거
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.3/protoc-3.20.3-linux-x86_64.zip
unzip protoc-3.20.3-linux-x86_64.zip -d $HOME/protoc
# export PATH="$HOME/protoc/bin:$PATH"
# 현재 셸 세션에서만 PATH 환경변수를 수정하며,
# 터미널을 종료하면 원래 상태로 돌아간다.
# 만약 영구적으로 적용하려면
echo 'export PATH="$HOME/protoc/bin:$PATH"' >> ~/.bashrc
# source ~/.bashrc
# 명령을 실행하면 된다.
source ~/.bashrc
protoc --version
# libprotoc 3.20.3
conda install -c conda-forge protobuf=3.20.3 # 시간이 약간 걸림
import tensorflow as tf
print(tf.__version__) # 2.16.1
# 물리적인 GPU 목록 출력
print("Available GPU devices:")
print(tf.config.list_physical_devices('GPU'))
# Available GPU devices:
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
TensorFlow 코드 실행 시 경고가 발생하는데 그 이유는 다음과 같다.
3가지 경고 모두 무시하면 된다.
메시지 | 원인 | 영향 | 조치 필요 여부 |
---|---|---|---|
oneDNN 활성화 | CPU 최적화 | 결과값 미세 차이 | ❌ 필요 없음 (정보 메시지) |
AVX2 등 미사용 | CPU 명령어 미최적화 | 일부 연산 속도 저하 | ❌ 무시 가능 |
TensorRT 미탐지 | TF-TRT 비활성화 | 고속 추론 최적화 미사용 | ❌ 무시 가능 (선택적 설치) |
import torch
print("PyTorch version:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())
print("CUDA version:", torch.version.cuda)
# PyTorch version: 2.2.2+cu121
# CUDA available: True
# CUDA version: 12.1
Anaconda에서 가상환경을 만들고 라이브러리를 설치할 때, 다른 가상환경에서 설치했던 라이브러리라고 하더라도 기본적으로는 다시 다운로드해서 설치한다. 다만, 특정 조건(캐쉬가 존재)에서는 다운로드 없이 설치하는 경우도 있다.
만약 동일한 환경으로 여러 가상환경을 만들어서 사용할 경우 가상환경을 복사해서 사용하는 경우가 있는데 생각보다 자주 라이브러리 종속성이 깨진다.
env환경을 yaml파일로 내보내고 이 내용을 이용해서 새 환경을 만드는 방법이 좋다.
conda activate old_env
# 기존 가상환경 yaml파일로 export
# -no-builds 옵션은 conda env export 시에 패키지의 build 번호를 생략하기 위한 것이다.
# 버전 정보만 포함되고, 빌드 정보는 생략된다
conda env export --no-builds > old_env.yml
# yaml파일을 이용해서 새로운 환경 생성
conda env create -n new_env -f old_env.yml
# 가상환경을 Jupyter 커널로 등록
python -m ipykernel install --user --name=new_env --display-name="new_env"
위와 같이 env export를 이용하여 yaml파일을 내보낼 때 torch==2.1.2+cu188처럼 +cu118이 들어간다면 PyPI에서 직접 설치할 수 없는 형식이므로 yaml에서 그대로 쓰면 오류가 난다.
수동으로 변경해주는 방법이 가장 좋다.
dependencies:
- python=3.10
- pip
- pip:
- torch==2.2.2
- torchvision
- torchaudio
- --extra-index-url https://download.pytorch.org/whl/cu121
하지만 이 방법도 간혹 정상적으로 설치가 안되는 문제가 발생한다. 그냥 가상환경을 새롭게 만드는게 가장 깔끔하다.
방법 | 목적 | 권장 여부 |
---|---|---|
conda env export 방식 | 환경 복제, 공유, 배포 | ✅ 매우 권장 |
conda clone 방식 | 같은 시스템 내 빠른 복사 | ⚠️ 제한적 사용 |
requirements.txt 방식 | pip 전용 환경 복제 | ❌ conda 환경에 비권장 |