Serveur d'inférence IA local léger, un seul binaire de seulement 5 Mo, offrant une interface compatible avec l'API OpenAI, prenant en charge les modèles GGUF et les adaptateurs LoRA.
Shimmy - Serveur d'inférence IA local ultra-léger
Aperçu du projet
Shimmy est un serveur d'inférence local à binaire unique de 5,1 Mo qui fournit des points de terminaison compatibles avec l'API OpenAI pour les modèles GGUF. Il est conçu comme une "infrastructure invisible" pour rendre le développement d'IA locale sans friction.
Fonctionnalités clés
🚀 Extrêmement léger
- Taille du binaire: Seulement 5,1 Mo (contre 680 Mo pour Ollama)
- Temps de démarrage: <100 ms (contre 5-10 secondes pour Ollama)
- Empreinte mémoire: <50 Mo (contre 200 Mo+ pour Ollama)
🔧 Fonctionnement sans configuration
- Allocation automatique de port: Évite les conflits de port
- Découverte automatique de modèles: Prend en charge plusieurs sources de modèles
- Cache Hugging Face:
~/.cache/huggingface/hub/
- Modèles Ollama:
~/.ollama/models/
- Répertoire local:
./models/
- Variable d'environnement:
SHIMMY_BASE_GGUF=path/to/model.gguf
- Cache Hugging Face:
🎯 Compatibilité parfaite
- 100% compatible avec l'API OpenAI: Remplace directement les outils existants
- Prêt à l'emploi: Outils comme VSCode, Cursor, Continue.dev ne nécessitent aucune modification
- Support multiplateforme: Linux, macOS, Windows
Architecture technique
Pile technologique principale
- Langage: Rust + Tokio (sécurité mémoire, performances asynchrones)
- Moteur d'inférence: Backend llama.cpp (inférence GGUF standard de l'industrie)
- Conception de l'API: Compatible OpenAI (remplacement plug-and-play)
Formats de modèles pris en charge
- Modèles GGUF: Format de support principal
- SafeTensors: Support natif, vitesse de chargement multipliée par 2
- Adaptateurs LoRA: Support de premier ordre, du modèle entraîné à l'API de production en seulement 30 secondes
Installation et utilisation
Installation rapide
Méthode 1: Via Cargo
cargo install shimmy
Méthode 2: Télécharger le binaire pré-construit (Windows)
curl -L https://github.com/Michael-A-Kuykendall/shimmy/releases/latest/download/shimmy.exe
Méthode 3: Installation macOS
# Installer les dépendances
brew install cmake rust
# Installer shimmy
cargo install shimmy
Utilisation de base
1. Télécharger un modèle
# Télécharger des modèles compatibles
huggingface-cli download microsoft/Phi-3-mini-4k-instruct-gguf --local-dir ./models/
huggingface-cli download bartowski/Llama-3.2-1B-Instruct-GGUF --local-dir ./models/
2. Démarrer le serveur
# Allocation automatique de port
shimmy serve
# Spécifier le port manuellement
shimmy serve --bind 127.0.0.1:11435
3. Configurer les outils IA
Configuration VSCode:
{
"github.copilot.advanced": {
"serverUrl": "http://localhost:11435"
}
}
Configuration Continue.dev:
{
"models": [{
"title": "Local Shimmy",
"provider": "openai",
"model": "your-model-name",
"apiBase": "http://localhost:11435/v1"
}]
}
Outils en ligne de commande
Commandes de base
shimmy serve # Démarrer le serveur (allocation automatique de port)
shimmy serve --bind 127.0.0.1:8080 # Liaison de port manuelle
shimmy list # Afficher les modèles disponibles
shimmy discover # Actualiser la découverte de modèles
shimmy generate --name X --prompt "Hi" # Tester la génération
shimmy probe model-name # Vérifier le chargement du modèle
Points de terminaison de l'API
Points de terminaison principaux
GET /health
- Vérification de l'état de santéPOST /v1/chat/completions
- Chat compatible OpenAIGET /v1/models
- Lister les modèles disponiblesPOST /api/generate
- API native ShimmyGET /ws/generate
- Streaming WebSocket
Exemple d'utilisation
# Tester l'API
curl -X POST http://localhost:11435/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "your-model",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Comparaison des performances
Métrique | Shimmy | Ollama | llama.cpp |
---|---|---|---|
Taille du binaire | 5,1 Mo 🏆 | 680 Mo | 89 Mo |
Temps de démarrage | <100 ms 🏆 | 5-10 s | 1-2 s |
Utilisation de la mémoire | 50 Mo 🏆 | 200 Mo+ | 100 Mo |
API OpenAI | 100% 🏆 | Support partiel | Aucun |
Avantages clés
🔒 Priorité à la confidentialité
- Le code reste sur la machine locale
- Aucun risque de fuite de données
- Fonctionnement entièrement hors ligne
💰 Rentabilité
- Pas de facturation par jeton
- Nombre illimité de requêtes
- Une seule installation, utilisation permanente
⚡ Performances excellentes
- Inférence locale, réponse en moins d'une seconde
- Faible consommation de mémoire
- Démarrage rapide
🔄 Déploiement flexible
- Fichier binaire unique
- Aucune dépendance externe
- Compatible multiplateforme
Fonctionnalités étendues
Support des adaptateurs LoRA
Shimmy offre un support de premier ordre pour les adaptateurs LoRA, permettant un déploiement rapide des modèles entraînés vers une API de production :
# Charger un adaptateur LoRA
shimmy serve --lora-adapter path/to/adapter
Changement de modèle à chaud
Prend en charge le changement dynamique de modèle pendant l'exécution, sans redémarrer le serveur.
Accélération GPU
- macOS: Accélération GPU Metal automatique
- Multiplateforme: Prend en charge divers backends GPU
Communauté et support
Ressources communautaires
- Rapports de bugs: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: docs/
- Sponsorisation: GitHub Sponsors
Résumé
Shimmy est une solution révolutionnaire d'inférence IA locale qui prouve que parfois "moins, c'est plus". Grâce à sa conception ultra-légère et à son concept de zéro configuration, Shimmy offre aux développeurs une infrastructure IA locale véritablement "prête à l'emploi", tout en maintenant des performances et une compatibilité de niveau entreprise. Que vous soyez un développeur d'applications IA, un chercheur ou un utilisateur soucieux de sa vie privée, Shimmy est un excellent choix à considérer.