Developer/개발 환경 구축

[환경구축][PEFT] RuntimeError: Failed to import transformers.trainer because of the following error (부제: 윈도우에서 PEFT를 시도하려고 할 때 생기는 일)

마크 주쿼버그 2023. 10. 22. 21:29

Summary

이 글은 아래 환경에 있는 사람들이라면 참고하시기 좋은 글입니다.

1. Window OS 환경에서 PEFT를 시도하는 중인 분

2. 그 과정에서 엄청난 길이의 Warning과 Error를 맞이한 분

3. bitsandbytes 라이브러리 설치를 위해 pip install bitsandbytes로 시도한 분

 

시간이 없어 얼른 해결하고 싶은 분들은 아래 명령어를 실행하시길.

(만약 bitsandbytes를 사전에 설치하셨던 분이라면 pip uninstall bitsandbytes를 실행한 후 아래 코드를 실행하세요!)

python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui

 

출처: https://github.com/jllllll/bitsandbytes-windows-webui


Contents

이는 Transformer 라이브러리에 Trainer를 import 하는 과정에서 발생하는 오류로 아래와 같은 오류가 뜨는데, 위에서 언급한 것처럼 해결 방안은 아주 간단하므로 긴 길이의 Warning과 Error 메시지들에 당황하지 않아도 된다. 

 

012
[PEFT] Traniner를 import하는 과정에서 발생하는 압도적 길이의 오류 메시지

 

 

 

좀 더 구체적으로는 bitsandbytes 라이브러리가 제대로 설치되지 않아 발생하는 문제이다.

bitsandbytes 제작 팀에서 언급한 Git issue를 참고하였을 때, 이 문제의 원인으로는 precomplied Linux binaries를 사용하기 때문에 인도우 환경에서 표준 Pytorch와 호환을 보장할 수 없다고 하였다.

 

Window support와 관련된 글 (출처: https://github.com/TimDettmers/bitsandbytes/issues/30)

 

아래에서 여러 방법을 제안하고 있지만 딱 적합한 해결방안이 찾아지지 않아 포기하려던 찰나, 동일한 페이지 내에 거의 스크롤이 바닥에 닿을 쯔음 해결책을 찾을 수 있었다.

 

멋쟁이 YoungPhlo님: 아직 문제 해결 못 한 Window 사용자 녀석들 봐라. 이거 효과 좋음. ㄱㄱ.

 

pip install 명령어로도 설치가 가능하고, 최신 버전(0.41.1)의 bitsandbytes를 지원한다. 사용법은 해당 깃에 들어가면 더 자세하게 볼 수 있는데, 버전을 별도로 설정할 필요가 없다면 아래 코드를 실행하여 설치할 수 있다. (위에서 소개한 코드와 동일함)

 

python -m pip install bitsandbytes --prefer-binary --extra-index-url=https://jllllll.github.io/bitsandbytes-windows-webui

실행 결과

 

설치 후 코드를 실행해보면 잘 실행되는 것을 볼 수 있다. (현재 보이는 Bug report는 크게 신경쓰지 않아도 된다.)

 

그럼 끝! 안녕~!

 


- 여담1: bitsandbytes를 나는 처음에 비트샌즈바이츠라고 읽었다. 아마 땅콩샌드 먹는 중이라 그랬나 봄..

- 여담2: 제발 새로운 라이브러리 설치하거나 환경 구축할 때는 가상환경을 새로 만들어서 하세요.. 기존 개발 환경을 가능한 보존하세요.. 제발....

 


References

[1] bitsandbytes ISSUE #30: https://github.com/TimDettmers/bitsandbytes/issues/30

 

Missing Windows support · Issue #30 · TimDettmers/bitsandbytes

Currently, the library uses precompiled Linux binaries. I am unsure how compatible these are with standard PyTorch installs on Windows. It might be that the binaries need to be compiled against min...

github.com

[2] bitsandbytes-windows-webui: https://github.com/jllllll/bitsandbytes-windows-webui