Buckets:
| import"../chunks/DsnmJJEf.js";import{i as tt,h as nt,C as et,H as n,a as e,E as lt,s as at}from"../chunks/CFM6C53a.js";import{p as st,o as rt,s as t,f as it,a as q,b as ct,d as s,c as A,r,n as x}from"../chunks/CNc7KuUZ.js";const dt='{"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}';var ot=A('<meta name="hf:doc:metadata"/>'),pt=A(`<p></p> <!> <!> <p><code>0.13.0</code> 버전부터 Diffusers는 <a href="https://pytorch.org/get-started/pytorch-2.0/" rel="nofollow">PyTorch 2.0</a>에서의 최신 최적화를 지원합니다. 이는 다음을 포함됩니다.</p> <ol><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></ol> <!> <p>가속화된 어텐션 구현과 및 <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>)를 사용합니다.</p> <!> <!> <ol><li><p><strong>가속화된 트랜스포머 구현</strong></p> <p>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에 내장되어 있습니다.</p> <p>이러한 최적화는 PyTorch 2.0이 설치되어 있고 <code>torch.nn.functional.scaled_dot_product_attention</code>을 사용할 수 있는 경우 Diffusers에서 기본적으로 활성화됩니다. 이를 사용하려면 <code>torch 2.0</code>을 설치하고 파이프라인을 사용하기만 하면 됩니다. 예를 들어:</p> <!> <p>이를 명시적으로 활성화하려면(필수는 아님) 아래와 같이 수행할 수 있습니다.</p> <!> <p>이 실행 과정은 <code>xFormers</code>만큼 빠르고 메모리적으로 효율적이어야 합니다. 자세한 내용은 <a href="#benchmark">벤치마크</a>에서 확인하세요.</p> <p>파이프라인을 보다 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> 함수를 사용할 수 있습니다:</p> <!></li> <li><p><strong>torch.compile</strong></p> <p>추가적인 속도 향상을 위해 새로운 <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>를 참조하세요.</p> <!> <p>GPU 유형에 따라 <code>compile()</code>은 가속화된 트랜스포머 최적화를 통해 <strong>5% - 300%</strong>의 <em>추가 성능 향상</em>을 얻을 수 있습니다. 그러나 컴파일은 Ampere(A100, 3090), Ada(4090) 및 Hopper(H100)와 같은 최신 GPU 아키텍처에서 더 많은 성능 향상을 가져올 수 있음을 참고하세요.</p> <p>컴파일은 완료하는 데 약간의 시간이 걸리므로, 파이프라인을 한 번 준비한 다음 동일한 유형의 추론 작업을 여러 번 수행해야 하는 상황에 가장 적합합니다. 다른 이미지 크기에서 컴파일된 파이프라인을 호출하면 시간적 비용이 많이 들 수 있는 컴파일 작업이 다시 트리거됩니다.</p></li></ol> <!> <p>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>을 사용했습니다.</p> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <!> <p>PyTorch 2.0 및 <code>torch.compile()</code>로 얻을 수 있는 가능한 속도 향상에 대해, <a href="StableDiffusionPipeline">Stable Diffusion text-to-image pipeline</a>에 대한 상대적인 속도 향상을 보여주는 차트를 5개의 서로 다른 GPU 제품군(배치 크기 4)에 대해 나타냅니다:</p> <p><img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/pt2_benchmarks/t2i_speedup.png" alt="t2i_speedup"/></p> <p>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() 사용) 수치를 보여주는 차트를 보입니다:</p> <p><img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/pt2_benchmarks/a100_numbers.png" alt="a100_numbers"/></p> <p><em>(위 차트의 벤치마크 메트릭은 <strong>초당 iteration 수(iterations/second)</strong>입니다)</em></p> <p>그러나 투명성을 위해 모든 벤치마킹 수치를 공개합니다!</p> <p>다음 표들에서는, <strong><em>초당 처리되는 iteration</em></strong> 수 측면에서의 결과를 보여줍니다.</p> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <table><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></table> <!> <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></ul> <p><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></p> <ul><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></ul> <p><em>Diffusers에서 <code>torch.compile()</code> 지원을 개선하는 데 도움을 준 PyTorch 팀의 <a href="https://github.com/Chillee" rel="nofollow">Horace He</a>에게 감사드립니다.</em></p> <!> <p></p>`,1);function bt(L,P){st(P,!1),rt(()=>{new URLSearchParams(window.location.search).get("fw")}),tt();var i=pt();nt("dc40rv",H=>{var D=ot();at(D,"content",dt),q(H,D)});var c=t(it(i),2);et(c,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var d=t(c,2);n(d,{title:"Diffusers에서의 PyTorch 2.0 가속화 지원",local:"diffusers에서의-pytorch-20-가속화-지원",headingTag:"h1"});var o=t(d,6);n(o,{title:"설치",local:"설치",headingTag:"h2"});var p=t(o,4);e(p,{code:"cGlwJTIwaW5zdGFsbCUyMC0tdXBncmFkZSUyMHRvcmNoJTIwZGlmZnVzZXJz",highlighted:"pip install --upgrade torch diffusers",lang:"bash",wrap:!1});var g=t(p,2);n(g,{title:"가속화된 트랜스포머와 torch.compile 사용하기.",local:"가속화된-트랜스포머와-torchcompile-사용하기",headingTag:"h2"});var l=t(g,2),a=s(l),h=t(s(a),6);e(h,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEElMEFwaXBlJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUyMnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiklMEFwaXBlJTIwJTNEJTIwcGlwZS50byglMjJjdWRhJTIyKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmElMjBwaG90byUyMG9mJTIwYW4lMjBhc3Ryb25hdXQlMjByaWRpbmclMjBhJTIwaG9yc2UlMjBvbiUyMG1hcnMlMjIlMEFpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0KS5pbWFnZXMlNUIwJTVE",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">"stable-diffusion-v1-5/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>]`,lang:"Python",wrap:!1});var m=t(h,4);e(m,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEElMkIlMjBmcm9tJTIwZGlmZnVzZXJzLm1vZGVscy5hdHRlbnRpb25fcHJvY2Vzc29yJTIwaW1wb3J0JTIwQXR0blByb2Nlc3NvcjJfMCUwQSUwQXBpcGUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKSUwQSUyQiUyMHBpcGUudW5ldC5zZXRfYXR0bl9wcm9jZXNzb3IoQXR0blByb2Nlc3NvcjJfMCgpKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmElMjBwaG90byUyMG9mJTIwYW4lMjBhc3Ryb25hdXQlMjByaWRpbmclMjBhJTIwaG9yc2UlMjBvbiUyMG1hcnMlMjIlMEFpbWFnZSUyMCUzRCUyMHBpcGUocHJvbXB0KS5pbWFnZXMlNUIwJTVE",highlighted:`import torch | |
| from diffusers import DiffusionPipeline | |
| <span class="hljs-addition">+ from diffusers.models.attention_processor import AttnProcessor2_0</span> | |
| pipe = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/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]`,lang:"diff",wrap:!1});var K=t(m,6);e(K,{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwRGlmZnVzaW9uUGlwZWxpbmUlMEFmcm9tJTIwZGlmZnVzZXJzLm1vZGVscy5hdHRlbnRpb25fcHJvY2Vzc29yJTIwaW1wb3J0JTIwQXR0blByb2Nlc3NvciUwQSUwQXBpcGUlMjAlM0QlMjBEaWZmdXNpb25QaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KS50byglMjJjdWRhJTIyKSUwQXBpcGUudW5ldC5zZXRfZGVmYXVsdF9hdHRuX3Byb2Nlc3NvcigpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyYSUyMHBob3RvJTIwb2YlMjBhbiUyMGFzdHJvbmF1dCUyMHJpZGluZyUyMGElMjBob3JzZSUyMG9uJTIwbWFycyUyMiUwQWltYWdlJTIwJTNEJTIwcGlwZShwcm9tcHQpLmltYWdlcyU1QjAlNUQ=",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">"stable-diffusion-v1-5/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>]`,lang:"Python",wrap:!1}),r(a);var b=t(a,2),O=t(s(b),4);e(O,{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`,lang:"python",wrap:!1}),x(4),r(b),r(l);var M=t(l,2);n(M,{title:"벤치마크",local:"벤치마크",headingTag:"h2"});var y=t(M,4);n(y,{title:"벤치마킹 코드",local:"벤치마킹-코드",headingTag:"h3"});var u=t(y,2);n(u,{title:"Stable Diffusion text-to-image",local:"stable-diffusion-text-to-image",headingTag:"h4"});var J=t(u,2);e(J,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBaW1wb3J0JTIwdG9yY2glMEElMEFwYXRoJTIwJTNEJTIwJTIyc3RhYmxlLWRpZmZ1c2lvbi12MS01JTJGc3RhYmxlLWRpZmZ1c2lvbi12MS01JTIyJTBBJTBBcnVuX2NvbXBpbGUlMjAlM0QlMjBUcnVlJTIwJTIwJTIzJTIwU2V0JTIwVHJ1ZSUyMCUyRiUyMEZhbHNlJTBBJTBBcGlwZSUyMCUzRCUyMERpZmZ1c2lvblBpcGVsaW5lLmZyb21fcHJldHJhaW5lZChwYXRoJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGUlMjAlM0QlMjBwaXBlLnRvKCUyMmN1ZGElMjIpJTBBcGlwZS51bmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQSUwQWlmJTIwcnVuX2NvbXBpbGUlM0ElMEElMjAlMjAlMjAlMjBwcmludCglMjJSdW4lMjB0b3JjaCUyMGNvbXBpbGUlMjIpJTBBJTIwJTIwJTIwJTIwcGlwZS51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnVuZXQlMkMlMjBtb2RlJTNEJTIycmVkdWNlLW92ZXJoZWFkJTIyJTJDJTIwZnVsbGdyYXBoJTNEVHJ1ZSklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJnaGlibGklMjBzdHlsZSUyQyUyMGElMjBmYW50YXN5JTIwbGFuZHNjYXBlJTIwd2l0aCUyMGNhc3RsZXMlMjIlMEElMEFmb3IlMjBfJTIwaW4lMjByYW5nZSgzKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlcyUyMCUzRCUyMHBpcGUocHJvbXB0JTNEcHJvbXB0KS5pbWFnZXM=",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">"stable-diffusion-v1-5/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`,lang:"python",wrap:!1});var w=t(J,2);n(w,{title:"Stable Diffusion image-to-image",local:"stable-diffusion-image-to-image",headingTag:"h4"});var T=t(w,2);e(T,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbkltZzJJbWdQaXBlbGluZSUwQWltcG9ydCUyMHJlcXVlc3RzJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwaW8lMjBpbXBvcnQlMjBCeXRlc0lPJTBBJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24lMkZtYWluJTJGYXNzZXRzJTJGc3RhYmxlLXNhbXBsZXMlMkZpbWcyaW1nJTJGc2tldGNoLW1vdW50YWlucy1pbnB1dC5qcGclMjIlMEElMEFyZXNwb25zZSUyMCUzRCUyMHJlcXVlc3RzLmdldCh1cmwpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMGluaXRfaW1hZ2UucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQSUwQXBhdGglMjAlM0QlMjAlMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMEElMEFydW5fY29tcGlsZSUyMCUzRCUyMFRydWUlMjAlMjAlMjMlMjBTZXQlMjBUcnVlJTIwJTJGJTIwRmFsc2UlMEElMEFwaXBlJTIwJTNEJTIwU3RhYmxlRGlmZnVzaW9uSW1nMkltZ1BpcGVsaW5lLmZyb21fcHJldHJhaW5lZChwYXRoJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGUlMjAlM0QlMjBwaXBlLnRvKCUyMmN1ZGElMjIpJTBBcGlwZS51bmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQSUwQWlmJTIwcnVuX2NvbXBpbGUlM0ElMEElMjAlMjAlMjAlMjBwcmludCglMjJSdW4lMjB0b3JjaCUyMGNvbXBpbGUlMjIpJTBBJTIwJTIwJTIwJTIwcGlwZS51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnVuZXQlMkMlMjBtb2RlJTNEJTIycmVkdWNlLW92ZXJoZWFkJTIyJTJDJTIwZnVsbGdyYXBoJTNEVHJ1ZSklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJnaGlibGklMjBzdHlsZSUyQyUyMGElMjBmYW50YXN5JTIwbGFuZHNjYXBlJTIwd2l0aCUyMGNhc3RsZXMlMjIlMEElMEFmb3IlMjBfJTIwaW4lMjByYW5nZSgzKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlJTIwJTNEJTIwcGlwZShwcm9tcHQlM0Rwcm9tcHQlMkMlMjBpbWFnZSUzRGluaXRfaW1hZ2UpLmltYWdlcyU1QjAlNUQ=",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">"stable-diffusion-v1-5/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>]`,lang:"python",wrap:!1});var j=t(T,2);n(j,{title:"Stable Diffusion - inpainting",local:"stable-diffusion---inpainting",headingTag:"h4"});var U=t(j,2);e(U,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbklucGFpbnRQaXBlbGluZSUwQWltcG9ydCUyMHJlcXVlc3RzJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwaW8lMjBpbXBvcnQlMjBCeXRlc0lPJTBBJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24lMkZtYWluJTJGYXNzZXRzJTJGc3RhYmxlLXNhbXBsZXMlMkZpbWcyaW1nJTJGc2tldGNoLW1vdW50YWlucy1pbnB1dC5qcGclMjIlMEElMEFkZWYlMjBkb3dubG9hZF9pbWFnZSh1cmwpJTNBJTBBJTIwJTIwJTIwJTIwcmVzcG9uc2UlMjAlM0QlMjByZXF1ZXN0cy5nZXQodXJsKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBJTBBJTBBaW1nX3VybCUyMCUzRCUyMCUyMmh0dHBzJTNBJTJGJTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRkNvbXBWaXMlMkZsYXRlbnQtZGlmZnVzaW9uJTJGbWFpbiUyRmRhdGElMkZpbnBhaW50aW5nX2V4YW1wbGVzJTJGb3ZlcnR1cmUtY3JlYXRpb25zLTVzSTZmUWdZSXVvLnBuZyUyMiUwQW1hc2tfdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRmxhdGVudC1kaWZmdXNpb24lMkZtYWluJTJGZGF0YSUyRmlucGFpbnRpbmdfZXhhbXBsZXMlMkZvdmVydHVyZS1jcmVhdGlvbnMtNXNJNmZRZ1lJdW9fbWFzay5wbmclMjIlMEElMEFpbml0X2ltYWdlJTIwJTNEJTIwZG93bmxvYWRfaW1hZ2UoaW1nX3VybCkucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQW1hc2tfaW1hZ2UlMjAlM0QlMjBkb3dubG9hZF9pbWFnZShtYXNrX3VybCkucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQSUwQXBhdGglMjAlM0QlMjAlMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLWlucGFpbnRpbmclMjIlMEElMEFydW5fY29tcGlsZSUyMCUzRCUyMFRydWUlMjAlMjAlMjMlMjBTZXQlMjBUcnVlJTIwJTJGJTIwRmFsc2UlMEElMEFwaXBlJTIwJTNEJTIwU3RhYmxlRGlmZnVzaW9uSW5wYWludFBpcGVsaW5lLmZyb21fcHJldHJhaW5lZChwYXRoJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5mbG9hdDE2KSUwQXBpcGUlMjAlM0QlMjBwaXBlLnRvKCUyMmN1ZGElMjIpJTBBcGlwZS51bmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQSUwQWlmJTIwcnVuX2NvbXBpbGUlM0ElMEElMjAlMjAlMjAlMjBwcmludCglMjJSdW4lMjB0b3JjaCUyMGNvbXBpbGUlMjIpJTBBJTIwJTIwJTIwJTIwcGlwZS51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnVuZXQlMkMlMjBtb2RlJTNEJTIycmVkdWNlLW92ZXJoZWFkJTIyJTJDJTIwZnVsbGdyYXBoJTNEVHJ1ZSklMEElMEFwcm9tcHQlMjAlM0QlMjAlMjJnaGlibGklMjBzdHlsZSUyQyUyMGElMjBmYW50YXN5JTIwbGFuZHNjYXBlJTIwd2l0aCUyMGNhc3RsZXMlMjIlMEElMEFmb3IlMjBfJTIwaW4lMjByYW5nZSgzKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlJTIwJTNEJTIwcGlwZShwcm9tcHQlM0Rwcm9tcHQlMkMlMjBpbWFnZSUzRGluaXRfaW1hZ2UlMkMlMjBtYXNrX2ltYWdlJTNEbWFza19pbWFnZSkuaW1hZ2VzJTVCMCU1RA==",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">"stable-diffusion-v1-5/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>]`,lang:"python",wrap:!1});var f=t(U,2);n(f,{title:"ControlNet",local:"controlnet",headingTag:"h4"});var Z=t(f,2);e(Z,{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMFN0YWJsZURpZmZ1c2lvbkNvbnRyb2xOZXRQaXBlbGluZSUyQyUyMENvbnRyb2xOZXRNb2RlbCUwQWltcG9ydCUyMHJlcXVlc3RzJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwUElMJTIwaW1wb3J0JTIwSW1hZ2UlMEFmcm9tJTIwaW8lMjBpbXBvcnQlMjBCeXRlc0lPJTBBJTBBdXJsJTIwJTNEJTIwJTIyaHR0cHMlM0ElMkYlMkZyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJTJGQ29tcFZpcyUyRnN0YWJsZS1kaWZmdXNpb24lMkZtYWluJTJGYXNzZXRzJTJGc3RhYmxlLXNhbXBsZXMlMkZpbWcyaW1nJTJGc2tldGNoLW1vdW50YWlucy1pbnB1dC5qcGclMjIlMEElMEFyZXNwb25zZSUyMCUzRCUyMHJlcXVlc3RzLmdldCh1cmwpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMEltYWdlLm9wZW4oQnl0ZXNJTyhyZXNwb25zZS5jb250ZW50KSkuY29udmVydCglMjJSR0IlMjIpJTBBaW5pdF9pbWFnZSUyMCUzRCUyMGluaXRfaW1hZ2UucmVzaXplKCg1MTIlMkMlMjA1MTIpKSUwQSUwQXBhdGglMjAlM0QlMjAlMjJzdGFibGUtZGlmZnVzaW9uLXYxLTUlMkZzdGFibGUtZGlmZnVzaW9uLXYxLTUlMjIlMEElMEFydW5fY29tcGlsZSUyMCUzRCUyMFRydWUlMjAlMjAlMjMlMjBTZXQlMjBUcnVlJTIwJTJGJTIwRmFsc2UlMEFjb250cm9sbmV0JTIwJTNEJTIwQ29udHJvbE5ldE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJsbGx5YXN2aWVsJTJGc2QtY29udHJvbG5ldC1jYW5ueSUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiklMEFwaXBlJTIwJTNEJTIwU3RhYmxlRGlmZnVzaW9uQ29udHJvbE5ldFBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjBwYXRoJTJDJTIwY29udHJvbG5ldCUzRGNvbnRyb2xuZXQlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYlMEEpJTBBJTBBcGlwZSUyMCUzRCUyMHBpcGUudG8oJTIyY3VkYSUyMiklMEFwaXBlLnVuZXQudG8obWVtb3J5X2Zvcm1hdCUzRHRvcmNoLmNoYW5uZWxzX2xhc3QpJTBBcGlwZS5jb250cm9sbmV0LnRvKG1lbW9yeV9mb3JtYXQlM0R0b3JjaC5jaGFubmVsc19sYXN0KSUwQSUwQWlmJTIwcnVuX2NvbXBpbGUlM0ElMEElMjAlMjAlMjAlMjBwcmludCglMjJSdW4lMjB0b3JjaCUyMGNvbXBpbGUlMjIpJTBBJTIwJTIwJTIwJTIwcGlwZS51bmV0JTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnVuZXQlMkMlMjBtb2RlJTNEJTIycmVkdWNlLW92ZXJoZWFkJTIyJTJDJTIwZnVsbGdyYXBoJTNEVHJ1ZSklMEElMjAlMjAlMjAlMjBwaXBlLmNvbnRyb2xuZXQlMjAlM0QlMjB0b3JjaC5jb21waWxlKHBpcGUuY29udHJvbG5ldCUyQyUyMG1vZGUlM0QlMjJyZWR1Y2Utb3ZlcmhlYWQlMjIlMkMlMjBmdWxsZ3JhcGglM0RUcnVlKSUwQSUwQXByb21wdCUyMCUzRCUyMCUyMmdoaWJsaSUyMHN0eWxlJTJDJTIwYSUyMGZhbnRhc3klMjBsYW5kc2NhcGUlMjB3aXRoJTIwY2FzdGxlcyUyMiUwQSUwQWZvciUyMF8lMjBpbiUyMHJhbmdlKDMpJTNBJTBBJTIwJTIwJTIwJTIwaW1hZ2UlMjAlM0QlMjBwaXBlKHByb21wdCUzRHByb21wdCUyQyUyMGltYWdlJTNEaW5pdF9pbWFnZSkuaW1hZ2VzJTVCMCU1RA==",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">"stable-diffusion-v1-5/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>]`,lang:"python",wrap:!1});var G=t(Z,2);n(G,{title:"IF text-to-image + upscaling",local:"if-text-to-image--upscaling",headingTag:"h4"});var B=t(G,2);e(B,{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`,lang:"python",wrap:!1});var I=t(B,16);n(I,{title:"A100 (batch size: 1)",local:"a100-batch-size-1",headingTag:"h3"});var X=t(I,4);n(X,{title:"A100 (batch size: 4)",local:"a100-batch-size-4",headingTag:"h3"});var W=t(X,4);n(W,{title:"A100 (batch size: 16)",local:"a100-batch-size-16",headingTag:"h3"});var R=t(W,4);n(R,{title:"V100 (batch size: 1)",local:"v100-batch-size-1",headingTag:"h3"});var S=t(R,4);n(S,{title:"V100 (batch size: 4)",local:"v100-batch-size-4",headingTag:"h3"});var _=t(S,4);n(_,{title:"V100 (batch size: 16)",local:"v100-batch-size-16",headingTag:"h3"});var v=t(_,4);n(v,{title:"T4 (batch size: 1)",local:"t4-batch-size-1",headingTag:"h3"});var z=t(v,4);n(z,{title:"T4 (batch size: 4)",local:"t4-batch-size-4",headingTag:"h3"});var Y=t(z,4);n(Y,{title:"T4 (batch size: 16)",local:"t4-batch-size-16",headingTag:"h3"});var E=t(Y,4);n(E,{title:"RTX 3090 (batch size: 1)",local:"rtx-3090-batch-size-1",headingTag:"h3"});var V=t(E,4);n(V,{title:"RTX 3090 (batch size: 4)",local:"rtx-3090-batch-size-4",headingTag:"h3"});var C=t(V,4);n(C,{title:"RTX 3090 (batch size: 16)",local:"rtx-3090-batch-size-16",headingTag:"h3"});var k=t(C,4);n(k,{title:"RTX 4090 (batch size: 1)",local:"rtx-4090-batch-size-1",headingTag:"h3"});var N=t(k,4);n(N,{title:"RTX 4090 (batch size: 4)",local:"rtx-4090-batch-size-4",headingTag:"h3"});var Q=t(N,4);n(Q,{title:"RTX 4090 (batch size: 16)",local:"rtx-4090-batch-size-16",headingTag:"h3"});var F=t(Q,4);n(F,{title:"참고",local:"참고",headingTag:"h2"});var $=t(F,10);lt($,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/ko/optimization/torch2.0.md"}),x(2),q(L,i),ct()}export{bt as component}; | |
Xet Storage Details
- Size:
- 57.1 kB
- Xet hash:
- 94904aa1af4f64d709731e10b487f200ed7b7519c84bd94c2640ecd0459f2a0a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.