Buckets:
| import{s as Ue,n as Be,o as je}from"../chunks/scheduler.53228c21.js";import{S as qe,i as He,e as i,s as r,c as p,h as Je,a as l,d as n,b as a,f as Z,g as _,j as c,k as G,l as s,m as o,n as u,t as h,o as g,p as M}from"../chunks/index.cac5d66a.js";import{C as Ve}from"../chunks/CopyLLMTxtMenu.275c7384.js";import{D as ce}from"../chunks/Docstring.c16b5ad8.js";import{C as Ie}from"../chunks/CodeBlock.606cbaf4.js";import{H as ke,E as Ze}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.3d60870e.js";function Ge(ye){let T,X,R,O,k,Y,y,Q,$,$e=`A 3D Diffusion Transformer (1.6B parameters) for camera-controlled image-to-video generation, used as the stage-1 | |
| sampler of <a href="/docs/diffusers/pr_13881/en/api/pipelines/sana_wm#diffusers.SanaWMPipeline">SanaWMPipeline</a>. The transformer combines:`,K,D,De=`<li>a bidirectional GDN-Triton linear-attention main branch (depth 20, hidden 2240, 20 heads),</li> <li>a UCPE (Unified Camera Pose Embedding) camera-control branch that consumes a raymap + Plücker representation of | |
| the requested trajectory, and</li> <li>a Wan-style 3D rotary position embedding plus periodic softmax-attention blocks injected every <code>softmax_every_n</code> | |
| layers.</li>`,ee,S,Se=`The state-dict layout matches the public SANA-WM release one-to-one — the diffusers wrapper places the inner DiT | |
| under a <code>_inner.</code> prefix. See <a href="/docs/diffusers/pr_13881/en/api/models/sana_wm_transformer3d#diffusers.SanaWMTransformer3DModel.add_inner_prefix">SanaWMTransformer3DModel.add_inner_prefix()</a> for the helper used by the conversion | |
| script.`,te,W,We="The model can be loaded with:",ne,w,re,C,ae,d,L,pe,U,we="SANA-WM 1600M bidirectional camera-controlled DiT.",_e,B,Ce=`Wraps <code>SanaMSVideoCamCtrl</code> (depth=20, hidden_size=2240, patch_size=(1,1,1), num_heads=20 — i.e. the public | |
| <code>Efficient-Large-Model/SANA-WM_bidirectional</code> release). <code>save_pretrained</code> / <code>from_pretrained</code> work out of the | |
| box via <a href="/docs/diffusers/pr_13881/en/api/configuration#diffusers.ConfigMixin">ConfigMixin</a>.`,ue,j,Le=`The state-dict is identical to the public sana checkpoint apart from the fixed <code>_inner.</code> prefix the wrapper adds | |
| (see <code>add_inner_prefix</code>).`,he,m,N,ge,q,Ne="Re-key a public SANA-WM state-dict for loading into this wrapper.",Me,H,Ae=`The public release ships keys like <code>blocks.0.attn.qkv.weight</code>; the diffusers wrapper holds those parameters | |
| under the <code>_inner.</code> prefix. Use this helper before <code>load_state_dict</code>:`,Te,J,Pe=`state = load_file(release_safetensors) state.pop(“pos_embed”, None) | |
| model.load_state_dict(model.add_inner_prefix(state), strict=False)`,be,v,A,ve,V,ze="Run the SANA-WM DiT.",oe,P,se,b,z,xe,I,Ee='The output of <a href="/docs/diffusers/pr_13881/en/api/models/transformer2d#diffusers.Transformer2DModel">Transformer2DModel</a>.',ie,E,le,F,de;return k=new Ve({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),y=new ke({props:{title:"SanaWMTransformer3DModel",local:"sanawmtransformer3dmodel",headingTag:"h1"}}),w=new Ie({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwZGlmZnVzZXJzJTIwaW1wb3J0JTIwU2FuYVdNVHJhbnNmb3JtZXIzRE1vZGVsJTBBJTBBdHJhbnNmb3JtZXIlMjAlM0QlMjBTYW5hV01UcmFuc2Zvcm1lcjNETW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMkVmZmljaWVudC1MYXJnZS1Nb2RlbCUyRlNBTkEtV01fYmlkaXJlY3Rpb25hbC1kaWZmdXNlcnMlMjIlMkMlMEElMjAlMjAlMjAlMjBzdWJmb2xkZXIlM0QlMjJ0cmFuc2Zvcm1lciUyMiUyQyUwQSUyMCUyMCUyMCUyMHRvcmNoX2R0eXBlJTNEdG9yY2guYmZsb2F0MTYlMkMlMEEp",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> SanaWMTransformer3DModel | |
| transformer = SanaWMTransformer3DModel.from_pretrained( | |
| <span class="hljs-string">"Efficient-Large-Model/SANA-WM_bidirectional-diffusers"</span>, | |
| subfolder=<span class="hljs-string">"transformer"</span>, | |
| torch_dtype=torch.bfloat16, | |
| )`,lang:"python",wrap:!1}}),C=new ke({props:{title:"SanaWMTransformer3DModel",local:"diffusers.SanaWMTransformer3DModel",headingTag:"h2"}}),L=new ce({props:{name:"class diffusers.SanaWMTransformer3DModel",anchor:"diffusers.SanaWMTransformer3DModel",parameters:[{name:"in_channels",val:": int = 128"},{name:"attn_type",val:": str = 'BidirectionalGDNTriton'"},{name:"camctrl_type",val:": str = 'BidirectionalGDNUCPESinglePathLiteLABothTriton'"},{name:"softmax_every_n",val:": int = 4"},{name:"linear_head_dim",val:": int = 112"},{name:"ffn_type",val:": str = 'GLUMBConvTemp'"},{name:"t_kernel_size",val:": int = 3"},{name:"conv_kernel_size",val:": int = 4"},{name:"k_conv_only",val:": bool = True"},{name:"pos_embed_type",val:": str = 'wan_rope'"},{name:"qk_norm",val:": bool = True"},{name:"cross_norm",val:": bool = True"},{name:"y_norm",val:": bool = True"},{name:"y_norm_scale_factor",val:": float = 0.01"},{name:"cam_attn_compress",val:": int = 1"},{name:"init_cam_from_base",val:": bool = True"},{name:"chunk_split_strategy",val:": str = 'first_chunk_plus_one'"},{name:"use_chunk_plucker_post_attn",val:": bool = True"},{name:"chunk_plucker_channels",val:": int = 48"},{name:"chunk_plucker_post_attn_blocks",val:": int = 20"},{name:"fp32_attention",val:": bool = True"},{name:"image_size",val:": int = 720"},{name:"caption_channels",val:": int = 2304"},{name:"model_max_length",val:": int = 300"},{name:"mlp_ratio",val:": float = 3.0"},{name:"mlp_acts",val:": tuple = ('silu', 'silu', None)"},{name:"use_pe",val:": bool = True"},{name:"learn_sigma",val:": bool = False"},{name:"pred_sigma",val:": bool = False"},{name:"mixed_precision",val:": str = 'bf16'"}],parametersDescription:[{anchor:"diffusers.SanaWMTransformer3DModel.in_channels",description:"<strong>in_channels</strong> (<em>int</em>, defaults to 128) — VAE latent channels (LTX-2).",name:"in_channels"},{anchor:"diffusers.SanaWMTransformer3DModel.attn_type",description:"<strong>attn_type</strong> (<em>str</em>) — Main-branch attention, e.g. <code>"BidirectionalGDNTriton"</code>.",name:"attn_type"},{anchor:"diffusers.SanaWMTransformer3DModel.camctrl_type",description:`<strong>camctrl_type</strong> (<em>str</em>) — Camera-branch attention, e.g. | |
| <code>"BidirectionalGDNUCPESinglePathLiteLABothTriton"</code>.`,name:"camctrl_type"},{anchor:"diffusers.SanaWMTransformer3DModel.softmax_every_n",description:"<strong>softmax_every_n</strong> (<em>int</em>, defaults to 4) — Inject a softmax block every N blocks.",name:"softmax_every_n"},{anchor:"diffusers.SanaWMTransformer3DModel.linear_head_dim",description:"<strong>linear_head_dim</strong> (<em>int</em>, defaults to 112) — GDN head dimension.",name:"linear_head_dim"},{anchor:"diffusers.SanaWMTransformer3DModel.ffn_type",description:"<strong>ffn_type</strong> (<em>str</em>, defaults to <code>"GLUMBConvTemp"</code>) — FFN.",name:"ffn_type"},{anchor:"diffusers.SanaWMTransformer3DModel.t_kernel_size",description:"<strong>t_kernel_size</strong> (<em>int</em>, defaults to 3) — Temporal conv kernel.",name:"t_kernel_size"},{anchor:"diffusers.SanaWMTransformer3DModel.conv_kernel_size",description:"<strong>conv_kernel_size</strong> (<em>int</em>, defaults to 4) — Spatial conv kernel inside attention.",name:"conv_kernel_size"},{anchor:"diffusers.SanaWMTransformer3DModel.k_conv_only",description:"<strong>k_conv_only</strong> (<em>bool</em>, defaults to True) — Apply conv only on K.",name:"k_conv_only"},{anchor:"diffusers.SanaWMTransformer3DModel.pos_embed_type",description:"<strong>pos_embed_type</strong> (<em>str</em>, defaults to <code>"wan_rope"</code>) — Position embedding.",name:"pos_embed_type"},{anchor:"diffusers.SanaWMTransformer3DModel.qk_norm",description:"<strong>qk_norm</strong> (<em>bool</em>, defaults to True) — RMSNorm on Q/K.",name:"qk_norm"},{anchor:"diffusers.SanaWMTransformer3DModel.cross_norm",description:"<strong>cross_norm</strong> (<em>bool</em>, defaults to True) — RMSNorm on cross-attention K.",name:"cross_norm"},{anchor:"diffusers.SanaWMTransformer3DModel.y_norm",description:"<strong>y_norm</strong> (<em>bool</em>, defaults to True) — Apply <code>attention_y_norm</code> to text embeddings.",name:"y_norm"},{anchor:"diffusers.SanaWMTransformer3DModel.y_norm_scale_factor",description:"<strong>y_norm_scale_factor</strong> (<em>float</em>, defaults to 0.01) — Scale factor for <code>attention_y_norm</code>.",name:"y_norm_scale_factor"},{anchor:"diffusers.SanaWMTransformer3DModel.init_cam_from_base",description:"<strong>init_cam_from_base</strong> (<em>bool</em>, defaults to True) — Initialize camera branch QKV from main.",name:"init_cam_from_base"},{anchor:"diffusers.SanaWMTransformer3DModel.chunk_split_strategy",description:"<strong>chunk_split_strategy</strong> (<em>str</em>, defaults to <code>"first_chunk_plus_one"</code>). —",name:"chunk_split_strategy"},{anchor:"diffusers.SanaWMTransformer3DModel.use_chunk_plucker_post_attn",description:"<strong>use_chunk_plucker_post_attn</strong> (<em>bool</em>, defaults to True). —",name:"use_chunk_plucker_post_attn"},{anchor:"diffusers.SanaWMTransformer3DModel.chunk_plucker_channels",description:"<strong>chunk_plucker_channels</strong> (<em>int</em>, defaults to 48) — <code>6 dims * temporal_stride 8</code>.",name:"chunk_plucker_channels"},{anchor:"diffusers.SanaWMTransformer3DModel.chunk_plucker_post_attn_blocks",description:"<strong>chunk_plucker_post_attn_blocks</strong> (<em>int</em>, defaults to 20) — All blocks.",name:"chunk_plucker_post_attn_blocks"},{anchor:"diffusers.SanaWMTransformer3DModel.fp32_attention",description:"<strong>fp32_attention</strong> (<em>bool</em>, defaults to True) — Run attention in fp32.",name:"fp32_attention"},{anchor:"diffusers.SanaWMTransformer3DModel.image_size",description:"<strong>image_size</strong> (<em>int</em>, defaults to 720) — Nominal image size.",name:"image_size"},{anchor:"diffusers.SanaWMTransformer3DModel.caption_channels",description:"<strong>caption_channels</strong> (<em>int</em>, defaults to 2304) — Gemma-2 hidden size.",name:"caption_channels"},{anchor:"diffusers.SanaWMTransformer3DModel.model_max_length",description:"<strong>model_max_length</strong> (<em>int</em>, defaults to 300) — Max prompt tokens.",name:"model_max_length"}],source:"https://github.com/huggingface/diffusers/blob/vr_13881/src/diffusers/models/transformers/transformer_sana_wm.py#L8857"}}),N=new ce({props:{name:"add_inner_prefix",anchor:"diffusers.SanaWMTransformer3DModel.add_inner_prefix",parameters:[{name:"state_dict",val:": dict"}],source:"https://github.com/huggingface/diffusers/blob/vr_13881/src/diffusers/models/transformers/transformer_sana_wm.py#L8975"}}),A=new ce({props:{name:"forward",anchor:"diffusers.SanaWMTransformer3DModel.forward",parameters:[{name:"hidden_states",val:": torch.Tensor"},{name:"timestep",val:": torch.Tensor"},{name:"encoder_hidden_states",val:": torch.Tensor"},{name:"encoder_attention_mask",val:": torch.Tensor | None = None"},{name:"mask",val:": torch.Tensor | None = None"},{name:"return_dict",val:": bool = True"},{name:"**kwargs",val:": Any"}],parametersDescription:[{anchor:"diffusers.SanaWMTransformer3DModel.forward.hidden_states",description:"<strong>hidden_states</strong> — <code>(B, C, T, H, W)</code> latents.",name:"hidden_states"},{anchor:"diffusers.SanaWMTransformer3DModel.forward.timestep",description:"<strong>timestep</strong> — <code>(B, 1, T)</code> per-frame diffusion timesteps (LTX style).",name:"timestep"},{anchor:"diffusers.SanaWMTransformer3DModel.forward.encoder_hidden_states",description:"<strong>encoder_hidden_states</strong> — <code>(B, 1, L, D_caption)</code> text embeddings.",name:"encoder_hidden_states"},{anchor:"diffusers.SanaWMTransformer3DModel.forward.encoder_attention_mask",description:"<strong>encoder_attention_mask</strong> — <code>(B, L)</code> text attention mask.",name:"encoder_attention_mask"},{anchor:"diffusers.SanaWMTransformer3DModel.forward.*kwargs",description:`*<strong>*kwargs</strong> — SANA-WM-specific conditioning — at minimum | |
| <code>data_info</code>, <code>camera_conditions</code>, <code>chunk_plucker</code>.`,name:"*kwargs"}],source:"https://github.com/huggingface/diffusers/blob/vr_13881/src/diffusers/models/transformers/transformer_sana_wm.py#L8987",returnDescription:`<script context="module">export const metadata = 'undefined';<\/script> | |
| <p><code>Transformer2DModelOutput</code> with <code>sample</code> of shape <code>(B, C, T, H, W)</code>.</p> | |
| `}}),P=new ke({props:{title:"Transformer2DModelOutput",local:"diffusers.models.modeling_outputs.Transformer2DModelOutput",headingTag:"h2"}}),z=new ce({props:{name:"class diffusers.models.modeling_outputs.Transformer2DModelOutput",anchor:"diffusers.models.modeling_outputs.Transformer2DModelOutput",parameters:[{name:"sample",val:": torch.Tensor"}],parametersDescription:[{anchor:"diffusers.models.modeling_outputs.Transformer2DModelOutput.sample",description:`<strong>sample</strong> (<code>torch.Tensor</code> of shape <code>(batch_size, num_channels, height, width)</code> or <code>(batch size, num_vector_embeds - 1, num_latent_pixels)</code> if <a href="/docs/diffusers/pr_13881/en/api/models/transformer2d#diffusers.Transformer2DModel">Transformer2DModel</a> is discrete) — | |
| The hidden states output conditioned on the <code>encoder_hidden_states</code> input. If discrete, returns probability | |
| distributions for the unnoised latent pixels.`,name:"sample"}],source:"https://github.com/huggingface/diffusers/blob/vr_13881/src/diffusers/models/modeling_outputs.py#L21"}}),E=new Ze({props:{source:"https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/models/sana_wm_transformer3d.md"}}),{c(){T=i("meta"),X=r(),R=i("p"),O=r(),p(k.$$.fragment),Y=r(),p(y.$$.fragment),Q=r(),$=i("p"),$.innerHTML=$e,K=r(),D=i("ul"),D.innerHTML=De,ee=r(),S=i("p"),S.innerHTML=Se,te=r(),W=i("p"),W.textContent=We,ne=r(),p(w.$$.fragment),re=r(),p(C.$$.fragment),ae=r(),d=i("div"),p(L.$$.fragment),pe=r(),U=i("p"),U.textContent=we,_e=r(),B=i("p"),B.innerHTML=Ce,ue=r(),j=i("p"),j.innerHTML=Le,he=r(),m=i("div"),p(N.$$.fragment),ge=r(),q=i("p"),q.textContent=Ne,Me=r(),H=i("p"),H.innerHTML=Ae,Te=r(),J=i("p"),J.textContent=Pe,be=r(),v=i("div"),p(A.$$.fragment),ve=r(),V=i("p"),V.textContent=ze,oe=r(),p(P.$$.fragment),se=r(),b=i("div"),p(z.$$.fragment),xe=r(),I=i("p"),I.innerHTML=Ee,ie=r(),p(E.$$.fragment),le=r(),F=i("p"),this.h()},l(e){const t=Je("svelte-u9bgzb",document.head);T=l(t,"META",{name:!0,content:!0}),t.forEach(n),X=a(e),R=l(e,"P",{}),Z(R).forEach(n),O=a(e),_(k.$$.fragment,e),Y=a(e),_(y.$$.fragment,e),Q=a(e),$=l(e,"P",{"data-svelte-h":!0}),c($)!=="svelte-9vt2cl"&&($.innerHTML=$e),K=a(e),D=l(e,"UL",{"data-svelte-h":!0}),c(D)!=="svelte-1ehi29k"&&(D.innerHTML=De),ee=a(e),S=l(e,"P",{"data-svelte-h":!0}),c(S)!=="svelte-191x7x8"&&(S.innerHTML=Se),te=a(e),W=l(e,"P",{"data-svelte-h":!0}),c(W)!=="svelte-1ju4u4w"&&(W.textContent=We),ne=a(e),_(w.$$.fragment,e),re=a(e),_(C.$$.fragment,e),ae=a(e),d=l(e,"DIV",{class:!0});var f=Z(d);_(L.$$.fragment,f),pe=a(f),U=l(f,"P",{"data-svelte-h":!0}),c(U)!=="svelte-73e9bi"&&(U.textContent=we),_e=a(f),B=l(f,"P",{"data-svelte-h":!0}),c(B)!=="svelte-o90c62"&&(B.innerHTML=Ce),ue=a(f),j=l(f,"P",{"data-svelte-h":!0}),c(j)!=="svelte-1j55q41"&&(j.innerHTML=Le),he=a(f),m=l(f,"DIV",{class:!0});var x=Z(m);_(N.$$.fragment,x),ge=a(x),q=l(x,"P",{"data-svelte-h":!0}),c(q)!=="svelte-1uundkd"&&(q.textContent=Ne),Me=a(x),H=l(x,"P",{"data-svelte-h":!0}),c(H)!=="svelte-1k6sv7p"&&(H.innerHTML=Ae),Te=a(x),J=l(x,"P",{"data-svelte-h":!0}),c(J)!=="svelte-1042puz"&&(J.textContent=Pe),x.forEach(n),be=a(f),v=l(f,"DIV",{class:!0});var me=Z(v);_(A.$$.fragment,me),ve=a(me),V=l(me,"P",{"data-svelte-h":!0}),c(V)!=="svelte-1s2cv55"&&(V.textContent=ze),me.forEach(n),f.forEach(n),oe=a(e),_(P.$$.fragment,e),se=a(e),b=l(e,"DIV",{class:!0});var fe=Z(b);_(z.$$.fragment,fe),xe=a(fe),I=l(fe,"P",{"data-svelte-h":!0}),c(I)!=="svelte-1u5b0hj"&&(I.innerHTML=Ee),fe.forEach(n),ie=a(e),_(E.$$.fragment,e),le=a(e),F=l(e,"P",{}),Z(F).forEach(n),this.h()},h(){G(T,"name","hf:doc:metadata"),G(T,"content",Re),G(m,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),G(v,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),G(d,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),G(b,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,t){s(document.head,T),o(e,X,t),o(e,R,t),o(e,O,t),u(k,e,t),o(e,Y,t),u(y,e,t),o(e,Q,t),o(e,$,t),o(e,K,t),o(e,D,t),o(e,ee,t),o(e,S,t),o(e,te,t),o(e,W,t),o(e,ne,t),u(w,e,t),o(e,re,t),u(C,e,t),o(e,ae,t),o(e,d,t),u(L,d,null),s(d,pe),s(d,U),s(d,_e),s(d,B),s(d,ue),s(d,j),s(d,he),s(d,m),u(N,m,null),s(m,ge),s(m,q),s(m,Me),s(m,H),s(m,Te),s(m,J),s(d,be),s(d,v),u(A,v,null),s(v,ve),s(v,V),o(e,oe,t),u(P,e,t),o(e,se,t),o(e,b,t),u(z,b,null),s(b,xe),s(b,I),o(e,ie,t),u(E,e,t),o(e,le,t),o(e,F,t),de=!0},p:Be,i(e){de||(h(k.$$.fragment,e),h(y.$$.fragment,e),h(w.$$.fragment,e),h(C.$$.fragment,e),h(L.$$.fragment,e),h(N.$$.fragment,e),h(A.$$.fragment,e),h(P.$$.fragment,e),h(z.$$.fragment,e),h(E.$$.fragment,e),de=!0)},o(e){g(k.$$.fragment,e),g(y.$$.fragment,e),g(w.$$.fragment,e),g(C.$$.fragment,e),g(L.$$.fragment,e),g(N.$$.fragment,e),g(A.$$.fragment,e),g(P.$$.fragment,e),g(z.$$.fragment,e),g(E.$$.fragment,e),de=!1},d(e){e&&(n(X),n(R),n(O),n(Y),n(Q),n($),n(K),n(D),n(ee),n(S),n(te),n(W),n(ne),n(re),n(ae),n(d),n(oe),n(se),n(b),n(ie),n(le),n(F)),n(T),M(k,e),M(y,e),M(w,e),M(C,e),M(L),M(N),M(A),M(P,e),M(z),M(E,e)}}}const Re='{"title":"SanaWMTransformer3DModel","local":"sanawmtransformer3dmodel","sections":[{"title":"SanaWMTransformer3DModel","local":"diffusers.SanaWMTransformer3DModel","sections":[],"depth":2},{"title":"Transformer2DModelOutput","local":"diffusers.models.modeling_outputs.Transformer2DModelOutput","sections":[],"depth":2}],"depth":1}';function Fe(ye){return je(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class tt extends qe{constructor(T){super(),He(this,T,Fe,Ge,Ue,{})}}export{tt as component}; | |
Xet Storage Details
- Size:
- 18.4 kB
- Xet hash:
- ef5cae5821d9366738e948ad5e0327e40f3417a6065613f1480a7cb3de607c8f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.