Proteus-RunDiffusion-DPO (Direct Preference Optimization)

세부 정보

모델 설명

Proteus Rundiffusion x DPO (Direct Preference Optimization) SDXL

실험적인 병합 모델입니다. 아래에 두 모델에 대한 간략한 요약을 소개합니다. 이미지 결과는 마지막에 제공되며, Proteus 및 DPO의 개념에 관심이 없거나 이미 익숙하신 경우 생략하셔도 됩니다.

서문

이 모델은 모델 병합의 과학적 기반을 탐색하기 시작할 무렵 만들어졌습니다. 처음에는 블록 가중치 병합부터 시작하여, 다양한 방법이 생성 결과에 어떤 영향을 미치는지 살펴보았습니다. 저는 이 개념에 아직 새로이 입문한 상태이기 때문에, 그동안의 과정은 구조적이거나 과학적이지 못했습니다. 저는 모델 학습 및 병합 분야의 숙련된 전문가가 아니며, 안정적인 병합을 달성하기 위한 최소한의 지식과 충분한 경험을 바탕으로 논리적인 조정과 판단을 내려왔습니다.

이렇게 말하는 이유는, 제가 공유할 만큼 만족스러운 병합 결과를 찾았지만, 더 나은 변형이 존재할 가능성이 높기 때문입니다.

이 모델들은 openrail++ (DPO)GPL3 (Proteus) 라이센스 하에 제공되며, 원래 모델의 사용 목적 내에서 자유롭게 사용 및 재배포할 수 있습니다. 병합된 버전은 GPL3 라이센스로 공개되었습니다.

이 모델의 두 가지 변형과 원본 기본 모델(Stable Diffusion 등에 사용하기 위해 transformers-base로 변환된 버전)은 HuggingFace 저장소에서 확인하실 수 있습니다.

목적

초기에는 예술적 호기심에서 시작했습니다.

그러나 만들어진 결과는, 원래 프롬프트에 충실하면서도 예술적 자유도 좋은 균형을 갖춘 모델이었습니다.

디퓨전 AI 모델을 사용할 때 정확성과 창의성의 균형은 우리가 이미 익숙해진 개념입니다. 어느 쪽을 더 강조할지, 정확성을 조금 희생해 시각적 인상력을 높이거나, 그 반대의 경우도 마찬가지입니다. 이 모델은 그 균형의 범위를 좁히려 합니다—Proteus를 사용해 창의적 가능성을 넓히고자 합니다.

모델들

mhdang/dpo-sdxl-text2image-v1 | mhdang/dpo-sd1.5-text2image-v1 (모델 이름 클릭 시 원본 저장소로 이동)

참고: DPO의 영향은 SDXL 모델에서 훨씬 더 두드러집니다. 이 프로젝트는 SDXL 버전에 집중했으며, 더 강력한 1.5 모델 중 일부와 DPO를 병합하는 것도 탐색할 여지가 있을 것입니다.

각각 stable-diffusion-xl-base-1.0stable-diffusion-v1-5를 기반으로, 오프라인 인간 선호 데이터 pickapic_v2를 사용하여 미세 조정되었습니다.

DPO가 흥미로운 이유는 무엇인가요?

DPO(Direct Preference Optimization)는 널리 사용되는 RLHF(인간 피드백을 통한 강화학습) 대신, 인간 비교 데이터를 직접 최적화하여 모델을 미세 조정하는 방식을 제안합니다.

이 방법은 시각적 매력을 크게 향상시키고 프롬프트 일치도를 개선한다고 주장하며, 주관성은 고려하더라도 일반적으로 이 주장에 동의하는 의견이 많습니다.

DPO에 대한 연구 논문

dataautogpt3/Proteus-RunDiffusion

기존 프레임워크 내에서 이미지 생성을 개선하는 방법을 탐색하던 RunDiffusion 팀은 CLIP의 재학습 방식에서 새로운 접근법을 발견했습니다. 이 방법은 모델의 캐릭터 인식, 자연어 처리 능력, 그리고 특히 예술적 표현의 다양성을 확장했다고 주장합니다.

Proteus가 흥미로운 이유는 무엇인가요?

모델 카드에서 발췌:

Proteus-RunDiffusion을 사용하기 시작하면, 이전에 사용해 본 다른 AI 예술 모델들과는 다르게 동작할 준비를 하세요. 이 모델은 독특한 방식으로 설계되었으며, 따라서 프롬프트 및 명령에 자신만의 스타일로 반응합니다. 이 차이점이 바로 이 모델을 특별하게 만드는 요소이지만, 동시에 학습 곡선이 존재한다는 의미이기도 합니다. 어떻게 작동하는지, 무엇을 할 수 있는지 익히기 위해 시간이 필요합니다. 따라서 시작할 때는 개방적인 마인드를 유지하고, 접근 방식을 조정할 준비를 하세요.

이 문장은 제가 이 두 모델을 병합하면 혼란스러운 결과가 나올 수도 있지만, 적어도 흥미로운 결과를 얻을 수 있을 것이라는 통찰을 주었습니다. 우리에게 익숙한 미세한 차이들에서 벗어난 새로운 변이를 기대할 수 있었죠.

병합

두 모델은 단지 며칠 차이로 발견되었습니다. 각각 제가 관심을 끌었고, 병합 방법을 탐색하던 중 자연스럽게 이 두 아이디어를 병합하면 어떤 결과가 나올지 궁금해졌습니다. 그 결과는 매우 만족스러웠습니다(결과 비교는 글 말미에 있습니다).

불행히도 전체 과정을 기록하지 않았고, 모델을 공유하기로 결정했을 때 마지막 후보들에 대한 정보만 보유하고 있었습니다.

도전 과제:

제가 원하는 결과에 가까운 병합을 찾는 것이 가장 큰 어려움이었습니다. 대부분의 병합 시도는 전혀 다른, 또는 부정확한 이미지를 생성하거나, 기본 모델과 거의 차이가 없었습니다.

두 모델의 초점이 이토록 극단적으로 달라서 거의 반대라고 할 수 있었지만, 오히려 제게 유리하게 작용했습니다. 진정한 도전은 양측 모두에서 적절한 기준을 만족시키는 alpha-base 및 블록 가중치 전략을 찾는 것이었습니다.

제 접근 방식:

Proteus를 기본 모델로 사용하기로 결정하고, 그 CLIP 및 VAE를 유지했습니다. 원본 Proteus UNET 모델(그 CLIP 모델, 토크나이저 및 VAE 포함)을 transformers 기반 모델로 변환하고, DPO 모델도 동일한 방식으로 변환했습니다. 그런 다음 16가지 블록 가중치 병합 전략(이 절 말미에 목록)을 무차별적으로 테스트하며 프롬프트를 실행하고 원본 모델의 출력과 비교했습니다. 각각에 대해 base_alpha 0.4, 0.5, 0.6로 병합을 시도한 결과, 0.4를 제일 선호하는 기본 가중치로 선택했습니다.

예술의 주관성에 유의하며, 각 생성 결과를 가능한 한 객관적으로 평가하기 위해 다음 기준만을 고려했습니다:

  • 프롬프트 정확성

    • 원래 프롬프트가 얼마나 잘 준수되었는가?

    • 어느 정도 예술적 자유가 허용되었는가?

    • 이러한 자유가 프롬프트에서 얼마나 벗어났는가?

  • 기본 모델(Proteus) 출력과의 유사성

    • Proteus를 기본으로 선택한 이유는, 넓은 창의적 범위에 구조를 부여하려는 것이었습니다.

    • 따라서 최종 출력에서 예술성과 정확성 사이의 균형이 매우 중요했습니다.

대부분의 병합 결과는 기본 이미지에서 너무 멀리 벗어나 제 목표에 부합하지 않았거나, 원본과 너무 달라 제 기준에 맞지 않았습니다. 제 기준을 가능한 한 객관적으로 유지하려 했지만, 주관적 판단은 피할 수 없으며, 특히 기본 이미지에서 허용되는 범위가 그 대표적인 예입니다.

두 가지 모델이 유사한 결과를 내놓았지만, 창의성-정확성 척도에서 약간의 눈에 띄는 차이가 있었습니다. ‘ReverseSmoothstep’과 ‘TrueReverseCubicHermite’ 병합 변형입니다. 둘 다 제 목표를 달성했고, 하나는 예술적 감각을 더 강조했고, 다른 하나는 뛰어난 정확성을 보였습니다. 마치 동전의 양면처럼요. 차이가 매우 작아, 최종 판단은 이미지마다 사용자의 선호도에 따라 달라질 수 있습니다.

그래서 두 가지 모두 공유하기로 결정했습니다.

사용된 병합 전략: GradV, GradA, Flat_25, Wrap2, Mid2_50, Out07, Ring08Soft, Ring08_5, Smoothstep, ReverseSmoothstep, Cosine, ReverseCosine, TrueCubicHermite, TrueReverseCubicHermite, FakeCubicHermite, FakeReverseCubicHermite

테스트 파라미터 및 결과 해석

이전에 언급했듯이, 모델을 공유하기 전까지는 거의 무작정 진행했습니다. 아래는 각 변형 간 비교 이미지입니다. 두 모델 모두 기본 모델에서 건강한 벗어남을 보이면서도 프롬프트의 제약 안에 머물고 있습니다.

ReverseSmoothStep 변형은 요청한 내용에 충분히 가깝게 유지하면서 약간 더 예술적인 분위기를 더해줍니다. 이는 예술적 다양성과 가능한 결과의 폭을 넓히면서도 프롬프트의 대부분 요구 사항을 충족시킵니다.

TrueReverseCubicHermite 변형은 ReverseSmoothStep 모델과 매우 유사하지만, 프롬프트에 더 잘 근거한 세부 사항을 추가해줍니다.

제 변형에 대한 평가:

경험이 풍부한 프롬프트 엔지니어이거나, 이미지에 정확히 무엇을 원하는지 알고 있다면, Proteus-RunDiffusion-DPO_TrueReverseCubicHermite를 시도해보세요. 병합 과정과 그 이후의 테스트를 통해, 저는 흥미롭고 때로는 경이로운 독특한 해석을 많이 경험했습니다.

프롬프트 해석에 대해 좀 더 유연한 접근을 원하거나, AI가 디테일과 스타일 선택에 더 많은 책임을 지길 원한다면, Proteus-RunDiffusion-DPO_ReverseSmoothstep도 같은 기준을 충족합니다. 이 모델은 꽤 안정적이고 일관되지만, 순수하게 예술적인 결정을 더 많이 내리기 때문에 작은 오류나 불일치가 발생할 위험이 더 큽니다. 하지만 동시에, 이 선택은 제 개인적인 프롬프트 기대에 더 잘 부합하는 결과를 자주 도출했습니다.

테스트의 기준을 정하기 전에 여러 샘플러/스케줄러/CFG/Step 조합을 테스트했습니다. 이 역시 주관적인 선택이었고, 다른 파라미터 설정이 훨씬 더 나은 결과를 낼 수 있었을 것입니다. 그러나 제 목표 테스트에는 충분했습니다:

테스트는 ComfyUI에서 모델의 CLIP 및 VAE를 사용하여, Lora 없이, 사전/사후 처리 없이 진행되었습니다. DataPulse는 CLIP 스킵을 -2로 권장하나, 저는 병합 변형 테스트 중 CLIP 스킵 레이어를 수정하지 않았습니다. 유일한 조정은 이미지의 최종 품질과 선명도를 높이기 위해 CLIP 스케일을 4로 설정한 것이었습니다. 워크플로우는 가능한 한 단순하게 유지하여 단일 KSampler 노드에서 기본 샘플링만 수행했습니다. 모든 오류나 작은 결함은 일관성을 위해 그대로 유지했습니다.

워크플로우는 Huggingface 저장소에서 확인할 수 있습니다. 비교 이미지 모두 원본, 수정되지 않은 출력이며 워크플로우가 내장되어 있습니다. 모두 동일하고, 유일한 변수는 사용된 모델과 각 테스트의 프롬프트 텍스트입니다. 워크플로우를 로드하려면, Use Everywhere (UE Nodes)를 사용해 흐름을 깔끔하게 정리했습니다(CLIP 가중치 및 시드 분포), 그리고 OneButtonPrompt's 사전 설정 노드를 사용해 무작위 기본 프롬프트를 생성했습니다. 따라서 이 두 확장 기능을 설치하거나, 이를 우회하기 위한 필요한 수정을 해야 합니다.

범용 샘플링 파라미터:

해상도: 1344x768

스텝: 45

CFG: 4

샘플러: dpmpp_3m_sde_gpu

스케줄러: exponential

디노이즈: 1

CLIP 스케일링: 4

네거티브 프롬프트: text, watermark, logo, blurry, out of focus

이 파라미터는 제 개인적인 선호에 따라 가장 좋은 결과를 제공했으며, 비교를 위한 기준이 되었습니다. 이 설정은 무작위 변이를 줄이기 위해 다소 보수적인 쪽에 치우쳐 있습니다. 따라서 이 모델을 직접 사용해보고 싶다면, 이 파라미터의 경계를 넘어서 실험해보기를 권장합니다.CFG를 1.5로 설정하고 Dynamic Thresholding 확장 프로그램(Stable Diffusion 및 ComfyUI 모두에서 사용 가능)을 활용하면 CFG 효과를 상당히 높일 수 있으며, 저는 이 방식으로 좋은 결과를 얻었습니다.

이 확장 프로그램에 익숙하지 않다면, 단독으로도 놀라운 결과를 낼 수 있습니다. 아래는 비교적 안정적인 결과를 얻기 위한 안전한 설정입니다:

* CFG를 매우 낮은 값으로 설정하세요. 일반적으로 1.5를 사용하며, 1은 특히 높은 CFG 레벨에서 쉽게 혼란스러운 결과를 초래합니다.
* "mimic scale"을 30, "threshold percentile"을 0.9로 설정하세요. (CFG를 18-26 범위로 낮추면 0.95가 잘 작동합니다)
* 두 mimic 모드 모두 "Half Cosine Up"으로 설정하고, 두 scale minimum 값을 모두 4로, scheduler 값을 4로 설정하세요.

나머지 입력 및 처리 단계는 일반적인 방식대로 사용하셔도 됩니다. 일부 Lora는 이러한 극단적 설정을 처리하지 못해 혼란스러운 결과나 순수한 검정/파랑/회색 출력을 내는 경우가 있습니다. 이런 문제가 발생하면, mimic 레벨을 낮추기 전에 Lora를 먼저 제거해보세요.

이전 발언과 연결되어, 첫 번째 및 네 번째 비교 사례에 대해 간략히(주관적으로) 말씀드리겠습니다. 나머지 사례는 개별 해석에 맡깁니다(그렇게 하는 것이 마땅합니다).

1. 로봇 닭: 이 경우 'TrueReverseCubicHermite' 변형을 선호합니다. 두 모델 모두 기본 모델이 선택한 반쯤 실제 닭의 형태에서 벗어났지만, 'TrueReverseCubicHermite'는 닭이라는 점을 암시하는 머리의 미세한 디테일을 추가했습니다. 두 결과 모두 저에게는 닭의 비율이 너무 적고 배경도 단순합니다. 이 경우 기본 모델이 두 변형보다 더 낫다고 생각합니다. 테스트 외부에서는 더 균형 잡힌 결과를 찾기 위해 파라미터를 조정할 수 있었겠지만, 이 사례는 두 변형 간의 미묘한 차이를 충분히 보여줍니다.

4. 일본 벚꽃은 'TrueReverseCubicHermite'보다 'ReverseSmoothStep' 변형을 선호한 결과입니다. 일본풍 건축 양식의 집을 추가한 것은 저에게 매우 환영받는 변화였습니다. 이는 이야기에 더 깊이를 더하고, 'TrueReverseCubicHermite' 변형이 프롬프트에 더 정확하게 부합했음에도 불구하고 생명력이 부족해 보일 수 있었던 프롬프트에 활력을 불어넣었습니다. 이는 프롬프트의 경계를 벗어나지 않으면서도 약간의 예술적 자유를 더하는 것이 이미지에 얼마나 도움이 되는지 좋은 예시입니다.

1. 로봇 닭 - 시드 40212733440049

프롬프트:

sci-fi, Iris van Herpen의 예술, 디지털 아트, 삼분법, 로봇(Chicken:1.1), 닭은 애플 컴퓨터가 설계한 철과 벨벳 자카드 사이버네틱스를 착용, 하이퍼디테일, 아방가르드, 미래적, 3D 프린팅, 과학소설, 패셔너블

잘라낸 비교:

전체 이미지:

ProteusBase

ReverseSmoothStep

TrueReverseCubicHermite

2. 사이버펑크 사이보그 여성 - 시드 754467864831453

프롬프트:

cyberpunk, 컨셉 아트, 사이보그 여성 트롤, 배경은 나이트 시티, 네온 조명, 보그 포즈, 머리는 은색, 미래적, 여성스러움, D&D, 네온 색조, shadowrun

이미지:

ProteusBase

02-Cyberpunk_CyborgFemale-ProteusBase.pngReverseSmoothStep

02-Cyberpunk_CyborgFemale-RevSmoothStep.pngTrueReverseCubicHermite

02-Cyberpunk_CyborgFemale-TrueReverseCubicHermite.png

3. 패션 사진 - 시드 321237786

프롬프트:

슈퍼모델의 패션 사진, 웃고 있음, 패션 옷을 입고 있음, 옷은 스마트하고, 애너티온 문양이 있음, 문신, Fomapan 400, 심도 270mm, 사진처럼 사실적인 표현

이미지:

ProteusBase

03-FashionPhoto-ProteusBase.pngReverseSmoothStep

03-FashionPhoto-RevSmoothStep.pngTrueReverseCubicHermite

03-FashionPhoto-TrueReverseCubicHermite.png

4. 일본 벚꽃 - 시드 123 (오류가 아님)

프롬프트:

(nature art by Yuko Tatsushima:1.0) , wabi-sabi (Cherry blossom tree:1.1) , trees, deep focus, Japanese watercolor painting, traditional motives

이미지:

ProteusBase

04-JapaneseCherryBlossom-ProteusBase.pngReverseSmoothStep

04-JapaneseCherryBlossom-RevSmoothStep.pngTrueReverseCubicHermite

04-JapaneseCherryBlossom-TrueReverseCubicHermite.png

마무리 말

이 과정의 수학적·과학적 배경에 대한 제 지식의 부족과 성급함으로 인해, 저는 분명히 일부 일을 최적화되지 않거나 잘못 수행했을 것입니다.

하지만 제가 찾은 병합 결과에 만족하며, 지금까지 얻은 결과들에 대해 기쁨을 느꼈습니다.

결국, 기본 모델과 그에 이어지는 병합 모델 모두, 이미 잘 확립된 틀의 경계를 탐색하고, 가능한 범위를 넓히는 데 목적이 있습니다.

만약 이 내용이 당신이 탐구하고 싶은 것이라면, 이 모델들(및 개별 기본 모델)이 당신에게 유용하길 바랍니다.

이 포스트를 끝까지 읽어주셨다면, 축하드립니다! 저는 아마도 못 했을 겁니다. 이런 것들을 일반인인 저에게 가능하게 해준 오픈소스 커뮤니티의 모든 분들께 진심으로 감사드립니다.

감사 인사:

  • Alexander IzquierdoRunDiffusion 팀: Proteus 개발을 위한 시간, 노동, 투자에 감사드립니다.

  • Meihua Dang 및 그와 함께 일한 분들: DPO를 Stable Diffusion 모델에 언패킹하여 이와 같은 병합을 쉽게 만들어주신 노고에 감사드립니다.

  • 개발, 학습, 교육에 많은 시간과 노력을 들이는 오픈소스 커뮤니티의 모든 분들께 감사드립니다.

만약 당신이 돈을 쓸 곳을 찾고 있으며, 이 프로젝트 중 하나가 도움이 되었다면, 그 분들께 감사의 마음을 전해 주십시오.

저는 커피를 마시지 않기 때문에, 이 모델들 또는 이 포스트가 당신에게 즐거움을 주었다면, 당신의 창작물을 공유해 주는 것으로 충분한 감사의 마음이 됩니다.

평화를 빕니다.

이 모델로 만든 이미지

이미지를 찾을 수 없습니다.