Buckets:
| import{s as Gl,n as Cl,o as vl}from"../chunks/scheduler.6e0d5ff7.js";import{S as Il,i as Sl,g as s,s as a,r as p,E as Xl,h as i,f as n,c as r,j as Dt,u as g,x as c,k as Wl,y as d,a as l,v as m,d as h,t as M,w as y}from"../chunks/index.d7c1b260.js";import{C as J}from"../chunks/CodeBlock.09a08494.js";import{H as w,E as _l}from"../chunks/EditOnGithub.733546da.js";function Rl(jn){let T,Pt,Lt,At,j,Kt,Z,Zn='<code>0.13.0</code> 버전부터 Diffusers는 <a href="https://pytorch.org/get-started/pytorch-2.0/" rel="nofollow">PyTorch 2.0</a>에서의 최신 최적화를 지원합니다. 이는 다음을 포함됩니다.',Ot,B,Bn='<li>momory-efficient attention을 사용한 가속화된 트랜스포머 지원 - <code>xformers</code>같은 추가적인 dependencies 필요 없음</li> <li>추가 성능 향상을 위한 개별 모델에 대한 컴파일 기능 <a href="https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html" rel="nofollow">torch.compile</a> 지원</li>',te,W,ee,G,Wn='가속화된 어텐션 구현과 및 <code>torch.compile()</code>을 사용하기 위해, pip에서 최신 버전의 PyTorch 2.0을 설치되어 있고 diffusers 0.13.0. 버전 이상인지 확인하세요. 아래 설명된 바와 같이, PyTorch 2.0이 활성화되어 있을 때 diffusers는 최적화된 어텐션 프로세서(<a href="https://github.com/huggingface/diffusers/blob/1a5797c6d4491a879ea5285c4efc377664e0332d/src/diffusers/models/attention_processor.py#L798" rel="nofollow"><code>AttnProcessor2_0</code></a>)를 사용합니다.',ne,C,le,v,ae,U,o,Ht,Gn="<strong>가속화된 트랜스포머 구현</strong>",pn,xt,Cn='PyTorch 2.0에는 <a href="https://pytorch.org/docs/master/generated/torch.nn.functional.scaled_dot_product_attention" rel="nofollow"><code>torch.nn.functional.scaled_dot_product_attention</code></a> 함수를 통해 최적화된 memory-efficient attention의 구현이 포함되어 있습니다. 이는 입력 및 GPU 유형에 따라 여러 최적화를 자동으로 활성화합니다. 이는 <a href="https://github.com/facebookresearch/xformers" rel="nofollow">xFormers</a>의 <code>memory_efficient_attention</code>과 유사하지만 기본적으로 PyTorch에 내장되어 있습니다.',gn,Yt,vn="이러한 최적화는 PyTorch 2.0이 설치되어 있고 <code>torch.nn.functional.scaled_dot_product_attention</code>을 사용할 수 있는 경우 Diffusers에서 기본적으로 활성화됩니다. 이를 사용하려면 <code>torch 2.0</code>을 설치하고 파이프라인을 사용하기만 하면 됩니다. 예를 들어:",mn,I,hn,Vt,In="이를 명시적으로 활성화하려면(필수는 아님) 아래와 같이 수행할 수 있습니다.",Mn,S,yn,Qt,Sn='이 실행 과정은 <code>xFormers</code>만큼 빠르고 메모리적으로 효율적이어야 합니다. 자세한 내용은 <a href="#benchmark">벤치마크</a>에서 확인하세요.',bn,Ft,Xn='파이프라인을 보다 deterministic으로 만들거나 파인 튜닝된 모델을 <a href="https://huggingface.co/docs/diffusers/v0.16.0/en/optimization/coreml#how-to-run-stable-diffusion-with-core-ml" rel="nofollow">Core ML</a>과 같은 다른 형식으로 변환해야 하는 경우 바닐라 어텐션 프로세서 (<a href="https://github.com/huggingface/diffusers/blob/1a5797c6d4491a879ea5285c4efc377664e0332d/src/diffusers/models/attention_processor.py#L402" rel="nofollow"><code>AttnProcessor</code></a>)로 되돌릴 수 있습니다. 일반 어텐션 프로세서를 사용하려면 <code>set_default_attn_processor()</code> 함수를 사용할 수 있습니다:',un,X,fn,u,Nt,_n="<strong>torch.compile</strong>",Jn,zt,Rn='추가적인 속도 향상을 위해 새로운 <code>torch.compile</code> 기능을 사용할 수 있습니다. 파이프라인의 UNet은 일반적으로 계산 비용이 가장 크기 때문에 나머지 하위 모델(텍스트 인코더와 VAE)은 그대로 두고 <code>unet</code>을 <code>torch.compile</code>로 래핑합니다. 자세한 내용과 다른 옵션은 <a href="https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html" rel="nofollow">torch 컴파일 문서</a>를 참조하세요.',wn,_,Tn,Et,kn="GPU 유형에 따라 <code>compile()</code>은 가속화된 트랜스포머 최적화를 통해 <strong>5% - 300%</strong>의 <em>추가 성능 향상</em>을 얻을 수 있습니다. 그러나 컴파일은 Ampere(A100, 3090), Ada(4090) 및 Hopper(H100)와 같은 최신 GPU 아키텍처에서 더 많은 성능 향상을 가져올 수 있음을 참고하세요.",Un,$t,Hn="컴파일은 완료하는 데 약간의 시간이 걸리므로, 파이프라인을 한 번 준비한 다음 동일한 유형의 추론 작업을 여러 번 수행해야 하는 상황에 가장 적합합니다. 다른 이미지 크기에서 컴파일된 파이프라인을 호출하면 시간적 비용이 많이 들 수 있는 컴파일 작업이 다시 트리거됩니다.",re,R,se,k,xn='PyTorch 2.0의 효율적인 어텐션 구현과 <code>torch.compile</code>을 사용하여 가장 많이 사용되는 5개의 파이프라인에 대해 다양한 GPU와 배치 크기에 걸쳐 포괄적인 벤치마크를 수행했습니다. 여기서는 <a href="https://github.com/huggingface/diffusers/pull/3313" rel="nofollow"><code>torch.compile()</code>이 최적으로 활용되도록 하는</a> <code>diffusers 0.17.0.dev0</code>을 사용했습니다.',ie,H,ce,x,de,Y,oe,V,pe,Q,ge,F,me,N,he,z,Me,E,ye,$,be,L,ue,q,Yn='PyTorch 2.0 및 <code>torch.compile()</code>로 얻을 수 있는 가능한 속도 향상에 대해, <a href="StableDiffusionPipeline">Stable Diffusion text-to-image pipeline</a>에 대한 상대적인 속도 향상을 보여주는 차트를 5개의 서로 다른 GPU 제품군(배치 크기 4)에 대해 나타냅니다:',fe,D,Vn='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/pt2_benchmarks/t2i_speedup.png" alt="t2i_speedup"/>',Je,P,Qn=`To give you an even better idea of how this speed-up holds for the other pipelines presented above, consider the following | |
| plot that shows the benchmarking numbers from an A100 across three different batch sizes | |
| (with PyTorch 2.0 nightly and <code>torch.compile()</code>): | |
| 이 속도 향상이 위에 제시된 다른 파이프라인에 대해서도 어떻게 유지되는지 더 잘 이해하기 위해, 세 가지의 다른 배치 크기에 걸쳐 A100의 벤치마킹(PyTorch 2.0 nightly 및 \`torch.compile() 사용) 수치를 보여주는 차트를 보입니다:`,we,A,Fn='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/pt2_benchmarks/a100_numbers.png" alt="a100_numbers"/>',Te,K,Nn="<em>(위 차트의 벤치마크 메트릭은 <strong>초당 iteration 수(iterations/second)</strong>입니다)</em>",Ue,O,zn="그러나 투명성을 위해 모든 벤치마킹 수치를 공개합니다!",je,tt,En="다음 표들에서는, <strong><em>초당 처리되는 iteration</em></strong> 수 측면에서의 결과를 보여줍니다.",Ze,et,$n="### A100 (batch size: 1)",Be,nt,Ln='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">21.66</td> <td align="center">23.13</td> <td align="center">44.03</td> <td align="center">49.74</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">21.81</td> <td align="center">22.40</td> <td align="center">43.92</td> <td align="center">46.32</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">22.24</td> <td align="center">23.23</td> <td align="center">43.76</td> <td align="center">49.25</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">15.02</td> <td align="center">15.82</td> <td align="center">32.13</td> <td align="center">36.08</td></tr> <tr><td align="center">IF</td> <td align="center">20.21 / <br/>13.84 / <br/>24.00</td> <td align="center">20.12 / <br/>13.70 / <br/>24.03</td> <td align="center">❌</td> <td align="center">97.34 / <br/>27.23 / <br/>111.66</td></tr></tbody>',We,lt,qn="### A100 (batch size: 4)",Ge,at,Dn='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">11.6</td> <td align="center">13.12</td> <td align="center">14.62</td> <td align="center">17.27</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">11.47</td> <td align="center">13.06</td> <td align="center">14.66</td> <td align="center">17.25</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">11.67</td> <td align="center">13.31</td> <td align="center">14.88</td> <td align="center">17.48</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">8.28</td> <td align="center">9.38</td> <td align="center">10.51</td> <td align="center">12.41</td></tr> <tr><td align="center">IF</td> <td align="center">25.02</td> <td align="center">18.04</td> <td align="center">❌</td> <td align="center">48.47</td></tr></tbody>',Ce,rt,Pn="### A100 (batch size: 16)",ve,st,An='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">3.04</td> <td align="center">3.6</td> <td align="center">3.83</td> <td align="center">4.68</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">2.98</td> <td align="center">3.58</td> <td align="center">3.83</td> <td align="center">4.67</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">3.04</td> <td align="center">3.66</td> <td align="center">3.9</td> <td align="center">4.76</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">2.15</td> <td align="center">2.58</td> <td align="center">2.74</td> <td align="center">3.35</td></tr> <tr><td align="center">IF</td> <td align="center">8.78</td> <td align="center">9.82</td> <td align="center">❌</td> <td align="center">16.77</td></tr></tbody>',Ie,it,Kn="### V100 (batch size: 1)",Se,ct,On='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">18.99</td> <td align="center">19.14</td> <td align="center">20.95</td> <td align="center">22.17</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">18.56</td> <td align="center">19.18</td> <td align="center">20.95</td> <td align="center">22.11</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">19.14</td> <td align="center">19.06</td> <td align="center">21.08</td> <td align="center">22.20</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">13.48</td> <td align="center">13.93</td> <td align="center">15.18</td> <td align="center">15.88</td></tr> <tr><td align="center">IF</td> <td align="center">20.01 / <br/>9.08 / <br/>23.34</td> <td align="center">19.79 / <br/>8.98 / <br/>24.10</td> <td align="center">❌</td> <td align="center">55.75 / <br/>11.57 / <br/>57.67</td></tr></tbody>',Xe,dt,tl="### V100 (batch size: 4)",_e,ot,el='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">5.96</td> <td align="center">5.89</td> <td align="center">6.83</td> <td align="center">6.86</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">5.90</td> <td align="center">5.91</td> <td align="center">6.81</td> <td align="center">6.82</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">5.99</td> <td align="center">6.03</td> <td align="center">6.93</td> <td align="center">6.95</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">4.26</td> <td align="center">4.29</td> <td align="center">4.92</td> <td align="center">4.93</td></tr> <tr><td align="center">IF</td> <td align="center">15.41</td> <td align="center">14.76</td> <td align="center">❌</td> <td align="center">22.95</td></tr></tbody>',Re,pt,nl="### V100 (batch size: 16)",ke,gt,ll='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">1.66</td> <td align="center">1.66</td> <td align="center">1.92</td> <td align="center">1.90</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">1.65</td> <td align="center">1.65</td> <td align="center">1.91</td> <td align="center">1.89</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">1.69</td> <td align="center">1.69</td> <td align="center">1.95</td> <td align="center">1.93</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">1.19</td> <td align="center">1.19</td> <td align="center">OOM after warmup</td> <td align="center">1.36</td></tr> <tr><td align="center">IF</td> <td align="center">5.43</td> <td align="center">5.29</td> <td align="center">❌</td> <td align="center">7.06</td></tr></tbody>',He,mt,al="### T4 (batch size: 1)",xe,ht,rl='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">6.9</td> <td align="center">6.95</td> <td align="center">7.3</td> <td align="center">7.56</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">6.84</td> <td align="center">6.99</td> <td align="center">7.04</td> <td align="center">7.55</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">6.91</td> <td align="center">6.7</td> <td align="center">7.01</td> <td align="center">7.37</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">4.89</td> <td align="center">4.86</td> <td align="center">5.35</td> <td align="center">5.48</td></tr> <tr><td align="center">IF</td> <td align="center">17.42 / <br/>2.47 / <br/>18.52</td> <td align="center">16.96 / <br/>2.45 / <br/>18.69</td> <td align="center">❌</td> <td align="center">24.63 / <br/>2.47 / <br/>23.39</td></tr></tbody>',Ye,Mt,sl="### T4 (batch size: 4)",Ve,yt,il='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">1.79</td> <td align="center">1.79</td> <td align="center">2.03</td> <td align="center">1.99</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">1.77</td> <td align="center">1.77</td> <td align="center">2.05</td> <td align="center">2.04</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">1.81</td> <td align="center">1.82</td> <td align="center">2.09</td> <td align="center">2.09</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">1.34</td> <td align="center">1.27</td> <td align="center">1.47</td> <td align="center">1.46</td></tr> <tr><td align="center">IF</td> <td align="center">5.79</td> <td align="center">5.61</td> <td align="center">❌</td> <td align="center">7.39</td></tr></tbody>',Qe,bt,cl="### T4 (batch size: 16)",Fe,ut,dl='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">2.34s</td> <td align="center">2.30s</td> <td align="center">OOM after 2nd iteration</td> <td align="center">1.99s</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">2.35s</td> <td align="center">2.31s</td> <td align="center">OOM after warmup</td> <td align="center">2.00s</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">2.30s</td> <td align="center">2.26s</td> <td align="center">OOM after 2nd iteration</td> <td align="center">1.95s</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">OOM after 2nd iteration</td> <td align="center">OOM after 2nd iteration</td> <td align="center">OOM after warmup</td> <td align="center">OOM after warmup</td></tr> <tr><td align="center">IF *</td> <td align="center">1.44</td> <td align="center">1.44</td> <td align="center">❌</td> <td align="center">1.94</td></tr></tbody>',Ne,ft,ol="### RTX 3090 (batch size: 1)",ze,Jt,pl='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">22.56</td> <td align="center">22.84</td> <td align="center">23.84</td> <td align="center">25.69</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">22.25</td> <td align="center">22.61</td> <td align="center">24.1</td> <td align="center">25.83</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">22.22</td> <td align="center">22.54</td> <td align="center">24.26</td> <td align="center">26.02</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">16.03</td> <td align="center">16.33</td> <td align="center">17.38</td> <td align="center">18.56</td></tr> <tr><td align="center">IF</td> <td align="center">27.08 / <br/>9.07 / <br/>31.23</td> <td align="center">26.75 / <br/>8.92 / <br/>31.47</td> <td align="center">❌</td> <td align="center">68.08 / <br/>11.16 / <br/>65.29</td></tr></tbody>',Ee,wt,gl="### RTX 3090 (batch size: 4)",$e,Tt,ml='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">6.46</td> <td align="center">6.35</td> <td align="center">7.29</td> <td align="center">7.3</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">6.33</td> <td align="center">6.27</td> <td align="center">7.31</td> <td align="center">7.26</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">6.47</td> <td align="center">6.4</td> <td align="center">7.44</td> <td align="center">7.39</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">4.59</td> <td align="center">4.54</td> <td align="center">5.27</td> <td align="center">5.26</td></tr> <tr><td align="center">IF</td> <td align="center">16.81</td> <td align="center">16.62</td> <td align="center">❌</td> <td align="center">21.57</td></tr></tbody>',Le,Ut,hl="### RTX 3090 (batch size: 16)",qe,jt,Ml='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">1.7</td> <td align="center">1.69</td> <td align="center">1.93</td> <td align="center">1.91</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">1.68</td> <td align="center">1.67</td> <td align="center">1.93</td> <td align="center">1.9</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">1.72</td> <td align="center">1.71</td> <td align="center">1.97</td> <td align="center">1.94</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">1.23</td> <td align="center">1.22</td> <td align="center">1.4</td> <td align="center">1.38</td></tr> <tr><td align="center">IF</td> <td align="center">5.01</td> <td align="center">5.00</td> <td align="center">❌</td> <td align="center">6.33</td></tr></tbody>',De,Zt,yl="### RTX 4090 (batch size: 1)",Pe,Bt,bl='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">40.5</td> <td align="center">41.89</td> <td align="center">44.65</td> <td align="center">49.81</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">40.39</td> <td align="center">41.95</td> <td align="center">44.46</td> <td align="center">49.8</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">40.51</td> <td align="center">41.88</td> <td align="center">44.58</td> <td align="center">49.72</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">29.27</td> <td align="center">30.29</td> <td align="center">32.26</td> <td align="center">36.03</td></tr> <tr><td align="center">IF</td> <td align="center">69.71 / <br/>18.78 / <br/>85.49</td> <td align="center">69.13 / <br/>18.80 / <br/>85.56</td> <td align="center">❌</td> <td align="center">124.60 / <br/>26.37 / <br/>138.79</td></tr></tbody>',Ae,Wt,ul="### RTX 4090 (batch size: 4)",Ke,Gt,fl='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">12.62</td> <td align="center">12.84</td> <td align="center">15.32</td> <td align="center">15.59</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">12.61</td> <td align="center">12,.79</td> <td align="center">15.35</td> <td align="center">15.66</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">12.65</td> <td align="center">12.81</td> <td align="center">15.3</td> <td align="center">15.58</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">9.1</td> <td align="center">9.25</td> <td align="center">11.03</td> <td align="center">11.22</td></tr> <tr><td align="center">IF</td> <td align="center">31.88</td> <td align="center">31.14</td> <td align="center">❌</td> <td align="center">43.92</td></tr></tbody>',Oe,Ct,Jl="### RTX 4090 (batch size: 16)",tn,vt,wl='<thead><tr><th align="center"><strong>Pipeline</strong></th> <th align="center"><strong>torch 2.0 - <br/>no compile</strong></th> <th align="center"><strong>torch nightly - <br/>no compile</strong></th> <th align="center"><strong>torch 2.0 - <br/>compile</strong></th> <th align="center"><strong>torch nightly - <br/>compile</strong></th></tr></thead> <tbody><tr><td align="center">SD - txt2img</td> <td align="center">3.17</td> <td align="center">3.2</td> <td align="center">3.84</td> <td align="center">3.85</td></tr> <tr><td align="center">SD - img2img</td> <td align="center">3.16</td> <td align="center">3.2</td> <td align="center">3.84</td> <td align="center">3.85</td></tr> <tr><td align="center">SD - inpaint</td> <td align="center">3.17</td> <td align="center">3.2</td> <td align="center">3.85</td> <td align="center">3.85</td></tr> <tr><td align="center">SD - controlnet</td> <td align="center">2.23</td> <td align="center">2.3</td> <td align="center">2.7</td> <td align="center">2.75</td></tr> <tr><td align="center">IF</td> <td align="center">9.26</td> <td align="center">9.2</td> <td align="center">❌</td> <td align="center">13.31</td></tr></tbody>',en,It,Tl="## 참고",nn,St,Ul='<li>Follow <a href="https://github.com/huggingface/diffusers/pull/3313" rel="nofollow">this PR</a> for more details on the environment used for conducting the benchmarks.</li> <li>For the IF pipeline and batch sizes > 1, we only used a batch size of >1 in the first IF pipeline for text-to-image generation and NOT for upscaling. So, that means the two upscaling pipelines received a batch size of 1.</li>',ln,Xt,jl='<em>Thanks to <a href="https://github.com/Chillee" rel="nofollow">Horace He</a> from the PyTorch team for their support in improving our support of <code>torch.compile()</code> in Diffusers.</em>',an,_t,Zl='<li>벤치마크 수행에 사용된 환경에 대한 자세한 내용은 <a href="https://github.com/huggingface/diffusers/pull/3313" rel="nofollow">이 PR</a>을 참조하세요.</li> <li>IF 파이프라인와 배치 크기 > 1의 경우 첫 번째 IF 파이프라인에서 text-to-image 생성을 위한 배치 크기 > 1만 사용했으며 업스케일링에는 사용하지 않았습니다. 즉, 두 개의 업스케일링 파이프라인이 배치 크기 1임을 의미합니다.</li>',rn,Rt,Bl='<em>Diffusers에서 <code>torch.compile()</code> 지원을 개선하는 데 도움을 준 PyTorch 팀의 <a href="https://github.com/Chillee" rel="nofollow">Horace He</a>에게 감사드립니다.</em>',sn,kt,cn,qt,dn;return j=new w({props:{title:"Diffusers에서의 PyTorch 2.0 가속화 지원",local:"diffusers에서의-pytorch-20-가속화-지원",headingTag:"h1"}}),W=new w({props:{title:"설치",local:"설치",headingTag:"h2"}}),C=new J({props:{code:"cGlwJTIwaW5zdGFsbCUyMC0tdXBncmFkZSUyMHRvcmNoJTIwZGlmZnVzZXJz",highlighted:"pip install --upgrade torch diffusers",wrap:!1}}),v=new w({props:{title:"가속화된 트랜스포머와 torch.compile 사용하기.",local:"가속화된-트랜스포머와-torchcompile-사용하기",headingTag:"h2"}}),I=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEElMEFwaXBlJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMnJ1bndheW1sJTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGUlMjAlM0QlMjBwaXBlLnRvKCUyMmN1ZGElMjIpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyYSUyMHBob3RvJTIwb2YlMjBhbiUyMGFzdHJvbmF1dCUyMHJpZGluZyUyMGElMjBob3JzZSUyMG9uJTIwbWFycyUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZShwcm9tcHQpLmltYWdlcyU1QjAlNUQ=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| pipe = DiffusionPipeline.from_pretrained(<span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16) | |
| pipe = pipe.to(<span class="hljs-string">"cuda"</span>) | |
| prompt = <span class="hljs-string">"a photo of an astronaut riding a horse on mars"</span> | |
| image = pipe(prompt).images[<span class="hljs-number">0</span>]`,wrap:!1}}),S=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEElMkIlMjBmcm9tJTIwZGlmZnVzZXJzLm1vZGVscy5hdHRlbnRpb25fcHJvY2Vzc29yJTIwaW1wb3J0JTIwQXR0blByb2Nlc3NvcjJfMCUwQSUwQXBpcGUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIycnVud2F5bWwlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIpJTBBJTJCJTIwcGlwZS51bmV0LnNldF9hdHRuX3Byb2Nlc3NvcihBdHRuUHJvY2Vzc29yMl8wKCkpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyYSUyMHBob3RvJTIwb2YlMjBhbiUyMGFzdHJvbmF1dCUyMHJpZGluZyUyMGElMjBob3JzZSUyMG9uJTIwbWFycyUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZShwcm9tcHQpLmltYWdlcyU1QjAlNUQ=",highlighted:`import torch | |
| from diffusers import DiffusionPipeline | |
| <span class="hljs-addition">+ from diffusers.models.attention_processor import AttnProcessor2_0</span> | |
| pipe = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16).to("cuda") | |
| <span class="hljs-addition">+ pipe.unet.set_attn_processor(AttnProcessor2_0())</span> | |
| prompt = "a photo of an astronaut riding a horse on mars" | |
| image = pipe(prompt).images[0]`,wrap:!1}}),X=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEFmcm9tJTIwZGlmZnVzZXJzLm1vZGVscy5hdHRlbnRpb25fcHJvY2Vzc29yJTIwaW1wb3J0JTIwQXR0blByb2Nlc3NvciUwQSUwQXBpcGUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIycnVud2F5bWwlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZS51bmV0LnNldF9kZWZhdWx0X2F0dG5fcHJvY2Vzc29yKCklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJhJTIwcGhvdG8lMjBvZiUyMGFuJTIwYXN0cm9uYXV0JTIwcmlkaW5nJTIwYSUyMGhvcnNlJTIwb24lMjBtYXJzJTIyJTBBaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCkuaW1hZ2VzJTVCMCU1RA==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| <span class="hljs-keyword">from</span> diffusers.models.attention_processor <span class="hljs-keyword">import</span> AttnProcessor | |
| pipe = DiffusionPipeline.from_pretrained(<span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span>, torch_dtype=torch.float16).to(<span class="hljs-string">"cuda"</span>) | |
| pipe.unet.set_default_attn_processor() | |
| prompt = <span class="hljs-string">"a photo of an astronaut riding a horse on mars"</span> | |
| image = pipe(prompt).images[<span class="hljs-number">0</span>]`,wrap:!1}}),_=new J({props:{code:"cGlwZS51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnVuZXQlMkMlMjBtb2RlJTNEJTIycmVkdWNlLW92ZXJoZWFkJTIyJTJDJTIwZnVsbGdyYXBoJTNEVHJ1ZSklMEFpbWFnZXMlMjAlM0QlMjBwaXBlKHByb21wdCUyQyUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0RzdGVwcyUyQyUyMG51bV9pbWFnZXNfcGVyX3Byb21wdCUzRGJhdGNoX3NpemUpLmltYWdlcw==",highlighted:`pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| images = pipe(prompt, num_inference_steps=steps, num_images_per_prompt=batch_size).images`,wrap:!1}}),R=new w({props:{title:"벤치마크",local:"벤치마크",headingTag:"h2"}}),H=new w({props:{title:"벤치마킹 코드",local:"벤치마킹-코드",headingTag:"h3"}}),x=new w({props:{title:"Stable Diffusion text-to-image",local:"stable-diffusion-text-to-image",headingTag:"h4"}}),Y=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBaW1wb3J0JTIwdG9yY2glMEElMEFwYXRoJTIwJTNEJTIwJTIycnVud2F5bWwlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMEElMEFydW5fY29tcGlsZSUyMCUzRCUyMFRydWUlMjAlMjAlMjMlMjBTZXQlMjBUcnVlJTIwJTJGJTIwRmFsc2UlMEElMEFwaXBlJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKHBhdGglMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpJTBBcGlwZSUyMCUzRCUyMHBpcGUudG8oJTIyY3VkYSUyMiklMEFwaXBlLnVuZXQudG8obWVtb3J5X2Zvcm1hdCUzRHRvcmNoLmNoYW5uZWxzX2xhc3QpJTBBJTBBaWYlMjBydW5fY29tcGlsZSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KCUyMlJ1biUyMHRvcmNoJTIwY29tcGlsZSUyMiklMEElMjAlMjAlMjAlMjBwaXBlLnVuZXQlMjAlM0QlMjB0b3JjaC5jb21waWxlKHBpcGUudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmdoaWJsaSUyMHN0eWxlJTJDJTIwYSUyMGZhbnRhc3klMjBsYW5kc2NhcGUlMjB3aXRoJTIwY2FzdGxlcyUyMiUwQSUwQWZvciUyMF8lMjBpbiUyMHJhbmdlKDMpJTNBJTBBJTIwJTIwJTIwJTIwaW1hZ2VzJTIwJTNEJTIwcGlwZShwcm9tcHQlM0Rwcm9tcHQpLmltYWdlcw==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| <span class="hljs-keyword">import</span> torch | |
| path = <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span> | |
| run_compile = <span class="hljs-literal">True</span> <span class="hljs-comment"># Set True / False</span> | |
| pipe = DiffusionPipeline.from_pretrained(path, torch_dtype=torch.float16) | |
| pipe = pipe.to(<span class="hljs-string">"cuda"</span>) | |
| pipe.unet.to(memory_format=torch.channels_last) | |
| <span class="hljs-keyword">if</span> run_compile: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">"Run torch compile"</span>) | |
| pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| prompt = <span class="hljs-string">"ghibli style, a fantasy landscape with castles"</span> | |
| <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">3</span>): | |
| images = pipe(prompt=prompt).images`,wrap:!1}}),V=new w({props:{title:"Stable Diffusion image-to-image",local:"stable-diffusion-image-to-image",headingTag:"h4"}}),Q=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbkltZzJJbWdQaXBlbGluZSUwQWltcG9ydCUyMHJlcXVlc3RzJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwaW8lMjBpbXBvcnQlMjBCeXRlc0lPJTBBJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24lMkZtYWluJTJGYXNzZXRzJTJGc3RhYmxlLXNhbXBsZXMlMkZpbWcyaW1nJTJGc2tldGNoLW1vdW50YWlucy1pbnB1dC5qcGclMjIlMEElMEFyZXNwb25zZSUyMCUzRCUyMHJlcXVlc3RzLmdldCh1cmwpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMGluaXRfaW1hZ2UucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQSUwQXBhdGglMjAlM0QlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUwQSUwQXJ1bl9jb21waWxlJTIwJTNEJTIwVHJ1ZSUyMCUyMCUyMyUyMFNldCUyMFRydWUlMjAlMkYlMjBGYWxzZSUwQSUwQXBpcGUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25JbWcySW1nUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKHBhdGglMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpJTBBcGlwZSUyMCUzRCUyMHBpcGUudG8oJTIyY3VkYSUyMiklMEFwaXBlLnVuZXQudG8obWVtb3J5X2Zvcm1hdCUzRHRvcmNoLmNoYW5uZWxzX2xhc3QpJTBBJTBBaWYlMjBydW5fY29tcGlsZSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KCUyMlJ1biUyMHRvcmNoJTIwY29tcGlsZSUyMiklMEElMjAlMjAlMjAlMjBwaXBlLnVuZXQlMjAlM0QlMjB0b3JjaC5jb21waWxlKHBpcGUudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmdoaWJsaSUyMHN0eWxlJTJDJTIwYSUyMGZhbnRhc3klMjBsYW5kc2NhcGUlMjB3aXRoJTIwY2FzdGxlcyUyMiUwQSUwQWZvciUyMF8lMjBpbiUyMHJhbmdlKDMpJTNBJTBBJTIwJTIwJTIwJTIwaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCUzRHByb21wdCUyQyUyMGltYWdlJTNEaW5pdF9pbWFnZSkuaW1hZ2VzJTVCMCU1RA==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionImg2ImgPipeline | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <span class="hljs-keyword">from</span> io <span class="hljs-keyword">import</span> BytesIO | |
| url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| init_image = init_image.resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| path = <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span> | |
| run_compile = <span class="hljs-literal">True</span> <span class="hljs-comment"># Set True / False</span> | |
| pipe = StableDiffusionImg2ImgPipeline.from_pretrained(path, torch_dtype=torch.float16) | |
| pipe = pipe.to(<span class="hljs-string">"cuda"</span>) | |
| pipe.unet.to(memory_format=torch.channels_last) | |
| <span class="hljs-keyword">if</span> run_compile: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">"Run torch compile"</span>) | |
| pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| prompt = <span class="hljs-string">"ghibli style, a fantasy landscape with castles"</span> | |
| <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">3</span>): | |
| image = pipe(prompt=prompt, image=init_image).images[<span class="hljs-number">0</span>]`,wrap:!1}}),F=new w({props:{title:"Stable Diffusion - inpainting",local:"stable-diffusion---inpainting",headingTag:"h4"}}),N=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbklucGFpbnRQaXBlbGluZSUwQWltcG9ydCUyMHJlcXVlc3RzJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwaW8lMjBpbXBvcnQlMjBCeXRlc0lPJTBBJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24lMkZtYWluJTJGYXNzZXRzJTJGc3RhYmxlLXNhbXBsZXMlMkZpbWcyaW1nJTJGc2tldGNoLW1vdW50YWlucy1pbnB1dC5qcGclMjIlMEElMEFkZWYlMjBkb3dubG9hZF9pbWFnZSh1cmwpJTNBJTBBJTIwJTIwJTIwJTIwcmVzcG9uc2UlMjAlM0QlMjByZXF1ZXN0cy5nZXQodXJsKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBJTBBJTBBaW1nX3VybCUyMCUzRCUyMCUyMmh0dHBzJTNBJTJGJTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRkNvbXBWaXMlMkZsYXRlbnQtZGlmZnVzaW9uJTJGbWFpbiUyRmRhdGElMkZpbnBhaW50aW5nX2V4YW1wbGVzJTJGb3ZlcnR1cmUtY3JlYXRpb25zLTVzSTZmUWdZSXVvLnBuZyUyMiUwQW1hc2tfdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRmxhdGVudC1kaWZmdXNpb24lMkZtYWluJTJGZGF0YSUyRmlucGFpbnRpbmdfZXhhbXBsZXMlMkZvdmVydHVyZS1jcmVhdGlvbnMtNXNJNmZRZ1lJdW9fbWFzay5wbmclMjIlMEElMEFpbml0X2ltYWdlJTIwJTNEJTIwZG93bmxvYWRfaW1hZ2UoaW1nX3VybCkucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQW1hc2tfaW1hZ2UlMjAlM0QlMjBkb3dubG9hZF9pbWFnZShtYXNrX3VybCkucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQSUwQXBhdGglMjAlM0QlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24taW5wYWludGluZyUyMiUwQSUwQXJ1bl9jb21waWxlJTIwJTNEJTIwVHJ1ZSUyMCUyMCUyMyUyMFNldCUyMFRydWUlMjAlMkYlMjBGYWxzZSUwQSUwQXBpcGUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25JbnBhaW50UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKHBhdGglMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpJTBBcGlwZSUyMCUzRCUyMHBpcGUudG8oJTIyY3VkYSUyMiklMEFwaXBlLnVuZXQudG8obWVtb3J5X2Zvcm1hdCUzRHRvcmNoLmNoYW5uZWxzX2xhc3QpJTBBJTBBaWYlMjBydW5fY29tcGlsZSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KCUyMlJ1biUyMHRvcmNoJTIwY29tcGlsZSUyMiklMEElMjAlMjAlMjAlMjBwaXBlLnVuZXQlMjAlM0QlMjB0b3JjaC5jb21waWxlKHBpcGUudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmdoaWJsaSUyMHN0eWxlJTJDJTIwYSUyMGZhbnRhc3klMjBsYW5kc2NhcGUlMjB3aXRoJTIwY2FzdGxlcyUyMiUwQSUwQWZvciUyMF8lMjBpbiUyMHJhbmdlKDMpJTNBJTBBJTIwJTIwJTIwJTIwaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCUzRHByb21wdCUyQyUyMGltYWdlJTNEaW5pdF9pbWFnZSUyQyUyMG1hc2tfaW1hZ2UlM0RtYXNrX2ltYWdlKS5pbWFnZXMlNUIwJTVE",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionInpaintPipeline | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <span class="hljs-keyword">from</span> io <span class="hljs-keyword">import</span> BytesIO | |
| url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">download_image</span>(<span class="hljs-params">url</span>): | |
| response = requests.get(url) | |
| <span class="hljs-keyword">return</span> Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| img_url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"</span> | |
| mask_url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"</span> | |
| init_image = download_image(img_url).resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| mask_image = download_image(mask_url).resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| path = <span class="hljs-string">"runwayml/stable-diffusion-inpainting"</span> | |
| run_compile = <span class="hljs-literal">True</span> <span class="hljs-comment"># Set True / False</span> | |
| pipe = StableDiffusionInpaintPipeline.from_pretrained(path, torch_dtype=torch.float16) | |
| pipe = pipe.to(<span class="hljs-string">"cuda"</span>) | |
| pipe.unet.to(memory_format=torch.channels_last) | |
| <span class="hljs-keyword">if</span> run_compile: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">"Run torch compile"</span>) | |
| pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| prompt = <span class="hljs-string">"ghibli style, a fantasy landscape with castles"</span> | |
| <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">3</span>): | |
| image = pipe(prompt=prompt, image=init_image, mask_image=mask_image).images[<span class="hljs-number">0</span>]`,wrap:!1}}),z=new w({props:{title:"ControlNet",local:"controlnet",headingTag:"h4"}}),E=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbkNvbnRyb2xOZXRQaXBlbGluZSUyQyUyMENvbnRyb2xOZXRNb2RlbCUwQWltcG9ydCUyMHJlcXVlc3RzJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwaW8lMjBpbXBvcnQlMjBCeXRlc0lPJTBBJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24lMkZtYWluJTJGYXNzZXRzJTJGc3RhYmxlLXNhbXBsZXMlMkZpbWcyaW1nJTJGc2tldGNoLW1vdW50YWlucy1pbnB1dC5qcGclMjIlMEElMEFyZXNwb25zZSUyMCUzRCUyMHJlcXVlc3RzLmdldCh1cmwpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMGluaXRfaW1hZ2UucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQSUwQXBhdGglMjAlM0QlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUwQSUwQXJ1bl9jb21waWxlJTIwJTNEJTIwVHJ1ZSUyMCUyMCUyMyUyMFNldCUyMFRydWUlMjAlMkYlMjBGYWxzZSUwQWNvbnRyb2xuZXQlMjAlM0QlMjBDb250cm9sTmV0TW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmxsbHlhc3ZpZWwlMkZzZC1jb250cm9sbmV0LWNhbm55JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGUlMjAlM0QlMjBTdGFibGVEaWZmdXNpb25Db250cm9sTmV0UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMHBhdGglMkMlMjBjb250cm9sbmV0JTNEY29udHJvbG5ldCUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUwQSklMEElMEFwaXBlJTIwJTNEJTIwcGlwZS50byglMjJjdWRhJTIyKSUwQXBpcGUudW5ldC50byhtZW1vcnlfZm9ybWF0JTNEdG9yY2guY2hhbm5lbHNfbGFzdCklMEFwaXBlLmNvbnRyb2xuZXQudG8obWVtb3J5X2Zvcm1hdCUzRHRvcmNoLmNoYW5uZWxzX2xhc3QpJTBBJTBBaWYlMjBydW5fY29tcGlsZSUzQSUwQSUyMCUyMCUyMCUyMHByaW50KCUyMlJ1biUyMHRvcmNoJTIwY29tcGlsZSUyMiklMEElMjAlMjAlMjAlMjBwaXBlLnVuZXQlMjAlM0QlMjB0b3JjaC5jb21waWxlKHBpcGUudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUyMCUyMCUyMCUyMHBpcGUuY29udHJvbG5ldCUyMCUzRCUyMHRvcmNoLmNvbXBpbGUocGlwZS5jb250cm9sbmV0JTJDJTIwbW9kZSUzRCUyMnJlZHVjZS1vdmVyaGVhZCUyMiUyQyUyMGZ1bGxncmFwaCUzRFRydWUpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyZ2hpYmxpJTIwc3R5bGUlMkMlMjBhJTIwZmFudGFzeSUyMGxhbmRzY2FwZSUyMHdpdGglMjBjYXN0bGVzJTIyJTBBJTBBZm9yJTIwXyUyMGluJTIwcmFuZ2UoMyklM0ElMEElMjAlMjAlMjAlMjBpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0JTNEcHJvbXB0JTJDJTIwaW1hZ2UlM0Rpbml0X2ltYWdlKS5pbWFnZXMlNUIwJTVE",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> StableDiffusionControlNetPipeline, ControlNetModel | |
| <span class="hljs-keyword">import</span> requests | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image | |
| <span class="hljs-keyword">from</span> io <span class="hljs-keyword">import</span> BytesIO | |
| url = <span class="hljs-string">"https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"</span> | |
| response = requests.get(url) | |
| init_image = Image.<span class="hljs-built_in">open</span>(BytesIO(response.content)).convert(<span class="hljs-string">"RGB"</span>) | |
| init_image = init_image.resize((<span class="hljs-number">512</span>, <span class="hljs-number">512</span>)) | |
| path = <span class="hljs-string">"runwayml/stable-diffusion-v1-5"</span> | |
| run_compile = <span class="hljs-literal">True</span> <span class="hljs-comment"># Set True / False</span> | |
| controlnet = ControlNetModel.from_pretrained(<span class="hljs-string">"lllyasviel/sd-controlnet-canny"</span>, torch_dtype=torch.float16) | |
| pipe = StableDiffusionControlNetPipeline.from_pretrained( | |
| path, controlnet=controlnet, torch_dtype=torch.float16 | |
| ) | |
| pipe = pipe.to(<span class="hljs-string">"cuda"</span>) | |
| pipe.unet.to(memory_format=torch.channels_last) | |
| pipe.controlnet.to(memory_format=torch.channels_last) | |
| <span class="hljs-keyword">if</span> run_compile: | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">"Run torch compile"</span>) | |
| pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| pipe.controlnet = torch.<span class="hljs-built_in">compile</span>(pipe.controlnet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| prompt = <span class="hljs-string">"ghibli style, a fantasy landscape with castles"</span> | |
| <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">3</span>): | |
| image = pipe(prompt=prompt, image=init_image).images[<span class="hljs-number">0</span>]`,wrap:!1}}),$=new w({props:{title:"IF text-to-image + upscaling",local:"if-text-to-image--upscaling",headingTag:"h4"}}),L=new J({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBaW1wb3J0JTIwdG9yY2glMEElMEFydW5fY29tcGlsZSUyMCUzRCUyMFRydWUlMjAlMjAlMjMlMjBTZXQlMjBUcnVlJTIwJTJGJTIwRmFsc2UlMEElMEFwaXBlJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMkRlZXBGbG95ZCUyRklGLUktTS12MS4wJTIyJTJDJTIwdmFyaWFudCUzRCUyMmZwMTYlMjIlMkMlMjB0ZXh0X2VuY29kZXIlM0ROb25lJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGUudG8oJTIyY3VkYSUyMiklMEFwaXBlXzIlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyRGVlcEZsb3lkJTJGSUYtSUktTS12MS4wJTIyJTJDJTIwdmFyaWFudCUzRCUyMmZwMTYlMjIlMkMlMjB0ZXh0X2VuY29kZXIlM0ROb25lJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGVfMi50byglMjJjdWRhJTIyKSUwQXBpcGVfMyUyMCUzRCUyMERpZmZ1c2lvblBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMjJzdGFiaWxpdHlhaSUyRnN0YWJsZS1kaWZmdXNpb24teDQtdXBzY2FsZXIlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpJTBBcGlwZV8zLnRvKCUyMmN1ZGElMjIpJTBBJTBBJTBBcGlwZS51bmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQXBpcGVfMi51bmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQXBpcGVfMy51bmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQSUwQWlmJTIwcnVuX2NvbXBpbGUlM0ElMEElMjAlMjAlMjAlMjBwaXBlLnVuZXQlMjAlM0QlMjB0b3JjaC5jb21waWxlKHBpcGUudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUyMCUyMCUyMCUyMHBpcGVfMi51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlXzIudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUyMCUyMCUyMCUyMHBpcGVfMy51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlXzMudW5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMnRoZSUyMGJsdWUlMjBodWxrJTIyJTBBJTBBcHJvbXB0X2VtYmVkcyUyMCUzRCUyMHRvcmNoLnJhbmRuKCgxJTJDJTIwMiUyQyUyMDQwOTYpJTJDJTIwZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQW5lZ19wcm9tcHRfZW1iZWRzJTIwJTNEJTIwdG9yY2gucmFuZG4oKDElMkMlMjAyJTJDJTIwNDA5NiklMkMlMjBkdHlwZSUzRHRvcmNoLmZsb2F0MTYpJTBBJTBBZm9yJTIwXyUyMGluJTIwcmFuZ2UoMyklM0ElMEElMjAlMjAlMjAlMjBpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0X2VtYmVkcyUzRHByb21wdF9lbWJlZHMlMkMlMjBuZWdhdGl2ZV9wcm9tcHRfZW1iZWRzJTNEbmVnX3Byb21wdF9lbWJlZHMlMkMlMjBvdXRwdXRfdHlwZSUzRCUyMnB0JTIyKS5pbWFnZXMlMEElMjAlMjAlMjAlMjBpbWFnZV8yJTIwJTNEJTIwcGlwZV8yKGltYWdlJTNEaW1hZ2UlMkMlMjBwcm9tcHRfZW1iZWRzJTNEcHJvbXB0X2VtYmVkcyUyQyUyMG5lZ2F0aXZlX3Byb21wdF9lbWJlZHMlM0RuZWdfcHJvbXB0X2VtYmVkcyUyQyUyMG91dHB1dF90eXBlJTNEJTIycHQlMjIpLmltYWdlcyUwQSUyMCUyMCUyMCUyMGltYWdlXzMlMjAlM0QlMjBwaXBlXzMocHJvbXB0JTNEcHJvbXB0JTJDJTIwaW1hZ2UlM0RpbWFnZSUyQyUyMG5vaXNlX2xldmVsJTNEMTAwKS5pbWFnZXM=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline | |
| <span class="hljs-keyword">import</span> torch | |
| run_compile = <span class="hljs-literal">True</span> <span class="hljs-comment"># Set True / False</span> | |
| pipe = DiffusionPipeline.from_pretrained(<span class="hljs-string">"DeepFloyd/IF-I-M-v1.0"</span>, variant=<span class="hljs-string">"fp16"</span>, text_encoder=<span class="hljs-literal">None</span>, torch_dtype=torch.float16) | |
| pipe.to(<span class="hljs-string">"cuda"</span>) | |
| pipe_2 = DiffusionPipeline.from_pretrained(<span class="hljs-string">"DeepFloyd/IF-II-M-v1.0"</span>, variant=<span class="hljs-string">"fp16"</span>, text_encoder=<span class="hljs-literal">None</span>, torch_dtype=torch.float16) | |
| pipe_2.to(<span class="hljs-string">"cuda"</span>) | |
| pipe_3 = DiffusionPipeline.from_pretrained(<span class="hljs-string">"stabilityai/stable-diffusion-x4-upscaler"</span>, torch_dtype=torch.float16) | |
| pipe_3.to(<span class="hljs-string">"cuda"</span>) | |
| pipe.unet.to(memory_format=torch.channels_last) | |
| pipe_2.unet.to(memory_format=torch.channels_last) | |
| pipe_3.unet.to(memory_format=torch.channels_last) | |
| <span class="hljs-keyword">if</span> run_compile: | |
| pipe.unet = torch.<span class="hljs-built_in">compile</span>(pipe.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| pipe_2.unet = torch.<span class="hljs-built_in">compile</span>(pipe_2.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| pipe_3.unet = torch.<span class="hljs-built_in">compile</span>(pipe_3.unet, mode=<span class="hljs-string">"reduce-overhead"</span>, fullgraph=<span class="hljs-literal">True</span>) | |
| prompt = <span class="hljs-string">"the blue hulk"</span> | |
| prompt_embeds = torch.randn((<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">4096</span>), dtype=torch.float16) | |
| neg_prompt_embeds = torch.randn((<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">4096</span>), dtype=torch.float16) | |
| <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">3</span>): | |
| image = pipe(prompt_embeds=prompt_embeds, negative_prompt_embeds=neg_prompt_embeds, output_type=<span class="hljs-string">"pt"</span>).images | |
| image_2 = pipe_2(image=image, prompt_embeds=prompt_embeds, negative_prompt_embeds=neg_prompt_embeds, output_type=<span class="hljs-string">"pt"</span>).images | |
| image_3 = pipe_3(prompt=prompt, image=image, noise_level=<span class="hljs-number">100</span>).images`,wrap:!1}}),kt=new _l({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/optimization/torch2.0.md"}}),{c(){T=s("meta"),Pt=a(),Lt=s("p"),At=a(),p(j.$$.fragment),Kt=a(),Z=s("p"),Z.innerHTML=Zn,Ot=a(),B=s("ol"),B.innerHTML=Bn,te=a(),p(W.$$.fragment),ee=a(),G=s("p"),G.innerHTML=Wn,ne=a(),p(C.$$.fragment),le=a(),p(v.$$.fragment),ae=a(),U=s("ol"),o=s("li"),Ht=s("p"),Ht.innerHTML=Gn,pn=a(),xt=s("p"),xt.innerHTML=Cn,gn=a(),Yt=s("p"),Yt.innerHTML=vn,mn=a(),p(I.$$.fragment),hn=a(),Vt=s("p"),Vt.textContent=In,Mn=a(),p(S.$$.fragment),yn=a(),Qt=s("p"),Qt.innerHTML=Sn,bn=a(),Ft=s("p"),Ft.innerHTML=Xn,un=a(),p(X.$$.fragment),fn=a(),u=s("li"),Nt=s("p"),Nt.innerHTML=_n,Jn=a(),zt=s("p"),zt.innerHTML=Rn,wn=a(),p(_.$$.fragment),Tn=a(),Et=s("p"),Et.innerHTML=kn,Un=a(),$t=s("p"),$t.textContent=Hn,re=a(),p(R.$$.fragment),se=a(),k=s("p"),k.innerHTML=xn,ie=a(),p(H.$$.fragment),ce=a(),p(x.$$.fragment),de=a(),p(Y.$$.fragment),oe=a(),p(V.$$.fragment),pe=a(),p(Q.$$.fragment),ge=a(),p(F.$$.fragment),me=a(),p(N.$$.fragment),he=a(),p(z.$$.fragment),Me=a(),p(E.$$.fragment),ye=a(),p($.$$.fragment),be=a(),p(L.$$.fragment),ue=a(),q=s("p"),q.innerHTML=Yn,fe=a(),D=s("p"),D.innerHTML=Vn,Je=a(),P=s("p"),P.innerHTML=Qn,we=a(),A=s("p"),A.innerHTML=Fn,Te=a(),K=s("p"),K.innerHTML=Nn,Ue=a(),O=s("p"),O.textContent=zn,je=a(),tt=s("p"),tt.innerHTML=En,Ze=a(),et=s("p"),et.textContent=$n,Be=a(),nt=s("table"),nt.innerHTML=Ln,We=a(),lt=s("p"),lt.textContent=qn,Ge=a(),at=s("table"),at.innerHTML=Dn,Ce=a(),rt=s("p"),rt.textContent=Pn,ve=a(),st=s("table"),st.innerHTML=An,Ie=a(),it=s("p"),it.textContent=Kn,Se=a(),ct=s("table"),ct.innerHTML=On,Xe=a(),dt=s("p"),dt.textContent=tl,_e=a(),ot=s("table"),ot.innerHTML=el,Re=a(),pt=s("p"),pt.textContent=nl,ke=a(),gt=s("table"),gt.innerHTML=ll,He=a(),mt=s("p"),mt.textContent=al,xe=a(),ht=s("table"),ht.innerHTML=rl,Ye=a(),Mt=s("p"),Mt.textContent=sl,Ve=a(),yt=s("table"),yt.innerHTML=il,Qe=a(),bt=s("p"),bt.textContent=cl,Fe=a(),ut=s("table"),ut.innerHTML=dl,Ne=a(),ft=s("p"),ft.textContent=ol,ze=a(),Jt=s("table"),Jt.innerHTML=pl,Ee=a(),wt=s("p"),wt.textContent=gl,$e=a(),Tt=s("table"),Tt.innerHTML=ml,Le=a(),Ut=s("p"),Ut.textContent=hl,qe=a(),jt=s("table"),jt.innerHTML=Ml,De=a(),Zt=s("p"),Zt.textContent=yl,Pe=a(),Bt=s("table"),Bt.innerHTML=bl,Ae=a(),Wt=s("p"),Wt.textContent=ul,Ke=a(),Gt=s("table"),Gt.innerHTML=fl,Oe=a(),Ct=s("p"),Ct.textContent=Jl,tn=a(),vt=s("table"),vt.innerHTML=wl,en=a(),It=s("p"),It.textContent=Tl,nn=a(),St=s("ul"),St.innerHTML=Ul,ln=a(),Xt=s("p"),Xt.innerHTML=jl,an=a(),_t=s("ul"),_t.innerHTML=Zl,rn=a(),Rt=s("p"),Rt.innerHTML=Bl,sn=a(),p(kt.$$.fragment),cn=a(),qt=s("p"),this.h()},l(t){const e=Xl("svelte-u9bgzb",document.head);T=i(e,"META",{name:!0,content:!0}),e.forEach(n),Pt=r(t),Lt=i(t,"P",{}),Dt(Lt).forEach(n),At=r(t),g(j.$$.fragment,t),Kt=r(t),Z=i(t,"P",{"data-svelte-h":!0}),c(Z)!=="svelte-ygcqou"&&(Z.innerHTML=Zn),Ot=r(t),B=i(t,"OL",{"data-svelte-h":!0}),c(B)!=="svelte-1dkijqo"&&(B.innerHTML=Bn),te=r(t),g(W.$$.fragment,t),ee=r(t),G=i(t,"P",{"data-svelte-h":!0}),c(G)!=="svelte-1i7y0my"&&(G.innerHTML=Wn),ne=r(t),g(C.$$.fragment,t),le=r(t),g(v.$$.fragment,t),ae=r(t),U=i(t,"OL",{});var on=Dt(U);o=i(on,"LI",{});var b=Dt(o);Ht=i(b,"P",{"data-svelte-h":!0}),c(Ht)!=="svelte-csjjs8"&&(Ht.innerHTML=Gn),pn=r(b),xt=i(b,"P",{"data-svelte-h":!0}),c(xt)!=="svelte-ptbosd"&&(xt.innerHTML=Cn),gn=r(b),Yt=i(b,"P",{"data-svelte-h":!0}),c(Yt)!=="svelte-i6ofk3"&&(Yt.innerHTML=vn),mn=r(b),g(I.$$.fragment,b),hn=r(b),Vt=i(b,"P",{"data-svelte-h":!0}),c(Vt)!=="svelte-14x25cf"&&(Vt.textContent=In),Mn=r(b),g(S.$$.fragment,b),yn=r(b),Qt=i(b,"P",{"data-svelte-h":!0}),c(Qt)!=="svelte-uqlxk7"&&(Qt.innerHTML=Sn),bn=r(b),Ft=i(b,"P",{"data-svelte-h":!0}),c(Ft)!=="svelte-1artegh"&&(Ft.innerHTML=Xn),un=r(b),g(X.$$.fragment,b),b.forEach(n),fn=r(on),u=i(on,"LI",{});var f=Dt(u);Nt=i(f,"P",{"data-svelte-h":!0}),c(Nt)!=="svelte-azj1k8"&&(Nt.innerHTML=_n),Jn=r(f),zt=i(f,"P",{"data-svelte-h":!0}),c(zt)!=="svelte-1wvf4df"&&(zt.innerHTML=Rn),wn=r(f),g(_.$$.fragment,f),Tn=r(f),Et=i(f,"P",{"data-svelte-h":!0}),c(Et)!=="svelte-5tr1im"&&(Et.innerHTML=kn),Un=r(f),$t=i(f,"P",{"data-svelte-h":!0}),c($t)!=="svelte-ijvl95"&&($t.textContent=Hn),f.forEach(n),on.forEach(n),re=r(t),g(R.$$.fragment,t),se=r(t),k=i(t,"P",{"data-svelte-h":!0}),c(k)!=="svelte-1c5iz5d"&&(k.innerHTML=xn),ie=r(t),g(H.$$.fragment,t),ce=r(t),g(x.$$.fragment,t),de=r(t),g(Y.$$.fragment,t),oe=r(t),g(V.$$.fragment,t),pe=r(t),g(Q.$$.fragment,t),ge=r(t),g(F.$$.fragment,t),me=r(t),g(N.$$.fragment,t),he=r(t),g(z.$$.fragment,t),Me=r(t),g(E.$$.fragment,t),ye=r(t),g($.$$.fragment,t),be=r(t),g(L.$$.fragment,t),ue=r(t),q=i(t,"P",{"data-svelte-h":!0}),c(q)!=="svelte-1ujmkc6"&&(q.innerHTML=Yn),fe=r(t),D=i(t,"P",{"data-svelte-h":!0}),c(D)!=="svelte-1sjwyaz"&&(D.innerHTML=Vn),Je=r(t),P=i(t,"P",{"data-svelte-h":!0}),c(P)!=="svelte-1ph0h0b"&&(P.innerHTML=Qn),we=r(t),A=i(t,"P",{"data-svelte-h":!0}),c(A)!=="svelte-19p9vzv"&&(A.innerHTML=Fn),Te=r(t),K=i(t,"P",{"data-svelte-h":!0}),c(K)!=="svelte-1wqu6gn"&&(K.innerHTML=Nn),Ue=r(t),O=i(t,"P",{"data-svelte-h":!0}),c(O)!=="svelte-1k8h2j4"&&(O.textContent=zn),je=r(t),tt=i(t,"P",{"data-svelte-h":!0}),c(tt)!=="svelte-9xhu5s"&&(tt.innerHTML=En),Ze=r(t),et=i(t,"P",{"data-svelte-h":!0}),c(et)!=="svelte-jhlzko"&&(et.textContent=$n),Be=r(t),nt=i(t,"TABLE",{"data-svelte-h":!0}),c(nt)!=="svelte-ua6hkm"&&(nt.innerHTML=Ln),We=r(t),lt=i(t,"P",{"data-svelte-h":!0}),c(lt)!=="svelte-5qy8fr"&&(lt.textContent=qn),Ge=r(t),at=i(t,"TABLE",{"data-svelte-h":!0}),c(at)!=="svelte-19p4o4"&&(at.innerHTML=Dn),Ce=r(t),rt=i(t,"P",{"data-svelte-h":!0}),c(rt)!=="svelte-oizflc"&&(rt.textContent=Pn),ve=r(t),st=i(t,"TABLE",{"data-svelte-h":!0}),c(st)!=="svelte-ghymkz"&&(st.innerHTML=An),Ie=r(t),it=i(t,"P",{"data-svelte-h":!0}),c(it)!=="svelte-e1b8c5"&&(it.textContent=Kn),Se=r(t),ct=i(t,"TABLE",{"data-svelte-h":!0}),c(ct)!=="svelte-9j8rj7"&&(ct.innerHTML=On),Xe=r(t),dt=i(t,"P",{"data-svelte-h":!0}),c(dt)!=="svelte-17hx98u"&&(dt.textContent=tl),_e=r(t),ot=i(t,"TABLE",{"data-svelte-h":!0}),c(ot)!=="svelte-1xs3uwi"&&(ot.innerHTML=el),Re=r(t),pt=i(t,"P",{"data-svelte-h":!0}),c(pt)!=="svelte-2mv1e5"&&(pt.textContent=nl),ke=r(t),gt=i(t,"TABLE",{"data-svelte-h":!0}),c(gt)!=="svelte-1elkjwp"&&(gt.innerHTML=ll),He=r(t),mt=i(t,"P",{"data-svelte-h":!0}),c(mt)!=="svelte-i9yvsi"&&(mt.textContent=al),xe=r(t),ht=i(t,"TABLE",{"data-svelte-h":!0}),c(ht)!=="svelte-15rkrq1"&&(ht.innerHTML=rl),Ye=r(t),Mt=i(t,"P",{"data-svelte-h":!0}),c(Mt)!=="svelte-9n9mit"&&(Mt.textContent=sl),Ve=r(t),yt=i(t,"TABLE",{"data-svelte-h":!0}),c(yt)!=="svelte-qjzzgd"&&(yt.innerHTML=il),Qe=r(t),bt=i(t,"P",{"data-svelte-h":!0}),c(bt)!=="svelte-qyl0cq"&&(bt.textContent=cl),Fe=r(t),ut=i(t,"TABLE",{"data-svelte-h":!0}),c(ut)!=="svelte-h3a43b"&&(ut.innerHTML=dl),Ne=r(t),ft=i(t,"P",{"data-svelte-h":!0}),c(ft)!=="svelte-o6050m"&&(ft.textContent=ol),ze=r(t),Jt=i(t,"TABLE",{"data-svelte-h":!0}),c(Jt)!=="svelte-1hbo08l"&&(Jt.innerHTML=pl),Ee=r(t),wt=i(t,"P",{"data-svelte-h":!0}),c(wt)!=="svelte-13t2p4h"&&(wt.textContent=gl),$e=r(t),Tt=i(t,"TABLE",{"data-svelte-h":!0}),c(Tt)!=="svelte-abi9u4"&&(Tt.innerHTML=ml),Le=r(t),Ut=i(t,"P",{"data-svelte-h":!0}),c(Ut)!=="svelte-yrtmam"&&(Ut.textContent=hl),qe=r(t),jt=i(t,"TABLE",{"data-svelte-h":!0}),c(jt)!=="svelte-11m8i0f"&&(jt.innerHTML=Ml),De=r(t),Zt=i(t,"P",{"data-svelte-h":!0}),c(Zt)!=="svelte-1qrdjr3"&&(Zt.textContent=yl),Pe=r(t),Bt=i(t,"TABLE",{"data-svelte-h":!0}),c(Bt)!=="svelte-u80fnb"&&(Bt.innerHTML=bl),Ae=r(t),Wt=i(t,"P",{"data-svelte-h":!0}),c(Wt)!=="svelte-1j9v0qc"&&(Wt.textContent=ul),Ke=r(t),Gt=i(t,"TABLE",{"data-svelte-h":!0}),c(Gt)!=="svelte-x5owk6"&&(Gt.innerHTML=fl),Oe=r(t),Ct=i(t,"P",{"data-svelte-h":!0}),c(Ct)!=="svelte-mt5fav"&&(Ct.textContent=Jl),tn=r(t),vt=i(t,"TABLE",{"data-svelte-h":!0}),c(vt)!=="svelte-1x66rvc"&&(vt.innerHTML=wl),en=r(t),It=i(t,"P",{"data-svelte-h":!0}),c(It)!=="svelte-724q3e"&&(It.textContent=Tl),nn=r(t),St=i(t,"UL",{"data-svelte-h":!0}),c(St)!=="svelte-75l6b9"&&(St.innerHTML=Ul),ln=r(t),Xt=i(t,"P",{"data-svelte-h":!0}),c(Xt)!=="svelte-7zliwv"&&(Xt.innerHTML=jl),an=r(t),_t=i(t,"UL",{"data-svelte-h":!0}),c(_t)!=="svelte-ppwv8l"&&(_t.innerHTML=Zl),rn=r(t),Rt=i(t,"P",{"data-svelte-h":!0}),c(Rt)!=="svelte-zzoysd"&&(Rt.innerHTML=Bl),sn=r(t),g(kt.$$.fragment,t),cn=r(t),qt=i(t,"P",{}),Dt(qt).forEach(n),this.h()},h(){Wl(T,"name","hf:doc:metadata"),Wl(T,"content",kl)},m(t,e){d(document.head,T),l(t,Pt,e),l(t,Lt,e),l(t,At,e),m(j,t,e),l(t,Kt,e),l(t,Z,e),l(t,Ot,e),l(t,B,e),l(t,te,e),m(W,t,e),l(t,ee,e),l(t,G,e),l(t,ne,e),m(C,t,e),l(t,le,e),m(v,t,e),l(t,ae,e),l(t,U,e),d(U,o),d(o,Ht),d(o,pn),d(o,xt),d(o,gn),d(o,Yt),d(o,mn),m(I,o,null),d(o,hn),d(o,Vt),d(o,Mn),m(S,o,null),d(o,yn),d(o,Qt),d(o,bn),d(o,Ft),d(o,un),m(X,o,null),d(U,fn),d(U,u),d(u,Nt),d(u,Jn),d(u,zt),d(u,wn),m(_,u,null),d(u,Tn),d(u,Et),d(u,Un),d(u,$t),l(t,re,e),m(R,t,e),l(t,se,e),l(t,k,e),l(t,ie,e),m(H,t,e),l(t,ce,e),m(x,t,e),l(t,de,e),m(Y,t,e),l(t,oe,e),m(V,t,e),l(t,pe,e),m(Q,t,e),l(t,ge,e),m(F,t,e),l(t,me,e),m(N,t,e),l(t,he,e),m(z,t,e),l(t,Me,e),m(E,t,e),l(t,ye,e),m($,t,e),l(t,be,e),m(L,t,e),l(t,ue,e),l(t,q,e),l(t,fe,e),l(t,D,e),l(t,Je,e),l(t,P,e),l(t,we,e),l(t,A,e),l(t,Te,e),l(t,K,e),l(t,Ue,e),l(t,O,e),l(t,je,e),l(t,tt,e),l(t,Ze,e),l(t,et,e),l(t,Be,e),l(t,nt,e),l(t,We,e),l(t,lt,e),l(t,Ge,e),l(t,at,e),l(t,Ce,e),l(t,rt,e),l(t,ve,e),l(t,st,e),l(t,Ie,e),l(t,it,e),l(t,Se,e),l(t,ct,e),l(t,Xe,e),l(t,dt,e),l(t,_e,e),l(t,ot,e),l(t,Re,e),l(t,pt,e),l(t,ke,e),l(t,gt,e),l(t,He,e),l(t,mt,e),l(t,xe,e),l(t,ht,e),l(t,Ye,e),l(t,Mt,e),l(t,Ve,e),l(t,yt,e),l(t,Qe,e),l(t,bt,e),l(t,Fe,e),l(t,ut,e),l(t,Ne,e),l(t,ft,e),l(t,ze,e),l(t,Jt,e),l(t,Ee,e),l(t,wt,e),l(t,$e,e),l(t,Tt,e),l(t,Le,e),l(t,Ut,e),l(t,qe,e),l(t,jt,e),l(t,De,e),l(t,Zt,e),l(t,Pe,e),l(t,Bt,e),l(t,Ae,e),l(t,Wt,e),l(t,Ke,e),l(t,Gt,e),l(t,Oe,e),l(t,Ct,e),l(t,tn,e),l(t,vt,e),l(t,en,e),l(t,It,e),l(t,nn,e),l(t,St,e),l(t,ln,e),l(t,Xt,e),l(t,an,e),l(t,_t,e),l(t,rn,e),l(t,Rt,e),l(t,sn,e),m(kt,t,e),l(t,cn,e),l(t,qt,e),dn=!0},p:Cl,i(t){dn||(h(j.$$.fragment,t),h(W.$$.fragment,t),h(C.$$.fragment,t),h(v.$$.fragment,t),h(I.$$.fragment,t),h(S.$$.fragment,t),h(X.$$.fragment,t),h(_.$$.fragment,t),h(R.$$.fragment,t),h(H.$$.fragment,t),h(x.$$.fragment,t),h(Y.$$.fragment,t),h(V.$$.fragment,t),h(Q.$$.fragment,t),h(F.$$.fragment,t),h(N.$$.fragment,t),h(z.$$.fragment,t),h(E.$$.fragment,t),h($.$$.fragment,t),h(L.$$.fragment,t),h(kt.$$.fragment,t),dn=!0)},o(t){M(j.$$.fragment,t),M(W.$$.fragment,t),M(C.$$.fragment,t),M(v.$$.fragment,t),M(I.$$.fragment,t),M(S.$$.fragment,t),M(X.$$.fragment,t),M(_.$$.fragment,t),M(R.$$.fragment,t),M(H.$$.fragment,t),M(x.$$.fragment,t),M(Y.$$.fragment,t),M(V.$$.fragment,t),M(Q.$$.fragment,t),M(F.$$.fragment,t),M(N.$$.fragment,t),M(z.$$.fragment,t),M(E.$$.fragment,t),M($.$$.fragment,t),M(L.$$.fragment,t),M(kt.$$.fragment,t),dn=!1},d(t){t&&(n(Pt),n(Lt),n(At),n(Kt),n(Z),n(Ot),n(B),n(te),n(ee),n(G),n(ne),n(le),n(ae),n(U),n(re),n(se),n(k),n(ie),n(ce),n(de),n(oe),n(pe),n(ge),n(me),n(he),n(Me),n(ye),n(be),n(ue),n(q),n(fe),n(D),n(Je),n(P),n(we),n(A),n(Te),n(K),n(Ue),n(O),n(je),n(tt),n(Ze),n(et),n(Be),n(nt),n(We),n(lt),n(Ge),n(at),n(Ce),n(rt),n(ve),n(st),n(Ie),n(it),n(Se),n(ct),n(Xe),n(dt),n(_e),n(ot),n(Re),n(pt),n(ke),n(gt),n(He),n(mt),n(xe),n(ht),n(Ye),n(Mt),n(Ve),n(yt),n(Qe),n(bt),n(Fe),n(ut),n(Ne),n(ft),n(ze),n(Jt),n(Ee),n(wt),n($e),n(Tt),n(Le),n(Ut),n(qe),n(jt),n(De),n(Zt),n(Pe),n(Bt),n(Ae),n(Wt),n(Ke),n(Gt),n(Oe),n(Ct),n(tn),n(vt),n(en),n(It),n(nn),n(St),n(ln),n(Xt),n(an),n(_t),n(rn),n(Rt),n(sn),n(cn),n(qt)),n(T),y(j,t),y(W,t),y(C,t),y(v,t),y(I),y(S),y(X),y(_),y(R,t),y(H,t),y(x,t),y(Y,t),y(V,t),y(Q,t),y(F,t),y(N,t),y(z,t),y(E,t),y($,t),y(L,t),y(kt,t)}}}const kl='{"title":"Diffusers에서의 PyTorch 2.0 가속화 지원","local":"diffusers에서의-pytorch-20-가속화-지원","sections":[{"title":"설치","local":"설치","sections":[],"depth":2},{"title":"가속화된 트랜스포머와 torch.compile 사용하기.","local":"가속화된-트랜스포머와-torchcompile-사용하기","sections":[],"depth":2},{"title":"벤치마크","local":"벤치마크","sections":[{"title":"벤치마킹 코드","local":"벤치마킹-코드","sections":[{"title":"Stable Diffusion text-to-image","local":"stable-diffusion-text-to-image","sections":[],"depth":4},{"title":"Stable Diffusion image-to-image","local":"stable-diffusion-image-to-image","sections":[],"depth":4},{"title":"Stable Diffusion - inpainting","local":"stable-diffusion---inpainting","sections":[],"depth":4},{"title":"ControlNet","local":"controlnet","sections":[],"depth":4},{"title":"IF text-to-image + upscaling","local":"if-text-to-image--upscaling","sections":[],"depth":4}],"depth":3}],"depth":2}],"depth":1}';function Hl(jn){return vl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Fl extends Il{constructor(T){super(),Sl(this,T,Hl,Rl,Gl,{})}}export{Fl as component}; | |
Xet Storage Details
- Size:
- 66.3 kB
- Xet hash:
- d98853e75da581681d364662d47fe55f360fc56ffc539336167594dec0779e79
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.