1. PyTorch와 NumPy의 데이터 타입 호환성 문제 해결
NumPy 배열을 PyTorch 텐서로 변환할 때, PyTorch가 지원하지 않는 데이터 타입(예: uint16)을 사용하면 TypeError가 발생합니다. PyTorch는 주로 float64, float32, int64 등의 타입을 지원하므로 변환 전 전처리가 필요합니다.
import numpy as np
import torch
# 문제 상황: uint16 타입의 배열 생성
raw_data = np.array([1, 2, 3], dtype=np.uint16)
# 해결 방법: 부동 소수점 연산을 통해 타입을 호환 가능한 형태로 변경
# 1.0을 나누어 암시적으로 float 타입으로 캐스팅합니다.
processed_data = raw_data / 1.0
tensor_output = torch.from_numpy(processed_data)
print(tensor_output.dtype) # torch.float64 (또는 환경에 따라 float32)
2. conda-pack을 이용한 가상 환경 오프라인 마이그레이션
네트워크가 차단된 폐쇄망 환경이나 서버 간에 동일한 개발 환경을 복제해야 할 때 conda-pack 도구를 사용하면 편리합니다. 이 도구는 환경 내의 모든 바이너리와 종속성을 압축 파일 하나로 묶어줍니다.
소스 환경 패키징
# 가상 환경 'my_env'를 현재 디렉토리에 'my_env_archive.tar.gz'로 압축
conda pack -n my_env -o my_env_archive.tar.gz
# 특정 경로에 설치된 환경을 패키징할 경우
conda pack -p /home/user/anaconda3/envs/target_env -o target_env.tar.gz
대상 서버에서 환경 복원
# 새로운 디렉토리 생성 및 압축 해제
mkdir -p workspace_env
tar -xzf my_env_archive.tar.gz -C workspace_env
# 환경 활성화 (해당 경로의 bin 폴더 내 activate 스크립트 실행)
source workspace_env/bin/activate
# 환경 내의 절대 경로 참조들을 현재 위치에 맞게 재설정
conda-unpack
# 정상 활성화 확인
python -c "import sys; print(sys.executable)"
3. nnUnet 프레임워크 사용 시 라이브러리 버전 충돌 대응
의료 영상 분석에 자주 사용되는 nnUnetv1과 nnUnetv2를 동일 시스템에서 다룰 때, 공통 의존성인 batchgenerators의 버전 차이로 인해 구동 에러가 발생할 수 있습니다.
- v1: 0.21 이하의 구버전 최적화
- v2: 0.25 이상의 최신 버전 요구
만약 ModuleNotFoundError: No module named 'batchgenerators.dataloading.nondet_multi_threaded_augmenter'와 같은 에러가 발생한다면, 이는 v2에서 필요한 모듈이 구버전 batchgenerators에 존재하지 않기 때문입니다. 이 경우 아래와 같이 패키지를 갱신하여 해결할 수 있습니다.
# 기존 의존성 제거 후 최신 버전으로 재설치
pip uninstall batchgenerators -y
pip install batchgenerators