본문 바로가기

IT/AI

m1 맥미니에서 webui 사용시 발생하는 이슈

집에 오래된 PC가 있다. 사양이 뭐더라, 요새 안 켜봐서 모르겠는데 i5 7500 에 그래픽 카드가 1060 6기가 짜리인것 같다.

이 컴퓨터로 게임하던 시절 이후로 윈도우 생태계를 떠나있어서,

요새 ai 그림 놀이(stable diffusion) 하다보니 nvidia 그래픽 카드가 좀 사고 싶은 생각도 들지만,

요새 하이엔드급 그래픽 카드는 거의 돈백은 넘어 가고 4090정도는 200이 넘어가더라구요,

그래서 코랩(colab)이라든지 런팟이라든지 대체제를 이용하기도 하는데요,

코렙은 최초 로딩시간이 너무 느리고 중간에 런타임 죽기도 하고 이래서 맘 먹고 하지 않으면 잘 안열어지더라구요,

집에서 간단히 몇개 돌려볼때는 로컬컴을 이용하는게 속편하더라구요. 느려도.

각설이하고 요새 제가 집에서 쓰는 컴은 맥미니랍니다.

그래서 간단히 느리지만 webui띄워서 가지고 노는데 이게 참 느리더라구요^^

512x512 아무런 옵션없이 DPM++ 2M Karras로 돌리면 보통 1분50초 정도 하나 나오더라구요.

그러던 중에.

https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/7453

 

How to improve performance on M1 / M2 Macs · AUTOMATIC1111/stable-diffusion-webui · Discussion #7453

There have been several additions and changes made recently that can improve performance on macOS: Half precision support (using web UI without --no-half) with --upcast-sampling. This significantly...

github.com

여기 글을 읽다가, 하단부에

https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/7453#discussioncomment-5475981

 

How to improve performance on M1 / M2 Macs · AUTOMATIC1111/stable-diffusion-webui · Discussion #7453

There have been several additions and changes made recently that can improve performance on macOS: Half precision support (using web UI without --no-half) with --upcast-sampling. This significantly...

github.com

https://github.com/brkirch/stable-diffusion-webui/releases/tag/20230330

 

Release Offline Standalone Mac Installer for Stable Diffusion Web UI (unofficial) 20230330 · brkirch/stable-diffusion-webui

This is an offline standalone installer for a slightly modified version of AUTOMATIC1111's Stable Diffusion web UI (changes were applied to AUTOMATIC1111@a9fed7c). All dependencies needed to start ...

github.com

이버전을 따로 세팅해서 쓰고 있었습니다.

쬐금 성능 향상이 있더라구, 

공식 사이트 버전은 mac 버전에는 기본적으로 --no-half 옵션이 포함되어서 동작하고,

이버전은 이부분을 빼고 오류나는 부분을 수정한 것 같더라구요.(코드는 뜯어보지 않고 감으로^^)

근데 오늘 이미지를 WD 1.4 tagger로 뽑은 프롬프트를 테스트 삼아 돌려보는데

 

1girl, breasts, large breasts, navel, cleavage, earrings, outdoors, jewelry, brown hair, choker, looking at viewer, hoop earrings, solo, brown eyes, long hair, day, ponytail, lips, smile, sports bra, parted lips, high ponytail, thighs, mole, long sleeves, stomach, forehead, black choker, sportswear, sky, midriff

 

빨간색 사각형 박스를 보세요.

긍정프롬프트 78 token,

부정프롬프트가 30 token,

이상태로 생성(Generate)을 한번 눌러볼께요

이런 오류를 뿜고 뻗어버린다.

webui root에 webui-user.sh를 열고

--disable-nan-check 를 추가하고 다시 열어봅시다.

 

export COMMANDLINE_ARGS="--skip-torch-cuda-test --skip-install --disable-nan-check --upcast-sampling --opt-sub-quad-attention --use-cpu interrogate"

 

export COMMANDLINE_ARGS="--skip-torch-cuda-test --skip-install --disable-nan-check --upcast-sampling --opt-sub-quad-attention --use-cpu interrogate"

 

프롬프트 똑같이 맞춰주고, 생성버튼을 눌러볼께요..

그러면 에러없이 동작하기는 합니다.

1분 20초가 걸려서 완료가 되었는데,

검은 이미지가 만들어집니다.

황당하지요, ㅎㅎ 위에 옵션에서 --no-half 를 추가해봅시다.

export COMMANDLINE_ARGS="--skip-torch-cuda-test --skip-install --no-half --disable-nan-check --upcast-sampling --opt-sub-quad-attention --use-cpu interrogate"

--no-half 파라미터가 붙으면 속도가 느려집니다.

1분 20초에 동작완료 한거에 비해 1분 47초에 완료되네요. 몇초 차이가 아니지만 자동 뽑기 돌려놓으면 차이가 누적되어서 많이 나게 될껍니다.

 

이미지가 정상적으로 만들어지는걸 볼수 있네요.

 

여기서 문제는 --no-half 옵션 없이 구동해서 속도를 높이기 위한 공식버전이 아닌걸 사용하는데 이문제로 이옵션을 붙히면

공식버전을 사용하는거랑 차이도 없거니와, 의미없는 작업이 될껍니다.

 

참 왜 이런 문제가 발생하는지는 75token 을 넘어서 이런 문제가 발생하는걸껍니다.

그럼 어떻게 사용하면 좋을까

일단 속도가 중요하니 옵션에 --no-half 를 뺍니다.

프롬프트가 75토큰을 넘어가지 않을때는 문제없이 동작할껍니다.

--no-half 옵션을 빼고 

./webui.sh 을 실행해서

78토큰에서 횡격막(midriff)를 빼고 다시 실행해봅시다.

75토큰이 안 넘으면 동작하는지 테스트. (74/75)

속도도 다시 원래대로 돌아왔고,

이미지도 정상적으로 나왔습니다.

그럼 이상태에서 75토큰이 넘을때 어떻게 할까.

한가지 방법으로 webui를 죽이고 실행할때,

./webui.sh --no-half 

파라미터를 명시적으로 실행해서 75토큰이 넘을 작업을 시도한다.

우리는 초보니깐 또 이런 디테일한것도 캡쳐해서 올려야겠죠. 될꺼다 이렇게 넘어가면 안되고, ㅎㅎ

속도가 느려지는걸 보실수 있고, 정상적으로 이미지는 만들어 냅니다.

두번째 방법은,

./webui.sh 으로 실행해서 75 토큰이 넘지 않는 작업을 하다가 프롬프트가 길어질껏 같을때,

setting 탭에서

Upcast cross attention layer to float32를 체크 하고 적용하고 새로 불러오고

작업하시면 될껍니다.

 

오늘도 그림놀이 하려다가 까만 이미지 문제가 발생해서 이런것도 삽질의 하나라 포스팅 하고 있네요.

긴글 봐주셔서 감사합니다.

또 다음 시간에 만나요.

=====================================================================================

오늘의 ai 그림.