1.3.0으로 얼마전에 업그레이드했는데, 시드가 같은데도 자꾸 조금씩 다른 이미지가 출력이 되는겁니다.
새 버전에서 변경사항 및 로그등을 살펴보니 sdp-no-mem 옵션이 기본으로 켜져있길래, 이미지 재현성 있는 옵션인
--opt-sdp-no-mem-attention 옵션으로 추가하였습니다.
그런데도 여전히 미세하게 다르길래, webui 구 버전에서 돌려보니, 재현성 문제가 없네요 (1.1.x)
혹시 1.2.x / 1.3.x 버전에서 재현성 문제가 있으신 분은 구 버전에서 실행시켜 보시기 바랍니다.
재현방법
- 똑같은 조건에서 두번 랜더링을 해봅니다. 문제가 없다면 거의 같은 이미지가 출력. 문제가 있는 경우 조금씩 다른 이미지가 출력
※덧: 제가 가진 GPU가 구려서 자동 최적화가 적용되면서 문제가 생긴 것일 수 있습니다.
혹 최신 GPU에서도 같은 문제가 있으신 분이 있다면 쓰고 계신 버전과 함께 알려주시면 감사하겠습니다~
해결방법
문제를 추적해보니 다음과 같이 하면 문제가 사라집니다.
webui 탭 Setting 선택 -> 최적화(Optimization)에서 Token merging ratio값이 0.5로 되어있는데, 이 값을 0으로 하면 문제가 사라집니다.
- Token merging ratio 세팅 확인 법: 1.3.0/1.2.0으로 업데이트 한 후 언젠가부터, 프롬프트에 "Token merging ratio: 0.5" 라는 값이 붙어있습니다. 이 값이 있는지 생성된 이미지의 프롬프트를 확인해보시기 바랍니다.
예) Steps: 24, Sampler: DPM++ 2M Karras, CFG scale: 8.5, Seed: 1735638124, Size: 512x768, Model hash: fc2511737a, Model: chilloutmix_NiPrunedFp32Fix, Clip skip: 2, Token merging ratio: 0.5, ...
--xformers 나 --opt-sdp-attention 그리고 언급하신 --opt-sdp-no-mem-attention 같은것들 때문입니다
그리고 이번에 업데이트 되면서 생긴 token merging(https://github.com/dbolya/tomesd) 도 최적화와 관련된 기능입니다.
값이 클수록 적은 메모리와 빠른 생성 속도를 가지는 반면에 품질이 떨어지는 ... 양날의 검 같은 녀석이죠
그래서 같은 시드로 동일한 이미지를 얻으려면 최적화 옵션을 다 끄는게 좋습니다