Buckets:
| import{s as Qe,n as ke,o as Ee}from"../chunks/scheduler.e4ff9b64.js";import{S as ve,i as Ge,e as p,s as n,c as J,h as We,a as i,d as s,b as a,f as Ze,g as M,j as o,k as te,l as Ae,m as t,n as T,t as c,o as U,p as y}from"../chunks/index.09f1bca0.js";import{C as Ne,H as r,E as $e}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.b0ab0d79.js";import{C as il}from"../chunks/CodeBlock.fa0eb8b1.js";function _e(ne){let m,Ml,ol,Tl,w,cl,h,Ul,j,ae=`<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 增加反而经常掉点。`,yl,f,pe=`核心思路是学习 <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 缺口。`,ml,b,ie='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 里。',rl,C,oe="本文档梳理实战要点:怎么选 pipeline、怎么用 any-step 采样、怎么把 AnyFlow 嵌进 T2V / I2V / V2V 工作流。",dl,I,ul,g,Je="AnyFlow 提供两个 pipeline 形态,scheduler 和蒸馏方法相同,区别在于<strong>怎么对帧采样</strong>:",wl,V,Me=`<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>video</code>(像素空间)或 <code>video_latents</code> | |
| (已编码 latent)这两个互斥 kwarg 来切换三种任务模式。</li>`,hl,B,Te="简化对照表:",jl,R,ce="<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, video=<单帧 tensor>, ...)</code></td></tr> <tr><td>视频续写 / V2V</td> <td><code>AnyFlowFARPipeline</code></td> <td><code>pipe(prompt, video=<多帧 tensor>, ...)</code></td></tr> <tr><td>流式 / 渐进式生成</td> <td><code>AnyFlowFARPipeline</code></td> <td>—</td></tr></tbody>",fl,F,Ue=`高分辨率下 bidirectional 单 token 更快;causal 牺牲一点单步速度,换来在所有 latent 帧分配前就能开始 | |
| 采样的能力,对超长序列尤其有用。`,bl,Z,Cl,Q,ye="NVIDIA 发布了 4 个 AnyFlow checkpoint,pipeline × 规模各一份:",Il,k,gl,E,me=`四个 checkpoint 共用同一份 <a href="../api/schedulers/flow_map_euler_discrete"><code>FlowMapEulerDiscreteScheduler</code></a>, | |
| 默认 <code>shift=5.0</code>。`,Vl,v,Bl,G,re=`AnyFlow 最关键的特性是同一个 checkpoint <strong>不需重新调度</strong>,NFE 越大质量越高。固定 prompt、扫一下步数 | |
| 就能看出模型怎么在延迟和保真度之间权衡:`,Rl,W,Fl,A,de=`paper 的 Tab 3 / Fig 1 表明:每个 AnyFlow checkpoint 在 4 → 32 NFE 范围 VBench Quality 都单调上升,而 | |
| consistency 类基线(rCM、Self-Forcing)在同区间反而掉点。`,Zl,d,ue=`<p>Classifier-free guidance (CFG) 已经在训练阶段融进权重。pipeline 推理 | |
| 时<strong>不会</strong>再跑一次 unconditional 前向 —— guidance 直接由蒸馏后的权重带出。release 出来的 checkpoint | |
| 都用默认的 <code>guidance_scale=1.0</code> 即可。</p>`,Ql,N,kl,$,we="Causal pipeline 用同一个蒸馏模型支持三种任务模式,<strong>通过 <code>video</code> / <code>video_latents</code> 二选一来选</strong>:",El,_,he="<li><code>video</code> —— 像素空间张量,形状 <code>(B, T, C, H, W)</code> ∈ <code>[0, 1]</code>,pipeline 内部会过一遍 <code>VideoProcessor</code> <ul><li>VAE 编码;</li></ul></li> <li><code>video_latents</code> —— 已经在模型布局下的 latent,跳过 VAE 编码;</li> <li>两者都不传 —— 纯文生视频;</li> <li>两者同时传 —— 抛 <code>ValueError</code>(互斥)。</li>",vl,x,je="Context tensor 的帧数必须满足 <code>T = 4n + 1</code>,跟 VAE 时间步长对齐。",Gl,u,fe=`<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>`,Wl,D,Al,S,be=`底层 patchify chunk 调度根据 <code>video</code> / <code>video_latents</code> 是否给定自动调整:纯文生用 kernel 2 (full) 和 | |
| 4 (compressed);有 context 时第一个 chunk 改成 kernel 1,让条件帧保留全分辨率。`,Nl,Y,Ce=`如果你已经有 VAE 编码过的 latent,可以直接传 <code>video_latents=<tensor></code> 跳过 <code>vae_encode</code> 步骤 | |
| (和 <code>video</code> 互斥)。`,$l,X,_l,z,Ie="14B 的 AnyFlow 模型用 group offload + VAE slicing 单卡 40 GB 能跑:",xl,O,Dl,H,ge="延迟方面,<code>torch.compile</code> 对 transformer(最重的模块)效果很好:",Sl,L,Yl,q,Ve=`编译开销跑几步就摊销掉;配合 AnyFlow 的低 NFE(4-8 步),<code>torch.compile</code> 在 14B 上相比 eager | |
| 模式有明显加速。`,Xl,P,zl,K,Be=`两个 pipeline 都复用 <a href="../api/loaders/lora"><code>WanLoraLoaderMixin</code></a>,因此为对应 Wan2.1 backbone 训练的 | |
| LoRA adapter 直接加载即可:`,Ol,ll,Hl,el,Re=`如果要做<strong>继续 on-policy 蒸馏微调</strong>(用论文里相同的 DMD 反向散度监督配方训新 LoRA),请参考原始 | |
| AnyFlow 训练框架 <a href="https://github.com/NVlabs/AnyFlow" rel="nofollow"><code>NVlabs/AnyFlow</code></a>,这套训练流程不在 | |
| diffusers 范围内。`,Ll,sl,ql,tl,Fe=`<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>`,Pl,nl,Kl,al,le,pl,ee,Jl,se;return w=new Ne({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"}}),I=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 il({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}}),v=new r({props:{title:"Any-step 采样",local:"any-step-采样",headingTag:"h2"}}),W=new il({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}}),N=new r({props:{title:"图生视频 与 视频续写",local:"图生视频-与-视频续写",headingTag:"h2"}}),D=new il({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBaW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwQW55Rmxvd0ZBUlBpcGVsaW5lJTBBZnJvbSUyMGRpZmZ1c2Vycy51dGlscyUyMGltcG9ydCUyMGV4cG9ydF90b192aWRlbyUyQyUyMGxvYWRfaW1hZ2UlMkMlMjBsb2FkX3ZpZGVvJTBBJTBBcGlwZSUyMCUzRCUyMEFueUZsb3dGQVJQaXBlbGluZS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIybnZpZGlhJTJGQW55Rmxvdy1GQVItV2FuMi4xLTEuM0ItRGlmZnVzZXJzJTIyJTJDJTIwdG9yY2hfZHR5cGUlM0R0b3JjaC5iZmxvYXQxNiUwQSkudG8oJTIyY3VkYSUyMiklMEElMEElMEFkZWYlMjB0b192aWRlb190ZW5zb3IoaW1hZ2VzJTJDJTIwaGVpZ2h0JTNENDgwJTJDJTIwd2lkdGglM0Q4MzIpJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyJUU2JThBJThBJTIwUElMJTIwJUU1JTg4JTk3JUU4JUExJUE4JUU4JUJEJUFDJUU2JTg4JTkwJTIwRkFSJTIwcGlwZWxpbmUlMjAlRTklOUMlODAlRTglQTYlODElRTclOUElODQlMjAoQiUyQyUyMFQlMkMlMjBDJTJDJTIwSCUyQyUyMFcpJTIwJTVCMCUyQyUyMDElNUQlMjAlRTUlQkMlQTAlRTklODclOEYlRTMlODAlODIlMjIlMjIlMjIlMEElMjAlMjAlMjAlMjBmcmFtZXMlMjAlM0QlMjBucC5zdGFjayglNUJucC5hc2FycmF5KGltZy5yZXNpemUoKHdpZHRoJTJDJTIwaGVpZ2h0KSkpJTIwZm9yJTIwaW1nJTIwaW4lMjBpbWFnZXMlNUQpLmFzdHlwZSglMjJmbG9hdDMyJTIyKSUyMCUyRiUyMDI1NS4wJTBBJTIwJTIwJTIwJTIwJTIzJTIwZnJhbWVzJTNBJTIwKFQlMkMlMjBIJTJDJTIwVyUyQyUyMEMpJTIwJUUyJTg2JTkyJTIwKFQlMkMlMjBDJTJDJTIwSCUyQyUyMFcpJTIwJUUyJTg2JTkyJTIwJUU1JThBJUEwJTIwYmF0Y2glMjAlRTclQkIlQjQlMjAlRTIlODYlOTIlMjAoMSUyQyUyMFQlMkMlMjBDJTJDJTIwSCUyQyUyMFcpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9yY2guZnJvbV9udW1weShmcmFtZXMpLnBlcm11dGUoMCUyQyUyMDMlMkMlMjAxJTJDJTIwMikudW5zcXVlZXplKDApJTBBJTBBJTBBJTIzJTIwMSklMjAlRTYlOTYlODclRTclOTQlOUYlRTglQTclODYlRTklQTIlOTElRUYlQkMlODglRTYlOTclQTAlMjBjb250ZXh0JUVGJUJDJTg5JUUzJTgwJTgyODElMjAlRTUlQjglQTclRTUlOEMlQjklRTklODUlOEQlRTklQkIlOTglRTglQUUlQTQlMjBjaHVua19wYXJ0aXRpb24lRTMlODAlODIlMEF2aWRlbyUyMCUzRCUyMHBpcGUocHJvbXB0JTNEJTIyJUU0JUI4JTgwJUU1JThGJUFBJUU3JThDJUFCJUU1JTlDJUE4JUU1JUE0JTk1JUU5JTk4JUIzJUU0JUI4JThCJUU1JTg2JUIyJUU2JUI1JUFBJTIyJTJDJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDQlMkMlMjBudW1fZnJhbWVzJTNEODEpLmZyYW1lcyU1QjAlNUQlMEFleHBvcnRfdG9fdmlkZW8odmlkZW8lMkMlMjAlMjJ0MnYubXA0JTIyJTJDJTIwZnBzJTNEMTYpJTBBJTBBJTIzJTIwMiklMjAlRTUlOUIlQkUlRTclOTQlOUYlRTglQTclODYlRTklQTIlOTElMjAlRTIlODAlOTQlRTIlODAlOTQlMjAlRTUlOEQlOTUlRTUlQjglQTclMjBjb250ZXh0JTIwJUU3JUJCJThGJUU4JUJGJTg3JTIwVkFFJTIwJUU2JTk4JUFGJTIwMSUyMCVFNCVCOCVBQSUyMGxhdGVudCVFRiVCQyU4QyVFNiVBRCVBMyVFNSVBNSVCRCVFNSVBRiVCOSVFNCVCOCU4QSVFOSVCQiU5OCVFOCVBRSVBNCUyMGNodW5rX3BhcnRpdGlvbiUyMCVFNyU5QSU4NCVFNyVBQyVBQyVFNCVCOCU4MCVFOSVBMSVCOSUyMCglNjAlNUIxJTJDJTIwLi4uJTVEJTYwKSVFMyU4MCU4MiUwQWZpcnN0X2ZyYW1lJTIwJTNEJTIwbG9hZF9pbWFnZSglMjJwYXRoJTJGdG8lMkZmaXJzdF9mcmFtZS5wbmclMjIpJTBBY29udGV4dF90ZW5zb3IlMjAlM0QlMjB0b192aWRlb190ZW5zb3IoJTVCZmlyc3RfZnJhbWUlNUQpLnRvKCUyMmN1ZGElMjIpJTIwJTIwJTIzJTIwKDElMkMlMjAxJTJDJTIwMyUyQyUyMDQ4MCUyQyUyMDgzMiklMkMlMjAlNUIwJTJDJTIwMSU1RCUwQXZpZGVvJTIwJTNEJTIwcGlwZSglMEElMjAlMjAlMjAlMjBwcm9tcHQlM0QlMjIlRTQlQjglODAlRTUlOEYlQUElRTclOEMlQUIlRTglQjUlQjAlRTglQkYlODclRTklOTglQjMlRTUlODUlODklRTQlQjglOEIlRTclOUElODQlRTglOEQlODklRTUlOUQlQUElMjIlMkMlMEElMjAlMjAlMjAlMjB2aWRlbyUzRGNvbnRleHRfdGVuc29yJTJDJTBBJTIwJTIwJTIwJTIwbnVtX2luZmVyZW5jZV9zdGVwcyUzRDQlMkMlMEElMjAlMjAlMjAlMjBudW1fZnJhbWVzJTNEODElMkMlMEEpLmZyYW1lcyU1QjAlNUQlMEFleHBvcnRfdG9fdmlkZW8odmlkZW8lMkMlMjAlMjJpMnYubXA0JTIyJTJDJTIwZnBzJTNEMTYpJTBBJTBBJTIzJTIwMyklMjAlRTglQTclODYlRTklQTIlOTElRTclQkIlQUQlRTUlODYlOTklRTMlODAlODI5JTIwJUU1JUI4JUE3JTIwcmF3JTIwY29udGV4dCUyMCVFMiU4NiU5MiUyMDMlMjAlRTQlQjglQUElMjBsYXRlbnQlMjBjb250ZXh0JUVGJUJDJTlCJUU2JTk4JUJFJUU1JUJDJThGJUU4JUE2JTg2JUU3JTlCJTk2JTIwY2h1bmtfcGFydGl0aW9uJUVGJUJDJThDJUU4JUFFJUE5JUU3JUFDJUFDJUU0JUI4JTgwJUU1JTlEJTk3JUU2JUFEJUEzJUU1JUE1JUJEJUU4JUE2JTg2JUU3JTlCJTk2JTIwY29udGV4dCVFMyU4MCU4MiUwQWNvbnRleHRfZnJhbWVzJTIwJTNEJTIwbG9hZF92aWRlbyglMjJwYXRoJTJGdG8lMkZjb250ZXh0Lm1wNCUyMiklNUIlM0E5JTVEJTIwJTIwJTIzJTIwOSUyMCUzRCUyMDQlQzIlQjcyJTIwJTJCJTIwMSUwQWNvbnRleHRfdGVuc29yJTIwJTNEJTIwdG9fdmlkZW9fdGVuc29yKGNvbnRleHRfZnJhbWVzKS50byglMjJjdWRhJTIyKSUyMCUyMCUyMyUyMCgxJTJDJTIwOSUyQyUyMDMlMkMlMjA0ODAlMkMlMjA4MzIpJTBBdmlkZW8lMjAlM0QlMjBwaXBlKCUwQSUyMCUyMCUyMCUyMHByb21wdCUzRCUyMiVFNyVCQiVBNyVFNyVCQiVBRCVFOCVCRiU5OSVFNCVCOCVBQSVFNiU5NSU4NSVFNCVCQSU4QiUyMiUyQyUwQSUyMCUyMCUyMCUyMHZpZGVvJTNEY29udGV4dF90ZW5zb3IlMkMlMEElMjAlMjAlMjAlMjBudW1faW5mZXJlbmNlX3N0ZXBzJTNENCUyQyUwQSUyMCUyMCUyMCUyMG51bV9mcmFtZXMlM0Q4MSUyQyUwQSUyMCUyMCUyMCUyMGNodW5rX3BhcnRpdGlvbiUzRCU1QjMlMkMlMjAzJTJDJTIwMyUyQyUyMDMlMkMlMjAzJTJDJTIwMyUyQyUyMDMlNUQlMkMlMjAlMjAlMjMlMjA3JTIwJUU0JUI4JUFBJTIwY2h1bmslMjAlQzMlOTclMjAzJTIwJTNEJTIwMjElMjBsYXRlbnQlRUYlQkMlOUIlRTklQTYlOTYlRTUlOUQlOTclRTUlQjAlQjElRTYlOTglQUYlMjBjb250ZXh0JTBBKS5mcmFtZXMlNUIwJTVEJTBBZXhwb3J0X3RvX3ZpZGVvKHZpZGVvJTJDJTIwJTIydjJ2Lm1wNCUyMiUyQyUyMGZwcyUzRDE2KQ==",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, T, C, 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-comment"># frames: (T, H, W, C) → (T, C, H, W) → 加 batch 维 → (1, T, C, H, W)</span> | |
| <span class="hljs-keyword">return</span> torch.from_numpy(frames).permute(<span class="hljs-number">0</span>, <span class="hljs-number">3</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) 文生视频(无 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, 1, 3, 480, 832), [0, 1]</span> | |
| video = pipe( | |
| prompt=<span class="hljs-string">"一只猫走过阳光下的草坪"</span>, | |
| video=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, 9, 3, 480, 832)</span> | |
| video = pipe( | |
| prompt=<span class="hljs-string">"继续这个故事"</span>, | |
| video=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}}),X=new r({props:{title:"显存与推理速度",local:"显存与推理速度",headingTag:"h2"}}),O=new il({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}}),L=new il({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}}),P=new r({props:{title:"LoRA 微调",local:"lora-微调",headingTag:"h2"}}),ll=new il({props:{code:"cGlwZS5sb2FkX2xvcmFfd2VpZ2h0cyglMjJwYXRoJTJGb3IlMkZyZXBvJTJGd2l0aCUyRndhbl9sb3JhJTIyKQ==",highlighted:'pipe.load_lora_weights(<span class="hljs-string">"path/or/repo/with/wan_lora"</span>)',lang:"py",wrap:!1}}),sl=new r({props:{title:"常见坑",local:"常见坑",headingTag:"h2"}}),nl=new r({props:{title:"引用",local:"引用",headingTag:"h2"}}),al=new il({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}}),pl=new $e({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/zh/using-diffusers/anyflow.md"}}),{c(){m=p("meta"),Ml=n(),ol=p("p"),Tl=n(),J(w.$$.fragment),cl=n(),J(h.$$.fragment),Ul=n(),j=p("p"),j.innerHTML=ae,yl=n(),f=p("p"),f.innerHTML=pe,ml=n(),b=p("p"),b.innerHTML=ie,rl=n(),C=p("p"),C.textContent=oe,dl=n(),J(I.$$.fragment),ul=n(),g=p("p"),g.innerHTML=Je,wl=n(),V=p("ul"),V.innerHTML=Me,hl=n(),B=p("p"),B.textContent=Te,jl=n(),R=p("table"),R.innerHTML=ce,fl=n(),F=p("p"),F.textContent=Ue,bl=n(),J(Z.$$.fragment),Cl=n(),Q=p("p"),Q.textContent=ye,Il=n(),J(k.$$.fragment),gl=n(),E=p("p"),E.innerHTML=me,Vl=n(),J(v.$$.fragment),Bl=n(),G=p("p"),G.innerHTML=re,Rl=n(),J(W.$$.fragment),Fl=n(),A=p("p"),A.textContent=de,Zl=n(),d=p("blockquote"),d.innerHTML=ue,Ql=n(),J(N.$$.fragment),kl=n(),$=p("p"),$.innerHTML=we,El=n(),_=p("ul"),_.innerHTML=he,vl=n(),x=p("p"),x.innerHTML=je,Gl=n(),u=p("blockquote"),u.innerHTML=fe,Wl=n(),J(D.$$.fragment),Al=n(),S=p("p"),S.innerHTML=be,Nl=n(),Y=p("p"),Y.innerHTML=Ce,$l=n(),J(X.$$.fragment),_l=n(),z=p("p"),z.textContent=Ie,xl=n(),J(O.$$.fragment),Dl=n(),H=p("p"),H.innerHTML=ge,Sl=n(),J(L.$$.fragment),Yl=n(),q=p("p"),q.innerHTML=Ve,Xl=n(),J(P.$$.fragment),zl=n(),K=p("p"),K.innerHTML=Be,Ol=n(),J(ll.$$.fragment),Hl=n(),el=p("p"),el.innerHTML=Re,Ll=n(),J(sl.$$.fragment),ql=n(),tl=p("ul"),tl.innerHTML=Fe,Pl=n(),J(nl.$$.fragment),Kl=n(),J(al.$$.fragment),le=n(),J(pl.$$.fragment),ee=n(),Jl=p("p"),this.h()},l(l){const e=We("svelte-u9bgzb",document.head);m=i(e,"META",{name:!0,content:!0}),e.forEach(s),Ml=a(l),ol=i(l,"P",{}),Ze(ol).forEach(s),Tl=a(l),M(w.$$.fragment,l),cl=a(l),M(h.$$.fragment,l),Ul=a(l),j=i(l,"P",{"data-svelte-h":!0}),o(j)!=="svelte-x7hf4q"&&(j.innerHTML=ae),yl=a(l),f=i(l,"P",{"data-svelte-h":!0}),o(f)!=="svelte-1g3jlq0"&&(f.innerHTML=pe),ml=a(l),b=i(l,"P",{"data-svelte-h":!0}),o(b)!=="svelte-1yr2rs2"&&(b.innerHTML=ie),rl=a(l),C=i(l,"P",{"data-svelte-h":!0}),o(C)!=="svelte-1g7eyu5"&&(C.textContent=oe),dl=a(l),M(I.$$.fragment,l),ul=a(l),g=i(l,"P",{"data-svelte-h":!0}),o(g)!=="svelte-c2dmjc"&&(g.innerHTML=Je),wl=a(l),V=i(l,"UL",{"data-svelte-h":!0}),o(V)!=="svelte-1yhoz96"&&(V.innerHTML=Me),hl=a(l),B=i(l,"P",{"data-svelte-h":!0}),o(B)!=="svelte-nhe92g"&&(B.textContent=Te),jl=a(l),R=i(l,"TABLE",{"data-svelte-h":!0}),o(R)!=="svelte-1r1r6ai"&&(R.innerHTML=ce),fl=a(l),F=i(l,"P",{"data-svelte-h":!0}),o(F)!=="svelte-147wpe4"&&(F.textContent=Ue),bl=a(l),M(Z.$$.fragment,l),Cl=a(l),Q=i(l,"P",{"data-svelte-h":!0}),o(Q)!=="svelte-1ivm4tg"&&(Q.textContent=ye),Il=a(l),M(k.$$.fragment,l),gl=a(l),E=i(l,"P",{"data-svelte-h":!0}),o(E)!=="svelte-9t7fux"&&(E.innerHTML=me),Vl=a(l),M(v.$$.fragment,l),Bl=a(l),G=i(l,"P",{"data-svelte-h":!0}),o(G)!=="svelte-1t8mtgo"&&(G.innerHTML=re),Rl=a(l),M(W.$$.fragment,l),Fl=a(l),A=i(l,"P",{"data-svelte-h":!0}),o(A)!=="svelte-1bqpcv3"&&(A.textContent=de),Zl=a(l),d=i(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),o(d)!=="svelte-19oa2n2"&&(d.innerHTML=ue),Ql=a(l),M(N.$$.fragment,l),kl=a(l),$=i(l,"P",{"data-svelte-h":!0}),o($)!=="svelte-q7gkj0"&&($.innerHTML=we),El=a(l),_=i(l,"UL",{"data-svelte-h":!0}),o(_)!=="svelte-1o3kz10"&&(_.innerHTML=he),vl=a(l),x=i(l,"P",{"data-svelte-h":!0}),o(x)!=="svelte-j71wox"&&(x.innerHTML=je),Gl=a(l),u=i(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),o(u)!=="svelte-6upibc"&&(u.innerHTML=fe),Wl=a(l),M(D.$$.fragment,l),Al=a(l),S=i(l,"P",{"data-svelte-h":!0}),o(S)!=="svelte-1xvogfx"&&(S.innerHTML=be),Nl=a(l),Y=i(l,"P",{"data-svelte-h":!0}),o(Y)!=="svelte-6as2g1"&&(Y.innerHTML=Ce),$l=a(l),M(X.$$.fragment,l),_l=a(l),z=i(l,"P",{"data-svelte-h":!0}),o(z)!=="svelte-w102jw"&&(z.textContent=Ie),xl=a(l),M(O.$$.fragment,l),Dl=a(l),H=i(l,"P",{"data-svelte-h":!0}),o(H)!=="svelte-ea966z"&&(H.innerHTML=ge),Sl=a(l),M(L.$$.fragment,l),Yl=a(l),q=i(l,"P",{"data-svelte-h":!0}),o(q)!=="svelte-1j938au"&&(q.innerHTML=Ve),Xl=a(l),M(P.$$.fragment,l),zl=a(l),K=i(l,"P",{"data-svelte-h":!0}),o(K)!=="svelte-1hp1p5d"&&(K.innerHTML=Be),Ol=a(l),M(ll.$$.fragment,l),Hl=a(l),el=i(l,"P",{"data-svelte-h":!0}),o(el)!=="svelte-v9lpd7"&&(el.innerHTML=Re),Ll=a(l),M(sl.$$.fragment,l),ql=a(l),tl=i(l,"UL",{"data-svelte-h":!0}),o(tl)!=="svelte-wokq2p"&&(tl.innerHTML=Fe),Pl=a(l),M(nl.$$.fragment,l),Kl=a(l),M(al.$$.fragment,l),le=a(l),M(pl.$$.fragment,l),ee=a(l),Jl=i(l,"P",{}),Ze(Jl).forEach(s),this.h()},h(){te(m,"name","hf:doc:metadata"),te(m,"content",xe),te(d,"class","tip"),te(u,"class","important")},m(l,e){Ae(document.head,m),t(l,Ml,e),t(l,ol,e),t(l,Tl,e),T(w,l,e),t(l,cl,e),T(h,l,e),t(l,Ul,e),t(l,j,e),t(l,yl,e),t(l,f,e),t(l,ml,e),t(l,b,e),t(l,rl,e),t(l,C,e),t(l,dl,e),T(I,l,e),t(l,ul,e),t(l,g,e),t(l,wl,e),t(l,V,e),t(l,hl,e),t(l,B,e),t(l,jl,e),t(l,R,e),t(l,fl,e),t(l,F,e),t(l,bl,e),T(Z,l,e),t(l,Cl,e),t(l,Q,e),t(l,Il,e),T(k,l,e),t(l,gl,e),t(l,E,e),t(l,Vl,e),T(v,l,e),t(l,Bl,e),t(l,G,e),t(l,Rl,e),T(W,l,e),t(l,Fl,e),t(l,A,e),t(l,Zl,e),t(l,d,e),t(l,Ql,e),T(N,l,e),t(l,kl,e),t(l,$,e),t(l,El,e),t(l,_,e),t(l,vl,e),t(l,x,e),t(l,Gl,e),t(l,u,e),t(l,Wl,e),T(D,l,e),t(l,Al,e),t(l,S,e),t(l,Nl,e),t(l,Y,e),t(l,$l,e),T(X,l,e),t(l,_l,e),t(l,z,e),t(l,xl,e),T(O,l,e),t(l,Dl,e),t(l,H,e),t(l,Sl,e),T(L,l,e),t(l,Yl,e),t(l,q,e),t(l,Xl,e),T(P,l,e),t(l,zl,e),t(l,K,e),t(l,Ol,e),T(ll,l,e),t(l,Hl,e),t(l,el,e),t(l,Ll,e),T(sl,l,e),t(l,ql,e),t(l,tl,e),t(l,Pl,e),T(nl,l,e),t(l,Kl,e),T(al,l,e),t(l,le,e),T(pl,l,e),t(l,ee,e),t(l,Jl,e),se=!0},p:ke,i(l){se||(c(w.$$.fragment,l),c(h.$$.fragment,l),c(I.$$.fragment,l),c(Z.$$.fragment,l),c(k.$$.fragment,l),c(v.$$.fragment,l),c(W.$$.fragment,l),c(N.$$.fragment,l),c(D.$$.fragment,l),c(X.$$.fragment,l),c(O.$$.fragment,l),c(L.$$.fragment,l),c(P.$$.fragment,l),c(ll.$$.fragment,l),c(sl.$$.fragment,l),c(nl.$$.fragment,l),c(al.$$.fragment,l),c(pl.$$.fragment,l),se=!0)},o(l){U(w.$$.fragment,l),U(h.$$.fragment,l),U(I.$$.fragment,l),U(Z.$$.fragment,l),U(k.$$.fragment,l),U(v.$$.fragment,l),U(W.$$.fragment,l),U(N.$$.fragment,l),U(D.$$.fragment,l),U(X.$$.fragment,l),U(O.$$.fragment,l),U(L.$$.fragment,l),U(P.$$.fragment,l),U(ll.$$.fragment,l),U(sl.$$.fragment,l),U(nl.$$.fragment,l),U(al.$$.fragment,l),U(pl.$$.fragment,l),se=!1},d(l){l&&(s(Ml),s(ol),s(Tl),s(cl),s(Ul),s(j),s(yl),s(f),s(ml),s(b),s(rl),s(C),s(dl),s(ul),s(g),s(wl),s(V),s(hl),s(B),s(jl),s(R),s(fl),s(F),s(bl),s(Cl),s(Q),s(Il),s(gl),s(E),s(Vl),s(Bl),s(G),s(Rl),s(Fl),s(A),s(Zl),s(d),s(Ql),s(kl),s($),s(El),s(_),s(vl),s(x),s(Gl),s(u),s(Wl),s(Al),s(S),s(Nl),s(Y),s($l),s(_l),s(z),s(xl),s(Dl),s(H),s(Sl),s(Yl),s(q),s(Xl),s(zl),s(K),s(Ol),s(Hl),s(el),s(Ll),s(ql),s(tl),s(Pl),s(Kl),s(le),s(ee),s(Jl)),s(m),y(w,l),y(h,l),y(I,l),y(Z,l),y(k,l),y(v,l),y(W,l),y(N,l),y(D,l),y(X,l),y(O,l),y(L,l),y(P,l),y(ll,l),y(sl,l),y(nl,l),y(al,l),y(pl,l)}}}const xe='{"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 De(ne){return Ee(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Oe extends ve{constructor(m){super(),Ge(this,m,De,_e,Qe,{})}}export{Oe as component}; | |
Xet Storage Details
- Size:
- 35.9 kB
- Xet hash:
- c143cfc84be7aae8b579e89e81feb3a845ede75123ab4a940408463bd9620ef9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.