Buckets:
| 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">'prompt'</span>: <span class="hljs-string">'a cat'</span> | |
| <span class="hljs-string">'guidance_scale'</span>: <span class="hljs-number">7.0</span> | |
| <span class="hljs-string">'num_inference_steps'</span>: <span class="hljs-number">25</span> | |
| <span class="hljs-string">'prompt_embeds'</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">'negative_prompt_embeds'</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: <PIL.Image.Image image mode=RGB size=512x512 at <span class="hljs-number">0x7F3ECC494640</span>> | |
| )`,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.