Skip to content

LLM ultra-léger optimisé pour Raspberry Pi 5 — Rust + Candle + Axum + Yew, avec moins de 3 Go de RAM et des réponses en 3–8 s sans GPU.

LuuNa-JD/tinybot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TinyBot — LLM ultra‑léger pour Raspberry Pi

Maintenu par OrbitNet‑Labs — démonstration d’un chatbot LLM fluide et économe sur CPU ARM64 grâce à Rust, Candle et quelques optimisations ciblées.


✨ Objectif

Faire tourner un modèle de langage sur un Raspberry Pi ? Sans GPU, sans AVX, sans compromis UX ? Oui. Et ça marche. Open test : https://tinybot.orbitnet-labs.net (pas tout le temps online)

Ce projet démontre que :

  • un modèle TinyLLaMA‑1.1B‑Chat peut tourner raisonnablement sur Pi 5
  • les optimisations Rust + Candle suffisent pour une expérience fluide
  • avec 3 Go de RAM et un seul core, on a déjà des réponses en ~3–8 s

TinyBot = légèreté, performance, souveraineté.


⚙️ Techniques utilisées

Optimisation Gain estimé Implémentation
FP16 −30 % RAM, −20 % lat. DType::F16 via VarBuilder
Chargement unique du modèle −5–8 s Arc<Llm> + axum::with_state
Sampler ArgMax −20 % latence Sampling::ArgMax
max_len ≤ 64 linéaire (O(n)) borne hardcodée
-C target-cpu=native +10–15 % perf RUSTFLAGS dans le Dockerfile
Mmap safetensors charge paresseuse Candle default

🚀 Performances

Durée / réponse
Avant (F32 naïf, sans opti) ~30 s
OrbitNet optimisé (FP16) ~3–8 s (Pi 5)

Résultat : un petit LLM rustique mais instantanément utilisable pour des prompts courts. Idéal en embarqué, edge AI, ou démo souveraine low‑power 🧠⚡


🧩 Structure du projet

📆 tinybot-lab/
├— candle-backend/     # API Rust Axum + Candle (inférence LLM)
├— front/    # UI Yew + WASM (compilé avec trunk)
├— docker-compose.yml  # Configuration Docker Compose
├— Makefile      # Build et déploiement Docker
└— README.md

📟 API /generate

  • Méthode : POST
  • Payload :
{
  "prompt": "Hello!",
  "max_len": 64
}
  • Réponse :
{
  "output": "Hi! How can I help you?"
}

💻 Frontend (Yew + WASM)

  • Compilé en WebAssembly avec trunk
  • Comportement type ChatGPT
  • Injection dynamique de l’URL de l’API via la variable API_URL (à build‑time)

🐳 Déploiement rapide avec Docker Compose

# .env requis (non versionné)
HF_TOKEN=hf_XXXXXXXXXXXXXXXXXX
API_URL=https://api.xxxxxxxx

# Lancement
make build
make up

Le Makefile gère automatiquement les builds ARM64 compatibles Raspberry Pi.


🌐 Cloudflare Tunnel

L’API et le front sont exposés publiquement via :

  • 🔐 TLS automatique
  • 🌎 DNS personnalisé *.orbitnet-labs.net
  • 🛡️ Aucun port ouvert directement

📄 Licence

MIT — open source, réutilisable, modifiable.


🚨 Crédit

Made with 🦀 + ☕ + ❤️ by OrbitNet Pour un numérique léger, local et souverain.

About

LLM ultra-léger optimisé pour Raspberry Pi 5 — Rust + Candle + Axum + Yew, avec moins de 3 Go de RAM et des réponses en 3–8 s sans GPU.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published