WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
이 경고 메시지는 xformers와 torch의 버전이 서로 호환되지 않아서 나오는 메시지입니다.
이 경고를 해결하려면 xformers와 torch의 버전을 서로 호환되는 버전으로 맞춰주면 됩니다.
버전을 맞추는 방법은 경고 메시지에 적혀있습니다.
빨간색 표시의 torch 버전을 파란색 표시 버전으로 변경하면 됩니다.
you have 다음에 나오는 버전이 현재 설치되어 있는 버전입니다.
이 버전은 브라우저 Web UI 하단에도 표시되어 있습니다.
경고 메시지의 의미는 현재 설치되어 있는 2.3.0+cu121 버전을 2.1.2+cu121 버전으로 변경해야 이 문제가 해결된다는 뜻입니다.
정리하자면 you have에 표시된 버전이 파란색 표시 버전보다 낮을 때는 torch를 업그레이드해야 되고
위 예시처럼 you have에 표시된 버전이 높을 때는 반대로 torch를 다운그레이드해야 됩니다.
다운그레이드를 해야 할 경우만 참고
다운그레이드의 경우 torch의 버전을 낮추는 것이 아닌 xformers의 버전을 높여서 이 문제를 해결할 수도 있으나 추천하지는 않습니다.
위 예시처럼 torch의 버전이 높은 경우 torch의 버전을 강제로 업데이트했기 때문입니다.
스테이블디퓨전의 torch는 처음부터 기본으로 설치돼 있는 torch 버전에 최적화되어 있습니다.
그러나 torch의 버전을 업그레이드하고 싶은 마음에 강제로 torch를 업데이트했을 때 이런 문제가 발생합니다.
xformers의 버전을 높여서 이 문제를 해결할 경우 강제로 업데이트된 torch 버전을 계속 사용해야 합니다.
이 경우 스테이블디퓨전의 기본적인 기능들은 작동하나 extension을 추가해 사용할 때 문제가 발생할 수도 있습니다.
따라서 torch를 다운그레이드해야 하는 경우라면 xformers의 버전을 높이는 것이 아닌 torch의 버전을 낮춰서 원래의 기본 torch 버전으로 다운그레이드하는 방식으로 이 문제를 해결하는 것이 더 좋습니다.
이 글은 윈도우 운영체제 기준으로 설명되어 있습니다.
torch 버전 변경하기
먼저 이 작업을 하기 전에 스테이블디퓨전 전체 폴더를 따로 백업해 두는 것을 권합니다.
torch의 버전을 바꾸는 작업은 중간에 어떤 에러가 발생할지 모르고 초보자에게는 어려운 작업입니다.
컴퓨터 환경에 따라 예상치 못한 상황이 발생할 수도 있으며 버전 교체 작업 중 스스로 해결할 수 없는 에러가 발생하여 스테이블디퓨젼 자체가 망가질 수도 있습니다.
따라서 작업 도중 해결할 수 없는 문제가 발생할 경우 언제든지 원래의 스테이블디퓨전으로 복원하고 다른 방법을 찾으십시오.
먼저 파일 탐색기를 열고 다음 폴더로 이동하십시오.
forge일 경우 경로가 다르니 아래쪽 forge 경로를 참고하세요.
스테이블디퓨전: 스테이블디퓨전 경로\venv\Scripts
forge: forge 경로\system\python\Scripts
Scripts 폴더에서 cmd를 입력하고 엔터 키를 누릅니다.
cmd가 실행되면 위에 언급한 Scripts 폴더의 경로가 맞는지 확인합니다.
경로가 맞으면 pip show torch 명령어를 입력하고 엔터 키를 누릅니다.
forge일 경우 다음 에러가 발생할 수도 있습니다.
Fatal error in launcher: Unable to create process using
이 에러가 발생하면 python -m pip show torch 명령어를 입력합니다.
(python 명령어가 인식되지 않을 경우 ..\python -m pip show torch 명령어를 입력합니다)
show torch 명령어가 제대로 작동되면 위 화면처럼 torch의 버전과 위치(Location)가 표시됩니다.
화면에 표시된 버전이 현재 스테이블디퓨전에 설치돼 있는 torch의 버전과 맞는지 확인하십시오.
그리고 Location에 표시된 경로가 스테이블디퓨전의 경로가 맞는지 확인합니다.
버전과 Location 정보 2개가 모두 맞는지 확인하고 다음 단계로 넘어가십시오.
forge 이용자는 버전이 다르게 나오거나 Location에 나온 경로가 실제 스테이블디퓨전 경로와 다르게 표시될 수도 있습니다. 이 경우 아래 화면처럼 ..\python -m pip show torch 명령어를 입력합니다.
(시스템 환경에 따라 \ 또는 ₩으로 표시됩니다)
화면에 표시된 버전이 실제 스테이블디퓨전에 설치된 torch 버전과 일치하는지 확인합니다.
(버전 정보를 모를 경우 이 글 윗부분에서 실제 버전 정보 확인하는 방법을 참고)
그리고 Location에 실제 스테이블디퓨전 경로가 포함되어 있는지 확인합니다.
(forge가 아닐 경우 Location에 \system\python\ 대신 \venv\가 표시됩니다)
올바른 Location 경로
스테이블디퓨전: 스테이블디퓨전 경로\venv\lib\site-packages
forge: forge 경로\system\python\lib\site-packages
Location 경로가 바르게 표시되는지 반드시 확인하고 다음 단계로 넘어갑니다.
forge 이용자만 해당
..\python -m pip show torch 명령어를 입력했을 때 Version과 Location 정보가 올바르게 표시되는 forge 이용자는 앞으로 설명하는 모든 명령어 앞에 "..\python -m(공백 1칸)"을 포함하여 입력합니다.
torch 삭제
이 부분은 패스하고 torch 설치로 바로 넘어가도 됩니다.
pip uninstall torch 명령어를 입력하여 현재 설치되어 있는 torch를 삭제합니다.
(forge 이용자는 ..\python -m pip uninstall torch 명령어 입력)
Proceed (Y/n)? 에서 y 또는 Y를 입력합니다.
torch 설치
torch를 설치하기 전에 본인이 설치해야 할 torch의 버전을 경고 메시지에서 다시 확인하십시오.
아래 torch 설치 명령어는 torch 버전 2.1.2+cu121 설치 예시입니다.
pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu121
(forge 이용자는 명령어 제일 앞에 ..\python -m(공백 1칸) 추가)
위 예시와 다른 버전을 설치해야 할 경우 위 명령어에서 버전 숫자를 변경하거나 pytorch.org 사이트에 접속해서 버전에 맞는 설치 명령어를 참고하십시오.
torch 설치 완료 후 pip show torch 명령어를 통해 새로 설치된 torch의 정보를 확인합니다.
(forge 이용자는 ..\python -m pip show torch 입력)
경고 메시지에 표시된 설치해야 할 torch의 버전이 맞고 Location의 경로가 맞다면 제대로 설치된 것입니다.
기존 경고 메시지를 표시한 스테이블디퓨전을 종료하고 다시 실행합니다.
올바른 버전의 torch가 제대로 설치됐다면 스테이블디퓨전을 다시 실행했을 때 경고 메시지가 표시되지 않을 것입니다.
마지막으로 브라우저 Web UI 하단 버전 정보에서 새로 설치한 torch의 버전이 맞는지 확인합니다.
댓글