pub enum Cut {
Show 14 variants
Decode {
ctx: usize,
},
Prefill {
rows: usize,
ctx: usize,
},
Batch {
rows: usize,
ctx: usize,
},
Forward,
ForwardLayer {
layer: usize,
},
ForwardHead,
DecodeEmbed,
DecodeLayer {
layer: usize,
ctx: usize,
},
DecodeHead,
BatchEmbed {
rows: usize,
},
BatchLayer {
layer: usize,
rows: usize,
ctx: usize,
},
BatchHead {
rows: usize,
},
PrefillLayer {
layer: usize,
rows: usize,
ctx: usize,
},
PrefillHead {
rows: usize,
},
}Expand description
Which cut of a model’s program a backend lowers.
Variants§
Decode
One decode step over a cache of ctx positions (author::decode_step).
Prefill
A prefill chunk of rows tokens of one sequence over a cache of ctx positions (author::prefill).
Batch
One decode step of rows sequences at once, each with its own state (author::decode_batch).
Forward
The single token’s forward with no history (author::forward).
ForwardLayer
Layer layer of the forward alone (author::layer).
ForwardHead
The forward’s final norm and head alone (author::head).
DecodeEmbed
A decode step’s embedding lookup alone (author::decode_embed).
DecodeLayer
Layer layer of a decode step alone (author::decode_layer).
DecodeHead
A decode step’s final norm, head and arg-max alone (author::decode_head).
BatchEmbed
The embedding lookups of rows stacked rows alone (author::decode_batch_embed).
BatchLayer
Layer layer of a batch of rows sequences alone (author::stacked_layer, each row its own sequence).
BatchHead
A batch’s head alone, every sequence’s next token (author::decode_batch_head).
PrefillLayer
Layer layer of a prefill chunk of rows tokens alone (author::stacked_layer, one sequence’s rows).
PrefillHead
A prefill chunk’s head alone, read off its last row (author::prefill_head).
Implementations§
Source§impl Cut
impl Cut
Sourcepub fn write(self, spec: &ModelSpec, dir: &str) -> Authored
pub fn write(self, spec: &ModelSpec, dir: &str) -> Authored
The program author writes for this cut of spec’s computation, its weight manifest naming files under dir
(the text does not depend on dir).
Sourcepub fn write_split(
self,
spec: &ModelSpec,
dir: &str,
tp: usize,
) -> Result<TpAuthored, NotYet>
pub fn write_split( self, spec: &ModelSpec, dir: &str, tp: usize, ) -> Result<TpAuthored, NotYet>
The program author writes for this cut of spec’s computation split over tp chips, its manifest under dir:
a decode step, a batch, or one layer of either. Any other cut, or a width the model does not split over, is
refused.
Trait Implementations§
impl Copy for Cut
impl Eq for Cut
impl StructuralPartialEq for Cut
Auto Trait Implementations§
impl Freeze for Cut
impl RefUnwindSafe for Cut
impl Send for Cut
impl Sync for Cut
impl Unpin for Cut
impl UnsafeUnpin for Cut
impl UnwindSafe for Cut
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.