Buckets:

download
raw
42.1 kB
import"../chunks/DsnmJJEf.js";import{i as P,h as K,C as $,H as s,a,b as ll,E as al,s as sl}from"../chunks/CxueWNWA.js";import{p as el,o as tl,s as l,f as p,a as t,b as ol,c as o,n as Y}from"../chunks/CrV5djYC.js";import{D as il}from"../chunks/CSLWm2JH.js";import{H as q}from"../chunks/CozusF9x.js";const nl='{"title":"어댑터 불러오기","local":"어댑터-불러오기","sections":[{"title":"DreamBooth","local":"dreambooth","sections":[],"depth":2},{"title":"Textual inversion","local":"textual-inversion","sections":[],"depth":2},{"title":"LoRA","local":"lora","sections":[{"title":"LoRA 가중치 스케일 조정하기","local":"lora-가중치-스케일-조정하기","sections":[],"depth":3},{"title":"Kohya와 TheLastBen","local":"kohya와-thelastben","sections":[],"depth":3}],"depth":2},{"title":"IP-Adapter","local":"ip-adapter","sections":[{"title":"IP-Adapter Plus","local":"ip-adapter-plus","sections":[],"depth":3},{"title":"IP-Adapter Face ID 모델","local":"ip-adapter-face-id-모델","sections":[],"depth":3}],"depth":2}],"depth":1}';var pl=o('<meta name="hf:doc:metadata"/>'),cl=o('<p>Kohya LoRA를 불러오기 위해, 예시로 <a href="https://civitai.com/" rel="nofollow">Civitai</a>에서 <a href="https://civitai.com/models/150986/blueprintify-sd-xl-10" rel="nofollow">Blueprintify SD XL 1.0</a> 체크포인트를 다운로드합니다:</p> <!> <p>LoRA 체크포인트를 <code>load_lora_weights()</code> 메서드로 불러오고 <code>weight_name</code> 파라미터에 파일명을 지정합니다:</p> <!> <p>이미지를 생성합니다:</p> <!> <blockquote class="warning"><p>Kohya LoRA를 🤗 Diffusers와 함께 사용할 때 몇 가지 제한 사항이 있습니다:</p> <ul><li><a href="https://github.com/huggingface/diffusers/pull/4287/#issuecomment-1655110736" rel="nofollow">여기</a>에 설명된 여러 가지 이유로 인해 이미지가 ComfyUI와 같은 UI에서 생성된 이미지와 다르게 보일 수 있습니다.</li> <li><a href="https://github.com/KohakuBlueleaf/LyCORIS" rel="nofollow">LyCORIS 체크포인트</a>가 완전히 지원되지 않습니다. <code>load_lora_weights()</code> 메서드는 LoRA 및 LoCon 모듈로 LyCORIS 체크포인트를 불러올 수 있지만, Hada 및 LoKR은 지원되지 않습니다.</li></ul></blockquote>',1),rl=o('<p>TheLastBen에서 체크포인트를 불러오는 방법은 매우 유사합니다. 예를 들어, <a href="https://huggingface.co/TheLastBen/William_Eggleston_Style_SDXL" rel="nofollow">TheLastBen/William_Eggleston_Style_SDXL</a> 체크포인트를 불러오려면:</p> <!>',1),yl=o("<!> <!>",1),Ml=o(`<p></p> <!> <!> <!> <p>특정 물체의 이미지 또는 특정 스타일의 이미지를 생성하도록 diffusion 모델을 개인화하기 위한 몇 가지 <a href="../training/overview">학습</a> 기법이 있습니다. 이러한 학습 방법은 각각 다른 유형의 어댑터를 생성합니다. 일부 어댑터는 완전히 새로운 모델을 생성하는 반면, 다른 어댑터는 임베딩 또는 가중치의 작은 부분만 수정합니다. 이는 각 어댑터의 로딩 프로세스도 다르다는 것을 의미합니다.</p> <p>이 가이드에서는 DreamBooth, textual inversion 및 LoRA 가중치를 불러오는 방법을 설명합니다.</p> <blockquote class="tip"><p>사용할 체크포인트와 임베딩은 <a href="https://huggingface.co/spaces/sd-concepts-library/stable-diffusion-conceptualizer" rel="nofollow">Stable Diffusion Conceptualizer</a>, <a href="https://huggingface.co/spaces/multimodalart/LoraTheExplorer" rel="nofollow">LoRA the Explorer</a>, <a href="https://huggingface.co/spaces/huggingface-projects/diffusers-gallery" rel="nofollow">Diffusers Models Gallery</a>에서 찾아보시기 바랍니다.</p></blockquote> <!> <p><a href="https://dreambooth.github.io/" rel="nofollow">DreamBooth</a>는 물체의 여러 이미지에 대한 <em>diffusion 모델 전체</em>를 미세 조정하여 새로운 스타일과 설정으로 해당 물체의 이미지를 생성합니다. 이 방법은 모델이 물체 이미지와 연관시키는 방법을 학습하는 프롬프트에 특수 단어를 사용하는 방식으로 작동합니다. 모든 학습 방법 중에서 드림부스는 전체 체크포인트 모델이기 때문에 파일 크기가 가장 큽니다(보통 몇 GB).</p> <p>Hergé가 그린 단 10개의 이미지로 학습된 <a href="https://huggingface.co/sd-dreambooth-library/herge-style" rel="nofollow">herge_style</a> 체크포인트를 불러와 해당 스타일의 이미지를 생성해 보겠습니다. 이 모델이 작동하려면 체크포인트를 트리거하는 프롬프트에 특수 단어 <code>herge_style</code>을 포함시켜야 합니다:</p> <!> <div class="flex justify-center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/load_dreambooth.png"/></div> <!> <p><a href="https://textual-inversion.github.io/" rel="nofollow">Textual inversion</a>은 DreamBooth와 매우 유사하며 몇 개의 이미지만으로 특정 개념(스타일, 개체)을 생성하는 diffusion 모델을 개인화할 수도 있습니다. 이 방법은 프롬프트에 특정 단어를 입력하면 해당 이미지를 나타내는 새로운 임베딩을 학습하고 찾아내는 방식으로 작동합니다. 결과적으로 diffusion 모델 가중치는 동일하게 유지되고 훈련 프로세스는 비교적 작은(수 KB) 파일을 생성합니다.</p> <p>Textual inversion은 임베딩을 생성하기 때문에 DreamBooth처럼 단독으로 사용할 수 없으며 또 다른 모델이 필요합니다.</p> <!> <p>이제 <code>load_textual_inversion()</code> 메서드를 사용하여 textual inversion 임베딩을 불러와 이미지를 생성할 수 있습니다. <a href="https://huggingface.co/sd-concepts-library/gta5-artwork" rel="nofollow">sd-concepts-library/gta5-artwork</a> 임베딩을 불러와 보겠습니다. 이를 트리거하려면 프롬프트에 특수 단어 <code>&lt;gta5-artwork&gt;</code>를 포함시켜야 합니다:</p> <!> <div class="flex justify-center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/load_txt_embed.png"/></div> <p>Textual inversion은 또한 바람직하지 않은 사물에 대해 <em>네거티브 임베딩</em>을 생성하여 모델이 흐릿한 이미지나 손의 추가 손가락과 같은 바람직하지 않은 사물이 포함된 이미지를 생성하지 못하도록 학습할 수도 있습니다. 이는 프롬프트를 빠르게 개선하는 것이 쉬운 방법이 될 수 있습니다. 이는 이전과 같이 임베딩을 <code>load_textual_inversion()</code>으로 불러오지만 이번에는 두 개의 매개변수가 더 필요합니다:</p> <ul><li><code>weight_name</code>: 파일이 특정 이름의 🤗 Diffusers 형식으로 저장된 경우이거나 파일이 A1111 형식으로 저장된 경우, 불러올 가중치 파일을 지정합니다.</li> <li><code>token</code>: 임베딩을 트리거하기 위해 프롬프트에서 사용할 특수 단어를 지정합니다.</li></ul> <p><a href="https://huggingface.co/sayakpaul/EasyNegative-test" rel="nofollow">sayakpaul/EasyNegative-test</a> 임베딩을 불러와 보겠습니다:</p> <!> <p>이제 <code>token</code>을 사용해 네거티브 임베딩이 있는 이미지를 생성할 수 있습니다:</p> <!> <div class="flex justify-center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/load_neg_embed.png"/></div> <!> <p><a href="https://huggingface.co/papers/2106.09685" rel="nofollow">Low-Rank Adaptation (LoRA)</a>은 속도가 빠르고 파일 크기가 (수백 MB로) 작기 때문에 널리 사용되는 학습 기법입니다. 이 가이드의 다른 방법과 마찬가지로, LoRA는 몇 장의 이미지만으로 새로운 스타일을 학습하도록 모델을 학습시킬 수 있습니다. 이는 diffusion 모델에 새로운 가중치를 삽입한 다음 전체 모델 대신 새로운 가중치만 학습시키는 방식으로 작동합니다. 따라서 LoRA를 더 빠르게 학습시키고 더 쉽게 저장할 수 있습니다.</p> <blockquote class="tip"><p>LoRA는 다른 학습 방법과 함께 사용할 수 있는 매우 일반적인 학습 기법입니다. 예를 들어, DreamBooth와 LoRA로 모델을 학습하는 것이 일반적입니다. 또한 새롭고 고유한 이미지를 생성하기 위해 여러 개의 LoRA를 불러오고 병합하는 것이 점점 더 일반화되고 있습니다. 병합은 이 불러오기 가이드의 범위를 벗어나므로 자세한 내용은 심층적인 <a href="merge_loras">LoRA 병합</a> 가이드에서 확인할 수 있습니다.</p></blockquote> <p>LoRA는 다른 모델과 함께 사용해야 합니다:</p> <!> <p>그리고 <code>load_lora_weights()</code> 메서드를 사용하여 <a href="https://huggingface.co/ostris/super-cereal-sdxl-lora" rel="nofollow">ostris/super-cereal-sdxl-lora</a> 가중치를 불러오고 리포지토리에서 가중치 파일명을 지정합니다:</p> <!> <div class="flex justify-center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/load_lora.png"/></div> <p><code>load_lora_weights()</code> 메서드는 LoRA 가중치를 UNet과 텍스트 인코더에 모두 불러옵니다. 이 메서드는 해당 케이스에서 LoRA를 불러오는 데 선호되는 방식입니다:</p> <ul><li>LoRA 가중치에 UNet 및 텍스트 인코더에 대한 별도의 식별자가 없는 경우</li> <li>LoRA 가중치에 UNet과 텍스트 인코더에 대한 별도의 식별자가 있는 경우</li></ul> <p>하지만 LoRA 가중치만 UNet에 로드해야 하는 경우에는 <code>load_attn_procs()</code> 메서드를 사용할 수 있습니다. <a href="https://huggingface.co/jbilcke-hf/sdxl-cinematic-1" rel="nofollow">jbilcke-hf/sdxl-cinematic-1</a> LoRA를 불러와 보겠습니다:</p> <!> <div class="flex justify-center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/load_attn_proc.png"/></div> <p>LoRA 가중치를 언로드하려면 <code>unload_lora_weights()</code> 메서드를 사용하여 LoRA 가중치를 삭제하고 모델을 원래 가중치로 복원합니다:</p> <!> <!> <p><code>load_lora_weights()</code> 및 <code>load_attn_procs()</code> 모두 <code>cross_attention_kwargs=&#123;"scale": 0.5&#125;</code> 파라미터를 전달하여 얼마나 LoRA 가중치를 사용할지 조정할 수 있습니다. 값이 <code>0</code>이면 기본 모델 가중치만 사용하는 것과 같고, 값이 <code>1</code>이면 완전히 미세 조정된 LoRA를 사용하는 것과 같습니다.</p> <p>레이어당 사용되는 LoRA 가중치의 양을 보다 세밀하게 제어하려면 <code>set_adapters()</code>를 사용하여 각 레이어의 가중치를 얼마만큼 조정할지 지정하는 딕셔너리를 전달할 수 있습니다.</p> <!> <p>이는 여러 어댑터에서도 작동합니다. 방법은 <a href="https://huggingface.co/docs/diffusers/tutorials/using_peft_for_inference#customize-adapters-strength" rel="nofollow">이 가이드</a>를 참조하세요.</p> <blockquote class="warning"><p>현재 <code>set_adapters()</code>는 어텐션 가중치의 스케일링만 지원합니다. LoRA에 다른 부분(예: resnets or down-/upsamplers)이 있는 경우 1.0의 스케일을 유지합니다.</p></blockquote> <!> <p>커뮤니티에서 인기 있는 다른 LoRA trainer로는 <a href="https://github.com/kohya-ss/sd-scripts/" rel="nofollow">Kohya</a>와 <a href="https://github.com/TheLastBen/fast-stable-diffusion" rel="nofollow">TheLastBen</a>의 trainer가 있습니다. 이 trainer들은 🤗 Diffusers가 훈련한 것과는 다른 LoRA 체크포인트를 생성하지만, 같은 방식으로 불러올 수 있습니다.</p> <!> <!> <p><a href="https://ip-adapter.github.io/" rel="nofollow">IP-Adapter</a>는 모든 diffusion 모델에 이미지 프롬프트를 사용할 수 있는 경량 어댑터입니다. 이 어댑터는 이미지와 텍스트 feature의 cross-attention 레이어를 분리하여 작동합니다. 다른 모든 모델 컴포넌트튼 freeze되고 UNet의 embedded 이미지 features만 학습됩니다. 따라서 IP-Adapter 파일은 일반적으로 최대 100MB에 불과합니다.</p> <p>다양한 작업과 구체적인 사용 사례에 IP-Adapter를 사용하는 방법에 대한 자세한 내용은 <a href="../using-diffusers/ip_adapter">IP-Adapter</a> 가이드에서 확인할 수 있습니다.</p> <blockquote class="tip"><p>Diffusers는 현재 가장 많이 사용되는 일부 파이프라인에 대해서만 IP-Adapter를 지원합니다. 멋진 사용 사례가 있는 지원되지 않는 파이프라인에 IP-Adapter를 통합하고 싶다면 언제든지 기능 요청을 여세요!
공식 IP-Adapter 체크포인트는 <a href="https://huggingface.co/h94/IP-Adapter" rel="nofollow">h94/IP-Adapter</a>에서 확인할 수 있습니다.</p></blockquote> <p>시작하려면 Stable Diffusion 체크포인트를 불러오세요.</p> <!> <p>그런 다음 IP-Adapter 가중치를 불러와 <code>load_ip_adapter()</code> 메서드를 사용하여 파이프라인에 추가합니다.</p> <!> <p>불러온 뒤, 이미지 및 텍스트 프롬프트가 있는 파이프라인을 사용하여 이미지 생성 프로세스를 가이드할 수 있습니다.</p> <!> <div class="flex justify-center">&nbsp; &nbsp; <img src="https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/ip-bear.png"/></div> <!> <p>IP-Adapter는 이미지 인코더를 사용하여 이미지 feature를 생성합니다. IP-Adapter 리포지토리에 <code>image_encoder</code> 하위 폴더가 있는 경우, 이미지 인코더가 자동으로 불러와 파이프라인에 등록됩니다. 그렇지 않은 경우, <code>CLIPVisionModelWithProjection</code> 모델을 사용하여 이미지 인코더를 명시적으로 불러와 파이프라인에 전달해야 합니다.</p> <p>이는 ViT-H 이미지 인코더를 사용하는 <em>IP-Adapter Plus</em> 체크포인트에 해당하는 케이스입니다.</p> <!> <!> <p>IP-Adapter FaceID 모델은 CLIP 이미지 임베딩 대신 <code>insightface</code>에서 생성한 이미지 임베딩을 사용하는 실험적인 IP Adapter입니다. 이러한 모델 중 일부는 LoRA를 사용하여 ID 일관성을 개선하기도 합니다.
이러한 모델을 사용하려면 <code>insightface</code>와 해당 요구 사항을 모두 설치해야 합니다.</p> <blockquote class="warning"><p>InsightFace 사전학습된 모델은 비상업적 연구 목적으로만 사용할 수 있으므로, IP-Adapter-FaceID 모델은 연구 목적으로만 릴리즈되었으며 상업적 용도로는 사용할 수 없습니다.</p></blockquote> <!> <p>두 가지 IP 어댑터 FaceID Plus 모델 중 하나를 사용하려는 경우, 이 모델들은 더 나은 사실감을 얻기 위해 <code>insightface</code>와 CLIP 이미지 임베딩을 모두 사용하므로, CLIP 이미지 인코더도 불러와야 합니다.</p> <!> <!> <p></p>`,1);function ml(x,L){el(L,!1),tl(()=>{new URLSearchParams(window.location.search).get("fw")}),P();var y=Ml();K("auihhd",i=>{var c=pl();sl(c,"content",nl),t(i,c)});var M=l(p(y),2);$(M,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var d=l(M,2);il(d,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/loading_adapters.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/loading_adapters.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/loading_adapters.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/loading_adapters.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/pytorch/loading_adapters.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/ko/tensorflow/loading_adapters.ipynb"}]});var U=l(d,2);s(U,{title:"어댑터 불러오기",local:"어댑터-불러오기",headingTag:"h1"});var h=l(U,8);s(h,{title:"DreamBooth",local:"dreambooth",headingTag:"h2"});var J=l(h,6);a(J,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc2QtZHJlYW1ib290aC1saWJyYXJ5JTJGaGVyZ2Utc3R5bGUlMjIlMkMlMjBkdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIpJTBBcHJvbXB0JTIwJTNEJTIwJTIyQSUyMGN1dGUlMjBoZXJnZV9zdHlsZSUyMGJyb3duJTIwYmVhciUyMGVhdGluZyUyMGElMjBzbGljZSUyMG9mJTIwcGl6emElMkMlMjBzdHVubmluZyUyMGNvbG9yJTIwc2NoZW1lJTJDJTIwbWFzdGVycGllY2UlMkMlMjBpbGx1c3RyYXRpb24lMjIlMEFpbWFnZSUyMCUzRCUyMHBpcGVsaW5lKHByb21wdCkuaW1hZ2VzJTVCMCU1RCUwQWltYWdl",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;sd-dreambooth-library/herge-style&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
prompt = <span class="hljs-string">&quot;A cute herge_style brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration&quot;</span>
image = pipeline(prompt).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1});var u=l(J,4);s(u,{title:"Textual inversion",local:"textual-inversion",headingTag:"h2"});var m=l(u,6);a(m,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTJDJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,lang:"py",wrap:!1});var g=l(m,4);a(g,{code:"cGlwZWxpbmUubG9hZF90ZXh0dWFsX2ludmVyc2lvbiglMjJzZC1jb25jZXB0cy1saWJyYXJ5JTJGZ3RhNS1hcnR3b3JrJTIyKSUwQXByb21wdCUyMCUzRCUyMCUyMkElMjBjdXRlJTIwYnJvd24lMjBiZWFyJTIwZWF0aW5nJTIwYSUyMHNsaWNlJTIwb2YlMjBwaXp6YSUyQyUyMHN0dW5uaW5nJTIwY29sb3IlMjBzY2hlbWUlMkMlMjBtYXN0ZXJwaWVjZSUyQyUyMGlsbHVzdHJhdGlvbiUyQyUyMCUzQ2d0YTUtYXJ0d29yayUzRSUyMHN0eWxlJTIyJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`pipeline.load_textual_inversion(<span class="hljs-string">&quot;sd-concepts-library/gta5-artwork&quot;</span>)
prompt = <span class="hljs-string">&quot;A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration, &lt;gta5-artwork&gt; style&quot;</span>
image = pipeline(prompt).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1});var b=l(g,10);a(b,{code:"cGlwZWxpbmUubG9hZF90ZXh0dWFsX2ludmVyc2lvbiglMEElMjAlMjAlMjAlMjAlMjJzYXlha3BhdWwlMkZFYXN5TmVnYXRpdmUtdGVzdCUyMiUyQyUyMHdlaWdodF9uYW1lJTNEJTIyRWFzeU5lZ2F0aXZlLnNhZmV0ZW5zb3JzJTIyJTJDJTIwdG9rZW4lM0QlMjJFYXN5TmVnYXRpdmUlMjIlMEEp",highlighted:`pipeline.load_textual_inversion(
<span class="hljs-string">&quot;sayakpaul/EasyNegative-test&quot;</span>, weight_name=<span class="hljs-string">&quot;EasyNegative.safetensors&quot;</span>, token=<span class="hljs-string">&quot;EasyNegative&quot;</span>
)`,lang:"py",wrap:!1});var V=l(b,4);a(V,{code:"cHJvbXB0JTIwJTNEJTIwJTIyQSUyMGN1dGUlMjBicm93biUyMGJlYXIlMjBlYXRpbmclMjBhJTIwc2xpY2UlMjBvZiUyMHBpenphJTJDJTIwc3R1bm5pbmclMjBjb2xvciUyMHNjaGVtZSUyQyUyMG1hc3RlcnBpZWNlJTJDJTIwaWxsdXN0cmF0aW9uJTJDJTIwRWFzeU5lZ2F0aXZlJTIyJTBBbmVnYXRpdmVfcHJvbXB0JTIwJTNEJTIwJTIyRWFzeU5lZ2F0aXZlJTIyJTBBJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBuZWdhdGl2ZV9wcm9tcHQlM0RuZWdhdGl2ZV9wcm9tcHQlMkMlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNENTApLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`prompt = <span class="hljs-string">&quot;A cute brown bear eating a slice of pizza, stunning color scheme, masterpiece, illustration, EasyNegative&quot;</span>
negative_prompt = <span class="hljs-string">&quot;EasyNegative&quot;</span>
image = pipeline(prompt, negative_prompt=negative_prompt, num_inference_steps=<span class="hljs-number">50</span>).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1});var T=l(V,4);s(T,{title:"LoRA",local:"lora",headingTag:"h2"});var C=l(T,8);a(C,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmlsaXR5YWklMkZzdGFibGUtZGlmZnVzaW9uLXhsLWJhc2UtMS4wJTIyJTJDJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;stabilityai/stable-diffusion-xl-base-1.0&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,lang:"py",wrap:!1});var j=l(C,4);a(j,{code:"cGlwZWxpbmUubG9hZF9sb3JhX3dlaWdodHMoJTIyb3N0cmlzJTJGc3VwZXItY2VyZWFsLXNkeGwtbG9yYSUyMiUyQyUyMHdlaWdodF9uYW1lJTNEJTIyY2VyZWFsX2JveF9zZHhsX3YxLnNhZmV0ZW5zb3JzJTIyKSUwQXByb21wdCUyMCUzRCUyMCUyMmJlYXJzJTJDJTIwcGl6emElMjBiaXRlcyUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0KS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`pipeline.load_lora_weights(<span class="hljs-string">&quot;ostris/super-cereal-sdxl-lora&quot;</span>, weight_name=<span class="hljs-string">&quot;cereal_box_sdxl_v1.safetensors&quot;</span>)
prompt = <span class="hljs-string">&quot;bears, pizza bites&quot;</span>
image = pipeline(prompt).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1});var Q=l(j,10);a(Q,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmlsaXR5YWklMkZzdGFibGUtZGlmZnVzaW9uLXhsLWJhc2UtMS4wJTIyJTJDJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLnVuZXQubG9hZF9hdHRuX3Byb2NzKCUyMmpiaWxja2UtaGYlMkZzZHhsLWNpbmVtYXRpYy0xJTIyJTJDJTIwd2VpZ2h0X25hbWUlM0QlMjJweXRvcmNoX2xvcmFfd2VpZ2h0cy5zYWZldGVuc29ycyUyMiklMEElMEElMjMlMjAlRUQlOTQlODQlRUIlQTElQUMlRUQlOTQlODQlRUQlOEElQjglRUMlOTclOTAlRUMlODQlOUMlMjBjbm10JUVCJUE1JUJDJTIwJUVDJTgyJUFDJUVDJTlBJUE5JUVEJTk1JTk4JUVDJTk3JUFDJTIwTG9SQSVFQiVBNSVCQyUyMCVFRCU4QSVCOCVFQiVBNiVBQyVFQSVCMSVCMCVFRCU5NSVBOSVFQiU4QiU4OCVFQiU4QiVBNC4lMEFwcm9tcHQlMjAlM0QlMjAlMjJBJTIwY3V0ZSUyMGNubXQlMjBlYXRpbmclMjBhJTIwc2xpY2UlMjBvZiUyMHBpenphJTJDJTIwc3R1bm5pbmclMjBjb2xvciUyMHNjaGVtZSUyQyUyMG1hc3RlcnBpZWNlJTJDJTIwaWxsdXN0cmF0aW9uJTIyJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;stabilityai/stable-diffusion-xl-base-1.0&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.unet.load_attn_procs(<span class="hljs-string">&quot;jbilcke-hf/sdxl-cinematic-1&quot;</span>, weight_name=<span class="hljs-string">&quot;pytorch_lora_weights.safetensors&quot;</span>)
<span class="hljs-comment"># 프롬프트에서 cnmt를 사용하여 LoRA를 트리거합니다.</span>
prompt = <span class="hljs-string">&quot;A cute cnmt eating a slice of pizza, stunning color scheme, masterpiece, illustration&quot;</span>
image = pipeline(prompt).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1});var w=l(Q,6);a(w,{code:"cGlwZWxpbmUudW5sb2FkX2xvcmFfd2VpZ2h0cygp",highlighted:"pipeline.unload_lora_weights()",lang:"py",wrap:!1});var f=l(w,2);s(f,{title:"LoRA 가중치 스케일 조정하기",local:"lora-가중치-스케일-조정하기",headingTag:"h3"});var Z=l(f,6);a(Z,{code:"cGlwZSUyMCUzRCUyMC4uLiUyMCUyMyUyMCVFRCU4QyU4QyVFQyU5RCVCNCVFRCU5NCU4NCVFQiU5RCVCQyVFQyU5RCVCOCUyMCVFQyU4MyU5RCVFQyU4NCVCMSUwQXBpcGUubG9hZF9sb3JhX3dlaWdodHMoLi4uJTJDJTIwYWRhcHRlcl9uYW1lJTNEJTIybXlfYWRhcHRlciUyMiklMEFzY2FsZXMlMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjJ0ZXh0X2VuY29kZXIlMjIlM0ElMjAwLjUlMkMlMEElMjAlMjAlMjAlMjAlMjJ0ZXh0X2VuY29kZXJfMiUyMiUzQSUyMDAuNSUyQyUyMCUyMCUyMyUyMCVFRCU4QyU4QyVFQyU5RCVCNCVFRCU5NCU4NCVFQyU5NyU5MCUyMCVFQiU5MSU5MCUyMCVFQiVCMiU4OCVFQyVBNyVCOCUyMCVFRCU4NSU4RCVFQyU4QSVBNCVFRCU4QSVCOCUyMCVFQyU5RCVCOCVFQyVCRCU5NCVFQiU4RCU5NCVFQSVCMCU4MCUyMCVFQyU5RSU4OCVFQiU4QSU5NCUyMCVFQSVCMiVCRCVFQyU5QSVCMCVFQyU5NyU5MCVFQiVBNyU4QyUyMCVFQyU4MiVBQyVFQyU5QSVBOSUyMCVFQSVCMCU4MCVFQiU4QSVBNSUwQSUyMCUyMCUyMCUyMCUyMnVuZXQlMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJkb3duJTIyJTNBJTIwMC45JTJDJTIwJTIwJTIzJTIwZG93biUyMCVFQiVCNiU4MCVFQiVCNiU4NCVFQyU5RCU5OCUyMCVFQiVBQSVBOCVFQiU5MyVBMCUyMCVFRCU4QSVCOCVFQiU5RSU5QyVFQyU4QSVBNCVFRCU4RiVBQyVFQiVBOCVCOCVFQiU4QSU5NCUyMCVFQyU4QSVBNCVFQyVCQyU4MCVFQyU5RCVCQyUyMDAuOSVFQiVBNSVCQyUyMCVFQyU4MiVBQyVFQyU5QSVBOSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMCUyMm1pZCUyMiUyMCUyMCUyMyUyMCVFQyU5RCVCNCUyMCVFQyU5OCU4OCVFQyVBMCU5QyVFQyU5NyU5MCVFQyU4NCU5QyVFQiU4QSU5NCUyMCUyMm1pZCUyMiVFQSVCMCU4MCUyMCVFQyVBNyU4MCVFQyVBMCU5NSVFQiU5MCU5OCVFQyVBNyU4MCUyMCVFQyU5NSU4QSVFQyU5NSU5OCVFQyU5QyVCQyVFQiVBRiU4MCVFQiVBMSU5QyUyMCVFQyVBNCU5MSVFQSVCMCU4NCUyMCVFQiVCNiU4MCVFQiVCNiU4NCVFQyU5RCU5OCUyMCVFQiVBQSVBOCVFQiU5MyVBMCUyMCVFRCU4QSVCOCVFQiU5RSU5QyVFQyU4QSVBNCVFRCU4RiVBQyVFQiVBOCVCOCVFQiU4QSU5NCUyMCVFQSVCOCVCMCVFQiVCMyVCOCUyMCVFQyU4QSVBNCVFQyVCQyU4MCVFQyU5RCVCQyUyMDEuMCVFQyU5RCU4NCUyMCVFQyU4MiVBQyVFQyU5QSVBOSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnVwJTIyJTNBJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYmxvY2tfMCUyMiUzQSUyMDAuNiUyQyUyMCUyMCUyMyUyMCUyMyUyMHVwJUVDJTlEJTk4JTIwMCVFQiVCMiU4OCVFQyVBNyVCOCUyMCVFQiVCOCU5NCVFQiVBMSU5RCVFQyU5NyU5MCUyMCVFQyU5RSU4OCVFQiU4QSU5NCUyMDMlRUElQjAlOUMlRUMlOUQlOTglMjAlRUQlOEElQjglRUIlOUUlOUMlRUMlOEElQTQlRUQlOEYlQUMlRUIlQTglQjglRUIlOEElOTQlMjAlRUIlQUElQTglRUIlOTElOTAlMjAlRUMlOEElQTQlRUMlQkMlODAlRUMlOUQlQkMlMjAwLjYlRUMlOUQlODQlMjAlRUMlODIlQUMlRUMlOUElQTklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJibG9ja18xJTIyJTNBJTIwJTVCMC40JTJDJTIwMC44JTJDJTIwMS4wJTVEJTJDJTIwJTIwJTIzJTIwdXAlRUMlOUQlOTglMjAlRUMlQjIlQUIlMjAlRUIlQjIlODglRUMlQTclQjglMjAlRUIlQjglOTQlRUIlQTElOUQlRUMlOTclOTAlMjAlRUMlOUUlODglRUIlOEElOTQlMjAzJUVBJUIwJTlDJUVDJTlEJTk4JTIwJUVEJThBJUI4JUVCJTlFJTlDJUVDJThBJUE0JUVEJThGJUFDJUVCJUE4JUI4JUVCJThBJTk0JTIwJUVBJUIwJTgxJUVBJUIwJTgxJTIwJUVDJThBJUE0JUVDJUJDJTgwJUVDJTlEJUJDJTIwMC40JTJDJTIwMC44JTJDJTIwMS4wJUVDJTlEJTg0JTIwJUVDJTgyJUFDJUVDJTlBJUE5JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTdEJTBBJTdEJTBBcGlwZS5zZXRfYWRhcHRlcnMoJTIybXlfYWRhcHRlciUyMiUyQyUyMHNjYWxlcyk=",highlighted:`pipe = ... <span class="hljs-comment"># 파이프라인 생성</span>
pipe.load_lora_weights(..., adapter_name=<span class="hljs-string">&quot;my_adapter&quot;</span>)
scales = {
<span class="hljs-string">&quot;text_encoder&quot;</span>: <span class="hljs-number">0.5</span>,
<span class="hljs-string">&quot;text_encoder_2&quot;</span>: <span class="hljs-number">0.5</span>, <span class="hljs-comment"># 파이프에 두 번째 텍스트 인코더가 있는 경우에만 사용 가능</span>
<span class="hljs-string">&quot;unet&quot;</span>: {
<span class="hljs-string">&quot;down&quot;</span>: <span class="hljs-number">0.9</span>, <span class="hljs-comment"># down 부분의 모든 트랜스포머는 스케일 0.9를 사용</span>
<span class="hljs-comment"># &quot;mid&quot; # 이 예제에서는 &quot;mid&quot;가 지정되지 않았으므로 중간 부분의 모든 트랜스포머는 기본 스케일 1.0을 사용</span>
<span class="hljs-string">&quot;up&quot;</span>: {
<span class="hljs-string">&quot;block_0&quot;</span>: <span class="hljs-number">0.6</span>, <span class="hljs-comment"># # up의 0번째 블록에 있는 3개의 트랜스포머는 모두 스케일 0.6을 사용</span>
<span class="hljs-string">&quot;block_1&quot;</span>: [<span class="hljs-number">0.4</span>, <span class="hljs-number">0.8</span>, <span class="hljs-number">1.0</span>], <span class="hljs-comment"># up의 첫 번째 블록에 있는 3개의 트랜스포머는 각각 스케일 0.4, 0.8, 1.0을 사용</span>
}
}
}
pipe.set_adapters(<span class="hljs-string">&quot;my_adapter&quot;</span>, scales)`,lang:"python",wrap:!1});var I=l(Z,6);s(I,{title:"Kohya와 TheLastBen",local:"kohya와-thelastben",headingTag:"h3"});var B=l(I,4);ll(B,{id:"other-trainers",options:["Kohya","TheLastBen"],children:(i,c)=>{var A=yl(),k=p(A);q(k,{id:"other-trainers",option:"Kohya",children:(r,H)=>{var e=cl(),n=l(p(e),2);a(n,{code:"IXdnZXQlMjBodHRwcyUzQSUyRiUyRmNpdml0YWkuY29tJTJGYXBpJTJGZG93bmxvYWQlMkZtb2RlbHMlMkYxNjg3NzYlMjAtTyUyMGJsdWVwcmludGlmeS1zZC14bC0xMC5zYWZldGVuc29ycw==",highlighted:"!wget https://civitai.com/api/download/models/168776 -O blueprintify-sd-xl-10.safetensors",lang:"sh",wrap:!1});var E=l(n,4);a(E,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmlsaXR5YWklMkZzdGFibGUtZGlmZnVzaW9uLXhsLWJhc2UtMS4wJTIyJTJDJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLmxvYWRfbG9yYV93ZWlnaHRzKCUyMnBhdGglMkZ0byUyRndlaWdodHMlMjIlMkMlMjB3ZWlnaHRfbmFtZSUzRCUyMmJsdWVwcmludGlmeS1zZC14bC0xMC5zYWZldGVuc29ycyUyMik=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;stabilityai/stable-diffusion-xl-base-1.0&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.load_lora_weights(<span class="hljs-string">&quot;path/to/weights&quot;</span>, weight_name=<span class="hljs-string">&quot;blueprintify-sd-xl-10.safetensors&quot;</span>)`,lang:"py",wrap:!1});var O=l(E,4);a(O,{code:"JTIzJTIwTG9SQSVFQiVBNSVCQyUyMCVFRCU4QSVCOCVFQiVBNiVBQyVFQSVCMSVCMCVFRCU5NSU5OCVFQSVCOCVCMCUyMCVFQyU5QyU4NCVFRCU5NSVCNCUyMGJsM3VwcmludCVFQiVBNSVCQyUyMCVFRCU5NCU4NCVFQiVBMSVBQyVFRCU5NCU4NCVFRCU4QSVCOCVFQyU5NyU5MCUyMCVFQyU4MiVBQyVFQyU5QSVBOSUwQXByb21wdCUyMCUzRCUyMCUyMmJsM3VwcmludCUyQyUyMGElMjBoaWdobHklMjBkZXRhaWxlZCUyMGJsdWVwcmludCUyMG9mJTIwdGhlJTIwZWlmZmVsJTIwdG93ZXIlMkMlMjBleHBsYWluaW5nJTIwaG93JTIwdG8lMjBidWlsZCUyMGFsbCUyMHBhcnRzJTJDJTIwbWFueSUyMHR4dCUyQyUyMGJsdWVwcmludCUyMGdyaWQlMjBiYWNrZHJvcCUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0KS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`<span class="hljs-comment"># LoRA를 트리거하기 위해 bl3uprint를 프롬프트에 사용</span>
prompt = <span class="hljs-string">&quot;bl3uprint, a highly detailed blueprint of the eiffel tower, explaining how to build all parts, many txt, blueprint grid backdrop&quot;</span>
image = pipeline(prompt).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1}),Y(2),t(r,e)},$$slots:{default:!0}});var z=l(k,2);q(z,{id:"other-trainers",option:"TheLastBen",children:(r,H)=>{var e=rl(),n=l(p(e),2);a(n,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQXBpcGVsaW5lJTIwJTNEJTIwQXV0b1BpcGVsaW5lRm9yVGV4dDJJbWFnZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmlsaXR5YWklMkZzdGFibGUtZGlmZnVzaW9uLXhsLWJhc2UtMS4wJTIyJTJDJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKSUwQXBpcGVsaW5lLmxvYWRfbG9yYV93ZWlnaHRzKCUyMlRoZUxhc3RCZW4lMkZXaWxsaWFtX0VnZ2xlc3Rvbl9TdHlsZV9TRFhMJTIyJTJDJTIwd2VpZ2h0X25hbWUlM0QlMjJ3ZWdnLnNhZmV0ZW5zb3JzJTIyKSUwQSUwQSUyMyUyMExvUkElRUIlQTUlQkMlMjAlRUQlOEElQjglRUIlQTYlQUMlRUElQjElQjAlRUQlOTUlOTglRUElQjglQjAlMjAlRUMlOUMlODQlRUQlOTUlQjQlMjB3aWxsaWFtJTIwZWdnbGVzdG9uJUVCJUE1JUJDJTIwJUVEJTk0JTg0JUVCJUExJUFDJUVEJTk0JTg0JUVEJThBJUI4JUVDJTk3JTkwJTIwJUVDJTgyJUFDJUVDJTlBJUE5JTBBcHJvbXB0JTIwJTNEJTIwJTIyYSUyMGhvdXNlJTIwYnklMjB3aWxsaWFtJTIwZWdnbGVzdG9uJTJDJTIwc3VucmF5cyUyQyUyMGJlYXV0aWZ1bCUyQyUyMHN1bmxpZ2h0JTJDJTIwc3VucmF5cyUyQyUyMGJlYXV0aWZ1bCUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTNEcHJvbXB0KS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;stabilityai/stable-diffusion-xl-base-1.0&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.load_lora_weights(<span class="hljs-string">&quot;TheLastBen/William_Eggleston_Style_SDXL&quot;</span>, weight_name=<span class="hljs-string">&quot;wegg.safetensors&quot;</span>)
<span class="hljs-comment"># LoRA를 트리거하기 위해 william eggleston를 프롬프트에 사용</span>
prompt = <span class="hljs-string">&quot;a house by william eggleston, sunrays, beautiful, sunlight, sunrays, beautiful&quot;</span>
image = pipeline(prompt=prompt).images[<span class="hljs-number">0</span>]
image`,lang:"py",wrap:!1}),t(r,e)},$$slots:{default:!0}}),t(i,A)},$$slots:{default:!0}});var R=l(B,2);s(R,{title:"IP-Adapter",local:"ip-adapter",headingTag:"h2"});var W=l(R,10);a(W,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQWZyb20lMjBkaWZmdXNlcnMudXRpbHMlMjBpbXBvcnQlMjBsb2FkX2ltYWdlJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JUZXh0MkltYWdlLmZyb21fcHJldHJhaW5lZCglMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMkMlMjBkdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIp",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoPipelineForText2Image
<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> load_image
pipeline = AutoPipelineForText2Image.from_pretrained(<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>, dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,lang:"py",wrap:!1});var F=l(W,4);a(F,{code:"cGlwZWxpbmUubG9hZF9pcF9hZGFwdGVyKCUyMmg5NCUyRklQLUFkYXB0ZXIlMjIlMkMlMjBzdWJmb2xkZXIlM0QlMjJtb2RlbHMlMjIlMkMlMjB3ZWlnaHRfbmFtZSUzRCUyMmlwLWFkYXB0ZXJfc2QxNS5iaW4lMjIp",highlighted:'pipeline.load_ip_adapter(<span class="hljs-string">&quot;h94/IP-Adapter&quot;</span>, subfolder=<span class="hljs-string">&quot;models&quot;</span>, weight_name=<span class="hljs-string">&quot;ip-adapter_sd15.bin&quot;</span>)',lang:"py",wrap:!1});var G=l(F,4);a(G,{code:"aW1hZ2UlMjAlM0QlMjBsb2FkX2ltYWdlKCUyMmh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZkYXRhc2V0cyUyRmh1Z2dpbmdmYWNlJTJGZG9jdW1lbnRhdGlvbi1pbWFnZXMlMkZyZXNvbHZlJTJGbWFpbiUyRmRpZmZ1c2VycyUyRmxvYWRfbmVnX2VtYmVkLnBuZyUyMiklMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5HZW5lcmF0b3IoZGV2aWNlJTNEJTIyY3B1JTIyKS5tYW51YWxfc2VlZCgzMyklMEFpbWFnZXMlMjAlM0QlMjBwaXBlbGluZSglMEElQzIlQTAlMjAlQzIlQTAlMjBwcm9tcHQlM0QnYmVzdCUyMHF1YWxpdHklMkMlMjBoaWdoJTIwcXVhbGl0eSUyQyUyMHdlYXJpbmclMjBzdW5nbGFzc2VzJyUyQyUwQSVDMiVBMCUyMCVDMiVBMCUyMGlwX2FkYXB0ZXJfaW1hZ2UlM0RpbWFnZSUyQyUwQSVDMiVBMCUyMCVDMiVBMCUyMG5lZ2F0aXZlX3Byb21wdCUzRCUyMm1vbm9jaHJvbWUlMkMlMjBsb3dyZXMlMkMlMjBiYWQlMjBhbmF0b215JTJDJTIwd29yc3QlMjBxdWFsaXR5JTJDJTIwbG93JTIwcXVhbGl0eSUyMiUyQyUwQSVDMiVBMCUyMCVDMiVBMCUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0Q1MCUyQyUwQSVDMiVBMCUyMCVDMiVBMCUyMGdlbmVyYXRvciUzRGdlbmVyYXRvciUyQyUwQSkuaW1hZ2VzJTVCMCU1RCUwQWltYWdlcw==",highlighted:`image = load_image(<span class="hljs-string">&quot;https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/load_neg_embed.png&quot;</span>)
generator = torch.Generator(device=<span class="hljs-string">&quot;cpu&quot;</span>).manual_seed(<span class="hljs-number">33</span>)
images = pipeline(
    prompt=<span class="hljs-string">&#x27;best quality, high quality, wearing sunglasses&#x27;</span>,
    ip_adapter_image=image,
    negative_prompt=<span class="hljs-string">&quot;monochrome, lowres, bad anatomy, worst quality, low quality&quot;</span>,
    num_inference_steps=<span class="hljs-number">50</span>,
    generator=generator,
).images[<span class="hljs-number">0</span>]
images`,lang:"py",wrap:!1});var X=l(G,4);s(X,{title:"IP-Adapter Plus",local:"ip-adapter-plus",headingTag:"h3"});var S=l(X,6);a(S,{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENMSVBWaXNpb25Nb2RlbFdpdGhQcm9qZWN0aW9uJTBBJTBBaW1hZ2VfZW5jb2RlciUyMCUzRCUyMENMSVBWaXNpb25Nb2RlbFdpdGhQcm9qZWN0aW9uLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJoOTQlMkZJUC1BZGFwdGVyJTIyJTJDJTBBJTIwJTIwJTIwJTIwc3ViZm9sZGVyJTNEJTIybW9kZWxzJTJGaW1hZ2VfZW5jb2RlciUyMiUyQyUwQSUyMCUyMCUyMCUyMGR0eXBlJTNEdG9yY2guZmxvYXQxNiUwQSklMEElMEFwaXBlbGluZSUyMCUzRCUyMEF1dG9QaXBlbGluZUZvclRleHQySW1hZ2UuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMnN0YWJpbGl0eWFpJTJGc3RhYmxlLWRpZmZ1c2lvbi14bC1iYXNlLTEuMCUyMiUyQyUwQSUyMCUyMCUyMCUyMGltYWdlX2VuY29kZXIlM0RpbWFnZV9lbmNvZGVyJTJDJTBBJTIwJTIwJTIwJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2JTBBKS50byglMjJjdWRhJTIyKSUwQSUwQXBpcGVsaW5lLmxvYWRfaXBfYWRhcHRlciglMjJoOTQlMkZJUC1BZGFwdGVyJTIyJTJDJTIwc3ViZm9sZGVyJTNEJTIyc2R4bF9tb2RlbHMlMjIlMkMlMjB3ZWlnaHRfbmFtZSUzRCUyMmlwLWFkYXB0ZXItcGx1c19zZHhsX3ZpdC1oLnNhZmV0ZW5zb3JzJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CLIPVisionModelWithProjection
image_encoder = CLIPVisionModelWithProjection.from_pretrained(
<span class="hljs-string">&quot;h94/IP-Adapter&quot;</span>,
subfolder=<span class="hljs-string">&quot;models/image_encoder&quot;</span>,
dtype=torch.float16
)
pipeline = AutoPipelineForText2Image.from_pretrained(
<span class="hljs-string">&quot;stabilityai/stable-diffusion-xl-base-1.0&quot;</span>,
image_encoder=image_encoder,
dtype=torch.float16
).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.load_ip_adapter(<span class="hljs-string">&quot;h94/IP-Adapter&quot;</span>, subfolder=<span class="hljs-string">&quot;sdxl_models&quot;</span>, weight_name=<span class="hljs-string">&quot;ip-adapter-plus_sdxl_vit-h.safetensors&quot;</span>)`,lang:"py",wrap:!1});var _=l(S,2);s(_,{title:"IP-Adapter Face ID 모델",local:"ip-adapter-face-id-모델",headingTag:"h3"});var N=l(_,6);a(N,{code:"cGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JUZXh0MkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJzdGFiaWxpdHlhaSUyRnN0YWJsZS1kaWZmdXNpb24teGwtYmFzZS0xLjAlMjIlMkMlMEElMjAlMjAlMjAlMjBkdHlwZSUzRHRvcmNoLmZsb2F0MTYlMEEpLnRvKCUyMmN1ZGElMjIpJTBBJTBBcGlwZWxpbmUubG9hZF9pcF9hZGFwdGVyKCUyMmg5NCUyRklQLUFkYXB0ZXItRmFjZUlEJTIyJTJDJTIwc3ViZm9sZGVyJTNETm9uZSUyQyUyMHdlaWdodF9uYW1lJTNEJTIyaXAtYWRhcHRlci1mYWNlaWRfc2R4bC5iaW4lMjIlMkMlMjBpbWFnZV9lbmNvZGVyX2ZvbGRlciUzRE5vbmUp",highlighted:`pipeline = AutoPipelineForText2Image.from_pretrained(
<span class="hljs-string">&quot;stabilityai/stable-diffusion-xl-base-1.0&quot;</span>,
dtype=torch.float16
).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.load_ip_adapter(<span class="hljs-string">&quot;h94/IP-Adapter-FaceID&quot;</span>, subfolder=<span class="hljs-literal">None</span>, weight_name=<span class="hljs-string">&quot;ip-adapter-faceid_sdxl.bin&quot;</span>, image_encoder_folder=<span class="hljs-literal">None</span>)`,lang:"py",wrap:!1});var v=l(N,4);a(v,{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENMSVBWaXNpb25Nb2RlbFdpdGhQcm9qZWN0aW9uJTBBJTBBaW1hZ2VfZW5jb2RlciUyMCUzRCUyMENMSVBWaXNpb25Nb2RlbFdpdGhQcm9qZWN0aW9uLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJsYWlvbiUyRkNMSVAtVmlULUgtMTQtbGFpb24yQi1zMzJCLWI3OUslMjIlMkMlMEElMjAlMjAlMjAlMjBkdHlwZSUzRHRvcmNoLmZsb2F0MTYlMkMlMEEpJTBBJTBBcGlwZWxpbmUlMjAlM0QlMjBBdXRvUGlwZWxpbmVGb3JUZXh0MkltYWdlLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMkMlMEElMjAlMjAlMjAlMjBpbWFnZV9lbmNvZGVyJTNEaW1hZ2VfZW5jb2RlciUyQyUwQSUyMCUyMCUyMCUyMGR0eXBlJTNEdG9yY2guZmxvYXQxNiUwQSkudG8oJTIyY3VkYSUyMiklMEElMEFwaXBlbGluZS5sb2FkX2lwX2FkYXB0ZXIoJTIyaDk0JTJGSVAtQWRhcHRlci1GYWNlSUQlMjIlMkMlMjBzdWJmb2xkZXIlM0ROb25lJTJDJTIwd2VpZ2h0X25hbWUlM0QlMjJpcC1hZGFwdGVyLWZhY2VpZC1wbHVzX3NkMTUuYmluJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CLIPVisionModelWithProjection
image_encoder = CLIPVisionModelWithProjection.from_pretrained(
<span class="hljs-string">&quot;laion/CLIP-ViT-H-14-laion2B-s32B-b79K&quot;</span>,
dtype=torch.float16,
)
pipeline = AutoPipelineForText2Image.from_pretrained(
<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>,
image_encoder=image_encoder,
dtype=torch.float16
).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.load_ip_adapter(<span class="hljs-string">&quot;h94/IP-Adapter-FaceID&quot;</span>, subfolder=<span class="hljs-literal">None</span>, weight_name=<span class="hljs-string">&quot;ip-adapter-faceid-plus_sd15.bin&quot;</span>)`,lang:"py",wrap:!1});var D=l(v,2);al(D,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/using-diffusers/loading_adapters.md"}),Y(2),t(x,y),ol()}export{ml as component};

Xet Storage Details

Size:
42.1 kB
·
Xet hash:
2d26f812e3460605b81219f32ff9efd0903e41bb765c7cb5ca89c829af7cfe31

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.