toka toimiva vedos

This commit is contained in:
2026-04-01 23:52:39 +03:00
parent 02f6684378
commit 9a72d35081
1420 changed files with 79953 additions and 64 deletions

View File

@@ -1,5 +1,5 @@
use wasm_bindgen::prelude::*;
use web_sys::{console, WebSocket, MessageEvent};
use web_sys::{WebSocket, MessageEvent};
use std::cell::RefCell;
use std::rc::Rc;
use std::sync::atomic::{AtomicU32, AtomicBool, Ordering};
@@ -7,15 +7,17 @@ use burn::tensor::Tensor;
use burn::backend::{Wgpu, NdArray};
pub mod storage;
pub mod smollm;
#[macro_export]
macro_rules! console_log {
($($t:tt)*) => (console::log_1(&format_args!($($t)*).to_string().into()))
($($t:tt)*) => (web_sys::console::log_1(&format_args!($($t)*).to_string().into()))
}
// Globaali muuttuja GPU Load Sliderille (25-100%)
static GPU_LOAD_PERCENT: AtomicU32 = AtomicU32::new(50);
// Onko WebGPU käytettävissä — asetetaan JS-puolelta käynnistyksessä
static HAS_WEBGPU: AtomicBool = AtomicBool::new(true);
// Valittu tehtävä: 0=tokenize, 1=smollm-135m, 2=qwen-05b, 3=phi3-mini
static SELECTED_TASK: AtomicU32 = AtomicU32::new(0);
#[wasm_bindgen]
pub fn set_gpu_load(load: u32) {
@@ -148,12 +150,15 @@ async fn run_pair_comparison(en_text: String, fi_text: String, ws: Rc<RefCell<We
}
#[wasm_bindgen]
pub async fn start_agent_node(hub_url: String, has_webgpu: bool, device_info_json: String) -> Result<(), JsValue> {
pub async fn start_agent_node(hub_url: String, has_webgpu: bool, device_info_json: String, task_id: u32) -> Result<(), JsValue> {
console_error_panic_hook::set_once();
HAS_WEBGPU.store(has_webgpu, Ordering::SeqCst);
SELECTED_TASK.store(task_id, Ordering::SeqCst);
let backend_name = if has_webgpu { "WebGPU" } else { "CPU (NdArray)" };
console_log!("Kipinä Agent Node käynnistyy — backend: {}", backend_name);
let task_names = ["tokenize", "smollm-135m", "qwen-05b", "phi3-mini"];
let task_name = task_names.get(task_id as usize).unwrap_or(&"tokenize");
console_log!("Kipinä Agent Node käynnistyy — backend: {} | tehtävä: {}", backend_name, task_name);
let device_info = device_info_json.clone();
@@ -182,7 +187,10 @@ pub async fn start_agent_node(hub_url: String, has_webgpu: bool, device_info_jso
if let Ok(txt) = e.data().dyn_into::<js_sys::JsString>() {
let msg: String = txt.into();
if msg.contains("pair_task") {
let current_task = SELECTED_TASK.load(Ordering::SeqCst);
if msg.contains("pair_task") && current_task == 0 {
// Vain tokenisaatiosolmut käsittelevät pair_task-viestejä
if let Ok(task) = serde_json::from_str::<serde_json::Value>(&msg) {
let en = task.get("en").and_then(|v| v.as_str()).unwrap_or("").to_string();
let fi = task.get("fi").and_then(|v| v.as_str()).unwrap_or("").to_string();
@@ -193,6 +201,18 @@ pub async fn start_agent_node(hub_url: String, has_webgpu: bool, device_info_jso
});
}
}
} else if msg.contains("llm_prompt") && current_task == 1 {
// Vain SmolLM-solmut käsittelevät llm_prompt-viestejä
if let Ok(task) = serde_json::from_str::<serde_json::Value>(&msg) {
let prompt = task.get("prompt").and_then(|v| v.as_str()).unwrap_or("").to_string();
let model = task.get("model").and_then(|v| v.as_str()).unwrap_or("").to_string();
if !prompt.is_empty() && model == "smollm-135m" {
let ws_for_async = ws_clone.clone();
wasm_bindgen_futures::spawn_local(async move {
smollm::run_smollm_inference(prompt, ws_for_async).await;
});
}
}
} else if msg.contains("ai_task") {
console_log!("Hub task vastaanotettu, ajetaan GPU:lla...");
let ws_for_async = ws_clone.clone();