Portabilidad, licencia GPL-3.0 y diagrama del stack
Portabilidad (el repo estaba escrito como si solo sirviera para el portatil del autor): - num_gpu ya NO se fija en los Modelfile: Ollama reparte las capas segun la VRAM, asi el modelo va igual en GPU pequeña, grande o CPU. Se documenta cuando conviene fijarlo (solo tarjetas de 4 GB muy justas). - install.sh detecta el gestor de paquetes (apt/dnf/pacman/zypper) y la GPU (NVIDIA/AMD/ninguna), sin asumir Debian ni CUDA. - README reescrito: el hardware es una REFERENCIA (lo probado), no un requisito. Nueva seccion de portabilidad: cualquier distro, cualquier escritorio (ventanas necesitan X11+xdotool, degradan solas en Wayland), GPU opcional. - Eliminado config/jarvis-herramientas.json: llevaba rutas personales. Licencia: GPL-3.0 (copyleft). docs/stack.svg: diagrama del stack (oir-pensar-hacer-hablar), reemplaza el ASCII en el README. Anadido que el RAG sube la recuperacion de 48 a 82% (hit@1) medido.
This commit is contained in:
parent
3c94c1f375
commit
55e967b940
8 changed files with 864 additions and 4272 deletions
103
README.md
103
README.md
|
|
@ -2,39 +2,18 @@
|
|||
|
||||
Asistente de voz **100 % local** para Linux. Ni el micrófono, ni las
|
||||
conversaciones, ni el modelo salen de la máquina. Sin cuentas, sin claves, sin
|
||||
nube. Núcleo propio, escrito para caber en una tarjeta pequeña (NVIDIA T1200 de
|
||||
4 GB) y hacer lo que se le pide por voz, en castellano.
|
||||
nube. Núcleo propio, en castellano, que corre en **cualquier Linux** —de un
|
||||
portátil modesto a una torre— y aprovecha la GPU si la hay, o la CPU si no.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
-76B900)
|
||||

|
||||

|
||||

|
||||
|
||||
```
|
||||
┌───────────────────────────┐
|
||||
micrófono ─────>│ OÍDO whisper.cpp CUDA │ STT castellano
|
||||
│ sm_75 · small/GPU │ ~930 ms régimen
|
||||
└─────────────┬─────────────┘
|
||||
v
|
||||
apuntes propios ──> ┌───────────┐ ┌─────────────────────────┐
|
||||
(RAG) │ SABER │─>│ CEREBRO ollama │
|
||||
│ model2vec │ │ qwen3.5:4b · tool-call │
|
||||
│ +híbrido │ │ + RAG pasivo Y agéntico │
|
||||
└───────────┘ └─────────────┬───────────┘
|
||||
v
|
||||
┌───────────────┐ ┌──────────────────────┐
|
||||
altavoz <───────────│ BOCA Piper │<─│ MANOS │
|
||||
│ / voz clonada│ │ acciones + shell │
|
||||
└───────────────┘ └──────────────────────┘
|
||||
│
|
||||
┌───────────┴───────────────────────────┐
|
||||
│ CARA panel web · WebSocket · reactor │
|
||||
└────────────────────────────────────────┘
|
||||
todo en 127.0.0.1 · 0 llamadas a la nube
|
||||
```
|
||||

|
||||
|
||||

|
||||
|
||||
|
|
@ -46,7 +25,7 @@ acciones, y las métricas de rendimiento del propio asistente. Hay un
|
|||
|
||||
| Capa | Pieza | Papel |
|
||||
|---|---|---|
|
||||
| Oír | whisper.cpp (CUDA, sm_75) | STT en castellano, en la GPU |
|
||||
| Oír | whisper.cpp | STT en castellano (GPU si hay, si no CPU) |
|
||||
| Pensar | Ollama · `qwen3.5:4b` | el cerebro, con tool-calling |
|
||||
| Saber | model2vec + búsqueda híbrida | RAG sobre los apuntes del usuario |
|
||||
| Hablar | Piper (o voz clonada con XTTS) | TTS local |
|
||||
|
|
@ -56,36 +35,39 @@ acciones, y las métricas de rendimiento del propio asistente. Hay un
|
|||
Todo corre en `127.0.0.1`. No hay ninguna llamada a la nube en el uso normal; lo
|
||||
único que puede salir es una búsqueda web si el modelo decide usarla, y se avisa.
|
||||
|
||||
## Requisitos de hardware
|
||||
## Portabilidad
|
||||
|
||||
Referencia (el equipo del autor):
|
||||
Diseñado para correr en **cualquier Linux**, no en un equipo concreto:
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| GPU | NVIDIA T1200, **4 GB VRAM**, Turing (sm_75) |
|
||||
| RAM | 62 GB |
|
||||
| SO | Debian 12, GNOME sobre X11, PipeWire |
|
||||
| Distro | cualquiera. `install.sh` detecta apt / dnf / pacman / zypper |
|
||||
| GPU | **opcional**. Ollama reparte el modelo entre GPU y CPU solo: va con NVIDIA (CUDA), AMD (ROCm) o **solo CPU**. Ningún parámetro está atado a una tarjeta |
|
||||
| Escritorio | GNOME, KDE, lo que sea. Las acciones de **ventanas** necesitan X11 + `xdotool`; en Wayland esas órdenes se desactivan solas y el resto funciona igual |
|
||||
| Audio | PipeWire o PulseAudio |
|
||||
|
||||
La restricción que manda es la VRAM. El presupuesto, medido:
|
||||
**Requisito real:** que quepa el modelo. `qwen3.5:4b` va cómodo desde ~4 GB de
|
||||
VRAM; con menos, usa un modelo más pequeño (`qwen3.5:2b`) o tira de CPU (hay RAM
|
||||
de sobra). whisper.cpp se compila para tu plataforma —CUDA, ROCm, Metal o CPU—;
|
||||
la guía está en [`config/README_whisper_gpu.md`](config/README_whisper_gpu.md).
|
||||
|
||||
```
|
||||
┌──────────────────────────────────┬──────────┬───────────────────────┐
|
||||
│ COMPONENTE │ VRAM │ NOTA │
|
||||
├──────────────────────────────────┼──────────┼───────────────────────┤
|
||||
│ qwen3.5:4b (24/32 capas en GPU) │ 2177 MiB │ el cerebro │
|
||||
│ whisper small (PICO de la trans- │ 839 MiB │ el pico, no el reposo:│
|
||||
│ cripción) │ │ ahí estuvo el OOM │
|
||||
│ ── suma ── │ 3016 MiB │ cabe, con margen justo│
|
||||
└──────────────────────────────────┴──────────┴───────────────────────┘
|
||||
```
|
||||
### Ajuste en tarjetas pequeñas (4 GB)
|
||||
|
||||
Corre en menos con un modelo más pequeño; con más VRAM, sobra sitio.
|
||||
Solo si vas MUY justo de VRAM y el cerebro y whisper se pelean por ella: fijar
|
||||
`num_gpu 24` en el `Modelfile` reserva sitio a whisper. Está explicado en los
|
||||
comentarios del propio `Modelfile`. En una torre con una tarjeta normal **no
|
||||
hace falta tocar nada**.
|
||||
|
||||
### Probado en
|
||||
|
||||
NVIDIA T1200 (4 GB), 62 GB RAM, Debian 12 con GNOME/X11. Es el equipo del autor,
|
||||
el caso más ajustado; en una torre con más VRAM sobra sitio.
|
||||
|
||||
## Instalación
|
||||
|
||||
Necesita, en la máquina: [Ollama](https://ollama.com), whisper.cpp compilado con
|
||||
CUDA (ver [`config/README_whisper_gpu.md`](config/README_whisper_gpu.md)) y
|
||||
[Piper](https://github.com/rhasspy/piper).
|
||||
Necesita, en la máquina: [Ollama](https://ollama.com), whisper.cpp (compilado
|
||||
para tu plataforma, ver [`config/README_whisper_gpu.md`](config/README_whisper_gpu.md))
|
||||
y [Piper](https://github.com/rhasspy/piper).
|
||||
|
||||
```bash
|
||||
git clone https://gitea.laenre.net/hacklab/JARVIS.git
|
||||
|
|
@ -118,9 +100,13 @@ Habla en castellano, natural. **150 acciones** en el catálogo, agrupadas:
|
|||
|
||||
Si lo que pides no está en el catálogo, el modelo lo resuelve con un **comando de
|
||||
shell** (de solo lectura por defecto). Y si pregunta *cómo* se hace algo técnico,
|
||||
puede **buscar en tus apuntes** (RAG) antes de responder, para dar el comando que
|
||||
ya has probado en vez de inventarlo. El método, el pipeline y los resultados
|
||||
medidos están en [docs/rag.md](docs/rag.md).
|
||||
puede **buscar en tus apuntes** (RAG) antes de responder.
|
||||
|
||||
El RAG es lo que hace que el asistente dé el comando que **tú ya has probado** en
|
||||
vez de inventarse los flags. Y no es un adorno: medido sobre un conjunto de
|
||||
preguntas de pentesting, la recuperación sube de **hit@1 48 % → 82 %** y
|
||||
**hit@5 77 % → 95 %**. El método, el pipeline y esos números están en
|
||||
[docs/rag.md](docs/rag.md).
|
||||
|
||||
## Órdenes con root
|
||||
|
||||
|
|
@ -148,7 +134,7 @@ son del usuario, y el `.gitignore` los bloquea.
|
|||
|
||||
```
|
||||
nucleo/ el asistente (oido, cerebro, boca, manos, cara, saber)
|
||||
config/ configuración: modelo, voz, whisper CUDA
|
||||
config/ configuración: modelo, voz, whisper
|
||||
voz/ clonado de voz con XTTS y caché de frases
|
||||
entrena/ fine-tuning con QLoRA
|
||||
install.sh el instalador
|
||||
|
|
@ -156,11 +142,12 @@ install.sh el instalador
|
|||
|
||||
## Estado y limitaciones
|
||||
|
||||
Proyecto en desarrollo. Rugosidades conocidas: varios scripts de `config/` y
|
||||
`voz/` asumen rutas absolutas del entorno del autor (`~/COFRE/...`) y habría que
|
||||
hacerlas configurables; el fine-tuning de `entrena/` está pendiente de un ajuste
|
||||
para modelos multimodales.
|
||||
Proyecto en desarrollo. En el radar: acabar de generalizar los scripts de `voz/`
|
||||
(algunos aún asumen la disposición del autor), las acciones de ventanas sobre
|
||||
**Wayland** (hoy solo X11), y el fine-tuning de `entrena/`, pendiente de un
|
||||
ajuste para modelos multimodales.
|
||||
|
||||
## Licencia
|
||||
|
||||
Por decidir por el autor. El núcleo es código propio, no derivado.
|
||||
[GPL-3.0](LICENSE). Software libre y copyleft: si lo modificas y lo distribuyes,
|
||||
el resultado sigue siendo libre.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue