diff --git a/candle-wasm-examples/llama2-c/src/app.rs b/candle-wasm-examples/llama2-c/src/app.rs index eab0aa6e..2ecd771e 100644 --- a/candle-wasm-examples/llama2-c/src/app.rs +++ b/candle-wasm-examples/llama2-c/src/app.rs @@ -43,8 +43,10 @@ pub struct CurrentDecode { pub struct App { status: String, + loaded: bool, temperature: std::rc::Rc>, generated: String, + n_tokens: usize, current_decode: Option, worker: Box>, } @@ -75,10 +77,12 @@ impl Component for App { let worker = Worker::bridge(std::rc::Rc::new(cb)); Self { status, + n_tokens: 0, temperature: std::rc::Rc::new(std::cell::RefCell::new(0.)), generated: String::new(), current_decode: None, worker, + loaded: false, } } @@ -100,6 +104,7 @@ impl Component for App { match msg { Msg::SetModel(md) => { self.status = "weights loaded succesfully!".to_string(); + self.loaded = true; console_log!("loaded weights"); self.worker.send(WorkerInput::ModelData(md)); true @@ -111,6 +116,7 @@ impl Component for App { let start_time = performance_now(); self.current_decode = Some(CurrentDecode { start_time }); self.status = "generating...".to_string(); + self.n_tokens = 0; self.generated.clear(); let temp = *self.temperature.borrow(); console_log!("temp: {}", temp); @@ -134,11 +140,18 @@ impl Component for App { }); self.status = match dt { None => "generation succeeded!".to_string(), - Some(dt) => format!("generation succeeded in {:.2}s", dt), + Some(dt) => format!( + "generation succeeded in {:.2}s ({:.1} ms/token)", + dt, + dt * 1000.0 / (self.n_tokens as f64) + ), }; self.current_decode = None } - Ok(WorkerOutput::Generated(token)) => self.generated.push_str(&token), + Ok(WorkerOutput::Generated(token)) => { + self.n_tokens += 1; + self.generated.push_str(&token) + } Err(err) => { self.status = format!("error in worker {err:?}"); } @@ -176,7 +189,15 @@ impl Component for App {

{"temperature: "} - + +
+ { + if self.loaded{ + html!() + }else{ + html! { } + } + }

{&self.status} diff --git a/candle-wasm-examples/whisper/src/app.rs b/candle-wasm-examples/whisper/src/app.rs index 23519ebd..03ae1d9f 100644 --- a/candle-wasm-examples/whisper/src/app.rs +++ b/candle-wasm-examples/whisper/src/app.rs @@ -47,6 +47,7 @@ pub struct CurrentDecode { pub struct App { status: String, + loaded: bool, segments: Vec, current_decode: Option, worker: Box>, @@ -86,6 +87,7 @@ impl Component for App { segments: vec![], current_decode: None, worker, + loaded: false, } } @@ -107,6 +109,7 @@ impl Component for App { match msg { Msg::SetDecoder(md) => { self.status = "weights loaded succesfully!".to_string(); + self.loaded = true; console_log!("loaded weights"); self.worker.send(WorkerInput::ModelData(md)); true @@ -186,7 +189,10 @@ impl Component for App { {name} - + { if self.loaded { + html!() + }else{html!()} + } } }).collect::() @@ -197,7 +203,9 @@ impl Component for App { {&self.status}

{ - if self.current_decode.is_some() { + if !self.loaded{ + html! { } + } else if self.current_decode.is_some() { html! { } } else { html!{