Buckets:

download
raw
6.35 kB
import"../chunks/DsnmJJEf.js";import{i as b,h as _,C as S,H as e,a,E as u,s as k}from"../chunks/DdZvggmf.js";import{p as y,o as w,s as l,f as J,a as h,b as Q,c as m,n as A}from"../chunks/BbekZcyp.js";const f='{"title":"状态","local":"状态","sections":[{"title":"PipelineState","local":"pipelinestate","sections":[],"depth":2},{"title":"BlockState","local":"blockstate","sections":[],"depth":2},{"title":"状态交互","local":"状态交互","sections":[],"depth":2}],"depth":1}';var R=m('<meta name="hf:doc:metadata"/>'),E=m(`<p></p> <!> <!> <p>块依赖于<code>PipelineState</code>和<code>BlockState</code>数据结构进行通信和数据共享。</p> <table><thead><tr><th>状态</th><th>描述</th></tr></thead><tbody><tr><td><code>PipelineState</code></td><td>维护管道执行所需的整体数据,并允许块读取和更新其数据。</td></tr><tr><td><code>BlockState</code></td><td>允许每个块使用来自<code>inputs</code>的必要数据执行其计算</td></tr></tbody></table> <p>本指南解释了状态如何工作以及它们如何连接块。</p> <!> <p><code>PipelineState</code>是所有块的全局状态容器。它维护管道的完整运行时状态,并为块提供了一种结构化的方式来读取和写入共享数据。</p> <p><code>PipelineState</code>中有两个字典用于结构化数据。</p> <ul><li><code>values</code>字典是一个<strong>可变</strong>状态,包含用户提供的输入值的副本和由块生成的中间输出值。如果一个块修改了一个<code>input</code>,它将在调用<code>set_block_state</code>后反映在<code>values</code>字典中。</li></ul> <!> <!> <p><code>BlockState</code>是<code>PipelineState</code>中相关变量的局部视图,单个块需要这些变量来执行其计算。</p> <p>直接作为属性访问这些变量,如<code>block_state.image</code>。</p> <!> <p>当一个块的<code>__call__</code>方法被执行时,它用<code>self.get_block_state(state)</code>检索<code>BlockState</code>,执行其操作,并用<code>self.set_block_state(state, block_state)</code>更新<code>PipelineState</code>。</p> <!> <!> <p><code>PipelineState</code>和<code>BlockState</code>的交互由块的<code>inputs</code>和<code>intermediate_outputs</code>定义。</p> <ul><li><code>inputs</code>,
一个块可以修改输入 - 比如 <code>block_state.image</code> - 并且这个改变可以通过调用 <code>set_block_state</code> 全局传播到 <code>PipelineState</code>。</li> <li><code>intermediate_outputs</code>,是一个块创建的新变量。它被添加到 <code>PipelineState</code> 的 <code>values</code> 字典中,并且可以作为后续块的可用变量,或者由用户作为管道的最终输出访问。</li></ul> <!> <p></p>`,1);function x(T,g){y(g,!1),w(()=>{new URLSearchParams(window.location.search).get("fw")}),b();var t=E();_("6w4gif",r=>{var j=R();k(j,"content",f),h(r,j)});var s=l(J(t),2);S(s,{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"});var o=l(s,2);e(o,{title:"状态",local:"状态",headingTag:"h1"});var c=l(o,8);e(c,{title:"PipelineState",local:"pipelinestate",headingTag:"h2"});var n=l(c,8);a(n,{code:"UGlwZWxpbmVTdGF0ZSglMEElMjAlMjB2YWx1ZXMlM0QlN0IlMEElMjAlMjAlMjAlMjAncHJvbXB0JyUzQSUyMCdhJTIwY2F0JyUwQSUyMCUyMCUyMCUyMCdndWlkYW5jZV9zY2FsZSclM0ElMjA3LjAlMEElMjAlMjAlMjAlMjAnbnVtX2luZmVyZW5jZV9zdGVwcyclM0ElMjAyNSUwQSUyMCUyMCUyMCUyMCdwcm9tcHRfZW1iZWRzJyUzQSUyMFRlbnNvcihkdHlwZSUzRHRvcmNoLmZsb2F0MzIlMkMlMjBzaGFwZSUzRHRvcmNoLlNpemUoJTVCMSUyQyUyMDElMkMlMjAxJTJDJTIwMSU1RCkpJTBBJTIwJTIwJTIwJTIwJ25lZ2F0aXZlX3Byb21wdF9lbWJlZHMnJTNBJTIwTm9uZSUwQSUyMCUyMCU3RCUyQyUwQSk=",highlighted:`PipelineState(
values={
<span class="hljs-string">&#x27;prompt&#x27;</span>: <span class="hljs-string">&#x27;a cat&#x27;</span>
<span class="hljs-string">&#x27;guidance_scale&#x27;</span>: <span class="hljs-number">7.0</span>
<span class="hljs-string">&#x27;num_inference_steps&#x27;</span>: <span class="hljs-number">25</span>
<span class="hljs-string">&#x27;prompt_embeds&#x27;</span>: Tensor(dtype=torch.float32, shape=torch.Size([<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>]))
<span class="hljs-string">&#x27;negative_prompt_embeds&#x27;</span>: <span class="hljs-literal">None</span>
},
)`,lang:"py",wrap:!1});var d=l(n,2);e(d,{title:"BlockState",local:"blockstate",headingTag:"h2"});var p=l(d,6);a(p,{code:"QmxvY2tTdGF0ZSglMEElMjAlMjAlMjAlMjBpbWFnZSUzQSUyMCUzQ1BJTC5JbWFnZS5JbWFnZSUyMGltYWdlJTIwbW9kZSUzRFJHQiUyMHNpemUlM0Q1MTJ4NTEyJTIwYXQlMjAweDdGM0VDQzQ5NDY0MCUzRSUwQSk=",highlighted:`BlockState(
image: &lt;PIL.Image.Image image mode=RGB size=512x512 at <span class="hljs-number">0x7F3ECC494640</span>&gt;
)`,lang:"py",wrap:!1});var i=l(p,4);a(i,{code:"ZGVmJTIwX19jYWxsX18oc2VsZiUyQyUyMGNvbXBvbmVudHMlMkMlMjBzdGF0ZSklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjAlRTYlQTMlODAlRTclQjQlQTJCbG9ja1N0YXRlJTBBJTIwJTIwJTIwJTIwYmxvY2tfc3RhdGUlMjAlM0QlMjBzZWxmLmdldF9ibG9ja19zdGF0ZShzdGF0ZSklMEElMEElMjAlMjAlMjAlMjAlMjMlMjAlRTUlQUYlQjklRTglQkUlOTMlRTUlODUlQTUlRTglQkYlOUIlRTglQTElOEMlRTglQUUlQTElRTclQUUlOTclRTclOUElODQlRTklODAlQkIlRTglQkUlOTElMEElMEElMjAlMjAlMjAlMjAlMjMlMjAlRTYlOUIlQjQlRTYlOTYlQjBQaXBlbGluZVN0YXRlJTBBJTIwJTIwJTIwJTIwc2VsZi5zZXRfYmxvY2tfc3RhdGUoc3RhdGUlMkMlMjBibG9ja19zdGF0ZSklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBjb21wb25lbnRzJTJDJTIwc3RhdGU=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">self, components, state</span>):
<span class="hljs-comment"># 检索BlockState</span>
block_state = <span class="hljs-variable language_">self</span>.get_block_state(state)
<span class="hljs-comment"># 对输入进行计算的逻辑</span>
<span class="hljs-comment"># 更新PipelineState</span>
<span class="hljs-variable language_">self</span>.set_block_state(state, block_state)
<span class="hljs-keyword">return</span> components, state`,lang:"py",wrap:!1});var M=l(i,2);e(M,{title:"状态交互",local:"状态交互",headingTag:"h2"});var U=l(M,6);u(U,{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/modular_diffusers/modular_diffusers_states.md"}),A(2),h(T,t),Q()}export{x as component};

Xet Storage Details

Size:
6.35 kB
·
Xet hash:
50b7c0807b5bfdcb8aafa9a40f511d7e448c65d5deac8900c74474a6eca08303

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