metrale_model_engine/model/trait_impl/
impl_verify.rs1use anyhow::Result;
10
11use crate::model::types::TransformerModel;
12use crate::traits::{ModelVerify, SequenceState};
13
14impl ModelVerify for TransformerModel {
15 fn decode_verify(
16 &self,
17 tokens: &[u32],
18 seq: &mut SequenceState,
19 stream: u64,
20 ) -> Result<Vec<u32>> {
21 self.gdn_carry_flush_pending()?;
22 self.ssm_pool.require_verify_rollback_supported()?;
23 let r = self.decode_verify_dispatch(tokens, seq, stream);
24 self.release_verify_capture_on_err(r)
25 }
26
27 fn decode_verify_graphed(
28 &self,
29 tokens: &[u32; 2],
30 seq: &mut SequenceState,
31 _stream: u64,
32 ) -> Result<[u32; 2]> {
33 self.gdn_carry_flush_pending()?;
34 self.ssm_pool.require_verify_rollback_supported()?;
35 let r = self.decode_verify_graphed_dispatch(tokens, seq, _stream);
36 self.release_verify_capture_on_err(r)
37 }
38
39 fn decode_verify_graphed_k3(
40 &self,
41 tokens: &[u32; 3],
42 seq: &mut SequenceState,
43 _stream: u64,
44 ) -> Result<[u32; 3]> {
45 self.gdn_carry_flush_pending()?;
46 self.ssm_pool.require_verify_rollback_supported()?;
47 let r = self.decode_verify_graphed_k3_dispatch(tokens, seq, _stream);
48 self.release_verify_capture_on_err(r)
49 }
50
51 fn decode_verify_graphed_k4(
52 &self,
53 tokens: &[u32; 4],
54 seq: &mut SequenceState,
55 _stream: u64,
56 ) -> Result<[u32; 4]> {
57 self.gdn_carry_flush_pending()?;
58 self.ssm_pool.require_verify_rollback_supported()?;
59 let r = self.decode_verify_graphed_k4_dispatch(tokens, seq, _stream);
60 self.release_verify_capture_on_err(r)
61 }
62
63 fn can_batch_verify(&self, ks: &[usize]) -> bool {
64 self.can_batch_verify_dispatch(ks)
65 }
66
67 fn decode_verify_batched(
68 &self,
69 tokens: &[u32],
70 ks: &[usize],
71 seqs: &mut [&mut SequenceState],
72 _stream: u64,
73 opts: crate::traits::VerifyBatchedOpts,
74 ) -> Result<Vec<u32>> {
75 self.ssm_pool.require_verify_rollback_supported()?;
76 let r = self.decode_verify_batched_dispatch(tokens, ks, seqs, _stream, opts);
77 self.release_verify_capture_on_err(r)
78 }
79
80 fn decode_verify_graphed_kgamma(
81 &self,
82 tokens: &[u32],
83 seq: &mut SequenceState,
84 _stream: u64,
85 ) -> Result<Vec<u32>> {
86 self.gdn_carry_flush_pending()?;
87 self.ssm_pool.require_verify_rollback_supported()?;
88 let r = self.decode_verify_graphed_kgamma_dispatch(tokens, seq, _stream);
89 self.release_verify_capture_on_err(r)
90 }
91
92 fn decode_and_verify_fused(
93 &self,
94 tokens: &[u32],
95 seq: &mut SequenceState,
96 _stream: u64,
97 ) -> Result<Vec<u32>> {
98 self.gdn_carry_flush_pending()?;
99 self.ssm_pool.require_verify_rollback_supported()?;
100 let r = self.decode_and_verify_fused_dispatch(tokens, seq, _stream);
101 self.release_verify_capture_on_err(r)
102 }
103
104 fn gdn_fold_accepted(
105 &self,
106 slots: &[usize],
107 accepted_rows: &[u32],
108 k_rows: usize,
109 ) -> Result<bool> {
110 self.gdn_fold_accepted_dispatch(slots, accepted_rows, k_rows)
111 }
112}