Buckets:
| import{s as gl,n as ml,o as hl}from"../chunks/scheduler.94020406.js";import{S as Ml,i as bl,g as i,s as a,r as d,E as yl,h as s,f as n,c as r,j as Dt,u as p,x as c,k as ol,y as M,a as l,v as o,d as g,t as m,w as h}from"../chunks/index.a08c8d92.js";import{C as T}from"../chunks/CodeBlock.b23cf525.js";import{H as b,E as ul}from"../chunks/EditOnGithub.b1bceb47.js";function fl(jn){let w,At,Lt,Pt,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,$,le,I,ae,U,y,kt,Gn="<strong>가속화된 트랜스포머 구현</strong>",on,zt,$n='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,Ht,In="이러한 최적화는 PyTorch 2.0이 설치되어 있고 <code>torch.nn.functional.scaled_dot_product_attention</code>을 사용할 수 있는 경우 Diffusers에서 기본적으로 활성화됩니다. 이를 사용하려면 <code>torch 2.0</code>을 설치하고 파이프라인을 사용하기만 하면 됩니다. 예를 들어:",mn,X,hn,Yt,Xn="이를 명시적으로 활성화하려면(필수는 아님) 아래와 같이 수행할 수 있습니다.",Mn,S,bn,Vt,Sn='이 실행 과정은 <code>xFormers</code>만큼 빠르고 메모리적으로 효율적이어야 합니다. 자세한 내용은 <a href="#benchmark">벤치마크</a>에서 확인하세요.',yn,Qt,Cn='파이프라인을 보다 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,C,fn,f,Ft,vn="<strong>torch.compile</strong>",Jn,Nt,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>를 참조하세요.',Tn,v,wn,Et,_n="GPU 유형에 따라 <code>compile()</code>은 가속화된 트랜스포머 최적화를 통해 <strong>5% - 300%</strong>의 <em>추가 성능 향상</em>을 얻을 수 있습니다. 그러나 컴파일은 Ampere(A100, 3090), Ada(4090) 및 Hopper(H100)와 같은 최신 GPU 아키텍처에서 더 많은 성능 향상을 가져올 수 있음을 참고하세요.",Un,xt,kn="컴파일은 완료하는 데 약간의 시간이 걸리므로, 파이프라인을 한 번 준비한 다음 동일한 유형의 추론 작업을 여러 번 수행해야 하는 상황에 가장 적합합니다. 다른 이미지 크기에서 컴파일된 파이프라인을 호출하면 시간적 비용이 많이 들 수 있는 컴파일 작업이 다시 트리거됩니다.",re,R,ie,_,zn='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>을 사용했습니다.',se,k,ce,z,de,H,pe,Y,oe,V,ge,Q,me,F,he,N,Me,E,be,x,ye,L,ue,q,Hn='PyTorch 2.0 및 <code>torch.compile()</code>로 얻을 수 있는 가능한 속도 향상에 대해, <a href="StableDiffusionPipeline">Stable Diffusion text-to-image pipeline</a>에 대한 상대적인 속도 향상을 보여주는 차트를 5개의 서로 다른 GPU 제품군(배치 크기 4)에 대해 나타냅니다:',fe,D,Yn='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/pt2_benchmarks/t2i_speedup.png" alt="t2i_speedup"/>',Je,A,Vn=`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() 사용) 수치를 보여주는 차트를 보입니다:`,Te,P,Qn='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/pt2_benchmarks/a100_numbers.png" alt="a100_numbers"/>',we,K,Fn="<em>(위 차트의 벤치마크 메트릭은 <strong>초당 iteration 수(iterations/second)</strong>입니다)</em>",Ue,O,Nn="그러나 투명성을 위해 모든 벤치마킹 수치를 공개합니다!",je,tt,En="다음 표들에서는, <strong><em>초당 처리되는 iteration</em></strong> 수 측면에서의 결과를 보여줍니다.",Ze,et,Be,nt,xn='<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,Ge,at,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">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>',$e,rt,Ie,it,qn='<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>',Xe,st,Se,ct,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">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>',Ce,dt,ve,pt,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">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,ot,_e,gt,Pn='<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>',ke,mt,ze,ht,Kn='<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>',He,Mt,Ye,bt,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">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>',Ve,yt,Qe,ut,tl='<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>',Fe,ft,Ne,Jt,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">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,Tt,xe,wt,nl='<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,qe,jt,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.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,Ae,Bt,al='<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>',Pe,Wt,Ke,Gt,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">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,$t,tn,It,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">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,Xt,nn,St,sl='<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,Ct,cl='<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,vt,dl='<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,pl='<em>Diffusers에서 <code>torch.compile()</code> 지원을 개선하는 데 도움을 준 PyTorch 팀의 <a href="https://github.com/Chillee" rel="nofollow">Horace He</a>에게 감사드립니다.</em>',sn,_t,cn,qt,dn;return j=new b({props:{title:"Diffusers에서의 PyTorch 2.0 가속화 지원",local:"diffusers에서의-pytorch-20-가속화-지원",headingTag:"h1"}}),W=new b({props:{title:"설치",local:"설치",headingTag:"h2"}}),$=new T({props:{code:"cGlwJTIwaW5zdGFsbCUyMC0tdXBncmFkZSUyMHRvcmNoJTIwZGlmZnVzZXJz",highlighted:"pip install --upgrade torch diffusers",wrap:!1}}),I=new b({props:{title:"가속화된 트랜스포머와 torch.compile 사용하기.",local:"가속화된-트랜스포머와-torchcompile-사용하기",headingTag:"h2"}}),X=new T({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 T({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}}),C=new T({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}}),v=new T({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 b({props:{title:"벤치마크",local:"벤치마크",headingTag:"h2"}}),k=new b({props:{title:"벤치마킹 코드",local:"벤치마킹-코드",headingTag:"h3"}}),z=new b({props:{title:"Stable Diffusion text-to-image",local:"stable-diffusion-text-to-image",headingTag:"h4"}}),H=new T({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}}),Y=new b({props:{title:"Stable Diffusion image-to-image",local:"stable-diffusion-image-to-image",headingTag:"h4"}}),V=new T({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}}),Q=new b({props:{title:"Stable Diffusion - inpainting",local:"stable-diffusion---inpainting",headingTag:"h4"}}),F=new T({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}}),N=new b({props:{title:"ControlNet",local:"controlnet",headingTag:"h4"}}),E=new T({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}}),x=new b({props:{title:"IF text-to-image + upscaling",local:"if-text-to-image--upscaling",headingTag:"h4"}}),L=new T({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}}),et=new b({props:{title:"A100 (batch size: 1)",local:"a100-batch-size-1",headingTag:"h3"}}),lt=new b({props:{title:"A100 (batch size: 4)",local:"a100-batch-size-4",headingTag:"h3"}}),rt=new b({props:{title:"A100 (batch size: 16)",local:"a100-batch-size-16",headingTag:"h3"}}),st=new b({props:{title:"V100 (batch size: 1)",local:"v100-batch-size-1",headingTag:"h3"}}),dt=new b({props:{title:"V100 (batch size: 4)",local:"v100-batch-size-4",headingTag:"h3"}}),ot=new b({props:{title:"V100 (batch size: 16)",local:"v100-batch-size-16",headingTag:"h3"}}),mt=new b({props:{title:"T4 (batch size: 1)",local:"t4-batch-size-1",headingTag:"h3"}}),Mt=new b({props:{title:"T4 (batch size: 4)",local:"t4-batch-size-4",headingTag:"h3"}}),yt=new b({props:{title:"T4 (batch size: 16)",local:"t4-batch-size-16",headingTag:"h3"}}),ft=new b({props:{title:"RTX 3090 (batch size: 1)",local:"rtx-3090-batch-size-1",headingTag:"h3"}}),Tt=new b({props:{title:"RTX 3090 (batch size: 4)",local:"rtx-3090-batch-size-4",headingTag:"h3"}}),Ut=new b({props:{title:"RTX 3090 (batch size: 16)",local:"rtx-3090-batch-size-16",headingTag:"h3"}}),Zt=new b({props:{title:"RTX 4090 (batch size: 1)",local:"rtx-4090-batch-size-1",headingTag:"h3"}}),Wt=new b({props:{title:"RTX 4090 (batch size: 4)",local:"rtx-4090-batch-size-4",headingTag:"h3"}}),$t=new b({props:{title:"RTX 4090 (batch size: 16)",local:"rtx-4090-batch-size-16",headingTag:"h3"}}),Xt=new b({props:{title:"참고",local:"참고",headingTag:"h2"}}),_t=new ul({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/optimization/torch2.0.md"}}),{c(){w=i("meta"),At=a(),Lt=i("p"),Pt=a(),d(j.$$.fragment),Kt=a(),Z=i("p"),Z.innerHTML=Zn,Ot=a(),B=i("ol"),B.innerHTML=Bn,te=a(),d(W.$$.fragment),ee=a(),G=i("p"),G.innerHTML=Wn,ne=a(),d($.$$.fragment),le=a(),d(I.$$.fragment),ae=a(),U=i("ol"),y=i("li"),kt=i("p"),kt.innerHTML=Gn,on=a(),zt=i("p"),zt.innerHTML=$n,gn=a(),Ht=i("p"),Ht.innerHTML=In,mn=a(),d(X.$$.fragment),hn=a(),Yt=i("p"),Yt.textContent=Xn,Mn=a(),d(S.$$.fragment),bn=a(),Vt=i("p"),Vt.innerHTML=Sn,yn=a(),Qt=i("p"),Qt.innerHTML=Cn,un=a(),d(C.$$.fragment),fn=a(),f=i("li"),Ft=i("p"),Ft.innerHTML=vn,Jn=a(),Nt=i("p"),Nt.innerHTML=Rn,Tn=a(),d(v.$$.fragment),wn=a(),Et=i("p"),Et.innerHTML=_n,Un=a(),xt=i("p"),xt.textContent=kn,re=a(),d(R.$$.fragment),ie=a(),_=i("p"),_.innerHTML=zn,se=a(),d(k.$$.fragment),ce=a(),d(z.$$.fragment),de=a(),d(H.$$.fragment),pe=a(),d(Y.$$.fragment),oe=a(),d(V.$$.fragment),ge=a(),d(Q.$$.fragment),me=a(),d(F.$$.fragment),he=a(),d(N.$$.fragment),Me=a(),d(E.$$.fragment),be=a(),d(x.$$.fragment),ye=a(),d(L.$$.fragment),ue=a(),q=i("p"),q.innerHTML=Hn,fe=a(),D=i("p"),D.innerHTML=Yn,Je=a(),A=i("p"),A.innerHTML=Vn,Te=a(),P=i("p"),P.innerHTML=Qn,we=a(),K=i("p"),K.innerHTML=Fn,Ue=a(),O=i("p"),O.textContent=Nn,je=a(),tt=i("p"),tt.innerHTML=En,Ze=a(),d(et.$$.fragment),Be=a(),nt=i("table"),nt.innerHTML=xn,We=a(),d(lt.$$.fragment),Ge=a(),at=i("table"),at.innerHTML=Ln,$e=a(),d(rt.$$.fragment),Ie=a(),it=i("table"),it.innerHTML=qn,Xe=a(),d(st.$$.fragment),Se=a(),ct=i("table"),ct.innerHTML=Dn,Ce=a(),d(dt.$$.fragment),ve=a(),pt=i("table"),pt.innerHTML=An,Re=a(),d(ot.$$.fragment),_e=a(),gt=i("table"),gt.innerHTML=Pn,ke=a(),d(mt.$$.fragment),ze=a(),ht=i("table"),ht.innerHTML=Kn,He=a(),d(Mt.$$.fragment),Ye=a(),bt=i("table"),bt.innerHTML=On,Ve=a(),d(yt.$$.fragment),Qe=a(),ut=i("table"),ut.innerHTML=tl,Fe=a(),d(ft.$$.fragment),Ne=a(),Jt=i("table"),Jt.innerHTML=el,Ee=a(),d(Tt.$$.fragment),xe=a(),wt=i("table"),wt.innerHTML=nl,Le=a(),d(Ut.$$.fragment),qe=a(),jt=i("table"),jt.innerHTML=ll,De=a(),d(Zt.$$.fragment),Ae=a(),Bt=i("table"),Bt.innerHTML=al,Pe=a(),d(Wt.$$.fragment),Ke=a(),Gt=i("table"),Gt.innerHTML=rl,Oe=a(),d($t.$$.fragment),tn=a(),It=i("table"),It.innerHTML=il,en=a(),d(Xt.$$.fragment),nn=a(),St=i("ul"),St.innerHTML=sl,ln=a(),Ct=i("p"),Ct.innerHTML=cl,an=a(),vt=i("ul"),vt.innerHTML=dl,rn=a(),Rt=i("p"),Rt.innerHTML=pl,sn=a(),d(_t.$$.fragment),cn=a(),qt=i("p"),this.h()},l(t){const e=yl("svelte-u9bgzb",document.head);w=s(e,"META",{name:!0,content:!0}),e.forEach(n),At=r(t),Lt=s(t,"P",{}),Dt(Lt).forEach(n),Pt=r(t),p(j.$$.fragment,t),Kt=r(t),Z=s(t,"P",{"data-svelte-h":!0}),c(Z)!=="svelte-ygcqou"&&(Z.innerHTML=Zn),Ot=r(t),B=s(t,"OL",{"data-svelte-h":!0}),c(B)!=="svelte-1dkijqo"&&(B.innerHTML=Bn),te=r(t),p(W.$$.fragment,t),ee=r(t),G=s(t,"P",{"data-svelte-h":!0}),c(G)!=="svelte-1i7y0my"&&(G.innerHTML=Wn),ne=r(t),p($.$$.fragment,t),le=r(t),p(I.$$.fragment,t),ae=r(t),U=s(t,"OL",{});var pn=Dt(U);y=s(pn,"LI",{});var u=Dt(y);kt=s(u,"P",{"data-svelte-h":!0}),c(kt)!=="svelte-csjjs8"&&(kt.innerHTML=Gn),on=r(u),zt=s(u,"P",{"data-svelte-h":!0}),c(zt)!=="svelte-ptbosd"&&(zt.innerHTML=$n),gn=r(u),Ht=s(u,"P",{"data-svelte-h":!0}),c(Ht)!=="svelte-i6ofk3"&&(Ht.innerHTML=In),mn=r(u),p(X.$$.fragment,u),hn=r(u),Yt=s(u,"P",{"data-svelte-h":!0}),c(Yt)!=="svelte-14x25cf"&&(Yt.textContent=Xn),Mn=r(u),p(S.$$.fragment,u),bn=r(u),Vt=s(u,"P",{"data-svelte-h":!0}),c(Vt)!=="svelte-uqlxk7"&&(Vt.innerHTML=Sn),yn=r(u),Qt=s(u,"P",{"data-svelte-h":!0}),c(Qt)!=="svelte-1artegh"&&(Qt.innerHTML=Cn),un=r(u),p(C.$$.fragment,u),u.forEach(n),fn=r(pn),f=s(pn,"LI",{});var J=Dt(f);Ft=s(J,"P",{"data-svelte-h":!0}),c(Ft)!=="svelte-azj1k8"&&(Ft.innerHTML=vn),Jn=r(J),Nt=s(J,"P",{"data-svelte-h":!0}),c(Nt)!=="svelte-1wvf4df"&&(Nt.innerHTML=Rn),Tn=r(J),p(v.$$.fragment,J),wn=r(J),Et=s(J,"P",{"data-svelte-h":!0}),c(Et)!=="svelte-5tr1im"&&(Et.innerHTML=_n),Un=r(J),xt=s(J,"P",{"data-svelte-h":!0}),c(xt)!=="svelte-ijvl95"&&(xt.textContent=kn),J.forEach(n),pn.forEach(n),re=r(t),p(R.$$.fragment,t),ie=r(t),_=s(t,"P",{"data-svelte-h":!0}),c(_)!=="svelte-1c5iz5d"&&(_.innerHTML=zn),se=r(t),p(k.$$.fragment,t),ce=r(t),p(z.$$.fragment,t),de=r(t),p(H.$$.fragment,t),pe=r(t),p(Y.$$.fragment,t),oe=r(t),p(V.$$.fragment,t),ge=r(t),p(Q.$$.fragment,t),me=r(t),p(F.$$.fragment,t),he=r(t),p(N.$$.fragment,t),Me=r(t),p(E.$$.fragment,t),be=r(t),p(x.$$.fragment,t),ye=r(t),p(L.$$.fragment,t),ue=r(t),q=s(t,"P",{"data-svelte-h":!0}),c(q)!=="svelte-1ujmkc6"&&(q.innerHTML=Hn),fe=r(t),D=s(t,"P",{"data-svelte-h":!0}),c(D)!=="svelte-1sjwyaz"&&(D.innerHTML=Yn),Je=r(t),A=s(t,"P",{"data-svelte-h":!0}),c(A)!=="svelte-1ph0h0b"&&(A.innerHTML=Vn),Te=r(t),P=s(t,"P",{"data-svelte-h":!0}),c(P)!=="svelte-19p9vzv"&&(P.innerHTML=Qn),we=r(t),K=s(t,"P",{"data-svelte-h":!0}),c(K)!=="svelte-1wqu6gn"&&(K.innerHTML=Fn),Ue=r(t),O=s(t,"P",{"data-svelte-h":!0}),c(O)!=="svelte-1k8h2j4"&&(O.textContent=Nn),je=r(t),tt=s(t,"P",{"data-svelte-h":!0}),c(tt)!=="svelte-9xhu5s"&&(tt.innerHTML=En),Ze=r(t),p(et.$$.fragment,t),Be=r(t),nt=s(t,"TABLE",{"data-svelte-h":!0}),c(nt)!=="svelte-ua6hkm"&&(nt.innerHTML=xn),We=r(t),p(lt.$$.fragment,t),Ge=r(t),at=s(t,"TABLE",{"data-svelte-h":!0}),c(at)!=="svelte-19p4o4"&&(at.innerHTML=Ln),$e=r(t),p(rt.$$.fragment,t),Ie=r(t),it=s(t,"TABLE",{"data-svelte-h":!0}),c(it)!=="svelte-ghymkz"&&(it.innerHTML=qn),Xe=r(t),p(st.$$.fragment,t),Se=r(t),ct=s(t,"TABLE",{"data-svelte-h":!0}),c(ct)!=="svelte-9j8rj7"&&(ct.innerHTML=Dn),Ce=r(t),p(dt.$$.fragment,t),ve=r(t),pt=s(t,"TABLE",{"data-svelte-h":!0}),c(pt)!=="svelte-1xs3uwi"&&(pt.innerHTML=An),Re=r(t),p(ot.$$.fragment,t),_e=r(t),gt=s(t,"TABLE",{"data-svelte-h":!0}),c(gt)!=="svelte-1elkjwp"&&(gt.innerHTML=Pn),ke=r(t),p(mt.$$.fragment,t),ze=r(t),ht=s(t,"TABLE",{"data-svelte-h":!0}),c(ht)!=="svelte-15rkrq1"&&(ht.innerHTML=Kn),He=r(t),p(Mt.$$.fragment,t),Ye=r(t),bt=s(t,"TABLE",{"data-svelte-h":!0}),c(bt)!=="svelte-qjzzgd"&&(bt.innerHTML=On),Ve=r(t),p(yt.$$.fragment,t),Qe=r(t),ut=s(t,"TABLE",{"data-svelte-h":!0}),c(ut)!=="svelte-h3a43b"&&(ut.innerHTML=tl),Fe=r(t),p(ft.$$.fragment,t),Ne=r(t),Jt=s(t,"TABLE",{"data-svelte-h":!0}),c(Jt)!=="svelte-1hbo08l"&&(Jt.innerHTML=el),Ee=r(t),p(Tt.$$.fragment,t),xe=r(t),wt=s(t,"TABLE",{"data-svelte-h":!0}),c(wt)!=="svelte-abi9u4"&&(wt.innerHTML=nl),Le=r(t),p(Ut.$$.fragment,t),qe=r(t),jt=s(t,"TABLE",{"data-svelte-h":!0}),c(jt)!=="svelte-11m8i0f"&&(jt.innerHTML=ll),De=r(t),p(Zt.$$.fragment,t),Ae=r(t),Bt=s(t,"TABLE",{"data-svelte-h":!0}),c(Bt)!=="svelte-u80fnb"&&(Bt.innerHTML=al),Pe=r(t),p(Wt.$$.fragment,t),Ke=r(t),Gt=s(t,"TABLE",{"data-svelte-h":!0}),c(Gt)!=="svelte-x5owk6"&&(Gt.innerHTML=rl),Oe=r(t),p($t.$$.fragment,t),tn=r(t),It=s(t,"TABLE",{"data-svelte-h":!0}),c(It)!=="svelte-1x66rvc"&&(It.innerHTML=il),en=r(t),p(Xt.$$.fragment,t),nn=r(t),St=s(t,"UL",{"data-svelte-h":!0}),c(St)!=="svelte-1llz67b"&&(St.innerHTML=sl),ln=r(t),Ct=s(t,"P",{"data-svelte-h":!0}),c(Ct)!=="svelte-7zliwv"&&(Ct.innerHTML=cl),an=r(t),vt=s(t,"UL",{"data-svelte-h":!0}),c(vt)!=="svelte-ppwv8l"&&(vt.innerHTML=dl),rn=r(t),Rt=s(t,"P",{"data-svelte-h":!0}),c(Rt)!=="svelte-zzoysd"&&(Rt.innerHTML=pl),sn=r(t),p(_t.$$.fragment,t),cn=r(t),qt=s(t,"P",{}),Dt(qt).forEach(n),this.h()},h(){ol(w,"name","hf:doc:metadata"),ol(w,"content",Jl)},m(t,e){M(document.head,w),l(t,At,e),l(t,Lt,e),l(t,Pt,e),o(j,t,e),l(t,Kt,e),l(t,Z,e),l(t,Ot,e),l(t,B,e),l(t,te,e),o(W,t,e),l(t,ee,e),l(t,G,e),l(t,ne,e),o($,t,e),l(t,le,e),o(I,t,e),l(t,ae,e),l(t,U,e),M(U,y),M(y,kt),M(y,on),M(y,zt),M(y,gn),M(y,Ht),M(y,mn),o(X,y,null),M(y,hn),M(y,Yt),M(y,Mn),o(S,y,null),M(y,bn),M(y,Vt),M(y,yn),M(y,Qt),M(y,un),o(C,y,null),M(U,fn),M(U,f),M(f,Ft),M(f,Jn),M(f,Nt),M(f,Tn),o(v,f,null),M(f,wn),M(f,Et),M(f,Un),M(f,xt),l(t,re,e),o(R,t,e),l(t,ie,e),l(t,_,e),l(t,se,e),o(k,t,e),l(t,ce,e),o(z,t,e),l(t,de,e),o(H,t,e),l(t,pe,e),o(Y,t,e),l(t,oe,e),o(V,t,e),l(t,ge,e),o(Q,t,e),l(t,me,e),o(F,t,e),l(t,he,e),o(N,t,e),l(t,Me,e),o(E,t,e),l(t,be,e),o(x,t,e),l(t,ye,e),o(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,A,e),l(t,Te,e),l(t,P,e),l(t,we,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),o(et,t,e),l(t,Be,e),l(t,nt,e),l(t,We,e),o(lt,t,e),l(t,Ge,e),l(t,at,e),l(t,$e,e),o(rt,t,e),l(t,Ie,e),l(t,it,e),l(t,Xe,e),o(st,t,e),l(t,Se,e),l(t,ct,e),l(t,Ce,e),o(dt,t,e),l(t,ve,e),l(t,pt,e),l(t,Re,e),o(ot,t,e),l(t,_e,e),l(t,gt,e),l(t,ke,e),o(mt,t,e),l(t,ze,e),l(t,ht,e),l(t,He,e),o(Mt,t,e),l(t,Ye,e),l(t,bt,e),l(t,Ve,e),o(yt,t,e),l(t,Qe,e),l(t,ut,e),l(t,Fe,e),o(ft,t,e),l(t,Ne,e),l(t,Jt,e),l(t,Ee,e),o(Tt,t,e),l(t,xe,e),l(t,wt,e),l(t,Le,e),o(Ut,t,e),l(t,qe,e),l(t,jt,e),l(t,De,e),o(Zt,t,e),l(t,Ae,e),l(t,Bt,e),l(t,Pe,e),o(Wt,t,e),l(t,Ke,e),l(t,Gt,e),l(t,Oe,e),o($t,t,e),l(t,tn,e),l(t,It,e),l(t,en,e),o(Xt,t,e),l(t,nn,e),l(t,St,e),l(t,ln,e),l(t,Ct,e),l(t,an,e),l(t,vt,e),l(t,rn,e),l(t,Rt,e),l(t,sn,e),o(_t,t,e),l(t,cn,e),l(t,qt,e),dn=!0},p:ml,i(t){dn||(g(j.$$.fragment,t),g(W.$$.fragment,t),g($.$$.fragment,t),g(I.$$.fragment,t),g(X.$$.fragment,t),g(S.$$.fragment,t),g(C.$$.fragment,t),g(v.$$.fragment,t),g(R.$$.fragment,t),g(k.$$.fragment,t),g(z.$$.fragment,t),g(H.$$.fragment,t),g(Y.$$.fragment,t),g(V.$$.fragment,t),g(Q.$$.fragment,t),g(F.$$.fragment,t),g(N.$$.fragment,t),g(E.$$.fragment,t),g(x.$$.fragment,t),g(L.$$.fragment,t),g(et.$$.fragment,t),g(lt.$$.fragment,t),g(rt.$$.fragment,t),g(st.$$.fragment,t),g(dt.$$.fragment,t),g(ot.$$.fragment,t),g(mt.$$.fragment,t),g(Mt.$$.fragment,t),g(yt.$$.fragment,t),g(ft.$$.fragment,t),g(Tt.$$.fragment,t),g(Ut.$$.fragment,t),g(Zt.$$.fragment,t),g(Wt.$$.fragment,t),g($t.$$.fragment,t),g(Xt.$$.fragment,t),g(_t.$$.fragment,t),dn=!0)},o(t){m(j.$$.fragment,t),m(W.$$.fragment,t),m($.$$.fragment,t),m(I.$$.fragment,t),m(X.$$.fragment,t),m(S.$$.fragment,t),m(C.$$.fragment,t),m(v.$$.fragment,t),m(R.$$.fragment,t),m(k.$$.fragment,t),m(z.$$.fragment,t),m(H.$$.fragment,t),m(Y.$$.fragment,t),m(V.$$.fragment,t),m(Q.$$.fragment,t),m(F.$$.fragment,t),m(N.$$.fragment,t),m(E.$$.fragment,t),m(x.$$.fragment,t),m(L.$$.fragment,t),m(et.$$.fragment,t),m(lt.$$.fragment,t),m(rt.$$.fragment,t),m(st.$$.fragment,t),m(dt.$$.fragment,t),m(ot.$$.fragment,t),m(mt.$$.fragment,t),m(Mt.$$.fragment,t),m(yt.$$.fragment,t),m(ft.$$.fragment,t),m(Tt.$$.fragment,t),m(Ut.$$.fragment,t),m(Zt.$$.fragment,t),m(Wt.$$.fragment,t),m($t.$$.fragment,t),m(Xt.$$.fragment,t),m(_t.$$.fragment,t),dn=!1},d(t){t&&(n(At),n(Lt),n(Pt),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(ie),n(_),n(se),n(ce),n(de),n(pe),n(oe),n(ge),n(me),n(he),n(Me),n(be),n(ye),n(ue),n(q),n(fe),n(D),n(Je),n(A),n(Te),n(P),n(we),n(K),n(Ue),n(O),n(je),n(tt),n(Ze),n(Be),n(nt),n(We),n(Ge),n(at),n($e),n(Ie),n(it),n(Xe),n(Se),n(ct),n(Ce),n(ve),n(pt),n(Re),n(_e),n(gt),n(ke),n(ze),n(ht),n(He),n(Ye),n(bt),n(Ve),n(Qe),n(ut),n(Fe),n(Ne),n(Jt),n(Ee),n(xe),n(wt),n(Le),n(qe),n(jt),n(De),n(Ae),n(Bt),n(Pe),n(Ke),n(Gt),n(Oe),n(tn),n(It),n(en),n(nn),n(St),n(ln),n(Ct),n(an),n(vt),n(rn),n(Rt),n(sn),n(cn),n(qt)),n(w),h(j,t),h(W,t),h($,t),h(I,t),h(X),h(S),h(C),h(v),h(R,t),h(k,t),h(z,t),h(H,t),h(Y,t),h(V,t),h(Q,t),h(F,t),h(N,t),h(E,t),h(x,t),h(L,t),h(et,t),h(lt,t),h(rt,t),h(st,t),h(dt,t),h(ot,t),h(mt,t),h(Mt,t),h(yt,t),h(ft,t),h(Tt,t),h(Ut,t),h(Zt,t),h(Wt,t),h($t,t),h(Xt,t),h(_t,t)}}}const Jl='{"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},{"title":"A100 (batch size: 1)","local":"a100-batch-size-1","sections":[],"depth":3},{"title":"A100 (batch size: 4)","local":"a100-batch-size-4","sections":[],"depth":3},{"title":"A100 (batch size: 16)","local":"a100-batch-size-16","sections":[],"depth":3},{"title":"V100 (batch size: 1)","local":"v100-batch-size-1","sections":[],"depth":3},{"title":"V100 (batch size: 4)","local":"v100-batch-size-4","sections":[],"depth":3},{"title":"V100 (batch size: 16)","local":"v100-batch-size-16","sections":[],"depth":3},{"title":"T4 (batch size: 1)","local":"t4-batch-size-1","sections":[],"depth":3},{"title":"T4 (batch size: 4)","local":"t4-batch-size-4","sections":[],"depth":3},{"title":"T4 (batch size: 16)","local":"t4-batch-size-16","sections":[],"depth":3},{"title":"RTX 3090 (batch size: 1)","local":"rtx-3090-batch-size-1","sections":[],"depth":3},{"title":"RTX 3090 (batch size: 4)","local":"rtx-3090-batch-size-4","sections":[],"depth":3},{"title":"RTX 3090 (batch size: 16)","local":"rtx-3090-batch-size-16","sections":[],"depth":3},{"title":"RTX 4090 (batch size: 1)","local":"rtx-4090-batch-size-1","sections":[],"depth":3},{"title":"RTX 4090 (batch size: 4)","local":"rtx-4090-batch-size-4","sections":[],"depth":3},{"title":"RTX 4090 (batch size: 16)","local":"rtx-4090-batch-size-16","sections":[],"depth":3}],"depth":2},{"title":"참고","local":"참고","sections":[],"depth":2}],"depth":1}';function Tl(jn){return hl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Bl extends Ml{constructor(w){super(),bl(this,w,Tl,fl,gl,{})}}export{Bl as component}; | |
Xet Storage Details
- Size:
- 68.2 kB
- Xet hash:
- 67f522f88edffe8885079a736fc3eab29c7d7caac6454e52a6d44b8aaf679b32
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.