디버깅
파이토치와 cuda 버전은 공식문서에서 참고해서제대로 맞추고, hugging face cached_download고치고 뜨는 오류
오류 메시지
TypeError: scale_model_input() got an unexpected keyword argument 'step_i'
는 scheduler의 scale_model_input() 함수가 더 이상 또는 아직 ‘step_i’라는 인자를 받지 않는다는 의미다.
scheduler.scale_model_input 역할 : denoising autoencoder의 input 값들을 현재 시간단계(timestep)에 맞게 scaling하기 위함
해결 방법:
- 코드 수정:
• 코드 내에서 scheduler.scale_model_input()를 호출할 때 전달하는 인자 중 step_i를 제거하거나, 해당 함수가 기대하는 인자에 맞게 호출한다.
• 예를 들어, 만약 현재 diffusers 버전에서 scale_model_input()의 함수 시그니처가 (latent_model_input, t)와 같이 되어 있다면,
latent_model_input = self.scheduler.scale_model_input(latent_model_input, t)
처럼 호출해야 한다.
- 라이브러리 버전 확인:
• 혹시 코드가 특정 버전을 기준으로 작성되었고, 현재 설치된 diffusers(또는 관련 라이브러리)의 버전이 다르다면,
• 코드 수정 없이 이전 버전(또는 코드에 맞는 버전)으로 라이브러리를 설치하는 방법도 고려해볼 수 있다.
• pip show diffusers 명령어로 현재 설치된 버전을 확인한 후, GitHub 문서나 해당 릴리즈 노트를 확인해서 scale_model_input() 함수의 시그니처가 어떻게 변경되었는지 살펴본다.
- 문서 참조:
• diffusers나 해당 스케줄러 관련 문서를 확인해서, 최신 버전에서 scale_model_input() 함수가 어떤 인자를 받는지 확인하라.
• 만약 step_i 인자가 제거되었다면, 코드에서 해당 인자를 제거하는 것이 맞다.
요약:
현재 오류는 scale_model_input() 함수에 전달하는 인자 중 ‘step_i’가 더 이상 유효하지 않다는 것을 나타낸다.
• 코드를 수정하여 해당 인자를 제거하거나,
• 코드에 맞는 버전의 diffusers를 설치해야 한다.
원하는 방식에 따라 하나를 선택하면 된다.
(nvsa100) minsun3054@instance-231011-minsun-a100:~/NVS_Solver$ bash /mnt/data/minsun3054/NVS_Solver/msdata.sh
2025-03-25 19:53:15.852540: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable TF_ENABLE_ONEDNN_OPTS=0.
2025-03-25 19:53:17.785294: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:477] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1742932398.210679 80206 cuda_dnn.cc:8310] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1742932398.332197 80206 cuda_blas.cc:1418] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2025-03-25 19:53:19.648720: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
example_imgs/single/
/mnt/data/minsun3054/NVS_Solver/svd_interpolate_single_img.py:1119: RuntimeWarning: invalid value encountered in scalar power
lambda_t_3 = (-(2*v1_ + k*Q) + ((2*k*v1_+k*Q)**2 - 4*k*v1_*(k*v1_+Q*b))**0.5)/(2*k*v1_)
/mnt/data/minsun3054/NVS_Solver/svd_interpolate_single_img.py:1120: RuntimeWarning: invalid value encountered in scalar power
lambda_t_4 = (-(2*v1_ + k*Q) - ((2*k*v1_+k*Q)**2 - 4*k*v1_*(k*v1_+Q*b))**0.5)/(2*k*v1_)
/mnt/data/minsun3054/NVS_Solver/svd_interpolate_single_img.py:1116: RuntimeWarning: invalid value encountered in scalar power
lambda_t_1 = (-(2*v1 + k*Q) + ((2*k*v1+k*Q)**2 - 4*k*v1*(k*v1+Q*b))**0.5)/(2*k*v1)
/mnt/data/minsun3054/NVS_Solver/svd_interpolate_single_img.py:1117: RuntimeWarning: invalid value encountered in scalar power
lambda_t_2 = (-(2*v1 + k*Q) - ((2*k*v1+k*Q)**2 - 4*k*v1*(k*v1+Q*b))**0.5)/(2*k*v1)
Loading pipeline components...: 100%|████████████████████| 5/5 [00:18<00:00, 3.72s/it]
0%| | 0/100 [00:00
svd_render(image_o,masks, cond_image,args.image_path,save_path,output_path,lambda_ts,[args.lr](<http://args.lr/>),args.weight_clamp)
File "/mnt/data/minsun3054/NVS_Solver/svd_interpolate_single_img.py", line 1077, in svd_render
frames = pipe([image_o],temp_cond=cond_image,mask = masks,lambda_ts=lambda_ts,lr=lr,weight_clamp=weight_clamp,num_frames=2, decode_chunk_size=2,num_inference_steps=100).frames[0]
File "/mnt/data/minsun3054/NVS_Solver/svd_interpolate_single_img.py", line 548, in **call**
latent_model_input = self.scheduler.scale_model_input(latent_model_input, t,step_i=i)
그래서 나는 step_i 인자 받도록 버전 낮춰서 바꿔서 설치해봄
pip install diffusers==0.13.0 transformers
지금은 다음과같았었음.
pip show diffusers
Name: diffusers
Version: 0.32.2
Summary: State-of-the-art diffusion in PyTorch and JAX.
Home-page: <https://github.com/huggingface/diffusers>
Author: The Hugging Face team (past and future) with the help of all our contributors (<https://github.com/huggingface/diffusers/graphs/contributors>)
Author-email: diffusers@huggingface.co
License: Apache 2.0 License
Location: /mnt/data/minsun3054/.conda/envs/nvsa100/lib/python3.9/site-packages
Requires: filelock, huggingface-hub, importlib-metadata, numpy, Pillow, regex, requests, safetensors
Required-by:
그랬더니 이런오류 근데 난 코드를고쳤는데 경로가 반영이 안된것같음
ImportError: cannot import name 'cached_download' from 'huggingface_hub' (/mnt/data/minsun3054/.conda/envs/nvsa100/lib/python3.9/site-packages/huggingface_hub/__init__.py)
오류 메시지 “cannot import name ‘cached_download’ from ‘huggingface_hub’”는 현재 conda 환경에 설치된 huggingface_hub 버전에서 더 이상 cached_download 함수가 제공되지 않기 때문에 발생한다.
두 가지 해결 방법이 있다:
- 버전 다운그레이드
이전 코드가 cached_download를 사용하도록 작성되었다면, 해당 함수가 존재하는 버전으로 huggingface_hub를 다운그레이드하는 방법이 있다. 예를 들어,
pip install huggingface_hub==0.11.1
또는 프로젝트 문서에서 요구하는 버전을 설치해 보라.
코드 업데이트 및 로컬 수정 사항 사용 --> 나는 이거로 했다
이미 NVS_Solver 경로에서 코드를 수정해 놓았다면, 그 수정 사항이 반영되도록 해야 한다.
• 수정한 코드가 conda 환경의 site-packages 대신 로컬 버전을 참조하도록 하려면, 해당 패키지를 editable mode로 설치할 수 있다. 예를 들어, NVS_Solver 디렉터리에 변경한 코드가 있다면,
pip install -e /mnt/data/minsun3054/NVS_Solver
를 실행해서, 로컬 수정 사항이 우선적으로 사용되도록 한다.
• 또는, PYTHONPATH 환경변수에 해당 디렉터리를 추가하여 수정한 코드를 우선 로드하도록 설정할 수도 있다:
export PYTHONPATH=/mnt/data/minsun3054/NVS_Solver:$PYTHONPATH
어떤 방법을 선택할지는 프로젝트 상황에 따라 결정하면 된다. 만약 기존 코드와 호환성을 유지하고 싶다면 다운그레이드 방법을, 수정한 코드를 사용하고 싶다면 editable mode 설치나 PYTHONPATH 설정을 통해 로컬 버전을 우선시하도록 하면 된다.
PYTHONPATH가 제대로 설정되었는지 확인 :
echo $PYTHONPATH
출력에 /mnt/data/minsun3054/NVS_Solver가 포함되어 있어야 한다.
또한, 실제로 수정한 코드가 로드되고 있는지 확인하려면, 예를 들어 huggingface_hub 모듈의 파일 경로를 출력해보자:
python -c "import huggingface_hub; print(huggingface_hub.__file__)"
이 명령어의 출력이 /mnt/data/minsun3054/NVS_Solver 내의 파일을 가리키고 있다면, 로컬 수정사항이 반영되고 있는 것이다.
그러나 출력이 여전히 conda 환경의 site-packages 경로를 가리킨다면, PYTHONPATH 설정이 우선순위에 반영되지 않고 있다는 의미이다.
만약 로컬 수정사항을 우선 적용하고 싶다면, 해당 코드를 editable 모드로 설치하는 것도 방법이다. 예를 들어, NVS_Solver 디렉터리에 setup.py 파일이 있다면 다음 명령어를 실행해볼 수 있다:
pip install -e /mnt/data/minsun3054/NVS_Solver
이렇게 하면, 로컬 코드 변경 사항이 바로 반영된다.
정리하면:
- echo $PYTHONPATH로 환경변수가 올바르게 설정되었는지 확인
- python -c "import huggingface_hub; print(huggingface_hub.file)"로 실제 로드되는 모듈 경로 확인
- 수정한 코드가 우선 적용되지 않으면 editable 모드 설치나 PYTHONPATH 설정을 재검토한다.
.
수정한 내용(예: cached_download → hf_hub_download)이 반영되도록 하려면, 현재 conda 환경의 site‑packages에 설치된 diffusers 대신, 수정한 로컬 버전을 우선적으로 사용해야 한다.
해결 방법:
- Editable Mode로 설치하기
NVS_Solver 프로젝트 루트에 setup.py 파일이 있다면, 해당 프로젝트를 editable 모드로 설치하면 로컬 변경사항이 바로 반영된다. 예를 들어,
cd /mnt/data/minsun3054/NVS_Solver
pip uninstall diffusers # 기존 설치된 diffusers 제거 (필요시)
pip install -e .
이렇게 하면, Python이 /mnt/data/minsun3054/NVS_Solver/src/diffusers 경로의 코드를 우선 사용하게 된다.
PYTHONPATH 환경 변수 설정 해줬더니 되었다~!
만약 editable mode로 설치하기 어려운 경우, PYTHONPATH 환경변수를 수정하여 수정한 코드가 포함된 디렉터리를 우선순위에 두어야 한다.
예를 들어,
export PYTHONPATH=/mnt/data/minsun3054/NVS_Solver/src:$PYTHONPATH
이렇게 하면, Python이 먼저 /mnt/data/minsun3054/NVS_Solver/src 경로를 검색하게 되어, 수정한 diffusers 코드가 로드될 가능성이 높다.
- 변경 사항 확인하기
수정한 파일이 제대로 로드되는지 확인하려면, Python 인터프리터에서 아래 명령어를 실행해보자:
python -c "import diffusers.utils.dynamic_modules_utils as dmu; print(dmu.__file__)"
이 출력이 /mnt/data/minsun3054/NVS_Solver/src/diffusers/utils/dynamic_modules_utils.py를 가리키면, 수정한 코드가 반영된 것이다.
이 중 한 가지 방법(또는 둘 다)을 적용하면, 수정한 내용이 반영되어 원하는 동작을 확인할 수 있다.
이렇게하면 다음과같음
(nvsa100) minsun3054@instance-231011-minsun-a100:~/NVS_Solver$ export PYTHONPATH=/mnt/data/minsun3054/NVS_Solver/src:$PYTHONPATH
(nvsa100) minsun3054@instance-231011-minsun-a100:~/NVS_Solver$ python -c "import diffusers.utils.dynamic_modules_utils as dmu; print(dmu.__file__)"
/mnt/data/minsun3054/NVS_Solver/src/diffusers/utils/dynamic_modules_utils.py
오 된 것 같음 에러 안나고 실행 됨 근데 너무 오래걸려보임
근데 서버 연결 할 때 마다 계속 해줘야하나 환경변수 설정?
아는사람 댓글주세요