Buckets:
| import{s as ge,n as Ie,o as Be}from"../chunks/scheduler.e4ff9b64.js";import{S as Fe,i as Re,e as p,s as n,c as o,h as Ze,a as i,d as s,b as a,f as Ve,g as U,j as J,k as Kl,l as Qe,m as t,n as y,t as M,o as c,p as T}from"../chunks/index.09f1bca0.js";import{C as ke,H as r,E as Ge}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.868ec318.js";import{C as al}from"../chunks/CodeBlock.938fc367.js";function Ee(le){let m,Jl,pl,ol,d,Ul,h,yl,f,ee=`<a href="https://huggingface.co/papers/2605.13724" rel="nofollow">AnyFlow</a> 是一个视频扩散<strong>蒸馏</strong>框架,把预训练的 Wan2.1 教师 | |
| 模型蒸馏成在标准 Euler 采样下支持<em>任意步数 (any-step)</em> 的学生模型。同一个蒸馏出来的 checkpoint 可以 | |
| 在 1、2、4、8、16… NFE 下推理,<strong>质量随步数单调提升</strong> —— 这一点和 consistency models 不同,后者 | |
| NFE 增加反而经常掉点。`,Ml,j,se=`核心思路是学习 <strong>flow map</strong> $\\Phi_{r\\leftarrow t}: \\mathbf{z}_t \\to \\mathbf{z}_r$(任意 $1 \\ge t \\ge r \\ge 0$), | |
| 而不是 consistency models 学的固定端点映射 $\\mathbf{z}_t \\to \\mathbf{z}_0$。Flow map 的可组合性消除了 | |
| 采样步之间的 re-noising;on-policy 蒸馏阶段额外用 <strong>DMD 反向散度监督</strong> + <strong>Flow-Map backward simulation</strong> | |
| (3 段 shortcut)补上 consistency 蒸馏遗留的 exposure-bias 缺口。`,cl,C,te='AnyFlow 由 Yuchao Gu、Guian Fang 等人在 <a href="https://sites.google.com/view/showlab" rel="nofollow">NUS ShowLab</a> 与 NVIDIA 合作完成。原始训练代码在 <a href="https://github.com/NVlabs/AnyFlow" rel="nofollow"><code>NVlabs/AnyFlow</code></a>,项目主页是 <a href="https://nvlabs.github.io/AnyFlow" rel="nofollow">nvlabs.github.io/AnyFlow</a>。4 个发布 checkpoint 归在 <a href="https://huggingface.co/collections/nvidia/anyflow" rel="nofollow"><code>nvidia/anyflow</code></a> Hugging Face collection 里。',Tl,b,ne="本文档梳理实战要点:怎么选 pipeline、怎么用 any-step 采样、怎么把 AnyFlow 嵌进 T2V / I2V / V2V 工作流。",ml,V,rl,g,ae="AnyFlow 提供两个 pipeline 形态,scheduler 和蒸馏方法相同,区别在于<strong>怎么对帧采样</strong>:",ul,I,pe=`<li><a href="../api/pipelines/anyflow#anyflowpipeline"><code>AnyFlowPipeline</code></a> —— <strong>bidirectional</strong> T2V。一次性对整个 | |
| 视频张量去噪,全局自注意力。<strong>纯 prompt 输入、不要流式输出</strong>时选这个。</li> <li><a href="../api/pipelines/anyflow#anyflowfarpipeline"><code>AnyFlowFARPipeline</code></a> —— <strong>causal (FAR)</strong>。 | |
| 按 chunk 分段去噪,块稀疏因果注意力 + 跨 chunk 复用 KV cache。<strong>图生视频 (I2V)</strong>、<strong>视频续写 (V2V)</strong>、 | |
| 或任何受益于逐帧自回归采样的场景选这个。同一个模型通过传入 <code>context_sequence</code> 来切换三种任务模式。</li>`,wl,B,ie="简化对照表:",dl,F,Je="<thead><tr><th>场景</th> <th>Pipeline</th> <th>调用方式</th></tr></thead> <tbody><tr><td>纯文生视频,固定 NFE 求最大质量</td> <td><code>AnyFlowPipeline</code></td> <td><code>pipe(prompt, ...)</code></td></tr> <tr><td>图生视频(首帧给定)</td> <td><code>AnyFlowFARPipeline</code></td> <td><code>pipe(prompt, context_sequence={"raw": <单帧 tensor>}, ...)</code></td></tr> <tr><td>视频续写 / V2V</td> <td><code>AnyFlowFARPipeline</code></td> <td><code>pipe(prompt, context_sequence={"raw": <多帧 tensor>}, ...)</code></td></tr> <tr><td>流式 / 渐进式生成</td> <td><code>AnyFlowFARPipeline</code></td> <td>—</td></tr></tbody>",hl,R,oe=`高分辨率下 bidirectional 单 token 更快;causal 牺牲一点单步速度,换来在所有 latent 帧分配前就能开始 | |
| 采样的能力,对超长序列尤其有用。`,fl,Z,jl,Q,Ue="NVIDIA 发布了 4 个 AnyFlow checkpoint,pipeline × 规模各一份:",Cl,k,bl,G,ye=`四个 checkpoint 共用同一份 <a href="../api/schedulers/flow_map_euler_discrete"><code>FlowMapEulerDiscreteScheduler</code></a>, | |
| 默认 <code>shift=5.0</code>。`,Vl,E,gl,v,Me=`AnyFlow 最关键的特性是同一个 checkpoint <strong>不需重新调度</strong>,NFE 越大质量越高。固定 prompt、扫一下步数 | |
| 就能看出模型怎么在延迟和保真度之间权衡:`,Il,N,Bl,W,ce=`paper 的 Tab 3 / Fig 1 表明:每个 AnyFlow checkpoint 在 4 → 32 NFE 范围 VBench Quality 都单调上升,而 | |
| consistency 类基线(rCM、Self-Forcing)在同区间反而掉点。`,Fl,u,Te=`<p>Classifier-free guidance (CFG) 已经在训练阶段融进权重。pipeline 推理 | |
| 时<strong>不会</strong>再跑一次 unconditional 前向 —— guidance 直接由蒸馏后的权重带出。release 出来的 checkpoint | |
| 都用默认的 <code>guidance_scale=1.0</code> 即可。</p>`,Rl,$,Zl,x,me=`Causal pipeline 用同一个蒸馏模型支持三种任务模式,<strong>通过 <code>context_sequence</code> 隐式选择</strong>(dict,含 | |
| <code>"raw"</code> 视频张量或 <code>"latent"</code> 已编码 latent)。Context tensor 的帧数必须满足 <code>T = 4n + 1</code>,跟 VAE | |
| 时间步长对齐。`,Ql,w,re=`<p>FAR pipeline 是分块 (chunk) rollout,<code>num_frames</code> 必须配合 chunk 调度。默认 | |
| <code>chunk_partition=[1, 3, 3, 3, 3, 3, 3, 2]</code>(求和 21)对应发布 checkpoint 的标准 <code>num_frames=81</code> | |
| (21 = (81 − 1) // 4 + 1)。改 <code>num_frames</code> 时<strong>必须</strong>显式传匹配的 <code>chunk_partition</code>,使其求和等于 | |
| <code>(num_frames - 1) // 4 + 1</code>,否则 pipeline 会抛 <code>AssertionError</code>。比如 <code>num_frames=33</code> 对应 9 个 latent | |
| 帧,可用 <code>chunk_partition=[1, 4, 4]</code>。</p>`,kl,_,Gl,A,ue=`底层 patchify chunk 调度根据 <code>context_sequence</code> 自动调整:纯文生用 kernel 2 (full) 和 4 (compressed); | |
| 有 context 时第一个 chunk 改成 kernel 1,让条件帧保留全分辨率。`,El,S,we="如果你已经有 VAE 编码过的 latent,可以直接传 <code>context_sequence={"latent": ...}</code> 跳过 <code>vae_encode</code> 步骤。",vl,D,Nl,Y,de="14B 的 AnyFlow 模型用 group offload + VAE slicing 单卡 40 GB 能跑:",Wl,X,$l,q,he="延迟方面,<code>torch.compile</code> 对 transformer(最重的模块)效果很好:",xl,z,_l,H,fe=`编译开销跑几步就摊销掉;配合 AnyFlow 的低 NFE(4-8 步),<code>torch.compile</code> 在 14B 上相比 eager | |
| 模式有明显加速。`,Al,L,Sl,O,je=`两个 pipeline 都复用 <a href="../api/loaders/lora"><code>WanLoraLoaderMixin</code></a>,因此为对应 Wan2.1 backbone 训练的 | |
| LoRA adapter 直接加载即可:`,Dl,P,Yl,K,Ce=`如果要做<strong>继续 on-policy 蒸馏微调</strong>(用论文里相同的 DMD 反向散度监督配方训新 LoRA),请参考原始 | |
| AnyFlow 训练框架 <a href="https://github.com/NVlabs/AnyFlow" rel="nofollow"><code>NVlabs/AnyFlow</code></a>,这套训练流程不在 | |
| diffusers 范围内。`,Xl,ll,ql,el,be=`<li><strong>永远 <code>guidance_scale=1.0</code>。</strong> 蒸馏后的 checkpoint 已经把 CFG 融进权重。设 <code>> 1</code> 会多跑一遍 | |
| unconditional 前向、延迟翻倍、质量微降。</li> <li><strong>Bidirectional pipeline 不支持流式。</strong> 所有 <code>num_frames</code> 一起去噪。需要边采边播请用 causal pipeline。</li> <li><strong>Causal pipeline KV cache 假设 chunk 调度跨调用一致。</strong> 中途重建 cache 不被 release 模型支持。</li> <li><strong><code>num_frames</code> 必须满足 VAE 时间步长。</strong> release checkpoint 用 <code>(N - 1) % 4 == 0</code> 的值(如 9、17、33、81)。</li>`,zl,sl,Hl,tl,Ll,nl,Ol,il,Pl;return d=new ke({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),h=new r({props:{title:"AnyFlow",local:"anyflow",headingTag:"h1"}}),V=new r({props:{title:"Bidirectional 还是 Causal —— 怎么选 pipeline",local:"bidirectional-还是-causal--怎么选-pipeline",headingTag:"h2"}}),Z=new r({props:{title:"加载 checkpoint",local:"加载-checkpoint",headingTag:"h2"}}),k=new al({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQW55Rmxvd1BpcGVsaW5lJTJDJTIwQW55Rmxvd0ZBUlBpcGVsaW5lJTBBJTBBJTIzJTIwQmlkaXJlY3Rpb25hbCUyQyUyMCVFOCVCRCVCQiVFOSU4NyU4RiUwQXBpcGUlMjAlM0QlMjBBbnlGbG93UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMm52aWRpYSUyRkFueUZsb3ctV2FuMi4xLVQyVi0xLjNCLURpZmZ1c2VycyUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guYmZsb2F0MTYlMEEpLnRvKCUyMmN1ZGElMjIpJTBBJTBBJTIzJTIwQmlkaXJlY3Rpb25hbCUyQyUyMCVFNiVCQiVBMSVFOCVBMSU4MCUwQXBpcGUlMjAlM0QlMjBBbnlGbG93UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMm52aWRpYSUyRkFueUZsb3ctV2FuMi4xLVQyVi0xNEItRGlmZnVzZXJzJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5iZmxvYXQxNiUwQSkudG8oJTIyY3VkYSUyMiklMEElMEElMjMlMjBDYXVzYWwlMjAoRkFSKSUyQyUyMDEuM0IlMEFwaXBlJTIwJTNEJTIwQW55Rmxvd0ZBUlBpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJudmlkaWElMkZBbnlGbG93LUZBUi1XYW4yLjEtMS4zQi1EaWZmdXNlcnMlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmJmbG9hdDE2JTBBKS50byglMjJjdWRhJTIyKSUwQSUwQSUyMyUyMENhdXNhbCUyMChGQVIpJTJDJTIwMTRCJTBBcGlwZSUyMCUzRCUyMEFueUZsb3dGQVJQaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIybnZpZGlhJTJGQW55Rmxvdy1GQVItV2FuMi4xLTE0Qi1EaWZmdXNlcnMlMjIlMkMlMjB0b3JjaF9kdHlwZSUzRHRvcmNoLmJmbG9hdDE2JTBBKS50byglMjJjdWRhJTIyKQ==",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AnyFlowPipeline, AnyFlowFARPipeline | |
| <span class="hljs-comment"># Bidirectional, 轻量</span> | |
| pipe = AnyFlowPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-comment"># Bidirectional, 满血</span> | |
| pipe = AnyFlowPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-comment"># Causal (FAR), 1.3B</span> | |
| pipe = AnyFlowFARPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-comment"># Causal (FAR), 14B</span> | |
| pipe = AnyFlowFARPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-FAR-Wan2.1-14B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ).to(<span class="hljs-string">"cuda"</span>)`,lang:"py",wrap:!1}}),E=new r({props:{title:"Any-step 采样",local:"any-step-采样",headingTag:"h2"}}),N=new al({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQW55Rmxvd1BpcGVsaW5lJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGV4cG9ydF90b192aWRlbyUwQSUwQXBpcGUlMjAlM0QlMjBBbnlGbG93UGlwZWxpbmUuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMm52aWRpYSUyRkFueUZsb3ctV2FuMi4xLVQyVi0xLjNCLURpZmZ1c2VycyUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guYmZsb2F0MTYlMEEpLnRvKCUyMmN1ZGElMjIpJTBBJTBBcHJvbXB0JTIwJTNEJTIwJTIyJUU2JUEzJUFFJUU2JTlFJTk3JUU5JTg3JThDJUU0JUI4JTgwJUU1JThGJUFBJUU1JUIwJThGJUU3JTg2JThBJUU3JThDJUFCJUU1JTlDJUE4JUU1JTk1JTgzJUU3JUFCJUI5JUU1JUFEJTkwJUVGJUJDJThDJUU3JTk0JUI1JUU1JUJEJUIxJUU2JTg0JTlGJUU1JTg1JTg5JUU3JTg1JUE3JTIyJTBBJTBBZm9yJTIwbmZlJTIwaW4lMjAlNUIxJTJDJTIwMiUyQyUyMDQlMkMlMjA4JTJDJTIwMTYlMkMlMjAzMiU1RCUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyMCVFNiVBRiU4RiVFOCVCRCVBRSVFOSU4NyU4RCVFNSVCQiVCQSUyMGdlbmVyYXRvciUyMCVFMiU4MCU5NCVFMiU4MCU5NCUyMCVFOCVCRiU5OSVFNiVBMCVCNyVFOCVCNyVBOCVFNiVBRCVBNSVFNiU5NSVCMCVFNSVBRiVCOSVFNiVBRiU5NCVFNiU5NyVCNiVFNSU5NCVBRiVFNCVCOCU4MCVFNSU4RiU5OCVFOSU4NyU4RiVFNiU5OCVBRiUyME5GRSVFMyU4MCU4MiUwQSUyMCUyMCUyMCUyMGdlbmVyYXRvciUyMCUzRCUyMHRvcmNoLkdlbmVyYXRvciglMjJjdWRhJTIyKS5tYW51YWxfc2VlZCgwKSUwQSUyMCUyMCUyMCUyMHZpZGVvJTIwJTNEJTIwcGlwZShwcm9tcHQlMkMlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNEbmZlJTJDJTIwbnVtX2ZyYW1lcyUzRDMzJTJDJTIwZ2VuZXJhdG9yJTNEZ2VuZXJhdG9yKS5mcmFtZXMlNUIwJTVEJTBBJTIwJTIwJTIwJTIwZXhwb3J0X3RvX3ZpZGVvKHZpZGVvJTJDJTIwZiUyMm91dF9uZmUlN0JuZmUlN0QubXA0JTIyJTJDJTIwZnBzJTNEMTYp",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AnyFlowPipeline | |
| <span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> export_to_video | |
| pipe = AnyFlowPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-Wan2.1-T2V-1.3B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| prompt = <span class="hljs-string">"森林里一只小熊猫在啃竹子,电影感光照"</span> | |
| <span class="hljs-keyword">for</span> nfe <span class="hljs-keyword">in</span> [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">4</span>, <span class="hljs-number">8</span>, <span class="hljs-number">16</span>, <span class="hljs-number">32</span>]: | |
| <span class="hljs-comment"># 每轮重建 generator —— 这样跨步数对比时唯一变量是 NFE。</span> | |
| generator = torch.Generator(<span class="hljs-string">"cuda"</span>).manual_seed(<span class="hljs-number">0</span>) | |
| video = pipe(prompt, num_inference_steps=nfe, num_frames=<span class="hljs-number">33</span>, generator=generator).frames[<span class="hljs-number">0</span>] | |
| export_to_video(video, <span class="hljs-string">f"out_nfe<span class="hljs-subst">{nfe}</span>.mp4"</span>, fps=<span class="hljs-number">16</span>)`,lang:"py",wrap:!1}}),$=new r({props:{title:"图生视频 与 视频续写",local:"图生视频-与-视频续写",headingTag:"h2"}}),_=new al({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQW55Rmxvd0ZBUlBpcGVsaW5lJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGV4cG9ydF90b192aWRlbyUyQyUyMGxvYWRfaW1hZ2UlMkMlMjBsb2FkX3ZpZGVvJTBBJTBBcGlwZSUyMCUzRCUyMEFueUZsb3dGQVJQaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIybnZpZGlhJTJGQW55Rmxvdy1GQVItV2FuMi4xLTEuM0ItRGlmZnVzZXJzJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5iZmxvYXQxNiUwQSkudG8oJTIyY3VkYSUyMiklMEElMEElMEFkZWYlMjB0b192aWRlb190ZW5zb3IoaW1hZ2VzJTJDJTIwaGVpZ2h0JTNENDgwJTJDJTIwd2lkdGglM0Q4MzIpJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyJUU2JThBJThBJTIwUElMJTIwJUU1JTg4JTk3JUU4JUExJUE4JUU4JUJEJUFDJUU2JTg4JTkwJTIwRkFSJTIwcGlwZWxpbmUlMjAlRTklOUMlODAlRTglQTYlODElRTclOUElODQlMjAoQiUyQyUyMEMlMkMlMjBUJTJDJTIwSCUyQyUyMFcpJTIwJTVCMCUyQyUyMDElNUQlMjAlRTUlQkMlQTAlRTklODclOEYlRTMlODAlODIlMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBmcmFtZXMlMjAlM0QlMjBucC5zdGFjayglNUJucC5hc2FycmF5KGltZy5yZXNpemUoKHdpZHRoJTJDJTIwaGVpZ2h0KSkpJTIwZm9yJTIwaW1nJTIwaW4lMjBpbWFnZXMlNUQpLmFzdHlwZSglMjJmbG9hdDMyJTIyKSUyMCUyRiUyMDI1NS4wJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9yY2guZnJvbV9udW1weShmcmFtZXMpLnBlcm11dGUoMyUyQyUyMDAlMkMlMjAxJTJDJTIwMikudW5zcXVlZXplKDApJTIwJTIwJTIzJTIwKDElMkMlMjBDJTJDJTIwVCUyQyUyMEglMkMlMjBXKSUwQSUwQSUwQSUyMyUyMDEpJTIwJUU2JTk2JTg3JUU3JTk0JTlGJUU4JUE3JTg2JUU5JUEyJTkxJUVGJUJDJTg4JUU2JTk3JUEwJTIwY29udGV4dCVFRiVCQyU4OSVFMyU4MCU4MjgxJTIwJUU1JUI4JUE3JUU1JThDJUI5JUU5JTg1JThEJUU5JUJCJTk4JUU4JUFFJUE0JTIwY2h1bmtfcGFydGl0aW9uJUUzJTgwJTgyJTBBdmlkZW8lMjAlM0QlMjBwaXBlKHByb21wdCUzRCUyMiVFNCVCOCU4MCVFNSU4RiVBQSVFNyU4QyVBQiVFNSU5QyVBOCVFNSVBNCU5NSVFOSU5OCVCMyVFNCVCOCU4QiVFNSU4NiVCMiVFNiVCNSVBQSUyMiUyQyUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0Q0JTJDJTIwbnVtX2ZyYW1lcyUzRDgxKS5mcmFtZXMlNUIwJTVEJTBBZXhwb3J0X3RvX3ZpZGVvKHZpZGVvJTJDJTIwJTIydDJ2Lm1wNCUyMiUyQyUyMGZwcyUzRDE2KSUwQSUwQSUyMyUyMDIpJTIwJUU1JTlCJUJFJUU3JTk0JTlGJUU4JUE3JTg2JUU5JUEyJTkxJTIwJUUyJTgwJTk0JUUyJTgwJTk0JTIwJUU1JThEJTk1JUU1JUI4JUE3JTIwY29udGV4dCUyMCVFNyVCQiU4RiVFOCVCRiU4NyUyMFZBRSUyMCVFNiU5OCVBRiUyMDElMjAlRTQlQjglQUElMjBsYXRlbnQlRUYlQkMlOEMlRTYlQUQlQTMlRTUlQTUlQkQlRTUlQUYlQjklRTQlQjglOEElRTklQkIlOTglRTglQUUlQTQlMjBjaHVua19wYXJ0aXRpb24lMjAlRTclOUElODQlRTclQUMlQUMlRTQlQjglODAlRTklQTElQjklMjAoJTYwJTVCMSUyQyUyMC4uLiU1RCU2MCklRTMlODAlODIlMEFmaXJzdF9mcmFtZSUyMCUzRCUyMGxvYWRfaW1hZ2UoJTIycGF0aCUyRnRvJTJGZmlyc3RfZnJhbWUucG5nJTIyKSUwQWNvbnRleHRfdGVuc29yJTIwJTNEJTIwdG9fdmlkZW9fdGVuc29yKCU1QmZpcnN0X2ZyYW1lJTVEKS50byglMjJjdWRhJTIyKSUyMCUyMCUyMyUyMCgxJTJDJTIwMyUyQyUyMDElMkMlMjA0ODAlMkMlMjA4MzIpJTJDJTIwJTVCMCUyQyUyMDElNUQlMEF2aWRlbyUyMCUzRCUyMHBpcGUoJTBBJTIwJTIwJTIwJTIwcHJvbXB0JTNEJTIyJUU0JUI4JTgwJUU1JThGJUFBJUU3JThDJUFCJUU4JUI1JUIwJUU4JUJGJTg3JUU5JTk4JUIzJUU1JTg1JTg5JUU0JUI4JThCJUU3JTlBJTg0JUU4JThEJTg5JUU1JTlEJUFBJTIyJTJDJTBBJTIwJTIwJTIwJTIwY29udGV4dF9zZXF1ZW5jZSUzRCU3QiUyMnJhdyUyMiUzQSUyMGNvbnRleHRfdGVuc29yJTdEJTJDJTBBJTIwJTIwJTIwJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDQlMkMlMEElMjAlMjAlMjAlMjBudW1fZnJhbWVzJTNEODElMkMlMEEpLmZyYW1lcyU1QjAlNUQlMEFleHBvcnRfdG9fdmlkZW8odmlkZW8lMkMlMjAlMjJpMnYubXA0JTIyJTJDJTIwZnBzJTNEMTYpJTBBJTBBJTIzJTIwMyklMjAlRTglQTclODYlRTklQTIlOTElRTclQkIlQUQlRTUlODYlOTklRTMlODAlODI5JTIwJUU1JUI4JUE3JTIwcmF3JTIwY29udGV4dCUyMCVFMiU4NiU5MiUyMDMlMjAlRTQlQjglQUElMjBsYXRlbnQlMjBjb250ZXh0JUVGJUJDJTlCJUU2JTk4JUJFJUU1JUJDJThGJUU4JUE2JTg2JUU3JTlCJTk2JTIwY2h1bmtfcGFydGl0aW9uJUVGJUJDJThDJUU4JUFFJUE5JUU3JUFDJUFDJUU0JUI4JTgwJUU1JTlEJTk3JUU2JUFEJUEzJUU1JUE1JUJEJUU4JUE2JTg2JUU3JTlCJTk2JTIwY29udGV4dCVFMyU4MCU4MiUwQWNvbnRleHRfZnJhbWVzJTIwJTNEJTIwbG9hZF92aWRlbyglMjJwYXRoJTJGdG8lMkZjb250ZXh0Lm1wNCUyMiklNUIlM0E5JTVEJTIwJTIwJTIzJTIwOSUyMCUzRCUyMDQlQzIlQjcyJTIwJTJCJTIwMSUwQWNvbnRleHRfdGVuc29yJTIwJTNEJTIwdG9fdmlkZW9fdGVuc29yKGNvbnRleHRfZnJhbWVzKS50byglMjJjdWRhJTIyKSUyMCUyMCUyMyUyMCgxJTJDJTIwMyUyQyUyMDklMkMlMjA0ODAlMkMlMjA4MzIpJTBBdmlkZW8lMjAlM0QlMjBwaXBlKCUwQSUyMCUyMCUyMCUyMHByb21wdCUzRCUyMiVFNyVCQiVBNyVFNyVCQiVBRCVFOCVCRiU5OSVFNCVCOCVBQSVFNiU5NSU4NSVFNCVCQSU4QiUyMiUyQyUwQSUyMCUyMCUyMCUyMGNvbnRleHRfc2VxdWVuY2UlM0QlN0IlMjJyYXclMjIlM0ElMjBjb250ZXh0X3RlbnNvciU3RCUyQyUwQSUyMCUyMCUyMCUyMG51bV9pbmZlcmVuY2Vfc3RlcHMlM0Q0JTJDJTBBJTIwJTIwJTIwJTIwbnVtX2ZyYW1lcyUzRDgxJTJDJTBBJTIwJTIwJTIwJTIwY2h1bmtfcGFydGl0aW9uJTNEJTVCMyUyQyUyMDMlMkMlMjAzJTJDJTIwMyUyQyUyMDMlMkMlMjAzJTJDJTIwMyU1RCUyQyUyMCUyMCUyMyUyMDclMjAlRTQlQjglQUElMjBjaHVuayUyMCVDMyU5NyUyMDMlMjAlM0QlMjAyMSUyMGxhdGVudCVFRiVCQyU5QiVFOSVBNiU5NiVFNSU5RCU5NyVFNSVCMCVCMSVFNiU5OCVBRiUyMGNvbnRleHQlMEEpLmZyYW1lcyU1QjAlNUQlMEFleHBvcnRfdG9fdmlkZW8odmlkZW8lMkMlMjAlMjJ2MnYubXA0JTIyJTJDJTIwZnBzJTNEMTYp",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np | |
| <span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AnyFlowFARPipeline | |
| <span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> export_to_video, load_image, load_video | |
| pipe = AnyFlowFARPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-FAR-Wan2.1-1.3B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ).to(<span class="hljs-string">"cuda"</span>) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">to_video_tensor</span>(<span class="hljs-params">images, height=<span class="hljs-number">480</span>, width=<span class="hljs-number">832</span></span>): | |
| <span class="hljs-string">"""把 PIL 列表转成 FAR pipeline 需要的 (B, C, T, H, W) [0, 1] 张量。"""</span> | |
| frames = np.stack([np.asarray(img.resize((width, height))) <span class="hljs-keyword">for</span> img <span class="hljs-keyword">in</span> images]).astype(<span class="hljs-string">"float32"</span>) / <span class="hljs-number">255.0</span> | |
| <span class="hljs-keyword">return</span> torch.from_numpy(frames).permute(<span class="hljs-number">3</span>, <span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>).unsqueeze(<span class="hljs-number">0</span>) <span class="hljs-comment"># (1, C, T, H, W)</span> | |
| <span class="hljs-comment"># 1) 文生视频(无 context)。81 帧匹配默认 chunk_partition。</span> | |
| video = pipe(prompt=<span class="hljs-string">"一只猫在夕阳下冲浪"</span>, num_inference_steps=<span class="hljs-number">4</span>, num_frames=<span class="hljs-number">81</span>).frames[<span class="hljs-number">0</span>] | |
| export_to_video(video, <span class="hljs-string">"t2v.mp4"</span>, fps=<span class="hljs-number">16</span>) | |
| <span class="hljs-comment"># 2) 图生视频 —— 单帧 context 经过 VAE 是 1 个 latent,正好对上默认 chunk_partition 的第一项 (\`[1, ...]\`)。</span> | |
| first_frame = load_image(<span class="hljs-string">"path/to/first_frame.png"</span>) | |
| context_tensor = to_video_tensor([first_frame]).to(<span class="hljs-string">"cuda"</span>) <span class="hljs-comment"># (1, 3, 1, 480, 832), [0, 1]</span> | |
| video = pipe( | |
| prompt=<span class="hljs-string">"一只猫走过阳光下的草坪"</span>, | |
| context_sequence={<span class="hljs-string">"raw"</span>: context_tensor}, | |
| num_inference_steps=<span class="hljs-number">4</span>, | |
| num_frames=<span class="hljs-number">81</span>, | |
| ).frames[<span class="hljs-number">0</span>] | |
| export_to_video(video, <span class="hljs-string">"i2v.mp4"</span>, fps=<span class="hljs-number">16</span>) | |
| <span class="hljs-comment"># 3) 视频续写。9 帧 raw context → 3 个 latent context;显式覆盖 chunk_partition,让第一块正好覆盖 context。</span> | |
| context_frames = load_video(<span class="hljs-string">"path/to/context.mp4"</span>)[:<span class="hljs-number">9</span>] <span class="hljs-comment"># 9 = 4·2 + 1</span> | |
| context_tensor = to_video_tensor(context_frames).to(<span class="hljs-string">"cuda"</span>) <span class="hljs-comment"># (1, 3, 9, 480, 832)</span> | |
| video = pipe( | |
| prompt=<span class="hljs-string">"继续这个故事"</span>, | |
| context_sequence={<span class="hljs-string">"raw"</span>: context_tensor}, | |
| num_inference_steps=<span class="hljs-number">4</span>, | |
| num_frames=<span class="hljs-number">81</span>, | |
| chunk_partition=[<span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>, <span class="hljs-number">3</span>], <span class="hljs-comment"># 7 个 chunk × 3 = 21 latent;首块就是 context</span> | |
| ).frames[<span class="hljs-number">0</span>] | |
| export_to_video(video, <span class="hljs-string">"v2v.mp4"</span>, fps=<span class="hljs-number">16</span>)`,lang:"py",wrap:!1}}),D=new r({props:{title:"显存与推理速度",local:"显存与推理速度",headingTag:"h2"}}),X=new al({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQW55Rmxvd1BpcGVsaW5lJTBBZnJvbSUyMGRpZmZ1c2Vycy5ob29rcyUyMGltcG9ydCUyMGFwcGx5X2dyb3VwX29mZmxvYWRpbmclMEElMEFwaXBlJTIwJTNEJTIwQW55Rmxvd1BpcGVsaW5lLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJudmlkaWElMkZBbnlGbG93LVdhbjIuMS1UMlYtMTRCLURpZmZ1c2VycyUyMiUyQyUyMHRvcmNoX2R0eXBlJTNEdG9yY2guYmZsb2F0MTYlMEEpJTBBYXBwbHlfZ3JvdXBfb2ZmbG9hZGluZyhwaXBlLnRyYW5zZm9ybWVyJTJDJTIwb25sb2FkX2RldmljZSUzRCUyMmN1ZGElMjIlMkMlMjBvZmZsb2FkX3R5cGUlM0QlMjJsZWFmX2xldmVsJTIyKSUwQXBpcGUudmFlLmVuYWJsZV9zbGljaW5nKCklMEFwaXBlLnZhZS5lbmFibGVfdGlsaW5nKCk=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> AnyFlowPipeline | |
| <span class="hljs-keyword">from</span> diffusers.hooks <span class="hljs-keyword">import</span> apply_group_offloading | |
| pipe = AnyFlowPipeline.from_pretrained( | |
| <span class="hljs-string">"nvidia/AnyFlow-Wan2.1-T2V-14B-Diffusers"</span>, torch_dtype=torch.bfloat16 | |
| ) | |
| apply_group_offloading(pipe.transformer, onload_device=<span class="hljs-string">"cuda"</span>, offload_type=<span class="hljs-string">"leaf_level"</span>) | |
| pipe.vae.enable_slicing() | |
| pipe.vae.enable_tiling()`,lang:"py",wrap:!1}}),z=new al({props:{code:"cGlwZSUyMCUzRCUyMHBpcGUudG8oJTIyY3VkYSUyMiklMEFwaXBlLnRyYW5zZm9ybWVyJTIwJTNEJTIwdG9yY2guY29tcGlsZShwaXBlLnRyYW5zZm9ybWVyJTJDJTIwbW9kZSUzRCUyMm1heC1hdXRvdHVuZS1uby1jdWRhZ3JhcGhzJTIyKQ==",highlighted:`pipe = pipe.to(<span class="hljs-string">"cuda"</span>) | |
| pipe.transformer = torch.<span class="hljs-built_in">compile</span>(pipe.transformer, mode=<span class="hljs-string">"max-autotune-no-cudagraphs"</span>)`,lang:"py",wrap:!1}}),L=new r({props:{title:"LoRA 微调",local:"lora-微调",headingTag:"h2"}}),P=new al({props:{code:"cGlwZS5sb2FkX2xvcmFfd2VpZ2h0cyglMjJwYXRoJTJGb3IlMkZyZXBvJTJGd2l0aCUyRndhbl9sb3JhJTIyKQ==",highlighted:'pipe.load_lora_weights(<span class="hljs-string">"path/or/repo/with/wan_lora"</span>)',lang:"py",wrap:!1}}),ll=new r({props:{title:"常见坑",local:"常见坑",headingTag:"h2"}}),sl=new r({props:{title:"引用",local:"引用",headingTag:"h2"}}),tl=new al({props:{code:"JTQwbWlzYyU3Qmd1MjAyNmFueWZsb3dhbnlzdGVwdmlkZW9kaWZmdXNpb24lMkMlMEElMjAlMjB0aXRsZSUzRCU3QkFueUZsb3clM0ElMjBBbnktU3RlcCUyMFZpZGVvJTIwRGlmZnVzaW9uJTIwTW9kZWwlMjB3aXRoJTIwT24tUG9saWN5JTIwRmxvdyUyME1hcCUyMERpc3RpbGxhdGlvbiU3RCUyQyUwQSUyMCUyMGF1dGhvciUzRCU3Qll1Y2hhbyUyMEd1JTIwYW5kJTIwR3VpYW4lMjBGYW5nJTIwYW5kJTIwWXV4aW4lMjBKaWFuZyUyMGFuZCUyMFdlaWppYSUyME1hbyUyMGFuZCUyMFNvbmclMjBIYW4lMjBhbmQlMjBIYW4lMjBDYWklMjBhbmQlMjBNaWtlJTIwWmhlbmclMjBTaG91JTdEJTJDJTBBJTIwJTIweWVhciUzRCU3QjIwMjYlN0QlMkMlMEElMjAlMjBlcHJpbnQlM0QlN0IyNjA1LjEzNzI0JTdEJTJDJTBBJTIwJTIwYXJjaGl2ZVByZWZpeCUzRCU3QmFyWGl2JTdEJTJDJTBBJTIwJTIwcHJpbWFyeUNsYXNzJTNEJTdCY3MuQ1YlN0QlMkMlMEElMjAlMjB1cmwlM0QlN0JodHRwcyUzQSUyRiUyRmFyeGl2Lm9yZyUyRmFicyUyRjI2MDUuMTM3MjQlN0QlMkMlMEElN0QlMEElMEElNDBhcnRpY2xlJTdCZ3UyMDI1bG9uZyUyQyUwQSUyMCUyMHRpdGxlJTNEJTdCTG9uZy1Db250ZXh0JTIwQXV0b3JlZ3Jlc3NpdmUlMjBWaWRlbyUyME1vZGVsaW5nJTIwd2l0aCUyME5leHQtRnJhbWUlMjBQcmVkaWN0aW9uJTdEJTJDJTBBJTIwJTIwYXV0aG9yJTNEJTdCR3UlMkMlMjBZdWNoYW8lMjBhbmQlMjBNYW8lMkMlMjBXZWlqaWElMjBhbmQlMjBTaG91JTJDJTIwTWlrZSUyMFpoZW5nJTdEJTJDJTBBJTIwJTIwam91cm5hbCUzRCU3QmFyWGl2JTIwcHJlcHJpbnQlMjBhclhpdiUzQTI1MDMuMTkzMjUlN0QlMkMlMEElMjAlMjB5ZWFyJTNEJTdCMjAyNSU3RCUwQSU3RA==",highlighted:`<span class="language-xml">@misc</span><span class="hljs-template-variable">{gu2026anyflowanystepvideodiffusion, | |
| title={AnyFlow: Any-Step Video Diffusion Model with On-Policy Flow Map Distillation}</span><span class="language-xml">, | |
| author=</span><span class="hljs-template-variable">{Yuchao Gu and Guian Fang and Yuxin Jiang and Weijia Mao and Song Han and Han Cai and Mike Zheng Shou}</span><span class="language-xml">, | |
| year=</span><span class="hljs-template-variable">{2026}</span><span class="language-xml">, | |
| eprint=</span><span class="hljs-template-variable">{2605.13724}</span><span class="language-xml">, | |
| archivePrefix=</span><span class="hljs-template-variable">{arXiv}</span><span class="language-xml">, | |
| primaryClass=</span><span class="hljs-template-variable">{cs.CV}</span><span class="language-xml">, | |
| url=</span><span class="hljs-template-variable">{https://arxiv.org/abs/2605.13724}</span><span class="language-xml">, | |
| } | |
| @article</span><span class="hljs-template-variable">{gu2025long, | |
| title={Long-Context Autoregressive Video Modeling with Next-Frame Prediction}</span><span class="language-xml">, | |
| author=</span><span class="hljs-template-variable">{Gu, Yuchao and Mao, Weijia and Shou, Mike Zheng}</span><span class="language-xml">, | |
| journal=</span><span class="hljs-template-variable">{arXiv preprint arXiv:2503.19325}</span><span class="language-xml">, | |
| year=</span><span class="hljs-template-variable">{2025}</span><span class="language-xml"> | |
| }</span>`,lang:"bibtex",wrap:!1}}),nl=new Ge({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/using-diffusers/anyflow.md"}}),{c(){m=p("meta"),Jl=n(),pl=p("p"),ol=n(),o(d.$$.fragment),Ul=n(),o(h.$$.fragment),yl=n(),f=p("p"),f.innerHTML=ee,Ml=n(),j=p("p"),j.innerHTML=se,cl=n(),C=p("p"),C.innerHTML=te,Tl=n(),b=p("p"),b.textContent=ne,ml=n(),o(V.$$.fragment),rl=n(),g=p("p"),g.innerHTML=ae,ul=n(),I=p("ul"),I.innerHTML=pe,wl=n(),B=p("p"),B.textContent=ie,dl=n(),F=p("table"),F.innerHTML=Je,hl=n(),R=p("p"),R.textContent=oe,fl=n(),o(Z.$$.fragment),jl=n(),Q=p("p"),Q.textContent=Ue,Cl=n(),o(k.$$.fragment),bl=n(),G=p("p"),G.innerHTML=ye,Vl=n(),o(E.$$.fragment),gl=n(),v=p("p"),v.innerHTML=Me,Il=n(),o(N.$$.fragment),Bl=n(),W=p("p"),W.textContent=ce,Fl=n(),u=p("blockquote"),u.innerHTML=Te,Rl=n(),o($.$$.fragment),Zl=n(),x=p("p"),x.innerHTML=me,Ql=n(),w=p("blockquote"),w.innerHTML=re,kl=n(),o(_.$$.fragment),Gl=n(),A=p("p"),A.innerHTML=ue,El=n(),S=p("p"),S.innerHTML=we,vl=n(),o(D.$$.fragment),Nl=n(),Y=p("p"),Y.textContent=de,Wl=n(),o(X.$$.fragment),$l=n(),q=p("p"),q.innerHTML=he,xl=n(),o(z.$$.fragment),_l=n(),H=p("p"),H.innerHTML=fe,Al=n(),o(L.$$.fragment),Sl=n(),O=p("p"),O.innerHTML=je,Dl=n(),o(P.$$.fragment),Yl=n(),K=p("p"),K.innerHTML=Ce,Xl=n(),o(ll.$$.fragment),ql=n(),el=p("ul"),el.innerHTML=be,zl=n(),o(sl.$$.fragment),Hl=n(),o(tl.$$.fragment),Ll=n(),o(nl.$$.fragment),Ol=n(),il=p("p"),this.h()},l(l){const e=Ze("svelte-u9bgzb",document.head);m=i(e,"META",{name:!0,content:!0}),e.forEach(s),Jl=a(l),pl=i(l,"P",{}),Ve(pl).forEach(s),ol=a(l),U(d.$$.fragment,l),Ul=a(l),U(h.$$.fragment,l),yl=a(l),f=i(l,"P",{"data-svelte-h":!0}),J(f)!=="svelte-x7hf4q"&&(f.innerHTML=ee),Ml=a(l),j=i(l,"P",{"data-svelte-h":!0}),J(j)!=="svelte-1g3jlq0"&&(j.innerHTML=se),cl=a(l),C=i(l,"P",{"data-svelte-h":!0}),J(C)!=="svelte-1yr2rs2"&&(C.innerHTML=te),Tl=a(l),b=i(l,"P",{"data-svelte-h":!0}),J(b)!=="svelte-1g7eyu5"&&(b.textContent=ne),ml=a(l),U(V.$$.fragment,l),rl=a(l),g=i(l,"P",{"data-svelte-h":!0}),J(g)!=="svelte-c2dmjc"&&(g.innerHTML=ae),ul=a(l),I=i(l,"UL",{"data-svelte-h":!0}),J(I)!=="svelte-18b2d0t"&&(I.innerHTML=pe),wl=a(l),B=i(l,"P",{"data-svelte-h":!0}),J(B)!=="svelte-nhe92g"&&(B.textContent=ie),dl=a(l),F=i(l,"TABLE",{"data-svelte-h":!0}),J(F)!=="svelte-q1wqt6"&&(F.innerHTML=Je),hl=a(l),R=i(l,"P",{"data-svelte-h":!0}),J(R)!=="svelte-147wpe4"&&(R.textContent=oe),fl=a(l),U(Z.$$.fragment,l),jl=a(l),Q=i(l,"P",{"data-svelte-h":!0}),J(Q)!=="svelte-1ivm4tg"&&(Q.textContent=Ue),Cl=a(l),U(k.$$.fragment,l),bl=a(l),G=i(l,"P",{"data-svelte-h":!0}),J(G)!=="svelte-9t7fux"&&(G.innerHTML=ye),Vl=a(l),U(E.$$.fragment,l),gl=a(l),v=i(l,"P",{"data-svelte-h":!0}),J(v)!=="svelte-1t8mtgo"&&(v.innerHTML=Me),Il=a(l),U(N.$$.fragment,l),Bl=a(l),W=i(l,"P",{"data-svelte-h":!0}),J(W)!=="svelte-1bqpcv3"&&(W.textContent=ce),Fl=a(l),u=i(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(u)!=="svelte-19oa2n2"&&(u.innerHTML=Te),Rl=a(l),U($.$$.fragment,l),Zl=a(l),x=i(l,"P",{"data-svelte-h":!0}),J(x)!=="svelte-a9y81z"&&(x.innerHTML=me),Ql=a(l),w=i(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(w)!=="svelte-6upibc"&&(w.innerHTML=re),kl=a(l),U(_.$$.fragment,l),Gl=a(l),A=i(l,"P",{"data-svelte-h":!0}),J(A)!=="svelte-1v096xg"&&(A.innerHTML=ue),El=a(l),S=i(l,"P",{"data-svelte-h":!0}),J(S)!=="svelte-suxngz"&&(S.innerHTML=we),vl=a(l),U(D.$$.fragment,l),Nl=a(l),Y=i(l,"P",{"data-svelte-h":!0}),J(Y)!=="svelte-w102jw"&&(Y.textContent=de),Wl=a(l),U(X.$$.fragment,l),$l=a(l),q=i(l,"P",{"data-svelte-h":!0}),J(q)!=="svelte-ea966z"&&(q.innerHTML=he),xl=a(l),U(z.$$.fragment,l),_l=a(l),H=i(l,"P",{"data-svelte-h":!0}),J(H)!=="svelte-1j938au"&&(H.innerHTML=fe),Al=a(l),U(L.$$.fragment,l),Sl=a(l),O=i(l,"P",{"data-svelte-h":!0}),J(O)!=="svelte-1hp1p5d"&&(O.innerHTML=je),Dl=a(l),U(P.$$.fragment,l),Yl=a(l),K=i(l,"P",{"data-svelte-h":!0}),J(K)!=="svelte-v9lpd7"&&(K.innerHTML=Ce),Xl=a(l),U(ll.$$.fragment,l),ql=a(l),el=i(l,"UL",{"data-svelte-h":!0}),J(el)!=="svelte-wokq2p"&&(el.innerHTML=be),zl=a(l),U(sl.$$.fragment,l),Hl=a(l),U(tl.$$.fragment,l),Ll=a(l),U(nl.$$.fragment,l),Ol=a(l),il=i(l,"P",{}),Ve(il).forEach(s),this.h()},h(){Kl(m,"name","hf:doc:metadata"),Kl(m,"content",ve),Kl(u,"class","tip"),Kl(w,"class","important")},m(l,e){Qe(document.head,m),t(l,Jl,e),t(l,pl,e),t(l,ol,e),y(d,l,e),t(l,Ul,e),y(h,l,e),t(l,yl,e),t(l,f,e),t(l,Ml,e),t(l,j,e),t(l,cl,e),t(l,C,e),t(l,Tl,e),t(l,b,e),t(l,ml,e),y(V,l,e),t(l,rl,e),t(l,g,e),t(l,ul,e),t(l,I,e),t(l,wl,e),t(l,B,e),t(l,dl,e),t(l,F,e),t(l,hl,e),t(l,R,e),t(l,fl,e),y(Z,l,e),t(l,jl,e),t(l,Q,e),t(l,Cl,e),y(k,l,e),t(l,bl,e),t(l,G,e),t(l,Vl,e),y(E,l,e),t(l,gl,e),t(l,v,e),t(l,Il,e),y(N,l,e),t(l,Bl,e),t(l,W,e),t(l,Fl,e),t(l,u,e),t(l,Rl,e),y($,l,e),t(l,Zl,e),t(l,x,e),t(l,Ql,e),t(l,w,e),t(l,kl,e),y(_,l,e),t(l,Gl,e),t(l,A,e),t(l,El,e),t(l,S,e),t(l,vl,e),y(D,l,e),t(l,Nl,e),t(l,Y,e),t(l,Wl,e),y(X,l,e),t(l,$l,e),t(l,q,e),t(l,xl,e),y(z,l,e),t(l,_l,e),t(l,H,e),t(l,Al,e),y(L,l,e),t(l,Sl,e),t(l,O,e),t(l,Dl,e),y(P,l,e),t(l,Yl,e),t(l,K,e),t(l,Xl,e),y(ll,l,e),t(l,ql,e),t(l,el,e),t(l,zl,e),y(sl,l,e),t(l,Hl,e),y(tl,l,e),t(l,Ll,e),y(nl,l,e),t(l,Ol,e),t(l,il,e),Pl=!0},p:Ie,i(l){Pl||(M(d.$$.fragment,l),M(h.$$.fragment,l),M(V.$$.fragment,l),M(Z.$$.fragment,l),M(k.$$.fragment,l),M(E.$$.fragment,l),M(N.$$.fragment,l),M($.$$.fragment,l),M(_.$$.fragment,l),M(D.$$.fragment,l),M(X.$$.fragment,l),M(z.$$.fragment,l),M(L.$$.fragment,l),M(P.$$.fragment,l),M(ll.$$.fragment,l),M(sl.$$.fragment,l),M(tl.$$.fragment,l),M(nl.$$.fragment,l),Pl=!0)},o(l){c(d.$$.fragment,l),c(h.$$.fragment,l),c(V.$$.fragment,l),c(Z.$$.fragment,l),c(k.$$.fragment,l),c(E.$$.fragment,l),c(N.$$.fragment,l),c($.$$.fragment,l),c(_.$$.fragment,l),c(D.$$.fragment,l),c(X.$$.fragment,l),c(z.$$.fragment,l),c(L.$$.fragment,l),c(P.$$.fragment,l),c(ll.$$.fragment,l),c(sl.$$.fragment,l),c(tl.$$.fragment,l),c(nl.$$.fragment,l),Pl=!1},d(l){l&&(s(Jl),s(pl),s(ol),s(Ul),s(yl),s(f),s(Ml),s(j),s(cl),s(C),s(Tl),s(b),s(ml),s(rl),s(g),s(ul),s(I),s(wl),s(B),s(dl),s(F),s(hl),s(R),s(fl),s(jl),s(Q),s(Cl),s(bl),s(G),s(Vl),s(gl),s(v),s(Il),s(Bl),s(W),s(Fl),s(u),s(Rl),s(Zl),s(x),s(Ql),s(w),s(kl),s(Gl),s(A),s(El),s(S),s(vl),s(Nl),s(Y),s(Wl),s($l),s(q),s(xl),s(_l),s(H),s(Al),s(Sl),s(O),s(Dl),s(Yl),s(K),s(Xl),s(ql),s(el),s(zl),s(Hl),s(Ll),s(Ol),s(il)),s(m),T(d,l),T(h,l),T(V,l),T(Z,l),T(k,l),T(E,l),T(N,l),T($,l),T(_,l),T(D,l),T(X,l),T(z,l),T(L,l),T(P,l),T(ll,l),T(sl,l),T(tl,l),T(nl,l)}}}const ve='{"title":"AnyFlow","local":"anyflow","sections":[{"title":"Bidirectional 还是 Causal —— 怎么选 pipeline","local":"bidirectional-还是-causal--怎么选-pipeline","sections":[],"depth":2},{"title":"加载 checkpoint","local":"加载-checkpoint","sections":[],"depth":2},{"title":"Any-step 采样","local":"any-step-采样","sections":[],"depth":2},{"title":"图生视频 与 视频续写","local":"图生视频-与-视频续写","sections":[],"depth":2},{"title":"显存与推理速度","local":"显存与推理速度","sections":[],"depth":2},{"title":"LoRA 微调","local":"lora-微调","sections":[],"depth":2},{"title":"常见坑","local":"常见坑","sections":[],"depth":2},{"title":"引用","local":"引用","sections":[],"depth":2}],"depth":1}';function Ne(le){return Be(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ae extends Fe{constructor(m){super(),Re(this,m,Ne,Ee,ge,{})}}export{Ae as component}; | |
Xet Storage Details
- Size:
- 35.1 kB
- Xet hash:
- 66f111e4451169119094083fad8aa9a1bc522d4247dbadf6d7944a220f95a179
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.