Buckets:

rtrm's picture
download
raw
43.5 kB
import{s as Nl,o as El,n as xl}from"../chunks/scheduler.94020406.js";import{S as Fl,i as Sl,g as i,s,r as m,E as Yl,h as p,f as l,c as a,j as Xl,u as r,x as o,k as Wl,y as Ql,a as n,v as c,d as u,t as M,w as U}from"../chunks/index.a08c8d92.js";import{T as Ll}from"../chunks/Tip.3b0aeee8.js";import{C as d}from"../chunks/CodeBlock.b23cf525.js";import{H as b,E as kl}from"../chunks/EditOnGithub.b1bceb47.js";function Hl(Xt){let f,y="가장 최신 버전의 예시 스크립트를 성공적으로 실행하기 위해서는, 소스에서 설치하고 최신 버전의 설치를 유지하는 것을 강력하게 추천합니다. 우리는 예시 스크립트들을 자주 업데이트하고 예시에 맞춘 특정한 요구사항을 설치합니다.";return{c(){f=i("p"),f.textContent=y},l(J){f=p(J,"P",{"data-svelte-h":!0}),o(f)!=="svelte-89o4gq"&&(f.textContent=y)},m(J,Gt){n(J,f,Gt)},p:xl,d(J){J&&l(f)}}}function Dl(Xt){let f,y,J,Gt,g,Wt,h,Ae='<a href="https://arxiv.org/abs/2302.05543" rel="nofollow">Adding Conditional Control to Text-to-Image Diffusion Models</a> (ControlNet)은 Lvmin Zhang과 Maneesh Agrawala에 의해 쓰여졌습니다.',Nt,_,Pe='이 예시는 <a href="https://github.com/lllyasviel/ControlNet/blob/main/docs/train.md" rel="nofollow">원본 ControlNet 리포지토리에서 예시 학습하기</a>에 기반합니다. ControlNet은 원들을 채우기 위해 <a href="https://huggingface.co/datasets/fusing/fill50k" rel="nofollow">small synthetic dataset</a>을 사용해서 학습됩니다.',Et,w,xt,Z,Oe="아래의 스크립트를 실행하기 전에, 라이브러리의 학습 의존성을 설치해야 합니다.",Ft,T,St,j,Ke="위 사항을 만족시키기 위해서, 새로운 가상환경에서 다음 일련의 스텝을 실행하세요:",Yt,R,Qt,C,tl='그 다음에는 <a href="https://github.com/huggingface/diffusers/tree/main/examples/controlnet" rel="nofollow">예시 폴더</a>으로 이동합니다.',Lt,V,kt,$,el="이제 실행하세요:",Ht,B,Dt,v,ll='<a href="https://github.com/huggingface/accelerate/" rel="nofollow">🤗Accelerate</a> 환경을 초기화 합니다:',zt,G,qt,I,nl="혹은 여러분의 환경이 무엇인지 몰라도 기본적인 🤗Accelerate 구성으로 초기화할 수 있습니다:",At,X,Pt,W,sl="혹은 당신의 환경이 노트북 같은 상호작용하는 쉘을 지원하지 않는다면, 아래의 코드로 초기화 할 수 있습니다:",Ot,N,Kt,E,te,x,al='원본 데이터셋은 ControlNet <a href="https://huggingface.co/lllyasviel/ControlNet/blob/main/training/fill50k.zip" rel="nofollow">repo</a>에 올라와있지만, 우리는 <a href="https://huggingface.co/datasets/fusing/fill50k" rel="nofollow">여기</a>에 새롭게 다시 올려서 🤗 Datasets 과 호환가능합니다. 그래서 학습 스크립트 상에서 데이터 불러오기를 다룰 수 있습니다.',ee,F,il='우리의 학습 예시는 원래 ControlNet의 학습에 쓰였던 <a href="https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5" rel="nofollow"><code>stable-diffusion-v1-5/stable-diffusion-v1-5</code></a>을 사용합니다. 그렇지만 ControlNet은 대응되는 어느 Stable Diffusion 모델(<a href="https://huggingface.co/CompVis/stable-diffusion-v1-4" rel="nofollow"><code>CompVis/stable-diffusion-v1-4</code></a>) 혹은 <a href="https://huggingface.co/stabilityai/stable-diffusion-2-1" rel="nofollow"><code>stabilityai/stable-diffusion-2-1</code></a>의 증가를 위해 학습될 수 있습니다.',le,S,pl='자체 데이터셋을 사용하기 위해서는 <a href="create_dataset">학습을 위한 데이터셋 생성하기</a> 가이드를 확인하세요.',ne,Y,se,Q,ol="이 학습에 사용될 다음 이미지들을 다운로드하세요:",ae,L,ie,k,ml='<code>MODEL_NAME</code> 환경 변수 (Hub 모델 리포지토리 아이디 혹은 모델 가중치가 있는 디렉토리로 가는 주소)를 명시하고 <a href="https://huggingface.co/docs/diffusers/en/api/diffusion_pipeline#diffusers.DiffusionPipeline.from_pretrained.pretrained_model_name_or_path" rel="nofollow"><code>pretrained_model_name_or_path</code></a> 인자로 환경변수를 보냅니다.',pe,H,rl="학습 스크립트는 당신의 리포지토리에 <code>diffusion_pytorch_model.bin</code> 파일을 생성하고 저장합니다.",oe,D,me,z,cl="이 기본적인 설정으로는 ~38GB VRAM이 필요합니다.",re,q,ul="기본적으로 학습 스크립트는 결과를 텐서보드에 기록합니다. 가중치(weight)와 편향(bias)을 사용하기 위해 <code>--report_to wandb</code> 를 전달합니다.",ce,A,Ml="더 작은 batch(배치) 크기로 gradient accumulation(기울기 누적)을 하면 학습 요구사항을 ~20 GB VRAM으로 줄일 수 있습니다.",ue,P,Me,O,Ue,K,Ul=`<code>accelerate</code> 은 seamless multi-GPU 학습을 고려합니다. <code>accelerate</code>과 함께 분산된 학습을 실행하기 위해 <a href="https://huggingface.co/docs/accelerate/basic_tutorials/launch" rel="nofollow">여기</a>
의 설명을 확인하세요. 아래는 예시 명령어입니다:`,fe,tt,de,et,be,lt,Je,nt,fl='<thead><tr><th></th> <th align="center"></th></tr></thead> <tbody><tr><td></td> <td align="center">푸른 배경과 빨간 원</td></tr> <tr><td><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/conditioning_image_1.png" alt="conditioning image"/></td> <td align="center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/red_circle_with_blue_background_300_steps.png" alt="푸른 배경과 빨간 원"/></td></tr> <tr><td></td> <td align="center">갈색 꽃 배경과 청록색 원</td></tr> <tr><td><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/conditioning_image_2.png" alt="conditioning image"/></td> <td align="center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/cyan_circle_with_brown_floral_background_300_steps.png" alt="갈색 꽃 배경과 청록색 원"/></td></tr></tbody>',Te,st,ye,at,dl='<thead><tr><th></th> <th align="center"></th></tr></thead> <tbody><tr><td></td> <td align="center">푸른 배경과 빨간 원</td></tr> <tr><td><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/conditioning_image_1.png" alt="conditioning image"/></td> <td align="center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/red_circle_with_blue_background_6000_steps.png" alt="푸른 배경과 빨간 원"/></td></tr> <tr><td></td> <td align="center">갈색 꽃 배경과 청록색 원</td></tr> <tr><td><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/conditioning_image_2.png" alt="conditioning image"/></td> <td align="center"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/cyan_circle_with_brown_floral_background_6000_steps.png" alt="갈색 꽃 배경과 청록색 원"/></td></tr></tbody>',ge,it,he,pt,bl="16GB GPU에서 학습하기 위해 다음의 최적화를 진행하세요:",_e,ot,Jl='<li>기울기 체크포인트 저장하기</li> <li>bitsandbyte의 <a href="https://github.com/TimDettmers/bitsandbytes#requirements--installation" rel="nofollow">8-bit optimizer</a>가 설치되지 않았다면 링크에 연결된 설명서를 보세요.</li>',we,mt,Tl="이제 학습 스크립트를 시작할 수 있습니다:",Ze,rt,je,ct,Re,ut,yl="12GB GPU에서 실행하기 위해 다음의 최적화를 진행하세요:",Ce,Mt,gl='<li>기울기 체크포인트 저장하기</li> <li>bitsandbyte의 8-bit <a href="https://github.com/TimDettmers/bitsandbytes#requirements--installation" rel="nofollow">optimizer</a>(가 설치되지 않았다면 링크에 연결된 설명서를 보세요)</li> <li><a href="https://huggingface.co/docs/diffusers/training/optimization/xformers" rel="nofollow">xFormers</a>(가 설치되지 않았다면 링크에 연결된 설명서를 보세요)</li> <li>기울기를 <code>None</code>으로 설정</li>',Ve,Ut,$e,ft,hl="<code>pip install xformers</code>으로 <code>xformers</code>을 확실히 설치하고 <code>enable_xformers_memory_efficient_attention</code>을 사용하세요.",Be,dt,ve,bt,_l=`우리는 ControlNet을 지원하기 위한 DeepSpeed를 철저하게 테스트하지 않았습니다. 환경설정이 메모리를 저장할 때,
그 환경이 성공적으로 학습했는지를 확정하지 않았습니다. 성공한 학습 실행을 위해 설정을 변경해야 할 가능성이 높습니다.`,Ge,Jt,wl="8GB GPU에서 실행하기 위해 다음의 최적화를 진행하세요:",Ie,Tt,Zl='<li>기울기 체크포인트 저장하기</li> <li>bitsandbyte의 8-bit <a href="https://github.com/TimDettmers/bitsandbytes#requirements--installation" rel="nofollow">optimizer</a>(가 설치되지 않았다면 링크에 연결된 설명서를 보세요)</li> <li><a href="https://huggingface.co/docs/diffusers/training/optimization/xformers" rel="nofollow">xFormers</a>(가 설치되지 않았다면 링크에 연결된 설명서를 보세요)</li> <li>기울기를 <code>None</code>으로 설정</li> <li>DeepSpeed stage 2 변수와 optimizer 없에기</li> <li>fp16 혼합 정밀도(precision)</li>',Xe,yt,jl=`<a href="https://www.deepspeed.ai/" rel="nofollow">DeepSpeed</a>는 CPU 또는 NVME로 텐서를 VRAM에서 오프로드할 수 있습니다.
이를 위해서 훨씬 더 많은 RAM(약 25 GB)가 필요합니다.`,We,gt,Rl="DeepSpeed stage 2를 활성화하기 위해서 <code>accelerate config</code>로 환경을 구성해야합니다.",Ne,ht,Cl="구성(configuration) 파일은 이런 모습이어야 합니다:",Ee,_t,xe,wt,Vl="<팁>",Fe,Zt,$l='<a href="https://huggingface.co/docs/accelerate/usage_guides/deepspeed" rel="nofollow">문서</a>를 더 많은 DeepSpeed 설정 옵션을 위해 보세요.',Se,jt,Bl="<팁>",Ye,Rt,vl=`기본 Adam optimizer를 DeepSpeed’의 Adam
<code>deepspeed.ops.adam.DeepSpeedCPUAdam</code> 으로 바꾸면 상당한 속도 향상을 이룰수 있지만,
Pytorch와 같은 버전의 CUDA toolchain이 필요합니다. 8-비트 optimizer는 현재 DeepSpeed와
호환되지 않는 것 같습니다.`,Qe,Ct,Le,Vt,ke,$t,Gl=`학습된 모델은 <code>StableDiffusionControlNetPipeline</code>과 함께 실행될 수 있습니다.
<code>base_model_path</code>와 <code>controlnet_path</code> 에 값을 지정하세요 <code>--pretrained_model_name_or_path</code> 와
<code>--output_dir</code> 는 학습 스크립트에 개별적으로 지정됩니다.`,He,Bt,De,vt,ze,It,qe;return g=new b({props:{title:"ControlNet",local:"controlnet",headingTag:"h1"}}),w=new b({props:{title:"의존성 설치하기",local:"의존성-설치하기",headingTag:"h2"}}),T=new Ll({props:{warning:!0,$$slots:{default:[Hl]},$$scope:{ctx:Xt}}}),R=new d({props:{code:"Z2l0JTIwY2xvbmUlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZodWdnaW5nZmFjZSUyRmRpZmZ1c2VycyUwQWNkJTIwZGlmZnVzZXJzJTBBcGlwJTIwaW5zdGFsbCUyMC1lJTIwLg==",highlighted:`git <span class="hljs-built_in">clone</span> https://github.com/huggingface/diffusers
<span class="hljs-built_in">cd</span> diffusers
pip install -e .`,wrap:!1}}),V=new d({props:{code:"Y2QlMjBleGFtcGxlcyUyRmNvbnRyb2xuZXQ=",highlighted:'<span class="hljs-built_in">cd</span> examples/controlnet',wrap:!1}}),B=new d({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1yJTIwcmVxdWlyZW1lbnRzLnR4dA==",highlighted:"pip install -r requirements.txt",wrap:!1}}),G=new d({props:{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZw==",highlighted:"accelerate config",wrap:!1}}),X=new d({props:{code:"YWNjZWxlcmF0ZSUyMGNvbmZpZyUyMGRlZmF1bHQ=",highlighted:"accelerate config default",wrap:!1}}),N=new d({props:{code:"ZnJvbSUyMGFjY2VsZXJhdGUudXRpbHMlMjBpbXBvcnQlMjB3cml0ZV9iYXNpY19jb25maWclMEElMEF3cml0ZV9iYXNpY19jb25maWcoKQ==",highlighted:`<span class="hljs-keyword">from</span> accelerate.utils <span class="hljs-keyword">import</span> write_basic_config
write_basic_config()`,wrap:!1}}),E=new b({props:{title:"원을 채우는 데이터셋",local:"원을-채우는-데이터셋",headingTag:"h2"}}),Y=new b({props:{title:"학습",local:"학습",headingTag:"h2"}}),L=new d({props:{code:"d2dldCUyMGh0dHBzJTNBJTJGJTJGaHVnZ2luZ2ZhY2UuY28lMkZkYXRhc2V0cyUyRmh1Z2dpbmdmYWNlJTJGZG9jdW1lbnRhdGlvbi1pbWFnZXMlMkZyZXNvbHZlJTJGbWFpbiUyRmRpZmZ1c2VycyUyRmNvbnRyb2xuZXRfdHJhaW5pbmclMkZjb25kaXRpb25pbmdfaW1hZ2VfMS5wbmclMEElMEF3Z2V0JTIwaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGaHVnZ2luZ2ZhY2UlMkZkb2N1bWVudGF0aW9uLWltYWdlcyUyRnJlc29sdmUlMkZtYWluJTJGZGlmZnVzZXJzJTJGY29udHJvbG5ldF90cmFpbmluZyUyRmNvbmRpdGlvbmluZ19pbWFnZV8yLnBuZw==",highlighted:`wget https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/conditioning_image_1.png
wget https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/controlnet_training/conditioning_image_2.png`,wrap:!1}}),D=new d({props:{code:"ZXhwb3J0JTIwTU9ERUxfRElSJTNEJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBZXhwb3J0JTIwT1VUUFVUX0RJUiUzRCUyMnBhdGglMjB0byUyMHNhdmUlMjBtb2RlbCUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjB0cmFpbl9jb250cm9sbmV0LnB5JTIwJTVDJTBBJTIwLS1wcmV0cmFpbmVkX21vZGVsX25hbWVfb3JfcGF0aCUzRCUyNE1PREVMX0RJUiUyMCU1QyUwQSUyMC0tb3V0cHV0X2RpciUzRCUyNE9VVFBVVF9ESVIlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUzRGZ1c2luZyUyRmZpbGw1MGslMjAlNUMlMjAlMEElMjAtLXRydXN0X3JlbW90ZV9jb2RlJTIwJTVDJTBBJTIwLS1yZXNvbHV0aW9uJTNENTEyJTIwJTVDJTBBJTIwLS1sZWFybmluZ19yYXRlJTNEMWUtNSUyMCU1QyUwQSUyMC0tdmFsaWRhdGlvbl9pbWFnZSUyMCUyMi4lMkZjb25kaXRpb25pbmdfaW1hZ2VfMS5wbmclMjIlMjAlMjIuJTJGY29uZGl0aW9uaW5nX2ltYWdlXzIucG5nJTIyJTIwJTVDJTBBJTIwLS12YWxpZGF0aW9uX3Byb21wdCUyMCUyMnJlZCUyMGNpcmNsZSUyMHdpdGglMjBibHVlJTIwYmFja2dyb3VuZCUyMiUyMCUyMmN5YW4lMjBjaXJjbGUlMjB3aXRoJTIwYnJvd24lMjBmbG9yYWwlMjBiYWNrZ3JvdW5kJTIyJTIwJTVDJTBBJTIwLS10cmFpbl9iYXRjaF9zaXplJTNENCUyMCU1QyUwQSUyMC0tcHVzaF90b19odWI=",highlighted:`<span class="hljs-built_in">export</span> MODEL_DIR=<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
<span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">&quot;path to save model&quot;</span>
accelerate launch train_controlnet.py \\
--pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_DIR</span> \\
--output_dir=<span class="hljs-variable">$OUTPUT_DIR</span> \\
--dataset_name=fusing/fill50k \\
--trust_remote_code \\
--resolution=512 \\
--learning_rate=1e-5 \\
--validation_image <span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span> <span class="hljs-string">&quot;./conditioning_image_2.png&quot;</span> \\
--validation_prompt <span class="hljs-string">&quot;red circle with blue background&quot;</span> <span class="hljs-string">&quot;cyan circle with brown floral background&quot;</span> \\
--train_batch_size=4 \\
--push_to_hub`,wrap:!1}}),P=new d({props:{code:"ZXhwb3J0JTIwTU9ERUxfRElSJTNEJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBZXhwb3J0JTIwT1VUUFVUX0RJUiUzRCUyMnBhdGglMjB0byUyMHNhdmUlMjBtb2RlbCUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjB0cmFpbl9jb250cm9sbmV0LnB5JTIwJTVDJTBBJTIwLS1wcmV0cmFpbmVkX21vZGVsX25hbWVfb3JfcGF0aCUzRCUyNE1PREVMX0RJUiUyMCU1QyUwQSUyMC0tb3V0cHV0X2RpciUzRCUyNE9VVFBVVF9ESVIlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUzRGZ1c2luZyUyRmZpbGw1MGslMjAlNUMlMjAlMEElMjAtLXRydXN0X3JlbW90ZV9jb2RlJTIwJTVDJTBBJTIwLS1yZXNvbHV0aW9uJTNENTEyJTIwJTVDJTBBJTIwLS1sZWFybmluZ19yYXRlJTNEMWUtNSUyMCU1QyUwQSUyMC0tdmFsaWRhdGlvbl9pbWFnZSUyMCUyMi4lMkZjb25kaXRpb25pbmdfaW1hZ2VfMS5wbmclMjIlMjAlMjIuJTJGY29uZGl0aW9uaW5nX2ltYWdlXzIucG5nJTIyJTIwJTVDJTBBJTIwLS12YWxpZGF0aW9uX3Byb21wdCUyMCUyMnJlZCUyMGNpcmNsZSUyMHdpdGglMjBibHVlJTIwYmFja2dyb3VuZCUyMiUyMCUyMmN5YW4lMjBjaXJjbGUlMjB3aXRoJTIwYnJvd24lMjBmbG9yYWwlMjBiYWNrZ3JvdW5kJTIyJTIwJTVDJTBBJTIwLS10cmFpbl9iYXRjaF9zaXplJTNEMSUyMCU1QyUwQSUyMC0tZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNENCUyMCU1QyUwQSUyMCUyMC0tcHVzaF90b19odWI=",highlighted:`<span class="hljs-built_in">export</span> MODEL_DIR=<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
<span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">&quot;path to save model&quot;</span>
accelerate launch train_controlnet.py \\
--pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_DIR</span> \\
--output_dir=<span class="hljs-variable">$OUTPUT_DIR</span> \\
--dataset_name=fusing/fill50k \\
--trust_remote_code \\
--resolution=512 \\
--learning_rate=1e-5 \\
--validation_image <span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span> <span class="hljs-string">&quot;./conditioning_image_2.png&quot;</span> \\
--validation_prompt <span class="hljs-string">&quot;red circle with blue background&quot;</span> <span class="hljs-string">&quot;cyan circle with brown floral background&quot;</span> \\
--train_batch_size=1 \\
--gradient_accumulation_steps=4 \\
--push_to_hub`,wrap:!1}}),O=new b({props:{title:"여러개 GPU로 학습하기",local:"여러개-gpu로-학습하기",headingTag:"h2"}}),tt=new d({props:{code:"ZXhwb3J0JTIwTU9ERUxfRElSJTNEJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBZXhwb3J0JTIwT1VUUFVUX0RJUiUzRCUyMnBhdGglMjB0byUyMHNhdmUlMjBtb2RlbCUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjAtLW1peGVkX3ByZWNpc2lvbiUzRCUyMmZwMTYlMjIlMjAtLW11bHRpX2dwdSUyMHRyYWluX2NvbnRyb2xuZXQucHklMjAlNUMlMEElMjAtLXByZXRyYWluZWRfbW9kZWxfbmFtZV9vcl9wYXRoJTNEJTI0TU9ERUxfRElSJTIwJTVDJTBBJTIwLS1vdXRwdXRfZGlyJTNEJTI0T1VUUFVUX0RJUiUyMCU1QyUwQSUyMC0tZGF0YXNldF9uYW1lJTNEZnVzaW5nJTJGZmlsbDUwayUyMCU1QyUyMCUwQSUyMC0tdHJ1c3RfcmVtb3RlX2NvZGUlMjAlNUMlMEElMjAtLXJlc29sdXRpb24lM0Q1MTIlMjAlNUMlMEElMjAtLWxlYXJuaW5nX3JhdGUlM0QxZS01JTIwJTVDJTBBJTIwLS12YWxpZGF0aW9uX2ltYWdlJTIwJTIyLiUyRmNvbmRpdGlvbmluZ19pbWFnZV8xLnBuZyUyMiUyMCUyMi4lMkZjb25kaXRpb25pbmdfaW1hZ2VfMi5wbmclMjIlMjAlNUMlMEElMjAtLXZhbGlkYXRpb25fcHJvbXB0JTIwJTIycmVkJTIwY2lyY2xlJTIwd2l0aCUyMGJsdWUlMjBiYWNrZ3JvdW5kJTIyJTIwJTIyY3lhbiUyMGNpcmNsZSUyMHdpdGglMjBicm93biUyMGZsb3JhbCUyMGJhY2tncm91bmQlMjIlMjAlNUMlMEElMjAtLXRyYWluX2JhdGNoX3NpemUlM0Q0JTIwJTVDJTBBJTIwLS1taXhlZF9wcmVjaXNpb24lM0QlMjJmcDE2JTIyJTIwJTVDJTBBJTIwLS10cmFja2VyX3Byb2plY3RfbmFtZSUzRCUyMmNvbnRyb2xuZXQtZGVtbyUyMiUyMCU1QyUwQSUyMC0tcmVwb3J0X3RvJTNEd2FuZGIlMjAlNUMlMEElMjAlMjAtLXB1c2hfdG9faHVi",highlighted:`<span class="hljs-built_in">export</span> MODEL_DIR=<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
<span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">&quot;path to save model&quot;</span>
accelerate launch --mixed_precision=<span class="hljs-string">&quot;fp16&quot;</span> --multi_gpu train_controlnet.py \\
--pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_DIR</span> \\
--output_dir=<span class="hljs-variable">$OUTPUT_DIR</span> \\
--dataset_name=fusing/fill50k \\
--trust_remote_code \\
--resolution=512 \\
--learning_rate=1e-5 \\
--validation_image <span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span> <span class="hljs-string">&quot;./conditioning_image_2.png&quot;</span> \\
--validation_prompt <span class="hljs-string">&quot;red circle with blue background&quot;</span> <span class="hljs-string">&quot;cyan circle with brown floral background&quot;</span> \\
--train_batch_size=4 \\
--mixed_precision=<span class="hljs-string">&quot;fp16&quot;</span> \\
--tracker_project_name=<span class="hljs-string">&quot;controlnet-demo&quot;</span> \\
--report_to=wandb \\
--push_to_hub`,wrap:!1}}),et=new b({props:{title:"예시 결과",local:"예시-결과",headingTag:"h2"}}),lt=new b({props:{title:"배치 사이즈 8로 300 스텝 이후:",local:"배치-사이즈-8로-300-스텝-이후",headingTag:"h4"}}),st=new b({props:{title:"배치 사이즈 8로 6000 스텝 이후:",local:"배치-사이즈-8로-6000-스텝-이후",headingTag:"h4"}}),it=new b({props:{title:"16GB GPU에서 학습하기",local:"16gb-gpu에서-학습하기",headingTag:"h2"}}),rt=new d({props:{code:"ZXhwb3J0JTIwTU9ERUxfRElSJTNEJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBZXhwb3J0JTIwT1VUUFVUX0RJUiUzRCUyMnBhdGglMjB0byUyMHNhdmUlMjBtb2RlbCUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjB0cmFpbl9jb250cm9sbmV0LnB5JTIwJTVDJTBBJTIwLS1wcmV0cmFpbmVkX21vZGVsX25hbWVfb3JfcGF0aCUzRCUyNE1PREVMX0RJUiUyMCU1QyUwQSUyMC0tb3V0cHV0X2RpciUzRCUyNE9VVFBVVF9ESVIlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUzRGZ1c2luZyUyRmZpbGw1MGslMjAlNUMlMjAlMEElMjAtLXRydXN0X3JlbW90ZV9jb2RlJTIwJTVDJTBBJTIwLS1yZXNvbHV0aW9uJTNENTEyJTIwJTVDJTBBJTIwLS1sZWFybmluZ19yYXRlJTNEMWUtNSUyMCU1QyUwQSUyMC0tdmFsaWRhdGlvbl9pbWFnZSUyMCUyMi4lMkZjb25kaXRpb25pbmdfaW1hZ2VfMS5wbmclMjIlMjAlMjIuJTJGY29uZGl0aW9uaW5nX2ltYWdlXzIucG5nJTIyJTIwJTVDJTBBJTIwLS12YWxpZGF0aW9uX3Byb21wdCUyMCUyMnJlZCUyMGNpcmNsZSUyMHdpdGglMjBibHVlJTIwYmFja2dyb3VuZCUyMiUyMCUyMmN5YW4lMjBjaXJjbGUlMjB3aXRoJTIwYnJvd24lMjBmbG9yYWwlMjBiYWNrZ3JvdW5kJTIyJTIwJTVDJTBBJTIwLS10cmFpbl9iYXRjaF9zaXplJTNEMSUyMCU1QyUwQSUyMC0tZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNENCUyMCU1QyUwQSUyMC0tZ3JhZGllbnRfY2hlY2twb2ludGluZyUyMCU1QyUwQSUyMC0tdXNlXzhiaXRfYWRhbSUyMCU1QyUwQSUyMCUyMC0tcHVzaF90b19odWI=",highlighted:`<span class="hljs-built_in">export</span> MODEL_DIR=<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
<span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">&quot;path to save model&quot;</span>
accelerate launch train_controlnet.py \\
--pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_DIR</span> \\
--output_dir=<span class="hljs-variable">$OUTPUT_DIR</span> \\
--dataset_name=fusing/fill50k \\
--trust_remote_code \\
--resolution=512 \\
--learning_rate=1e-5 \\
--validation_image <span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span> <span class="hljs-string">&quot;./conditioning_image_2.png&quot;</span> \\
--validation_prompt <span class="hljs-string">&quot;red circle with blue background&quot;</span> <span class="hljs-string">&quot;cyan circle with brown floral background&quot;</span> \\
--train_batch_size=1 \\
--gradient_accumulation_steps=4 \\
--gradient_checkpointing \\
--use_8bit_adam \\
--push_to_hub`,wrap:!1}}),ct=new b({props:{title:"12GB GPU에서 학습하기",local:"12gb-gpu에서-학습하기",headingTag:"h2"}}),Ut=new d({props:{code:"ZXhwb3J0JTIwTU9ERUxfRElSJTNEJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBZXhwb3J0JTIwT1VUUFVUX0RJUiUzRCUyMnBhdGglMjB0byUyMHNhdmUlMjBtb2RlbCUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjB0cmFpbl9jb250cm9sbmV0LnB5JTIwJTVDJTBBJTIwLS1wcmV0cmFpbmVkX21vZGVsX25hbWVfb3JfcGF0aCUzRCUyNE1PREVMX0RJUiUyMCU1QyUwQSUyMC0tb3V0cHV0X2RpciUzRCUyNE9VVFBVVF9ESVIlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUzRGZ1c2luZyUyRmZpbGw1MGslMjAlNUMlMjAlMEElMjAtLXRydXN0X3JlbW90ZV9jb2RlJTIwJTVDJTBBJTIwLS1yZXNvbHV0aW9uJTNENTEyJTIwJTVDJTBBJTIwLS1sZWFybmluZ19yYXRlJTNEMWUtNSUyMCU1QyUwQSUyMC0tdmFsaWRhdGlvbl9pbWFnZSUyMCUyMi4lMkZjb25kaXRpb25pbmdfaW1hZ2VfMS5wbmclMjIlMjAlMjIuJTJGY29uZGl0aW9uaW5nX2ltYWdlXzIucG5nJTIyJTIwJTVDJTBBJTIwLS12YWxpZGF0aW9uX3Byb21wdCUyMCUyMnJlZCUyMGNpcmNsZSUyMHdpdGglMjBibHVlJTIwYmFja2dyb3VuZCUyMiUyMCUyMmN5YW4lMjBjaXJjbGUlMjB3aXRoJTIwYnJvd24lMjBmbG9yYWwlMjBiYWNrZ3JvdW5kJTIyJTIwJTVDJTBBJTIwLS10cmFpbl9iYXRjaF9zaXplJTNEMSUyMCU1QyUwQSUyMC0tZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNENCUyMCU1QyUwQSUyMC0tZ3JhZGllbnRfY2hlY2twb2ludGluZyUyMCU1QyUwQSUyMC0tdXNlXzhiaXRfYWRhbSUyMCU1QyUwQSUyMC0tZW5hYmxlX3hmb3JtZXJzX21lbW9yeV9lZmZpY2llbnRfYXR0ZW50aW9uJTIwJTVDJTBBJTIwLS1zZXRfZ3JhZHNfdG9fbm9uZSUyMCU1QyUwQSUyMCUyMC0tcHVzaF90b19odWI=",highlighted:`<span class="hljs-built_in">export</span> MODEL_DIR=<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
<span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">&quot;path to save model&quot;</span>
accelerate launch train_controlnet.py \\
--pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_DIR</span> \\
--output_dir=<span class="hljs-variable">$OUTPUT_DIR</span> \\
--dataset_name=fusing/fill50k \\
--trust_remote_code \\
--resolution=512 \\
--learning_rate=1e-5 \\
--validation_image <span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span> <span class="hljs-string">&quot;./conditioning_image_2.png&quot;</span> \\
--validation_prompt <span class="hljs-string">&quot;red circle with blue background&quot;</span> <span class="hljs-string">&quot;cyan circle with brown floral background&quot;</span> \\
--train_batch_size=1 \\
--gradient_accumulation_steps=4 \\
--gradient_checkpointing \\
--use_8bit_adam \\
--enable_xformers_memory_efficient_attention \\
--set_grads_to_none \\
--push_to_hub`,wrap:!1}}),dt=new b({props:{title:"8GB GPU에서 학습하기",local:"8gb-gpu에서-학습하기",headingTag:"h2"}}),_t=new d({props:{code:"Y29tcHV0ZV9lbnZpcm9ubWVudCUzQSUyMExPQ0FMX01BQ0hJTkUlMEFkZWVwc3BlZWRfY29uZmlnJTNBJTBBJTIwJTIwZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNBJTIwNCUwQSUyMCUyMG9mZmxvYWRfb3B0aW1pemVyX2RldmljZSUzQSUyMGNwdSUwQSUyMCUyMG9mZmxvYWRfcGFyYW1fZGV2aWNlJTNBJTIwY3B1JTBBJTIwJTIwemVybzNfaW5pdF9mbGFnJTNBJTIwZmFsc2UlMEElMjAlMjB6ZXJvX3N0YWdlJTNBJTIwMiUwQWRpc3RyaWJ1dGVkX3R5cGUlM0ElMjBERUVQU1BFRUQ=",highlighted:`<span class="hljs-attr">compute_environment:</span> <span class="hljs-string">LOCAL_MACHINE</span>
<span class="hljs-attr">deepspeed_config:</span>
<span class="hljs-attr">gradient_accumulation_steps:</span> <span class="hljs-number">4</span>
<span class="hljs-attr">offload_optimizer_device:</span> <span class="hljs-string">cpu</span>
<span class="hljs-attr">offload_param_device:</span> <span class="hljs-string">cpu</span>
<span class="hljs-attr">zero3_init_flag:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">zero_stage:</span> <span class="hljs-number">2</span>
<span class="hljs-attr">distributed_type:</span> <span class="hljs-string">DEEPSPEED</span>`,wrap:!1}}),Ct=new d({props:{code:"ZXhwb3J0JTIwTU9ERUxfRElSJTNEJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBZXhwb3J0JTIwT1VUUFVUX0RJUiUzRCUyMnBhdGglMjB0byUyMHNhdmUlMjBtb2RlbCUyMiUwQSUwQWFjY2VsZXJhdGUlMjBsYXVuY2glMjB0cmFpbl9jb250cm9sbmV0LnB5JTIwJTVDJTBBJTIwLS1wcmV0cmFpbmVkX21vZGVsX25hbWVfb3JfcGF0aCUzRCUyNE1PREVMX0RJUiUyMCU1QyUwQSUyMC0tb3V0cHV0X2RpciUzRCUyNE9VVFBVVF9ESVIlMjAlNUMlMEElMjAtLWRhdGFzZXRfbmFtZSUzRGZ1c2luZyUyRmZpbGw1MGslMjAlNUMlMjAlMEElMjAtLXRydXN0X3JlbW90ZV9jb2RlJTIwJTVDJTBBJTIwLS1yZXNvbHV0aW9uJTNENTEyJTIwJTVDJTBBJTIwLS12YWxpZGF0aW9uX2ltYWdlJTIwJTIyLiUyRmNvbmRpdGlvbmluZ19pbWFnZV8xLnBuZyUyMiUyMCUyMi4lMkZjb25kaXRpb25pbmdfaW1hZ2VfMi5wbmclMjIlMjAlNUMlMEElMjAtLXZhbGlkYXRpb25fcHJvbXB0JTIwJTIycmVkJTIwY2lyY2xlJTIwd2l0aCUyMGJsdWUlMjBiYWNrZ3JvdW5kJTIyJTIwJTIyY3lhbiUyMGNpcmNsZSUyMHdpdGglMjBicm93biUyMGZsb3JhbCUyMGJhY2tncm91bmQlMjIlMjAlNUMlMEElMjAtLXRyYWluX2JhdGNoX3NpemUlM0QxJTIwJTVDJTBBJTIwLS1ncmFkaWVudF9hY2N1bXVsYXRpb25fc3RlcHMlM0Q0JTIwJTVDJTBBJTIwLS1ncmFkaWVudF9jaGVja3BvaW50aW5nJTIwJTVDJTBBJTIwLS1lbmFibGVfeGZvcm1lcnNfbWVtb3J5X2VmZmljaWVudF9hdHRlbnRpb24lMjAlNUMlMEElMjAtLXNldF9ncmFkc190b19ub25lJTIwJTVDJTBBJTIwLS1taXhlZF9wcmVjaXNpb24lMjBmcDE2JTIwJTVDJTBBJTIwLS1wdXNoX3RvX2h1Yg==",highlighted:`<span class="hljs-built_in">export</span> MODEL_DIR=<span class="hljs-string">&quot;stable-diffusion-v1-5/stable-diffusion-v1-5&quot;</span>
<span class="hljs-built_in">export</span> OUTPUT_DIR=<span class="hljs-string">&quot;path to save model&quot;</span>
accelerate launch train_controlnet.py \\
--pretrained_model_name_or_path=<span class="hljs-variable">$MODEL_DIR</span> \\
--output_dir=<span class="hljs-variable">$OUTPUT_DIR</span> \\
--dataset_name=fusing/fill50k \\
--trust_remote_code \\
--resolution=512 \\
--validation_image <span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span> <span class="hljs-string">&quot;./conditioning_image_2.png&quot;</span> \\
--validation_prompt <span class="hljs-string">&quot;red circle with blue background&quot;</span> <span class="hljs-string">&quot;cyan circle with brown floral background&quot;</span> \\
--train_batch_size=1 \\
--gradient_accumulation_steps=4 \\
--gradient_checkpointing \\
--enable_xformers_memory_efficient_attention \\
--set_grads_to_none \\
--mixed_precision fp16 \\
--push_to_hub`,wrap:!1}}),Vt=new b({props:{title:"추론",local:"추론",headingTag:"h2"}}),Bt=new d({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbkNvbnRyb2xOZXRQaXBlbGluZSUyQyUyMENvbnRyb2xOZXRNb2RlbCUyQyUyMFVuaVBDTXVsdGlzdGVwU2NoZWR1bGVyJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGxvYWRfaW1hZ2UlMEFpbXBvcnQlMjB0b3JjaCUwQSUwQWJhc2VfbW9kZWxfcGF0aCUyMCUzRCUyMCUyMnBhdGglMjB0byUyMG1vZGVsJTIyJTBBY29udHJvbG5ldF9wYXRoJTIwJTNEJTIwJTIycGF0aCUyMHRvJTIwY29udHJvbG5ldCUyMiUwQSUwQWNvbnRyb2xuZXQlMjAlM0QlMjBDb250cm9sTmV0TW9kZWwuZnJvbV9wcmV0cmFpbmVkKGNvbnRyb2xuZXRfcGF0aCUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiklMEFwaXBlJTIwJTNEJTIwU3RhYmxlRGlmZnVzaW9uQ29udHJvbE5ldFBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjBiYXNlX21vZGVsX3BhdGglMkMlMjBjb250cm9sbmV0JTNEY29udHJvbG5ldCUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUwQSklMEElMEElMjMlMjAlRUIlOEQlOTQlMjAlRUIlQjklQTAlRUIlQTUlQjglMjAlRUMlOEElQTQlRUMlQkMlODAlRUMlQTQlODQlRUIlOUYlQUMlRUMlOTklODAlMjAlRUIlQTklOTQlRUIlQUElQTglRUIlQTYlQUMlMjAlRUMlQjUlOUMlRUMlQTAlODElRUQlOTklOTQlRUIlQTElOUMlMjBkaWZmdXNpb24lMjAlRUQlOTQlODQlRUIlQTElOUMlRUMlODQlQjglRUMlOEElQTQlMjAlRUMlODYlOEQlRUIlOEYlODQlMjAlRUMlOTglQUMlRUIlQTYlQUMlRUElQjglQjAlMEFwaXBlLnNjaGVkdWxlciUyMCUzRCUyMFVuaVBDTXVsdGlzdGVwU2NoZWR1bGVyLmZyb21fY29uZmlnKHBpcGUuc2NoZWR1bGVyLmNvbmZpZyklMEElMjMlMjB4Zm9ybWVycyVFQSVCMCU4MCUyMCVFQyU4NCVBNCVFQyVCOSU5OCVFQiU5MCU5OCVFQyVBNyU4MCUyMCVFQyU5NSU4QSVFQyU5QyVCQyVFQiVBOSVCNCUyMCVFQyU5NSU4NCVFQiU5RSU5OCUyMCVFQyVBNCU4NCVFQyU5RCU4NCUyMCVFQyU4MiVBRCVFQyVBMCU5QyVFRCU5NSU5OCVFQSVCOCVCMCUwQXBpcGUuZW5hYmxlX3hmb3JtZXJzX21lbW9yeV9lZmZpY2llbnRfYXR0ZW50aW9uKCklMEElMEFwaXBlLmVuYWJsZV9tb2RlbF9jcHVfb2ZmbG9hZCgpJTBBJTBBY29udHJvbF9pbWFnZSUyMCUzRCUyMGxvYWRfaW1hZ2UoJTIyLiUyRmNvbmRpdGlvbmluZ19pbWFnZV8xLnBuZyUyMiklMEFwcm9tcHQlMjAlM0QlMjAlMjJwYWxlJTIwZ29sZGVuJTIwcm9kJTIwY2lyY2xlJTIwd2l0aCUyMG9sZCUyMGxhY2UlMjBiYWNrZ3JvdW5kJTIyJTBBJTBBJTIzJTIwJUVDJTlEJUI0JUVCJUFGJUI4JUVDJUE3JTgwJTIwJUVDJTgzJTlEJUVDJTg0JUIxJUVEJTk1JTk4JUVBJUI4JUIwJTBBZ2VuZXJhdG9yJTIwJTNEJTIwdG9yY2gubWFudWFsX3NlZWQoMCklMEFpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0JTJDJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDIwJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTIwaW1hZ2UlM0Rjb250cm9sX2ltYWdlKS5pbWFnZXMlNUIwJTVEJTBBJTBBaW1hZ2Uuc2F2ZSglMjIuJTJGb3V0cHV0LnBuZyUyMik=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
<span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> load_image
<span class="hljs-keyword">import</span> torch
base_model_path = <span class="hljs-string">&quot;path to model&quot;</span>
controlnet_path = <span class="hljs-string">&quot;path to controlnet&quot;</span>
controlnet = ControlNetModel.from_pretrained(controlnet_path, torch_dtype=torch.float16)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
base_model_path, controlnet=controlnet, torch_dtype=torch.float16
)
<span class="hljs-comment"># 더 빠른 스케줄러와 메모리 최적화로 diffusion 프로세스 속도 올리기</span>
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
<span class="hljs-comment"># xformers가 설치되지 않으면 아래 줄을 삭제하기</span>
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
control_image = load_image(<span class="hljs-string">&quot;./conditioning_image_1.png&quot;</span>)
prompt = <span class="hljs-string">&quot;pale golden rod circle with old lace background&quot;</span>
<span class="hljs-comment"># 이미지 생성하기</span>
generator = torch.manual_seed(<span class="hljs-number">0</span>)
image = pipe(prompt, num_inference_steps=<span class="hljs-number">20</span>, generator=generator, image=control_image).images[<span class="hljs-number">0</span>]
image.save(<span class="hljs-string">&quot;./output.png&quot;</span>)`,wrap:!1}}),vt=new kl({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/training/controlnet.md"}}),{c(){f=i("meta"),y=s(),J=i("p"),Gt=s(),m(g.$$.fragment),Wt=s(),h=i("p"),h.innerHTML=Ae,Nt=s(),_=i("p"),_.innerHTML=Pe,Et=s(),m(w.$$.fragment),xt=s(),Z=i("p"),Z.textContent=Oe,Ft=s(),m(T.$$.fragment),St=s(),j=i("p"),j.textContent=Ke,Yt=s(),m(R.$$.fragment),Qt=s(),C=i("p"),C.innerHTML=tl,Lt=s(),m(V.$$.fragment),kt=s(),$=i("p"),$.textContent=el,Ht=s(),m(B.$$.fragment),Dt=s(),v=i("p"),v.innerHTML=ll,zt=s(),m(G.$$.fragment),qt=s(),I=i("p"),I.textContent=nl,At=s(),m(X.$$.fragment),Pt=s(),W=i("p"),W.textContent=sl,Ot=s(),m(N.$$.fragment),Kt=s(),m(E.$$.fragment),te=s(),x=i("p"),x.innerHTML=al,ee=s(),F=i("p"),F.innerHTML=il,le=s(),S=i("p"),S.innerHTML=pl,ne=s(),m(Y.$$.fragment),se=s(),Q=i("p"),Q.textContent=ol,ae=s(),m(L.$$.fragment),ie=s(),k=i("p"),k.innerHTML=ml,pe=s(),H=i("p"),H.innerHTML=rl,oe=s(),m(D.$$.fragment),me=s(),z=i("p"),z.textContent=cl,re=s(),q=i("p"),q.innerHTML=ul,ce=s(),A=i("p"),A.textContent=Ml,ue=s(),m(P.$$.fragment),Me=s(),m(O.$$.fragment),Ue=s(),K=i("p"),K.innerHTML=Ul,fe=s(),m(tt.$$.fragment),de=s(),m(et.$$.fragment),be=s(),m(lt.$$.fragment),Je=s(),nt=i("table"),nt.innerHTML=fl,Te=s(),m(st.$$.fragment),ye=s(),at=i("table"),at.innerHTML=dl,ge=s(),m(it.$$.fragment),he=s(),pt=i("p"),pt.textContent=bl,_e=s(),ot=i("ul"),ot.innerHTML=Jl,we=s(),mt=i("p"),mt.textContent=Tl,Ze=s(),m(rt.$$.fragment),je=s(),m(ct.$$.fragment),Re=s(),ut=i("p"),ut.textContent=yl,Ce=s(),Mt=i("ul"),Mt.innerHTML=gl,Ve=s(),m(Ut.$$.fragment),$e=s(),ft=i("p"),ft.innerHTML=hl,Be=s(),m(dt.$$.fragment),ve=s(),bt=i("p"),bt.textContent=_l,Ge=s(),Jt=i("p"),Jt.textContent=wl,Ie=s(),Tt=i("ul"),Tt.innerHTML=Zl,Xe=s(),yt=i("p"),yt.innerHTML=jl,We=s(),gt=i("p"),gt.innerHTML=Rl,Ne=s(),ht=i("p"),ht.textContent=Cl,Ee=s(),m(_t.$$.fragment),xe=s(),wt=i("p"),wt.textContent=Vl,Fe=s(),Zt=i("p"),Zt.innerHTML=$l,Se=s(),jt=i("p"),jt.textContent=Bl,Ye=s(),Rt=i("p"),Rt.innerHTML=vl,Qe=s(),m(Ct.$$.fragment),Le=s(),m(Vt.$$.fragment),ke=s(),$t=i("p"),$t.innerHTML=Gl,He=s(),m(Bt.$$.fragment),De=s(),m(vt.$$.fragment),ze=s(),It=i("p"),this.h()},l(t){const e=Yl("svelte-u9bgzb",document.head);f=p(e,"META",{name:!0,content:!0}),e.forEach(l),y=a(t),J=p(t,"P",{}),Xl(J).forEach(l),Gt=a(t),r(g.$$.fragment,t),Wt=a(t),h=p(t,"P",{"data-svelte-h":!0}),o(h)!=="svelte-9fufis"&&(h.innerHTML=Ae),Nt=a(t),_=p(t,"P",{"data-svelte-h":!0}),o(_)!=="svelte-srp9tb"&&(_.innerHTML=Pe),Et=a(t),r(w.$$.fragment,t),xt=a(t),Z=p(t,"P",{"data-svelte-h":!0}),o(Z)!=="svelte-audt4e"&&(Z.textContent=Oe),Ft=a(t),r(T.$$.fragment,t),St=a(t),j=p(t,"P",{"data-svelte-h":!0}),o(j)!=="svelte-enix0a"&&(j.textContent=Ke),Yt=a(t),r(R.$$.fragment,t),Qt=a(t),C=p(t,"P",{"data-svelte-h":!0}),o(C)!=="svelte-1k8zlp9"&&(C.innerHTML=tl),Lt=a(t),r(V.$$.fragment,t),kt=a(t),$=p(t,"P",{"data-svelte-h":!0}),o($)!=="svelte-1fgpi95"&&($.textContent=el),Ht=a(t),r(B.$$.fragment,t),Dt=a(t),v=p(t,"P",{"data-svelte-h":!0}),o(v)!=="svelte-12bqcqg"&&(v.innerHTML=ll),zt=a(t),r(G.$$.fragment,t),qt=a(t),I=p(t,"P",{"data-svelte-h":!0}),o(I)!=="svelte-wd3dp4"&&(I.textContent=nl),At=a(t),r(X.$$.fragment,t),Pt=a(t),W=p(t,"P",{"data-svelte-h":!0}),o(W)!=="svelte-1gibgaz"&&(W.textContent=sl),Ot=a(t),r(N.$$.fragment,t),Kt=a(t),r(E.$$.fragment,t),te=a(t),x=p(t,"P",{"data-svelte-h":!0}),o(x)!=="svelte-u51kgh"&&(x.innerHTML=al),ee=a(t),F=p(t,"P",{"data-svelte-h":!0}),o(F)!=="svelte-1854nza"&&(F.innerHTML=il),le=a(t),S=p(t,"P",{"data-svelte-h":!0}),o(S)!=="svelte-18vs9m4"&&(S.innerHTML=pl),ne=a(t),r(Y.$$.fragment,t),se=a(t),Q=p(t,"P",{"data-svelte-h":!0}),o(Q)!=="svelte-64o031"&&(Q.textContent=ol),ae=a(t),r(L.$$.fragment,t),ie=a(t),k=p(t,"P",{"data-svelte-h":!0}),o(k)!=="svelte-ky63v0"&&(k.innerHTML=ml),pe=a(t),H=p(t,"P",{"data-svelte-h":!0}),o(H)!=="svelte-1v3g5fv"&&(H.innerHTML=rl),oe=a(t),r(D.$$.fragment,t),me=a(t),z=p(t,"P",{"data-svelte-h":!0}),o(z)!=="svelte-on7i15"&&(z.textContent=cl),re=a(t),q=p(t,"P",{"data-svelte-h":!0}),o(q)!=="svelte-j3jf4w"&&(q.innerHTML=ul),ce=a(t),A=p(t,"P",{"data-svelte-h":!0}),o(A)!=="svelte-ibpfse"&&(A.textContent=Ml),ue=a(t),r(P.$$.fragment,t),Me=a(t),r(O.$$.fragment,t),Ue=a(t),K=p(t,"P",{"data-svelte-h":!0}),o(K)!=="svelte-kn2k8f"&&(K.innerHTML=Ul),fe=a(t),r(tt.$$.fragment,t),de=a(t),r(et.$$.fragment,t),be=a(t),r(lt.$$.fragment,t),Je=a(t),nt=p(t,"TABLE",{"data-svelte-h":!0}),o(nt)!=="svelte-7n8ul8"&&(nt.innerHTML=fl),Te=a(t),r(st.$$.fragment,t),ye=a(t),at=p(t,"TABLE",{"data-svelte-h":!0}),o(at)!=="svelte-197rfee"&&(at.innerHTML=dl),ge=a(t),r(it.$$.fragment,t),he=a(t),pt=p(t,"P",{"data-svelte-h":!0}),o(pt)!=="svelte-1a3ynwi"&&(pt.textContent=bl),_e=a(t),ot=p(t,"UL",{"data-svelte-h":!0}),o(ot)!=="svelte-gud7gs"&&(ot.innerHTML=Jl),we=a(t),mt=p(t,"P",{"data-svelte-h":!0}),o(mt)!=="svelte-fmnd9z"&&(mt.textContent=Tl),Ze=a(t),r(rt.$$.fragment,t),je=a(t),r(ct.$$.fragment,t),Re=a(t),ut=p(t,"P",{"data-svelte-h":!0}),o(ut)!=="svelte-ulemqz"&&(ut.textContent=yl),Ce=a(t),Mt=p(t,"UL",{"data-svelte-h":!0}),o(Mt)!=="svelte-ezl5xe"&&(Mt.innerHTML=gl),Ve=a(t),r(Ut.$$.fragment,t),$e=a(t),ft=p(t,"P",{"data-svelte-h":!0}),o(ft)!=="svelte-m0yrgw"&&(ft.innerHTML=hl),Be=a(t),r(dt.$$.fragment,t),ve=a(t),bt=p(t,"P",{"data-svelte-h":!0}),o(bt)!=="svelte-1bj00p0"&&(bt.textContent=_l),Ge=a(t),Jt=p(t,"P",{"data-svelte-h":!0}),o(Jt)!=="svelte-sh9kz6"&&(Jt.textContent=wl),Ie=a(t),Tt=p(t,"UL",{"data-svelte-h":!0}),o(Tt)!=="svelte-xjm66k"&&(Tt.innerHTML=Zl),Xe=a(t),yt=p(t,"P",{"data-svelte-h":!0}),o(yt)!=="svelte-2hnilk"&&(yt.innerHTML=jl),We=a(t),gt=p(t,"P",{"data-svelte-h":!0}),o(gt)!=="svelte-b5or85"&&(gt.innerHTML=Rl),Ne=a(t),ht=p(t,"P",{"data-svelte-h":!0}),o(ht)!=="svelte-1y0d6k"&&(ht.textContent=Cl),Ee=a(t),r(_t.$$.fragment,t),xe=a(t),wt=p(t,"P",{"data-svelte-h":!0}),o(wt)!=="svelte-1terwo1"&&(wt.textContent=Vl),Fe=a(t),Zt=p(t,"P",{"data-svelte-h":!0}),o(Zt)!=="svelte-1p0c8l1"&&(Zt.innerHTML=$l),Se=a(t),jt=p(t,"P",{"data-svelte-h":!0}),o(jt)!=="svelte-1terwo1"&&(jt.textContent=Bl),Ye=a(t),Rt=p(t,"P",{"data-svelte-h":!0}),o(Rt)!=="svelte-1en0huo"&&(Rt.innerHTML=vl),Qe=a(t),r(Ct.$$.fragment,t),Le=a(t),r(Vt.$$.fragment,t),ke=a(t),$t=p(t,"P",{"data-svelte-h":!0}),o($t)!=="svelte-1erw0pq"&&($t.innerHTML=Gl),He=a(t),r(Bt.$$.fragment,t),De=a(t),r(vt.$$.fragment,t),ze=a(t),It=p(t,"P",{}),Xl(It).forEach(l),this.h()},h(){Wl(f,"name","hf:doc:metadata"),Wl(f,"content",zl)},m(t,e){Ql(document.head,f),n(t,y,e),n(t,J,e),n(t,Gt,e),c(g,t,e),n(t,Wt,e),n(t,h,e),n(t,Nt,e),n(t,_,e),n(t,Et,e),c(w,t,e),n(t,xt,e),n(t,Z,e),n(t,Ft,e),c(T,t,e),n(t,St,e),n(t,j,e),n(t,Yt,e),c(R,t,e),n(t,Qt,e),n(t,C,e),n(t,Lt,e),c(V,t,e),n(t,kt,e),n(t,$,e),n(t,Ht,e),c(B,t,e),n(t,Dt,e),n(t,v,e),n(t,zt,e),c(G,t,e),n(t,qt,e),n(t,I,e),n(t,At,e),c(X,t,e),n(t,Pt,e),n(t,W,e),n(t,Ot,e),c(N,t,e),n(t,Kt,e),c(E,t,e),n(t,te,e),n(t,x,e),n(t,ee,e),n(t,F,e),n(t,le,e),n(t,S,e),n(t,ne,e),c(Y,t,e),n(t,se,e),n(t,Q,e),n(t,ae,e),c(L,t,e),n(t,ie,e),n(t,k,e),n(t,pe,e),n(t,H,e),n(t,oe,e),c(D,t,e),n(t,me,e),n(t,z,e),n(t,re,e),n(t,q,e),n(t,ce,e),n(t,A,e),n(t,ue,e),c(P,t,e),n(t,Me,e),c(O,t,e),n(t,Ue,e),n(t,K,e),n(t,fe,e),c(tt,t,e),n(t,de,e),c(et,t,e),n(t,be,e),c(lt,t,e),n(t,Je,e),n(t,nt,e),n(t,Te,e),c(st,t,e),n(t,ye,e),n(t,at,e),n(t,ge,e),c(it,t,e),n(t,he,e),n(t,pt,e),n(t,_e,e),n(t,ot,e),n(t,we,e),n(t,mt,e),n(t,Ze,e),c(rt,t,e),n(t,je,e),c(ct,t,e),n(t,Re,e),n(t,ut,e),n(t,Ce,e),n(t,Mt,e),n(t,Ve,e),c(Ut,t,e),n(t,$e,e),n(t,ft,e),n(t,Be,e),c(dt,t,e),n(t,ve,e),n(t,bt,e),n(t,Ge,e),n(t,Jt,e),n(t,Ie,e),n(t,Tt,e),n(t,Xe,e),n(t,yt,e),n(t,We,e),n(t,gt,e),n(t,Ne,e),n(t,ht,e),n(t,Ee,e),c(_t,t,e),n(t,xe,e),n(t,wt,e),n(t,Fe,e),n(t,Zt,e),n(t,Se,e),n(t,jt,e),n(t,Ye,e),n(t,Rt,e),n(t,Qe,e),c(Ct,t,e),n(t,Le,e),c(Vt,t,e),n(t,ke,e),n(t,$t,e),n(t,He,e),c(Bt,t,e),n(t,De,e),c(vt,t,e),n(t,ze,e),n(t,It,e),qe=!0},p(t,[e]){const Il={};e&2&&(Il.$$scope={dirty:e,ctx:t}),T.$set(Il)},i(t){qe||(u(g.$$.fragment,t),u(w.$$.fragment,t),u(T.$$.fragment,t),u(R.$$.fragment,t),u(V.$$.fragment,t),u(B.$$.fragment,t),u(G.$$.fragment,t),u(X.$$.fragment,t),u(N.$$.fragment,t),u(E.$$.fragment,t),u(Y.$$.fragment,t),u(L.$$.fragment,t),u(D.$$.fragment,t),u(P.$$.fragment,t),u(O.$$.fragment,t),u(tt.$$.fragment,t),u(et.$$.fragment,t),u(lt.$$.fragment,t),u(st.$$.fragment,t),u(it.$$.fragment,t),u(rt.$$.fragment,t),u(ct.$$.fragment,t),u(Ut.$$.fragment,t),u(dt.$$.fragment,t),u(_t.$$.fragment,t),u(Ct.$$.fragment,t),u(Vt.$$.fragment,t),u(Bt.$$.fragment,t),u(vt.$$.fragment,t),qe=!0)},o(t){M(g.$$.fragment,t),M(w.$$.fragment,t),M(T.$$.fragment,t),M(R.$$.fragment,t),M(V.$$.fragment,t),M(B.$$.fragment,t),M(G.$$.fragment,t),M(X.$$.fragment,t),M(N.$$.fragment,t),M(E.$$.fragment,t),M(Y.$$.fragment,t),M(L.$$.fragment,t),M(D.$$.fragment,t),M(P.$$.fragment,t),M(O.$$.fragment,t),M(tt.$$.fragment,t),M(et.$$.fragment,t),M(lt.$$.fragment,t),M(st.$$.fragment,t),M(it.$$.fragment,t),M(rt.$$.fragment,t),M(ct.$$.fragment,t),M(Ut.$$.fragment,t),M(dt.$$.fragment,t),M(_t.$$.fragment,t),M(Ct.$$.fragment,t),M(Vt.$$.fragment,t),M(Bt.$$.fragment,t),M(vt.$$.fragment,t),qe=!1},d(t){t&&(l(y),l(J),l(Gt),l(Wt),l(h),l(Nt),l(_),l(Et),l(xt),l(Z),l(Ft),l(St),l(j),l(Yt),l(Qt),l(C),l(Lt),l(kt),l($),l(Ht),l(Dt),l(v),l(zt),l(qt),l(I),l(At),l(Pt),l(W),l(Ot),l(Kt),l(te),l(x),l(ee),l(F),l(le),l(S),l(ne),l(se),l(Q),l(ae),l(ie),l(k),l(pe),l(H),l(oe),l(me),l(z),l(re),l(q),l(ce),l(A),l(ue),l(Me),l(Ue),l(K),l(fe),l(de),l(be),l(Je),l(nt),l(Te),l(ye),l(at),l(ge),l(he),l(pt),l(_e),l(ot),l(we),l(mt),l(Ze),l(je),l(Re),l(ut),l(Ce),l(Mt),l(Ve),l($e),l(ft),l(Be),l(ve),l(bt),l(Ge),l(Jt),l(Ie),l(Tt),l(Xe),l(yt),l(We),l(gt),l(Ne),l(ht),l(Ee),l(xe),l(wt),l(Fe),l(Zt),l(Se),l(jt),l(Ye),l(Rt),l(Qe),l(Le),l(ke),l($t),l(He),l(De),l(ze),l(It)),l(f),U(g,t),U(w,t),U(T,t),U(R,t),U(V,t),U(B,t),U(G,t),U(X,t),U(N,t),U(E,t),U(Y,t),U(L,t),U(D,t),U(P,t),U(O,t),U(tt,t),U(et,t),U(lt,t),U(st,t),U(it,t),U(rt,t),U(ct,t),U(Ut,t),U(dt,t),U(_t,t),U(Ct,t),U(Vt,t),U(Bt,t),U(vt,t)}}}const zl='{"title":"ControlNet","local":"controlnet","sections":[{"title":"의존성 설치하기","local":"의존성-설치하기","sections":[],"depth":2},{"title":"원을 채우는 데이터셋","local":"원을-채우는-데이터셋","sections":[],"depth":2},{"title":"학습","local":"학습","sections":[],"depth":2},{"title":"여러개 GPU로 학습하기","local":"여러개-gpu로-학습하기","sections":[],"depth":2},{"title":"예시 결과","local":"예시-결과","sections":[{"title":"배치 사이즈 8로 300 스텝 이후:","local":"배치-사이즈-8로-300-스텝-이후","sections":[],"depth":4},{"title":"배치 사이즈 8로 6000 스텝 이후:","local":"배치-사이즈-8로-6000-스텝-이후","sections":[],"depth":4}],"depth":2},{"title":"16GB GPU에서 학습하기","local":"16gb-gpu에서-학습하기","sections":[],"depth":2},{"title":"12GB GPU에서 학습하기","local":"12gb-gpu에서-학습하기","sections":[],"depth":2},{"title":"8GB GPU에서 학습하기","local":"8gb-gpu에서-학습하기","sections":[],"depth":2},{"title":"추론","local":"추론","sections":[],"depth":2}],"depth":1}';function ql(Xt){return El(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class en extends Fl{constructor(f){super(),Sl(this,f,ql,Dl,Nl,{})}}export{en as component};

Xet Storage Details

Size:
43.5 kB
·
Xet hash:
6f97113e9f0f33b4ad6f586d5c52745f42d7d13bb4e28e3765a801e8287c7399

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