Buckets:

rtrm's picture
download
raw
36.3 kB
import{s as St,o as Qt,n as Lt}from"../chunks/scheduler.412302f6.js";import{S as Yt,i as Ft,g as a,s as i,r as m,A as Dt,h as p,f as t,c as n,j as zt,u as c,x as r,k as J,y as Et,a as s,v as o,d as f,t as u,w as M}from"../chunks/index.f36f02f5.js";import{C as h,T as Nt}from"../chunks/CodeBlock.1c650765.js";import{D as Pt}from"../chunks/DocNotebookDropdown.1a2c1686.js";import{H as v,E as At}from"../chunks/EditOnGithub.8f6ba72a.js";function qt(Be){let d,b='💡 如果你没有 GPU, 你可以从像 <a href="https://colab.research.google.com/" rel="nofollow">Colab</a> 这样的 GPU 提供商获取免费的 GPU !';return{c(){d=a("p"),d.innerHTML=b},l(y){d=p(y,"P",{"data-svelte-h":!0}),r(d)!=="svelte-1n3oz5u"&&(d.innerHTML=b)},m(y,w){s(y,d,w)},p:Lt,d(y){y&&t(d)}}}function Kt(Be){let d,b="💡 我们强烈建议把 pipeline 精度降低至 <code>float16</code> , 到目前为止, 我们很少看到输出质量有任何下降。";return{c(){d=a("p"),d.innerHTML=b},l(y){d=p(y,"P",{"data-svelte-h":!0}),r(d)!=="svelte-irsrig"&&(d.innerHTML=b)},m(y,w){s(y,d,w)},p:Lt,d(y){y&&t(d)}}}function Ot(Be){let d,b,y,w,V,Re,k,xe,I,Ol="让 <code>DiffusionPipeline</code> 生成特定风格或包含你所想要的内容的图像可能会有些棘手。 通常情况下,你需要多次运行 <code>DiffusionPipeline</code> 才能得到满意的图像。但是从无到有生成图像是一个计算密集的过程,特别是如果你要一遍又一遍地进行推理运算。",ze,H,et="这就是为什么从pipeline中获得最高的 <em>computational</em> (speed) 和 <em>memory</em> (GPU RAM) 非常重要 ,以减少推理周期之间的时间,从而使迭代速度更快。",Ne,C,lt="本教程将指导您如何通过 <code>DiffusionPipeline</code> 更快、更好地生成图像。",Le,B,tt='首先,加载 <a href="https://huggingface.co/runwayml/stable-diffusion-v1-5" rel="nofollow"><code>runwayml/stable-diffusion-v1-5</code></a> 模型:',Se,X,Qe,R,st="本教程将使用的提示词是 <code>portrait photo of a old warrior chief</code> ,但是你可以随心所欲的想象和构造自己的提示词:",Ye,x,Fe,z,De,T,Ee,N,it="加速推理的最简单方法之一是将 pipeline 放在 GPU 上 ,就像使用任何 PyTorch 模块一样:",Pe,L,Ae,S,nt='为了确保您可以使用相同的图像并对其进行改进,使用 <a href="https://pytorch.org/docs/stable/generated/torch.Generator.html" rel="nofollow"><code>Generator</code></a> 方法,然后设置一个随机数种子 以确保其 <a href="./using-diffusers/reusing_seeds">复现性</a>:',qe,Q,Ke,Y,at="现在,你可以生成一个图像:",Oe,F,el,U,pt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_1.png"/>',ll,D,rt="在 T4 GPU 上,这个过程大概要30秒(如果你的 GPU 比 T4 好,可能会更快)。在默认情况下,<code>DiffusionPipeline</code> 使用完整的 <code>float32</code> 精度进行 50 步推理。你可以通过降低精度(如 <code>float16</code> )或者减少推理步数来加速整个过程",tl,E,mt="让我们把模型的精度降低至 <code>float16</code> ,然后生成一张图像:",sl,P,il,Z,ct='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_2.png"/>',nl,A,ot="这一次,生成图像只花了约 11 秒,比之前快了近 3 倍!",al,g,pl,q,ft="另一个选择是减少推理步数。 你可以选择一个更高效的调度器 (<em>scheduler</em>) 可以减少推理步数同时保证输出质量。您可以在 [DiffusionPipeline] 中通过调用compatibles方法找到与当前模型兼容的调度器 (<em>scheduler</em>)。",rl,K,ml,O,ut="Stable Diffusion 模型默认使用的是 <code>PNDMScheduler</code> ,通常要大概50步推理, 但是像 <code>DPMSolverMultistepScheduler</code> 这样更高效的调度器只要大概 20 或 25 步推理. 使用 <code>ConfigMixin.from_config()</code> 方法加载新的调度器:",cl,ee,ol,le,Mt="现在将 <code>num_inference_steps</code> 设置为 20:",fl,te,ul,$,dt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_3.png"/>',Ml,se,yt="太棒了!你成功把推理时间缩短到 4 秒!⚡️",dl,ie,yl,ne,ht="改善 pipeline 性能的另一个关键是减少内存的使用量,这间接意味着速度更快,因为你经常试图最大化每秒生成的图像数量。要想知道你一次可以生成多少张图片,最简单的方法是尝试不同的batch size,直到出现<code>OutOfMemoryError</code> (OOM)。",hl,ae,bt="创建一个函数,为每一批要生成的图像分配提示词和 <code>Generators</code> 。请务必为每个<code>Generator</code> 分配一个种子,以便于复现良好的结果。",bl,pe,Jl,re,Jt="设置 <code>batch_size=4</code> ,然后看一看我们消耗了多少内存:",wl,me,Tl,ce,wt="除非你有一个更大内存的GPU, 否则上述代码会返回 <code>OOM</code> 错误! 大部分内存被 cross-attention 层使用。按顺序运行可以节省大量内存,而不是在批处理中进行。你可以为 pipeline 配置 <code>enable_attention_slicing()</code> 函数:",Ul,oe,Zl,fe,Tt="现在尝试把 <code>batch_size</code> 增加到 8!",gl,ue,$l,G,Ut='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_5.png"/>',Gl,Me,Zt="以前你不能一批生成 4 张图片,而现在你可以在一张图片里面生成八张图片而只需要大概3.5秒!这可能是 T4 GPU 在不牺牲质量的情况运行速度最快的一种方法。",jl,de,Wl,ye,gt="在最后两节中, 你要学习如何通过 <code>fp16</code> 来优化 pipeline 的速度, 通过使用性能更高的调度器来减少推理步数, 使用注意力切片(<em>enabling attention slicing</em>)方法来节省内存。现在,你将关注的是如何提高图像的质量。",_l,he,vl,be,$t='有个显而易见的方法是使用更好的 checkpoints。 Stable Diffusion 模型是一个很好的起点, 自正式发布以来,还发布了几个改进版本。然而, 使用更新的版本并不意味着你会得到更好的结果。你仍然需要尝试不同的 checkpoints ,并做一些研究 (例如使用 <a href="https://minimaxir.com/2022/11/stable-diffusion-negative-prompt/" rel="nofollow">negative prompts</a>) 来获得更好的结果。',Vl,Je,Gt='随着该领域的发展, 有越来越多经过微调的高质量的 checkpoints 用来生成不一样的风格. 在 <a href="https://huggingface.co/models?library=diffusers&amp;sort=downloads" rel="nofollow">Hub</a> 和 <a href="https://huggingface.co/spaces/huggingface-projects/diffusers-gallery" rel="nofollow">Diffusers Gallery</a> 寻找你感兴趣的一种!',kl,we,Il,Te,jt='也可以尝试用新版本替换当前 pipeline 组件。让我们加载最新的 <a href="https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main/vae" rel="nofollow">autodecoder</a> 从 Stability AI 加载到 pipeline, 并生成一些图像:',Hl,Ue,Cl,j,Wt='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_6.png"/>',Bl,Ze,Xl,ge,_t="用于生成图像的文本非常重要, 因此被称为 <em>提示词工程</em>。 在设计提示词工程应注意如下事项:",Rl,$e,vt="<li>我想生成的图像或类似图像如何存储在互联网上?</li> <li>我可以提供哪些额外的细节来引导模型朝着我想要的风格生成?</li>",xl,Ge,Vt="考虑到这一点,让我们改进提示词,以包含颜色和更高质量的细节:",zl,je,Nl,We,kt="使用新的提示词生成一批图像:",Ll,_e,Sl,W,It='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_7.png"/>',Ql,ve,Ht="非常的令人印象深刻! Let’s tweak the second image - 把 <code>Generator</code> 的种子设置为 <code>1</code> - 添加一些关于年龄的主题文本:",Yl,Ve,Fl,_,Ct='<img src="https://huggingface.co/datasets/diffusers/docs-images/resolve/main/stable_diffusion_101/sd_101_8.png"/>',Dl,ke,El,Ie,Bt="在本教程中, 您学习了如何优化<code>DiffusionPipeline</code>以提高计算和内存效率,以及提高生成输出的质量. 如果你有兴趣让你的 pipeline 更快, 可以看一看以下资源:",Pl,He,Xt='<li>学习 <a href="./optimization/torch2.0">PyTorch 2.0</a> 和 <a href="https://pytorch.org/docs/stable/generated/torch.compile.html" rel="nofollow"><code>torch.compile</code></a> 可以让推理速度提高 5 - 300% . 在 A100 GPU 上, 推理速度可以提高 50% !</li> <li>如果你没法用 PyTorch 2, 我们建议你安装 <a href="./optimization/xformers">xFormers</a>。它的内存高效注意力机制(<em>memory-efficient attention mechanism</em>)与PyTorch 1.13.1配合使用,速度更快,内存消耗更少。</li> <li>其他的优化技术, 如:模型卸载(<em>model offloading</em>), 包含在 <a href="./optimization/fp16">这份指南</a>.</li>',Al,Ce,ql,Xe,Kl;return V=new v({props:{title:"有效且高效的扩散",local:"有效且高效的扩散",headingTag:"h1"}}),k=new Pt({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/zh/stable_diffusion.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/zh/pytorch/stable_diffusion.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers_doc/zh/tensorflow/stable_diffusion.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/zh/stable_diffusion.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/zh/pytorch/stable_diffusion.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/diffusers_doc/zh/tensorflow/stable_diffusion.ipynb"}]}}),X=new h({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERpZmZ1c2lvblBpcGVsaW5lJTBBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJydW53YXltbCUyRnN0YWJsZS1kaWZmdXNpb24tdjEtNSUyMiUwQXBpcGVsaW5lJTIwJTNEJTIwRGlmZnVzaW9uUGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2lkJTJDJTIwdXNlX3NhZmV0ZW5zb3JzJTNEVHJ1ZSk=",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiffusionPipeline
model_id = <span class="hljs-string">&quot;runwayml/stable-diffusion-v1-5&quot;</span>
pipeline = DiffusionPipeline.from_pretrained(model_id, use_safetensors=<span class="hljs-literal">True</span>)`,wrap:!1}}),x=new h({props:{code:"cHJvbXB0JTIwJTNEJTIwJTIycG9ydHJhaXQlMjBwaG90byUyMG9mJTIwYSUyMG9sZCUyMHdhcnJpb3IlMjBjaGllZiUyMg==",highlighted:'prompt = <span class="hljs-string">&quot;portrait photo of a old warrior chief&quot;</span>',wrap:!1}}),z=new v({props:{title:"速度",local:"速度",headingTag:"h2"}}),T=new Nt({props:{$$slots:{default:[qt]},$$scope:{ctx:Be}}}),L=new h({props:{code:"cGlwZWxpbmUlMjAlM0QlMjBwaXBlbGluZS50byglMjJjdWRhJTIyKQ==",highlighted:'pipeline = pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)',wrap:!1}}),Q=new h({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFnZW5lcmF0b3IlMjAlM0QlMjB0b3JjaC5HZW5lcmF0b3IoJTIyY3VkYSUyMikubWFudWFsX3NlZWQoMCk=",highlighted:`<span class="hljs-keyword">import</span> torch
generator = torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">0</span>)`,wrap:!1}}),F=new h({props:{code:"aW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBnZW5lcmF0b3IlM0RnZW5lcmF0b3IpLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`image = pipeline(prompt, generator=generator).images[<span class="hljs-number">0</span>]
image`,wrap:!1}}),P=new h({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwaXBlbGluZSUyMCUzRCUyMERpZmZ1c2lvblBpcGVsaW5lLmZyb21fcHJldHJhaW5lZChtb2RlbF9pZCUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guZmxvYXQxNiUyQyUyMHVzZV9zYWZldGVuc29ycyUzRFRydWUpJTBBcGlwZWxpbmUlMjAlM0QlMjBwaXBlbGluZS50byglMjJjdWRhJTIyKSUwQWdlbmVyYXRvciUyMCUzRCUyMHRvcmNoLkdlbmVyYXRvciglMjJjdWRhJTIyKS5tYW51YWxfc2VlZCgwKSUwQWltYWdlJTIwJTNEJTIwcGlwZWxpbmUocHJvbXB0JTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yKS5pbWFnZXMlNUIwJTVEJTBBaW1hZ2U=",highlighted:`<span class="hljs-keyword">import</span> torch
pipeline = DiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, use_safetensors=<span class="hljs-literal">True</span>)
pipeline = pipeline.to(<span class="hljs-string">&quot;cuda&quot;</span>)
generator = torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">0</span>)
image = pipeline(prompt, generator=generator).images[<span class="hljs-number">0</span>]
image`,wrap:!1}}),g=new Nt({props:{$$slots:{default:[Kt]},$$scope:{ctx:Be}}}),K=new h({props:{code:"cGlwZWxpbmUuc2NoZWR1bGVyLmNvbXBhdGlibGVzJTBBJTVCJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19sbXNfZGlzY3JldGUuTE1TRGlzY3JldGVTY2hlZHVsZXIlMkMlMEElMjAlMjAlMjAlMjBkaWZmdXNlcnMuc2NoZWR1bGVycy5zY2hlZHVsaW5nX3VuaXBjX211bHRpc3RlcC5VbmlQQ011bHRpc3RlcFNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfa19kcG1fMl9kaXNjcmV0ZS5LRFBNMkRpc2NyZXRlU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19kZWlzX211bHRpc3RlcC5ERUlTTXVsdGlzdGVwU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19ldWxlcl9kaXNjcmV0ZS5FdWxlckRpc2NyZXRlU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19kcG1zb2x2ZXJfbXVsdGlzdGVwLkRQTVNvbHZlck11bHRpc3RlcFNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfZGRwbS5ERFBNU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19kcG1zb2x2ZXJfc2luZ2xlc3RlcC5EUE1Tb2x2ZXJTaW5nbGVzdGVwU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19rX2RwbV8yX2FuY2VzdHJhbF9kaXNjcmV0ZS5LRFBNMkFuY2VzdHJhbERpc2NyZXRlU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19oZXVuX2Rpc2NyZXRlLkhldW5EaXNjcmV0ZVNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfcG5kbS5QTkRNU2NoZWR1bGVyJTJDJTBBJTIwJTIwJTIwJTIwZGlmZnVzZXJzLnNjaGVkdWxlcnMuc2NoZWR1bGluZ19ldWxlcl9hbmNlc3RyYWxfZGlzY3JldGUuRXVsZXJBbmNlc3RyYWxEaXNjcmV0ZVNjaGVkdWxlciUyQyUwQSUyMCUyMCUyMCUyMGRpZmZ1c2Vycy5zY2hlZHVsZXJzLnNjaGVkdWxpbmdfZGRpbS5ERElNU2NoZWR1bGVyJTJDJTBBJTVE",highlighted:`pipeline.scheduler.compatibles
[
diffusers.schedulers.scheduling_lms_discrete.LMSDiscreteScheduler,
diffusers.schedulers.scheduling_unipc_multistep.UniPCMultistepScheduler,
diffusers.schedulers.scheduling_k_dpm_2_discrete.KDPM2DiscreteScheduler,
diffusers.schedulers.scheduling_deis_multistep.DEISMultistepScheduler,
diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteScheduler,
diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler,
diffusers.schedulers.scheduling_ddpm.DDPMScheduler,
diffusers.schedulers.scheduling_dpmsolver_singlestep.DPMSolverSinglestepScheduler,
diffusers.schedulers.scheduling_k_dpm_2_ancestral_discrete.KDPM2AncestralDiscreteScheduler,
diffusers.schedulers.scheduling_heun_discrete.HeunDiscreteScheduler,
diffusers.schedulers.scheduling_pndm.PNDMScheduler,
diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteScheduler,
diffusers.schedulers.scheduling_ddim.DDIMScheduler,
]`,wrap:!1}}),ee=new h({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMERQTVNvbHZlck11bHRpc3RlcFNjaGVkdWxlciUwQSUwQXBpcGVsaW5lLnNjaGVkdWxlciUyMCUzRCUyMERQTVNvbHZlck11bHRpc3RlcFNjaGVkdWxlci5mcm9tX2NvbmZpZyhwaXBlbGluZS5zY2hlZHVsZXIuY29uZmlnKQ==",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DPMSolverMultistepScheduler
pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)`,wrap:!1}}),te=new h({props:{code:"Z2VuZXJhdG9yJTIwJTNEJTIwdG9yY2guR2VuZXJhdG9yKCUyMmN1ZGElMjIpLm1hbnVhbF9zZWVkKDApJTBBaW1hZ2UlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlMkMlMjBnZW5lcmF0b3IlM0RnZW5lcmF0b3IlMkMlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNEMjApLmltYWdlcyU1QjAlNUQlMEFpbWFnZQ==",highlighted:`generator = torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">0</span>)
image = pipeline(prompt, generator=generator, num_inference_steps=<span class="hljs-number">20</span>).images[<span class="hljs-number">0</span>]
image`,wrap:!1}}),ie=new v({props:{title:"内存",local:"内存",headingTag:"h2"}}),pe=new h({props:{code:"ZGVmJTIwZ2V0X2lucHV0cyhiYXRjaF9zaXplJTNEMSklM0ElMEElMjAlMjAlMjAlMjBnZW5lcmF0b3IlMjAlM0QlMjAlNUJ0b3JjaC5HZW5lcmF0b3IoJTIyY3VkYSUyMikubWFudWFsX3NlZWQoaSklMjBmb3IlMjBpJTIwaW4lMjByYW5nZShiYXRjaF9zaXplKSU1RCUwQSUyMCUyMCUyMCUyMHByb21wdHMlMjAlM0QlMjBiYXRjaF9zaXplJTIwKiUyMCU1QnByb21wdCU1RCUwQSUyMCUyMCUyMCUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlMjAlM0QlMjAyMCUwQSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMnByb21wdCUyMiUzQSUyMHByb21wdHMlMkMlMjAlMjJnZW5lcmF0b3IlMjIlM0ElMjBnZW5lcmF0b3IlMkMlMjAlMjJudW1faW5mZXJlbmNlX3N0ZXBzJTIyJTNBJTIwbnVtX2luZmVyZW5jZV9zdGVwcyU3RA==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_inputs</span>(<span class="hljs-params">batch_size=<span class="hljs-number">1</span></span>):
generator = [torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(i) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(batch_size)]
prompts = batch_size * [prompt]
num_inference_steps = <span class="hljs-number">20</span>
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;prompt&quot;</span>: prompts, <span class="hljs-string">&quot;generator&quot;</span>: generator, <span class="hljs-string">&quot;num_inference_steps&quot;</span>: num_inference_steps}`,wrap:!1}}),me=new h({props:{code:"ZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMG1ha2VfaW1hZ2VfZ3JpZCUwQSUwQWltYWdlcyUyMCUzRCUyMHBpcGVsaW5lKCoqZ2V0X2lucHV0cyhiYXRjaF9zaXplJTNENCkpLmltYWdlcyUwQW1ha2VfaW1hZ2VfZ3JpZChpbWFnZXMlMkMlMjAyJTJDJTIwMik=",highlighted:`<span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> make_image_grid
images = pipeline(**get_inputs(batch_size=<span class="hljs-number">4</span>)).images
make_image_grid(images, <span class="hljs-number">2</span>, <span class="hljs-number">2</span>)`,wrap:!1}}),oe=new h({props:{code:"cGlwZWxpbmUuZW5hYmxlX2F0dGVudGlvbl9zbGljaW5nKCk=",highlighted:"pipeline.enable_attention_slicing()",wrap:!1}}),ue=new h({props:{code:"aW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q4KSkuaW1hZ2VzJTBBbWFrZV9pbWFnZV9ncmlkKGltYWdlcyUyQyUyMHJvd3MlM0QyJTJDJTIwY29scyUzRDQp",highlighted:`images = pipeline(**get_inputs(batch_size=<span class="hljs-number">8</span>)).images
make_image_grid(images, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">4</span>)`,wrap:!1}}),de=new v({props:{title:"质量",local:"质量",headingTag:"h2"}}),he=new v({props:{title:"更好的 checkpoints",local:"更好的-checkpoints",headingTag:"h3"}}),we=new v({props:{title:"更好的 pipeline 组件",local:"更好的-pipeline-组件",headingTag:"h3"}}),Ue=new h({props:{code:"ZnJvbSUyMGRpZmZ1c2VycyUyMGltcG9ydCUyMEF1dG9lbmNvZGVyS0wlMEElMEF2YWUlMjAlM0QlMjBBdXRvZW5jb2RlcktMLmZyb21fcHJldHJhaW5lZCglMjJzdGFiaWxpdHlhaSUyRnNkLXZhZS1mdC1tc2UlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmZsb2F0MTYpLnRvKCUyMmN1ZGElMjIpJTBBcGlwZWxpbmUudmFlJTIwJTNEJTIwdmFlJTBBaW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q4KSkuaW1hZ2VzJTBBbWFrZV9pbWFnZV9ncmlkKGltYWdlcyUyQyUyMHJvd3MlM0QyJTJDJTIwY29scyUzRDQp",highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AutoencoderKL
vae = AutoencoderKL.from_pretrained(<span class="hljs-string">&quot;stabilityai/sd-vae-ft-mse&quot;</span>, torch_dtype=torch.float16).to(<span class="hljs-string">&quot;cuda&quot;</span>)
pipeline.vae = vae
images = pipeline(**get_inputs(batch_size=<span class="hljs-number">8</span>)).images
make_image_grid(images, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">4</span>)`,wrap:!1}}),Ze=new v({props:{title:"更好的提示词工程",local:"更好的提示词工程",headingTag:"h3"}}),je=new h({props:{code:"cHJvbXB0JTIwJTJCJTNEJTIwJTIyJTJDJTIwdHJpYmFsJTIwcGFudGhlciUyMG1ha2UlMjB1cCUyQyUyMGJsdWUlMjBvbiUyMHJlZCUyQyUyMHNpZGUlMjBwcm9maWxlJTJDJTIwbG9va2luZyUyMGF3YXklMkMlMjBzZXJpb3VzJTIwZXllcyUyMiUwQXByb21wdCUyMCUyQiUzRCUyMCUyMiUyMDUwbW0lMjBwb3J0cmFpdCUyMHBob3RvZ3JhcGh5JTJDJTIwaGFyZCUyMHJpbSUyMGxpZ2h0aW5nJTIwcGhvdG9ncmFwaHktLWJldGElMjAtLWFyJTIwMiUzQTMlMjAlMjAtLWJldGElMjAtLXVwYmV0YSUyMg==",highlighted:`prompt += <span class="hljs-string">&quot;, tribal panther make up, blue on red, side profile, looking away, serious eyes&quot;</span>
prompt += <span class="hljs-string">&quot; 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>`,wrap:!1}}),_e=new h({props:{code:"aW1hZ2VzJTIwJTNEJTIwcGlwZWxpbmUoKipnZXRfaW5wdXRzKGJhdGNoX3NpemUlM0Q4KSkuaW1hZ2VzJTBBbWFrZV9pbWFnZV9ncmlkKGltYWdlcyUyQyUyMHJvd3MlM0QyJTJDJTIwY29scyUzRDQp",highlighted:`images = pipeline(**get_inputs(batch_size=<span class="hljs-number">8</span>)).images
make_image_grid(images, rows=<span class="hljs-number">2</span>, cols=<span class="hljs-number">4</span>)`,wrap:!1}}),Ve=new h({props:{code:"cHJvbXB0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMnBvcnRyYWl0JTIwcGhvdG8lMjBvZiUyMHRoZSUyMG9sZGVzdCUyMHdhcnJpb3IlMjBjaGllZiUyQyUyMHRyaWJhbCUyMHBhbnRoZXIlMjBtYWtlJTIwdXAlMkMlMjBibHVlJTIwb24lMjByZWQlMkMlMjBzaWRlJTIwcHJvZmlsZSUyQyUyMGxvb2tpbmclMjBhd2F5JTJDJTIwc2VyaW91cyUyMGV5ZXMlMjA1MG1tJTIwcG9ydHJhaXQlMjBwaG90b2dyYXBoeSUyQyUyMGhhcmQlMjByaW0lMjBsaWdodGluZyUyMHBob3RvZ3JhcGh5LS1iZXRhJTIwLS1hciUyMDIlM0EzJTIwJTIwLS1iZXRhJTIwLS11cGJldGElMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJwb3J0cmFpdCUyMHBob3RvJTIwb2YlMjBhJTIwb2xkJTIwd2FycmlvciUyMGNoaWVmJTJDJTIwdHJpYmFsJTIwcGFudGhlciUyMG1ha2UlMjB1cCUyQyUyMGJsdWUlMjBvbiUyMHJlZCUyQyUyMHNpZGUlMjBwcm9maWxlJTJDJTIwbG9va2luZyUyMGF3YXklMkMlMjBzZXJpb3VzJTIwZXllcyUyMDUwbW0lMjBwb3J0cmFpdCUyMHBob3RvZ3JhcGh5JTJDJTIwaGFyZCUyMHJpbSUyMGxpZ2h0aW5nJTIwcGhvdG9ncmFwaHktLWJldGElMjAtLWFyJTIwMiUzQTMlMjAlMjAtLWJldGElMjAtLXVwYmV0YSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMnBvcnRyYWl0JTIwcGhvdG8lMjBvZiUyMGElMjB3YXJyaW9yJTIwY2hpZWYlMkMlMjB0cmliYWwlMjBwYW50aGVyJTIwbWFrZSUyMHVwJTJDJTIwYmx1ZSUyMG9uJTIwcmVkJTJDJTIwc2lkZSUyMHByb2ZpbGUlMkMlMjBsb29raW5nJTIwYXdheSUyQyUyMHNlcmlvdXMlMjBleWVzJTIwNTBtbSUyMHBvcnRyYWl0JTIwcGhvdG9ncmFwaHklMkMlMjBoYXJkJTIwcmltJTIwbGlnaHRpbmclMjBwaG90b2dyYXBoeS0tYmV0YSUyMC0tYXIlMjAyJTNBMyUyMCUyMC0tYmV0YSUyMC0tdXBiZXRhJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycG9ydHJhaXQlMjBwaG90byUyMG9mJTIwYSUyMHlvdW5nJTIwd2FycmlvciUyMGNoaWVmJTJDJTIwdHJpYmFsJTIwcGFudGhlciUyMG1ha2UlMjB1cCUyQyUyMGJsdWUlMjBvbiUyMHJlZCUyQyUyMHNpZGUlMjBwcm9maWxlJTJDJTIwbG9va2luZyUyMGF3YXklMkMlMjBzZXJpb3VzJTIwZXllcyUyMDUwbW0lMjBwb3J0cmFpdCUyMHBob3RvZ3JhcGh5JTJDJTIwaGFyZCUyMHJpbSUyMGxpZ2h0aW5nJTIwcGhvdG9ncmFwaHktLWJldGElMjAtLWFyJTIwMiUzQTMlMjAlMjAtLWJldGElMjAtLXVwYmV0YSUyMiUyQyUwQSU1RCUwQSUwQWdlbmVyYXRvciUyMCUzRCUyMCU1QnRvcmNoLkdlbmVyYXRvciglMjJjdWRhJTIyKS5tYW51YWxfc2VlZCgxKSUyMGZvciUyMF8lMjBpbiUyMHJhbmdlKGxlbihwcm9tcHRzKSklNUQlMEFpbWFnZXMlMjAlM0QlMjBwaXBlbGluZShwcm9tcHQlM0Rwcm9tcHRzJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yJTJDJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDI1KS5pbWFnZXMlMEFtYWtlX2ltYWdlX2dyaWQoaW1hZ2VzJTJDJTIwMiUyQyUyMDIp",highlighted:`prompts = [
<span class="hljs-string">&quot;portrait photo of the oldest warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
<span class="hljs-string">&quot;portrait photo of a old warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
<span class="hljs-string">&quot;portrait photo of a warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
<span class="hljs-string">&quot;portrait photo of a young warrior chief, tribal panther make up, blue on red, side profile, looking away, serious eyes 50mm portrait photography, hard rim lighting photography--beta --ar 2:3 --beta --upbeta&quot;</span>,
]
generator = [torch.Generator(<span class="hljs-string">&quot;cuda&quot;</span>).manual_seed(<span class="hljs-number">1</span>) <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(prompts))]
images = pipeline(prompt=prompts, generator=generator, num_inference_steps=<span class="hljs-number">25</span>).images
make_image_grid(images, <span class="hljs-number">2</span>, <span class="hljs-number">2</span>)`,wrap:!1}}),ke=new v({props:{title:"最后",local:"最后",headingTag:"h2"}}),Ce=new At({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/stable_diffusion.md"}}),{c(){d=a("meta"),b=i(),y=a("p"),w=i(),m(V.$$.fragment),Re=i(),m(k.$$.fragment),xe=i(),I=a("p"),I.innerHTML=Ol,ze=i(),H=a("p"),H.innerHTML=et,Ne=i(),C=a("p"),C.innerHTML=lt,Le=i(),B=a("p"),B.innerHTML=tt,Se=i(),m(X.$$.fragment),Qe=i(),R=a("p"),R.innerHTML=st,Ye=i(),m(x.$$.fragment),Fe=i(),m(z.$$.fragment),De=i(),m(T.$$.fragment),Ee=i(),N=a("p"),N.textContent=it,Pe=i(),m(L.$$.fragment),Ae=i(),S=a("p"),S.innerHTML=nt,qe=i(),m(Q.$$.fragment),Ke=i(),Y=a("p"),Y.textContent=at,Oe=i(),m(F.$$.fragment),el=i(),U=a("div"),U.innerHTML=pt,ll=i(),D=a("p"),D.innerHTML=rt,tl=i(),E=a("p"),E.innerHTML=mt,sl=i(),m(P.$$.fragment),il=i(),Z=a("div"),Z.innerHTML=ct,nl=i(),A=a("p"),A.textContent=ot,al=i(),m(g.$$.fragment),pl=i(),q=a("p"),q.innerHTML=ft,rl=i(),m(K.$$.fragment),ml=i(),O=a("p"),O.innerHTML=ut,cl=i(),m(ee.$$.fragment),ol=i(),le=a("p"),le.innerHTML=Mt,fl=i(),m(te.$$.fragment),ul=i(),$=a("div"),$.innerHTML=dt,Ml=i(),se=a("p"),se.textContent=yt,dl=i(),m(ie.$$.fragment),yl=i(),ne=a("p"),ne.innerHTML=ht,hl=i(),ae=a("p"),ae.innerHTML=bt,bl=i(),m(pe.$$.fragment),Jl=i(),re=a("p"),re.innerHTML=Jt,wl=i(),m(me.$$.fragment),Tl=i(),ce=a("p"),ce.innerHTML=wt,Ul=i(),m(oe.$$.fragment),Zl=i(),fe=a("p"),fe.innerHTML=Tt,gl=i(),m(ue.$$.fragment),$l=i(),G=a("div"),G.innerHTML=Ut,Gl=i(),Me=a("p"),Me.textContent=Zt,jl=i(),m(de.$$.fragment),Wl=i(),ye=a("p"),ye.innerHTML=gt,_l=i(),m(he.$$.fragment),vl=i(),be=a("p"),be.innerHTML=$t,Vl=i(),Je=a("p"),Je.innerHTML=Gt,kl=i(),m(we.$$.fragment),Il=i(),Te=a("p"),Te.innerHTML=jt,Hl=i(),m(Ue.$$.fragment),Cl=i(),j=a("div"),j.innerHTML=Wt,Bl=i(),m(Ze.$$.fragment),Xl=i(),ge=a("p"),ge.innerHTML=_t,Rl=i(),$e=a("ul"),$e.innerHTML=vt,xl=i(),Ge=a("p"),Ge.textContent=Vt,zl=i(),m(je.$$.fragment),Nl=i(),We=a("p"),We.textContent=kt,Ll=i(),m(_e.$$.fragment),Sl=i(),W=a("div"),W.innerHTML=It,Ql=i(),ve=a("p"),ve.innerHTML=Ht,Yl=i(),m(Ve.$$.fragment),Fl=i(),_=a("div"),_.innerHTML=Ct,Dl=i(),m(ke.$$.fragment),El=i(),Ie=a("p"),Ie.innerHTML=Bt,Pl=i(),He=a("ul"),He.innerHTML=Xt,Al=i(),m(Ce.$$.fragment),ql=i(),Xe=a("p"),this.h()},l(e){const l=Dt("svelte-u9bgzb",document.head);d=p(l,"META",{name:!0,content:!0}),l.forEach(t),b=n(e),y=p(e,"P",{}),zt(y).forEach(t),w=n(e),c(V.$$.fragment,e),Re=n(e),c(k.$$.fragment,e),xe=n(e),I=p(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-1v0o1kl"&&(I.innerHTML=Ol),ze=n(e),H=p(e,"P",{"data-svelte-h":!0}),r(H)!=="svelte-leukn8"&&(H.innerHTML=et),Ne=n(e),C=p(e,"P",{"data-svelte-h":!0}),r(C)!=="svelte-8fx6wg"&&(C.innerHTML=lt),Le=n(e),B=p(e,"P",{"data-svelte-h":!0}),r(B)!=="svelte-1apyn2n"&&(B.innerHTML=tt),Se=n(e),c(X.$$.fragment,e),Qe=n(e),R=p(e,"P",{"data-svelte-h":!0}),r(R)!=="svelte-tpz466"&&(R.innerHTML=st),Ye=n(e),c(x.$$.fragment,e),Fe=n(e),c(z.$$.fragment,e),De=n(e),c(T.$$.fragment,e),Ee=n(e),N=p(e,"P",{"data-svelte-h":!0}),r(N)!=="svelte-140tryr"&&(N.textContent=it),Pe=n(e),c(L.$$.fragment,e),Ae=n(e),S=p(e,"P",{"data-svelte-h":!0}),r(S)!=="svelte-1y2bzt"&&(S.innerHTML=nt),qe=n(e),c(Q.$$.fragment,e),Ke=n(e),Y=p(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-4x6dr0"&&(Y.textContent=at),Oe=n(e),c(F.$$.fragment,e),el=n(e),U=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(U)!=="svelte-1of5nwm"&&(U.innerHTML=pt),ll=n(e),D=p(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-dxn1az"&&(D.innerHTML=rt),tl=n(e),E=p(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-qtbizy"&&(E.innerHTML=mt),sl=n(e),c(P.$$.fragment,e),il=n(e),Z=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(Z)!=="svelte-1why3l7"&&(Z.innerHTML=ct),nl=n(e),A=p(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-pogsc6"&&(A.textContent=ot),al=n(e),c(g.$$.fragment,e),pl=n(e),q=p(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-1b7m8op"&&(q.innerHTML=ft),rl=n(e),c(K.$$.fragment,e),ml=n(e),O=p(e,"P",{"data-svelte-h":!0}),r(O)!=="svelte-ug0tja"&&(O.innerHTML=ut),cl=n(e),c(ee.$$.fragment,e),ol=n(e),le=p(e,"P",{"data-svelte-h":!0}),r(le)!=="svelte-1hxt66h"&&(le.innerHTML=Mt),fl=n(e),c(te.$$.fragment,e),ul=n(e),$=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r($)!=="svelte-19w49w4"&&($.innerHTML=dt),Ml=n(e),se=p(e,"P",{"data-svelte-h":!0}),r(se)!=="svelte-uzam9p"&&(se.textContent=yt),dl=n(e),c(ie.$$.fragment,e),yl=n(e),ne=p(e,"P",{"data-svelte-h":!0}),r(ne)!=="svelte-13ch8y2"&&(ne.innerHTML=ht),hl=n(e),ae=p(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-cfkbaa"&&(ae.innerHTML=bt),bl=n(e),c(pe.$$.fragment,e),Jl=n(e),re=p(e,"P",{"data-svelte-h":!0}),r(re)!=="svelte-15a7i1a"&&(re.innerHTML=Jt),wl=n(e),c(me.$$.fragment,e),Tl=n(e),ce=p(e,"P",{"data-svelte-h":!0}),r(ce)!=="svelte-1xqk7ef"&&(ce.innerHTML=wt),Ul=n(e),c(oe.$$.fragment,e),Zl=n(e),fe=p(e,"P",{"data-svelte-h":!0}),r(fe)!=="svelte-1sdpqou"&&(fe.innerHTML=Tt),gl=n(e),c(ue.$$.fragment,e),$l=n(e),G=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(G)!=="svelte-vxa9bu"&&(G.innerHTML=Ut),Gl=n(e),Me=p(e,"P",{"data-svelte-h":!0}),r(Me)!=="svelte-f1534l"&&(Me.textContent=Zt),jl=n(e),c(de.$$.fragment,e),Wl=n(e),ye=p(e,"P",{"data-svelte-h":!0}),r(ye)!=="svelte-1c8v1nf"&&(ye.innerHTML=gt),_l=n(e),c(he.$$.fragment,e),vl=n(e),be=p(e,"P",{"data-svelte-h":!0}),r(be)!=="svelte-p1zz72"&&(be.innerHTML=$t),Vl=n(e),Je=p(e,"P",{"data-svelte-h":!0}),r(Je)!=="svelte-i5so0v"&&(Je.innerHTML=Gt),kl=n(e),c(we.$$.fragment,e),Il=n(e),Te=p(e,"P",{"data-svelte-h":!0}),r(Te)!=="svelte-o0zap8"&&(Te.innerHTML=jt),Hl=n(e),c(Ue.$$.fragment,e),Cl=n(e),j=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(j)!=="svelte-610rhb"&&(j.innerHTML=Wt),Bl=n(e),c(Ze.$$.fragment,e),Xl=n(e),ge=p(e,"P",{"data-svelte-h":!0}),r(ge)!=="svelte-18d69j8"&&(ge.innerHTML=_t),Rl=n(e),$e=p(e,"UL",{"data-svelte-h":!0}),r($e)!=="svelte-1n2jyxj"&&($e.innerHTML=vt),xl=n(e),Ge=p(e,"P",{"data-svelte-h":!0}),r(Ge)!=="svelte-60602z"&&(Ge.textContent=Vt),zl=n(e),c(je.$$.fragment,e),Nl=n(e),We=p(e,"P",{"data-svelte-h":!0}),r(We)!=="svelte-610aip"&&(We.textContent=kt),Ll=n(e),c(_e.$$.fragment,e),Sl=n(e),W=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(W)!=="svelte-n1o5lk"&&(W.innerHTML=It),Ql=n(e),ve=p(e,"P",{"data-svelte-h":!0}),r(ve)!=="svelte-1ncypu7"&&(ve.innerHTML=Ht),Yl=n(e),c(Ve.$$.fragment,e),Fl=n(e),_=p(e,"DIV",{class:!0,"data-svelte-h":!0}),r(_)!=="svelte-1lkw2bx"&&(_.innerHTML=Ct),Dl=n(e),c(ke.$$.fragment,e),El=n(e),Ie=p(e,"P",{"data-svelte-h":!0}),r(Ie)!=="svelte-o28ro3"&&(Ie.innerHTML=Bt),Pl=n(e),He=p(e,"UL",{"data-svelte-h":!0}),r(He)!=="svelte-14q6wc5"&&(He.innerHTML=Xt),Al=n(e),c(Ce.$$.fragment,e),ql=n(e),Xe=p(e,"P",{}),zt(Xe).forEach(t),this.h()},h(){J(d,"name","hf:doc:metadata"),J(d,"content",es),J(U,"class","flex justify-center"),J(Z,"class","flex justify-center"),J($,"class","flex justify-center"),J(G,"class","flex justify-center"),J(j,"class","flex justify-center"),J(W,"class","flex justify-center"),J(_,"class","flex justify-center")},m(e,l){Et(document.head,d),s(e,b,l),s(e,y,l),s(e,w,l),o(V,e,l),s(e,Re,l),o(k,e,l),s(e,xe,l),s(e,I,l),s(e,ze,l),s(e,H,l),s(e,Ne,l),s(e,C,l),s(e,Le,l),s(e,B,l),s(e,Se,l),o(X,e,l),s(e,Qe,l),s(e,R,l),s(e,Ye,l),o(x,e,l),s(e,Fe,l),o(z,e,l),s(e,De,l),o(T,e,l),s(e,Ee,l),s(e,N,l),s(e,Pe,l),o(L,e,l),s(e,Ae,l),s(e,S,l),s(e,qe,l),o(Q,e,l),s(e,Ke,l),s(e,Y,l),s(e,Oe,l),o(F,e,l),s(e,el,l),s(e,U,l),s(e,ll,l),s(e,D,l),s(e,tl,l),s(e,E,l),s(e,sl,l),o(P,e,l),s(e,il,l),s(e,Z,l),s(e,nl,l),s(e,A,l),s(e,al,l),o(g,e,l),s(e,pl,l),s(e,q,l),s(e,rl,l),o(K,e,l),s(e,ml,l),s(e,O,l),s(e,cl,l),o(ee,e,l),s(e,ol,l),s(e,le,l),s(e,fl,l),o(te,e,l),s(e,ul,l),s(e,$,l),s(e,Ml,l),s(e,se,l),s(e,dl,l),o(ie,e,l),s(e,yl,l),s(e,ne,l),s(e,hl,l),s(e,ae,l),s(e,bl,l),o(pe,e,l),s(e,Jl,l),s(e,re,l),s(e,wl,l),o(me,e,l),s(e,Tl,l),s(e,ce,l),s(e,Ul,l),o(oe,e,l),s(e,Zl,l),s(e,fe,l),s(e,gl,l),o(ue,e,l),s(e,$l,l),s(e,G,l),s(e,Gl,l),s(e,Me,l),s(e,jl,l),o(de,e,l),s(e,Wl,l),s(e,ye,l),s(e,_l,l),o(he,e,l),s(e,vl,l),s(e,be,l),s(e,Vl,l),s(e,Je,l),s(e,kl,l),o(we,e,l),s(e,Il,l),s(e,Te,l),s(e,Hl,l),o(Ue,e,l),s(e,Cl,l),s(e,j,l),s(e,Bl,l),o(Ze,e,l),s(e,Xl,l),s(e,ge,l),s(e,Rl,l),s(e,$e,l),s(e,xl,l),s(e,Ge,l),s(e,zl,l),o(je,e,l),s(e,Nl,l),s(e,We,l),s(e,Ll,l),o(_e,e,l),s(e,Sl,l),s(e,W,l),s(e,Ql,l),s(e,ve,l),s(e,Yl,l),o(Ve,e,l),s(e,Fl,l),s(e,_,l),s(e,Dl,l),o(ke,e,l),s(e,El,l),s(e,Ie,l),s(e,Pl,l),s(e,He,l),s(e,Al,l),o(Ce,e,l),s(e,ql,l),s(e,Xe,l),Kl=!0},p(e,[l]){const Rt={};l&2&&(Rt.$$scope={dirty:l,ctx:e}),T.$set(Rt);const xt={};l&2&&(xt.$$scope={dirty:l,ctx:e}),g.$set(xt)},i(e){Kl||(f(V.$$.fragment,e),f(k.$$.fragment,e),f(X.$$.fragment,e),f(x.$$.fragment,e),f(z.$$.fragment,e),f(T.$$.fragment,e),f(L.$$.fragment,e),f(Q.$$.fragment,e),f(F.$$.fragment,e),f(P.$$.fragment,e),f(g.$$.fragment,e),f(K.$$.fragment,e),f(ee.$$.fragment,e),f(te.$$.fragment,e),f(ie.$$.fragment,e),f(pe.$$.fragment,e),f(me.$$.fragment,e),f(oe.$$.fragment,e),f(ue.$$.fragment,e),f(de.$$.fragment,e),f(he.$$.fragment,e),f(we.$$.fragment,e),f(Ue.$$.fragment,e),f(Ze.$$.fragment,e),f(je.$$.fragment,e),f(_e.$$.fragment,e),f(Ve.$$.fragment,e),f(ke.$$.fragment,e),f(Ce.$$.fragment,e),Kl=!0)},o(e){u(V.$$.fragment,e),u(k.$$.fragment,e),u(X.$$.fragment,e),u(x.$$.fragment,e),u(z.$$.fragment,e),u(T.$$.fragment,e),u(L.$$.fragment,e),u(Q.$$.fragment,e),u(F.$$.fragment,e),u(P.$$.fragment,e),u(g.$$.fragment,e),u(K.$$.fragment,e),u(ee.$$.fragment,e),u(te.$$.fragment,e),u(ie.$$.fragment,e),u(pe.$$.fragment,e),u(me.$$.fragment,e),u(oe.$$.fragment,e),u(ue.$$.fragment,e),u(de.$$.fragment,e),u(he.$$.fragment,e),u(we.$$.fragment,e),u(Ue.$$.fragment,e),u(Ze.$$.fragment,e),u(je.$$.fragment,e),u(_e.$$.fragment,e),u(Ve.$$.fragment,e),u(ke.$$.fragment,e),u(Ce.$$.fragment,e),Kl=!1},d(e){e&&(t(b),t(y),t(w),t(Re),t(xe),t(I),t(ze),t(H),t(Ne),t(C),t(Le),t(B),t(Se),t(Qe),t(R),t(Ye),t(Fe),t(De),t(Ee),t(N),t(Pe),t(Ae),t(S),t(qe),t(Ke),t(Y),t(Oe),t(el),t(U),t(ll),t(D),t(tl),t(E),t(sl),t(il),t(Z),t(nl),t(A),t(al),t(pl),t(q),t(rl),t(ml),t(O),t(cl),t(ol),t(le),t(fl),t(ul),t($),t(Ml),t(se),t(dl),t(yl),t(ne),t(hl),t(ae),t(bl),t(Jl),t(re),t(wl),t(Tl),t(ce),t(Ul),t(Zl),t(fe),t(gl),t($l),t(G),t(Gl),t(Me),t(jl),t(Wl),t(ye),t(_l),t(vl),t(be),t(Vl),t(Je),t(kl),t(Il),t(Te),t(Hl),t(Cl),t(j),t(Bl),t(Xl),t(ge),t(Rl),t($e),t(xl),t(Ge),t(zl),t(Nl),t(We),t(Ll),t(Sl),t(W),t(Ql),t(ve),t(Yl),t(Fl),t(_),t(Dl),t(El),t(Ie),t(Pl),t(He),t(Al),t(ql),t(Xe)),t(d),M(V,e),M(k,e),M(X,e),M(x,e),M(z,e),M(T,e),M(L,e),M(Q,e),M(F,e),M(P,e),M(g,e),M(K,e),M(ee,e),M(te,e),M(ie,e),M(pe,e),M(me,e),M(oe,e),M(ue,e),M(de,e),M(he,e),M(we,e),M(Ue,e),M(Ze,e),M(je,e),M(_e,e),M(Ve,e),M(ke,e),M(Ce,e)}}}const es='{"title":"有效且高效的扩散","local":"有效且高效的扩散","sections":[{"title":"速度","local":"速度","sections":[],"depth":2},{"title":"内存","local":"内存","sections":[],"depth":2},{"title":"质量","local":"质量","sections":[{"title":"更好的 checkpoints","local":"更好的-checkpoints","sections":[],"depth":3},{"title":"更好的 pipeline 组件","local":"更好的-pipeline-组件","sections":[],"depth":3},{"title":"更好的提示词工程","local":"更好的提示词工程","sections":[],"depth":3}],"depth":2},{"title":"最后","local":"最后","sections":[],"depth":2}],"depth":1}';function ls(Be){return Qt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ps extends Yt{constructor(d){super(),Ft(this,d,ls,Ot,St,{})}}export{ps as component};

Xet Storage Details

Size:
36.3 kB
·
Xet hash:
5db8dff37634a7846162e4e060523e82a25abb91873e1bf4d242a1c59dc4ea4a

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