37 lines
1.5 KiB
Rust
37 lines
1.5 KiB
Rust
use candle_core::{Device, Tensor, DType};
|
|
use candle_nn::VarBuilder;
|
|
use candle_transformers::models::phi3::{Config as Phi3Config, Model as Phi3Model};
|
|
use wasm_bindgen::JsCast;
|
|
use std::cell::RefCell;
|
|
use std::rc::Rc;
|
|
use web_sys::WebSocket;
|
|
|
|
use crate::storage;
|
|
|
|
macro_rules! console_log {
|
|
($($t:tt)*) => (web_sys::console::log_1(&format_args!($($t)*).to_string().into()))
|
|
}
|
|
|
|
const MODEL_URL: &str = "https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/resolve/main/model.safetensors.index.json";
|
|
const TOKENIZER_URL: &str = "https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/resolve/main/tokenizer.json";
|
|
|
|
// Phi-3 Mini on iso (7.6 GB) — käytetään kvantisoidumpaa versiota myöhemmin
|
|
// Tällä hetkellä: placeholder joka raportoi koon ja jättää inferenssin väliin
|
|
pub async fn run_phi3_inference(prompt: String, ws: Rc<RefCell<WebSocket>>) {
|
|
console_log!("[Phi-3] Phi-3 Mini 3.8B on liian suuri selaimessa ajettavaksi (~7.6 GB).");
|
|
console_log!("[Phi-3] Käytä SmolLM 135M tai Qwen2.5 0.5B selaininferenssiin.");
|
|
console_log!("[Phi-3] Phi-3 tuetaan native-node:lla (Docker + GPU).");
|
|
|
|
let done = serde_json::json!({
|
|
"type": "llm_done",
|
|
"prompt": prompt,
|
|
"model": "Phi-3-Mini (ei tuettu selaimessa)",
|
|
"response": "Phi-3 Mini 3.8B on liian suuri selaimessa ajettavaksi. Käytä SmolLM 135M tai Qwen2.5 0.5B.",
|
|
"tokens_generated": 0,
|
|
"duration_ms": 0,
|
|
"tokens_per_sec": 0,
|
|
"load_time_ms": 0,
|
|
});
|
|
let _ = ws.borrow().send_with_str(&done.to_string());
|
|
}
|