Exécuter un modèle local avec le provider llama.cpp
Statut documentaire : roadmap — voir Maturité et preuves.
Cette page documente le nommage public cible du renommage du source. L’implémentation sous-jacente charge et génère déjà via llama.cpp ; les noms logiCells.LLM.LlamaCpp.* deviennent les noms canoniques une fois le renommage appliqué.
Prérequis
Il faut :
- une bibliothèque native llama.cpp compatible avec les bindings livrés pour la plateforme cible ;
- un fichier de modèle local accepté par cette build de llama.cpp ;
- une taille de contexte strictement positive ;
- le provider llama.cpp enregistré dans le registre de services LLM.
Identité du provider
logicells.llm.llama.cpp
Factory spécifique cible
L’API spécifique au provider devrait proposer une factory de commodité équivalente à :
service = CreateLlamaCppService(
modelPath,
contextSize = 8192,
useMMap = true)
Le code de plus haut niveau peut aussi résoudre la même capacité via le registre générique de providers.
Première requête
Le flux applicatif est :
service.Start()
request = {
prompt: "Explique le contexte conceptuel courant.",
maxTokens: 128,
onToken: streamer le texte généré,
onDone: observer la fin
}
requestId = service.Submit(request)
Le provider tokenize le prompt, le décode dans le contexte llama.cpp, échantillonne les tokens générés, convertit les fragments en texte UTF-8 valide puis les streame à l’appelant.
Stop et déchargement
Stop arrête l’ordonnancement des requêtes et annule le travail courant/en attente, mais conserve volontairement en mémoire le modèle et la session chargés avec succès. Un Start ultérieur peut donc réutiliser le modèle résident.
UnloadModel constitue la frontière explicite de libération des ressources et n’est valide que lorsque le service est arrêté. Reconfigurer un service arrêté vers un autre modèle, une autre taille de contexte ou un autre réglage mmap libère également la session résidente précédente.
Voir Cycle de vie du provider llama.cpp pour le modèle d’état détaillé.
Limites actuelles du contrat public
Le contrat de requête actuel expose le prompt et un budget maximal de tokens, mais pas encore toute la surface d’échantillonnage llama.cpp. Température, top-k/top-p, seed, séquences d’arrêt, chat templates et politiques de sampler par requête doivent être ajoutés via des options de génération indépendantes du provider plutôt que par des paramètres spécifiques à llama.cpp.