Skip to main content

NextDit

Struct NextDit 

Source
pub struct NextDit {
    pub hidden: usize,
    pub in_channels: usize,
    pub patch: usize,
    /* private fields */
}
Expand description

Next-DiT: exact f32 from a diffusers directory, or CMF-quantized (mmap-resident) from a packaged file.

Fields§

§hidden: usize§in_channels: usize§patch: usize

Implementations§

Source§

impl NextDit

Source

pub fn load_dir(dir: &Path) -> Result<Self, String>

Source

pub fn from_cmf(model: &Arc<CmfModel>) -> Result<Self, String>

Load from a packaged imagegen .cmf (dit.* tensors + dit.config_json). Quantized projections stay mmap-resident.

Source

pub fn forward( &self, latent: &[f32], h: usize, w: usize, cap: &[f32], cap_n: usize, t: f32, ) -> Vec<f32>

One denoising forward: latent [c, h, w] (NCHW), caption features [cap_n, cap_feat], timestep t ∈ [0,1] (the pipeline’s 1 − σ). Returns the velocity prediction [c, h, w].

Source

pub fn refine_caption(&self, cap: &[f32], cap_n: usize) -> Vec<f32>

Caption features → hidden, through the context refiner. Depends on NOTHING that moves during denoising — not the timestep, not the latents — so the whole thing is a constant of the prompt. The denoise loop hoists it out and hands the result to forward_with_cap; it used to be recomputed on every model call, which for 30 steps under CFG meant 60 evaluations of a value with two distinct instances.

Source

pub fn forward_cfg_pair( &self, latent: &[f32], h: usize, w: usize, cap_c: &[f32], cap_c_n: usize, cap_u: &[f32], cap_u_n: usize, t: f32, ) -> (Vec<f32>, Vec<f32>)

The rest of the forward, from an already-refined caption. Classifier-free guidance in ONE pass: the conditional and the unconditional sequence go through the joint stack as a single batch. Every weight is read once for both — which is the whole cost on a CPU or a phone — and the image branch (patchify, x_embedder, the noise refiners) is computed once instead of twice, because it does not depend on the caption at all. Attention stays per sequence, so the two never mix and each prediction equals what the single-sequence path returns.

Source

pub fn forward_with_cap( &self, latent: &[f32], h: usize, w: usize, cap_e_in: &[f32], cap_n: usize, t: f32, ) -> Vec<f32>

Trait Implementations§

Source§

impl Drop for NextDit

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more