Compare commits
4 Commits
f75e7f07e9
...
v0.2.4
| Author | SHA1 | Date | |
|---|---|---|---|
| afc7f9bcee | |||
| 5d2027b2ca | |||
| 8a4d515eed | |||
| 987a370a05 |
@@ -5,7 +5,8 @@ RUN apt-get update && apt-get install -y \
|
|||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY Cargo.toml Cargo.lock ./
|
COPY Cargo.toml ./
|
||||||
|
COPY Cargo.loc[k] ./
|
||||||
COPY hub/Cargo.toml hub/Cargo.toml
|
COPY hub/Cargo.toml hub/Cargo.toml
|
||||||
COPY node/Cargo.toml node/Cargo.toml
|
COPY node/Cargo.toml node/Cargo.toml
|
||||||
COPY native-node/Cargo.toml native-node/Cargo.toml
|
COPY native-node/Cargo.toml native-node/Cargo.toml
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
services:
|
services:
|
||||||
# NVIDIA GPU -solmu
|
# Ollama NVIDIA GPU:lla
|
||||||
native-node-nvidia:
|
ollama-nvidia:
|
||||||
build:
|
image: ollama/ollama:latest
|
||||||
context: .
|
container_name: kipina-ollama
|
||||||
dockerfile: Dockerfile.native-node
|
ports:
|
||||||
container_name: kipina-node-nvidia
|
- "11434:11434"
|
||||||
environment:
|
volumes:
|
||||||
- HUB_URL=wss://kipina.studio/ws
|
- ollama-models:/root/.ollama
|
||||||
- ALLOCATED_GB=4
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
deploy:
|
deploy:
|
||||||
resources:
|
resources:
|
||||||
@@ -16,6 +15,65 @@ services:
|
|||||||
- driver: nvidia
|
- driver: nvidia
|
||||||
count: all
|
count: all
|
||||||
capabilities: [gpu]
|
capabilities: [gpu]
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
aliases:
|
||||||
|
- ollama
|
||||||
|
profiles:
|
||||||
|
- nvidia
|
||||||
|
|
||||||
|
# Ollama AMD ROCm GPU:lla
|
||||||
|
ollama-amd:
|
||||||
|
image: ollama/ollama:rocm
|
||||||
|
container_name: kipina-ollama
|
||||||
|
ports:
|
||||||
|
- "11434:11434"
|
||||||
|
volumes:
|
||||||
|
- ollama-models:/root/.ollama
|
||||||
|
restart: unless-stopped
|
||||||
|
devices:
|
||||||
|
- /dev/kfd:/dev/kfd
|
||||||
|
- /dev/dri:/dev/dri
|
||||||
|
group_add:
|
||||||
|
- video
|
||||||
|
- render
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
aliases:
|
||||||
|
- ollama
|
||||||
|
profiles:
|
||||||
|
- amd
|
||||||
|
|
||||||
|
# Ollama CPU:lla
|
||||||
|
ollama-cpu:
|
||||||
|
image: ollama/ollama:latest
|
||||||
|
container_name: kipina-ollama
|
||||||
|
ports:
|
||||||
|
- "11434:11434"
|
||||||
|
volumes:
|
||||||
|
- ollama-models:/root/.ollama
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
aliases:
|
||||||
|
- ollama
|
||||||
|
profiles:
|
||||||
|
- cpu
|
||||||
|
|
||||||
|
# NVIDIA GPU -solmu
|
||||||
|
native-node-nvidia:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.native-node
|
||||||
|
container_name: kipina-node-nvidia
|
||||||
|
environment:
|
||||||
|
- HUB_URL=wss://kipina.studio/ws
|
||||||
|
- OLLAMA_URL=http://ollama:11434
|
||||||
|
- OLLAMA_MODEL=qwen2.5-coder:7b
|
||||||
|
- ALLOCATED_GB=4
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- ollama-nvidia
|
||||||
profiles:
|
profiles:
|
||||||
- nvidia
|
- nvidia
|
||||||
|
|
||||||
@@ -27,14 +85,12 @@ services:
|
|||||||
container_name: kipina-node-amd
|
container_name: kipina-node-amd
|
||||||
environment:
|
environment:
|
||||||
- HUB_URL=wss://kipina.studio/ws
|
- HUB_URL=wss://kipina.studio/ws
|
||||||
|
- OLLAMA_URL=http://ollama:11434
|
||||||
|
- OLLAMA_MODEL=qwen2.5-coder:7b
|
||||||
- ALLOCATED_GB=4
|
- ALLOCATED_GB=4
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
devices:
|
depends_on:
|
||||||
- /dev/kfd:/dev/kfd
|
- ollama-amd
|
||||||
- /dev/dri:/dev/dri
|
|
||||||
group_add:
|
|
||||||
- video
|
|
||||||
- render
|
|
||||||
profiles:
|
profiles:
|
||||||
- amd
|
- amd
|
||||||
|
|
||||||
@@ -46,7 +102,14 @@ services:
|
|||||||
container_name: kipina-node-cpu
|
container_name: kipina-node-cpu
|
||||||
environment:
|
environment:
|
||||||
- HUB_URL=wss://kipina.studio/ws
|
- HUB_URL=wss://kipina.studio/ws
|
||||||
|
- OLLAMA_URL=http://ollama:11434
|
||||||
|
- OLLAMA_MODEL=qwen2.5-coder:7b
|
||||||
- ALLOCATED_GB=2
|
- ALLOCATED_GB=2
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- ollama-cpu
|
||||||
profiles:
|
profiles:
|
||||||
- cpu
|
- cpu
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
ollama-models:
|
||||||
|
|||||||
@@ -11,21 +11,19 @@ services:
|
|||||||
# Käännetään aina käynnistyksen yhteydessä varmuuden vuoksi Wasm uusimmista koodeista, ja päälle pyöräytetään Hub!
|
# Käännetään aina käynnistyksen yhteydessä varmuuden vuoksi Wasm uusimmista koodeista, ja päälle pyöräytetään Hub!
|
||||||
command: bash -c "cd node && wasm-pack build --release --target web --out-dir ../static/pkg && cd ../hub && cargo run"
|
command: bash -c "cd node && wasm-pack build --release --target web --out-dir ../static/pkg && cd ../hub && cargo run"
|
||||||
|
|
||||||
# Ollama — LLM-inferenssi GPU:lla (NVIDIA/AMD/Apple)
|
# Ollama — LLM-inferenssi
|
||||||
|
# NVIDIA: vaihda image → ollama/ollama:latest ja lisää deploy.resources (ks. README)
|
||||||
|
# CPU: vaihda image → ollama/ollama:latest ja poista devices
|
||||||
ollama:
|
ollama:
|
||||||
image: ollama/ollama:latest
|
image: ollama/ollama:rocm
|
||||||
container_name: kipina_ollama
|
container_name: kipina_ollama
|
||||||
ports:
|
ports:
|
||||||
- "11434:11434"
|
- "11434:11434"
|
||||||
volumes:
|
volumes:
|
||||||
- ollama-models:/root/.ollama
|
- ollama-models:/root/.ollama
|
||||||
deploy:
|
devices:
|
||||||
resources:
|
- /dev/kfd
|
||||||
reservations:
|
- /dev/dri
|
||||||
devices:
|
|
||||||
- driver: nvidia
|
|
||||||
count: all
|
|
||||||
capabilities: [gpu]
|
|
||||||
profiles:
|
profiles:
|
||||||
- native
|
- native
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "hub"
|
name = "hub"
|
||||||
version = "0.2.3"
|
version = "0.2.4"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@@ -8,17 +8,47 @@ pub struct LlmEngine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl LlmEngine {
|
impl LlmEngine {
|
||||||
pub fn load() -> Result<Self, String> {
|
pub async fn load() -> Result<Self, String> {
|
||||||
let ollama_url = std::env::var("OLLAMA_URL").unwrap_or_else(|_| "http://localhost:11434".to_string());
|
|
||||||
let model = std::env::var("OLLAMA_MODEL").unwrap_or_else(|_| "qwen2.5-coder:7b".to_string());
|
let model = std::env::var("OLLAMA_MODEL").unwrap_or_else(|_| "qwen2.5-coder:7b".to_string());
|
||||||
|
|
||||||
tracing::info!("Ollama backend: {} | malli: {}", ollama_url, model);
|
|
||||||
|
|
||||||
let client = reqwest::Client::builder()
|
let client = reqwest::Client::builder()
|
||||||
.timeout(std::time::Duration::from_secs(600))
|
.timeout(std::time::Duration::from_secs(600))
|
||||||
|
.connect_timeout(std::time::Duration::from_secs(3))
|
||||||
.build()
|
.build()
|
||||||
.map_err(|e| format!("HTTP client: {}", e))?;
|
.map_err(|e| format!("HTTP client: {}", e))?;
|
||||||
|
|
||||||
|
// Jos OLLAMA_URL on asetettu, käytetään sitä suoraan
|
||||||
|
let ollama_url = if let Ok(url) = std::env::var("OLLAMA_URL") {
|
||||||
|
tracing::info!("Ollama backend (env): {}", url);
|
||||||
|
url
|
||||||
|
} else {
|
||||||
|
// Haistellaan Ollamaa tunnetuista osoitteista
|
||||||
|
let candidates = [
|
||||||
|
"http://localhost:11434",
|
||||||
|
"http://127.0.0.1:11434",
|
||||||
|
"http://ollama:11434",
|
||||||
|
"http://host.docker.internal:11434",
|
||||||
|
];
|
||||||
|
let mut found = None;
|
||||||
|
for url in &candidates {
|
||||||
|
let probe = reqwest::Client::builder()
|
||||||
|
.connect_timeout(std::time::Duration::from_secs(2))
|
||||||
|
.build().unwrap_or(client.clone());
|
||||||
|
if let Ok(resp) = probe.get(format!("{}/api/version", url)).send().await {
|
||||||
|
if resp.status().is_success() {
|
||||||
|
tracing::info!("Ollama löytyi osoitteesta: {}", url);
|
||||||
|
found = Some(url.to_string());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
found.unwrap_or_else(|| {
|
||||||
|
tracing::warn!("Ollamaa ei löytynyt — käytetään oletusta http://localhost:11434");
|
||||||
|
"http://localhost:11434".to_string()
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
tracing::info!("Ollama backend: {} | malli: {}", ollama_url, model);
|
||||||
Ok(LlmEngine { ollama_url, model: RefCell::new(model), client })
|
Ok(LlmEngine { ollama_url, model: RefCell::new(model), client })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ async fn main() {
|
|||||||
|
|
||||||
// Ollama-backend
|
// Ollama-backend
|
||||||
tracing::info!("Alustetaan Ollama-yhteyttä...");
|
tracing::info!("Alustetaan Ollama-yhteyttä...");
|
||||||
let llm = match inference::LlmEngine::load() {
|
let llm = match inference::LlmEngine::load().await {
|
||||||
Ok(engine) => {
|
Ok(engine) => {
|
||||||
// Varmistetaan malli (ollama pull) — odotetaan kunnes valmis
|
// Varmistetaan malli (ollama pull) — odotetaan kunnes valmis
|
||||||
match engine.ensure_model().await {
|
match engine.ensure_model().await {
|
||||||
|
|||||||
@@ -2943,7 +2943,7 @@ ${staticHtml}
|
|||||||
${filesHtml}
|
${filesHtml}
|
||||||
|
|
||||||
<hr style="border-color:#30363d;margin:24px 0">
|
<hr style="border-color:#30363d;margin:24px 0">
|
||||||
<p style="color:#8b949e;font-size:12px">Generoitu Kipinä Agentic Playground v0.2.3 — <a href="https://kipina.studio">kipina.studio</a></p>
|
<p style="color:#8b949e;font-size:12px">Generoitu Kipinä Agentic Playground v0.2.4 — <a href="https://kipina.studio">kipina.studio</a></p>
|
||||||
</body></html>`;
|
</body></html>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user