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.
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)
- 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é.
| 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 |
| Durée / réponse | |
|---|---|
| Avant (F32 naïf, sans opti) | ~30 s |
| OrbitNet optimisé (FP16) | ~3–8 s (Pi 5) |
- Matériel : Raspberry Pi 5 (8 Go)
- RAM utilisée : ≈ 3 Go RSS
- CPU : 1 core saturé
- Modèle : TinyLLaMA-1.1B-Chat v1.0
- Librairie : Candle 0.9
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 🧠⚡
📆 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- Méthode :
POST - Payload :
{
"prompt": "Hello!",
"max_len": 64
}- Réponse :
{
"output": "Hi! How can I help you?"
}- Compilé en WebAssembly avec
trunk - Comportement type ChatGPT
- Injection dynamique de l’URL de l’API via la variable
API_URL(à build‑time)
# .env requis (non versionné)
HF_TOKEN=hf_XXXXXXXXXXXXXXXXXX
API_URL=https://api.xxxxxxxx
# Lancement
make build
make upLe Makefile gère automatiquement les builds ARM64 compatibles Raspberry Pi.
L’API et le front sont exposés publiquement via :
- 🔐 TLS automatique
- 🌎 DNS personnalisé
*.orbitnet-labs.net - 🛡️ Aucun port ouvert directement
MIT — open source, réutilisable, modifiable.
Made with 🦀 + ☕ + ❤️ by OrbitNet Pour un numérique léger, local et souverain.