eka vedos
This commit is contained in:
117
network-poc/USER-README.md
Normal file
117
network-poc/USER-README.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# Kipinä Agentic Network — Hajautettu AI-laskentaverkko
|
||||
|
||||
Kipinä Agentic Network on hajautettu tekoälylaskentaverkko, jossa selaimet ja natiivit solmut tarjoavat GPU-laskentatehoa yhteiseen käyttöön. Hub-palvelin koordinoi tehtäviä ja solmut suorittavat ne WebGPU:lla tai CPU:lla.
|
||||
|
||||
## Miten se toimii
|
||||
|
||||
```
|
||||
┌──────────┐ WebSocket ┌──────────┐ WebSocket ┌──────────────┐
|
||||
│ Selain │◄─────────────────►│ Hub │◄─────────────────►│ Natiivi-node │
|
||||
│ (Wasm) │ tehtävät/tulokset│ (Axum) │ tehtävät/tulokset│ (Rust) │
|
||||
│ WebGPU │ │ :3000 │ │ NVML/sysinfo │
|
||||
└──────────┘ └──────────┘ └──────────────┘
|
||||
│ │
|
||||
└── CPU fallback (NdArray) └── Dashboard + statistiikat
|
||||
jos WebGPU ei tuettu
|
||||
```
|
||||
|
||||
**Hub** jakaa tokenisointitehtäviä satunnaisesti 10 sekunnin välein. Solmut tokenisoivat syötteen Qwen2.5-Coder-tokenizerin avulla ja palauttavat tuloksen. Hub näyttää tulokset terminaalissa ja välittää ne dashboardiin.
|
||||
|
||||
## Kaksi tapaa osallistua verkkoon
|
||||
|
||||
### 1. Selainsolmu (Wasm + WebGPU)
|
||||
- Avaa `http://localhost:3000` selaimessa ja klikkaa "Liity laskentaverkkoon"
|
||||
- Selain tunnistaa automaattisesti WebGPU-tuen — jos ei löydy, käytetään CPU-fallbackia
|
||||
- Tokenizer ladataan HuggingFacesta ensimmäisellä kerralla ja tallennetaan IndexedDB:hen
|
||||
- GPU-kuormitusta voi säätää sliderilla (0–75 %)
|
||||
|
||||
### 2. Natiivi-node (Rust + NVML)
|
||||
- Kerää nvidia-smi-tason laitteistotiedot: GPU-nimi, VRAM, lämpötila, kuormitus
|
||||
- Raportoi järjestelmätiedot: CPU-malli, ytimet, RAM, OS
|
||||
- Yhdistää hubiin ja vastaanottaa tehtäviä
|
||||
|
||||
## Käynnistys
|
||||
|
||||
### Docker Compose (suositeltu)
|
||||
|
||||
```bash
|
||||
# Hub + selainsolmu
|
||||
docker compose up
|
||||
|
||||
# Hub + selainsolmu + natiivi-node (vaatii nvidia-container-toolkit)
|
||||
docker compose --profile native up
|
||||
```
|
||||
|
||||
Dashboard avautuu osoitteessa http://localhost:3000
|
||||
|
||||
### Ilman Dockeria
|
||||
|
||||
```bash
|
||||
# 1. Rakenna Wasm-paketti (vaatii wasm-pack)
|
||||
cd node && wasm-pack build --target web --out-dir ../static/pkg && cd ..
|
||||
|
||||
# 2. Käynnistä hub (terminaali 1)
|
||||
cargo run -p hub
|
||||
|
||||
# 3. Avaa selain: http://localhost:3000
|
||||
|
||||
# 4. Valinnainen: natiivi-node (terminaali 2)
|
||||
HUB_URL=ws://localhost:3000/ws ALLOCATED_GB=4 cargo run -p native-node
|
||||
```
|
||||
|
||||
## WebGPU-asetukset selaimessa
|
||||
|
||||
WebGPU ei ole oletuksena päällä kaikissa selaimissa. Jos "Liity laskentaverkkoon" -nappi käynnistää CPU-fallbackin vaikka koneessa on näytönohjain:
|
||||
|
||||
**Chrome / Brave (Linux + Wayland):**
|
||||
```bash
|
||||
google-chrome --enable-unsafe-webgpu --enable-features=Vulkan --ignore-gpu-blocklist --use-angle=vulkan --ozone-platform=x11
|
||||
```
|
||||
|
||||
**Chrome / Brave (Windows / Mac):**
|
||||
1. Avaa `chrome://flags`
|
||||
2. Ota käyttöön "WebGPU" ja "Vulkan"
|
||||
3. Käynnistä selain uudelleen
|
||||
|
||||
**Firefox:** `about:config` → `dom.webgpu.enabled` = `true`
|
||||
|
||||
**Safari:** Develop → Feature Flags → WebGPU
|
||||
|
||||
## Projektin rakenne
|
||||
|
||||
```
|
||||
network-poc/
|
||||
├── hub/ # Keskuspalvelin (Rust + Axum)
|
||||
│ └── src/main.rs # WebSocket-reititin, tehtävien jakelu, statistiikat
|
||||
├── node/ # Selainsolmu (Rust → Wasm)
|
||||
│ └── src/
|
||||
│ ├── lib.rs # WebGPU/NdArray-laskenta, tokenisaatio, WS-yhteys
|
||||
│ └── storage.rs # IndexedDB-välimuisti (tokenizer)
|
||||
├── native-node/ # Natiivi-solmu (Rust)
|
||||
│ └── src/main.rs # NVML GPU-tunnistus, sysinfo, WS-yhteys
|
||||
├── static/
|
||||
│ ├── index.html # Dashboard-käyttöliittymä
|
||||
│ └── pkg/ # Wasm-build (generoidaan)
|
||||
├── docker-compose.yml
|
||||
├── Dockerfile.dev # Hub + Wasm-build
|
||||
└── Dockerfile.native-node
|
||||
```
|
||||
|
||||
## Ympäristömuuttujat
|
||||
|
||||
| Muuttuja | Oletus | Kuvaus |
|
||||
|---|---|---|
|
||||
| `HUB_URL` | `ws://hub:3000/ws` | Hub-palvelimen WebSocket-osoite (native-node) |
|
||||
| `ALLOCATED_GB` | `4` | Solmun varaama muisti verkosta (GB) |
|
||||
|
||||
## Kehitysvaihe
|
||||
|
||||
Tämä on proof-of-concept. Toimivat osat:
|
||||
- Hub-palvelin, WebSocket-viestintä, dashboard
|
||||
- WebGPU-tensorilaskenta selaimessa (Burn + Wgpu)
|
||||
- CPU-fallback selaimissa ilman WebGPU-tukea (Burn + NdArray)
|
||||
- Natiivi-node nvidia-smi-tason laitteistotiedoilla
|
||||
- Qwen2.5-Coder-tokenizer + IndexedDB-välimuisti
|
||||
- GPU-kuormituksen säätö (duty cycle throttling)
|
||||
|
||||
Seuraavaksi: oikea LLM-inferenssi hajautetusti (mallin painojen lataus, transformer-arkkitehtuuri Wasm/WebGPU:lla).
|
||||
Reference in New Issue
Block a user