Héberger soi-même un LLM open source pour DiscourseAI

Le plugin Discourse AI possède de nombreuses fonctionnalités qui nécessitent l’activation d’un LLM, comme, par exemple, la Synthèse, l’Assistant IA, la Recherche IA, le Bot IA. Bien que vous puissiez utiliser une API tierce, comme Configurer les clés API pour OpenAI ou Configurer les clés API pour Anthropic, nous avons conçu Discourse AI dès le premier jour pour ne pas être limité à ceux-ci.

Exécution avec HuggingFace TGI

HuggingFace fournit une image de conteneur impressionnante qui peut vous permettre de démarrer rapidement.

Par exemple :

mkcdir -p /opt/tgi-cache
docker run --rm --gpus all --shm-size 1g -p 8080:80 \
  -v /opt/tgi-cache:/data \
  ghcr.io/huggingface/text-generation-inference:latest \
  --model-id mistralai/Mistral-7B-Instruct-v0.2

Devrait vous permettre de démarrer avec une instance locale de Mistral 7B Instruct sur le localhost au port 8080, qui peut être testée avec

curl http://localhost:8080/ \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"inputs":"<s>[INST] What is your favourite condiment? [/INST] Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!</s> [INST] Do you have mayonnaise recipes? [/INST]","parameters":{"max_new_tokens":500, "temperature":0.5,"top_p": 0.9}}'

Exécution avec vLLM

Une autre option pour auto-héberger des LLM que Discourse AI prend en charge est vLLM, qui est un projet très populaire, sous licence Apache.

Voici comment démarrer avec un modèle :

mkdir -p /opt/vllm-cache
docker run --gpus all \
  -v /opt/vllm-cache:/root/.cache/huggingface \
  -e "MODEL=mistralai/Mistral-7B-Instruct-v0.2" \
  -p 8080:8000 --ipc=host vllm/vllm-openai:latest

Que vous pouvez tester avec

curl -X POST http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.2",
"prompt": "<s> [INST] What was the latest released hero for Dota 2? [/INST] The latest released hero for Dota 2 was", "max_tokens": 200}'

Rendre disponible pour votre instance Discourse

La plupart du temps, vous exécuterez cela sur un serveur dédié en raison de l’exigence de GPU. Lorsque vous le faites, je recommande d’exécuter un proxy inverse, d’effectuer la terminaison TLS et de sécuriser le point de terminaison afin qu’il ne puisse être connecté que par votre instance Discourse.

Configuration de DiscourseAI

Discourse AI fournit des paramètres de site pour configurer le serveur d’inférence pour les modèles open source. Vous devriez le pointer vers votre serveur en utilisant soit ai_hugging_face_api_url, soit ai_vllm_endpoint selon le logiciel d’inférence que vous avez choisi.

Après cela, modifiez chaque module pour utiliser le modèle que vous exécutez, dans les paramètres de sélection du modèle, comme

  • ai_helper_model
  • ai_embeddings_semantic_search_hyde_model
  • summarization strategy
  • ai_bot_enabled_chat_bots
16 « J'aime »

Pour toute personne recherchant ce sujet avec/pour :
#Llava-Api-keys

J’utilise également vLLM. Je recommanderais également le modèle openchat v3.5 0106, qui est un modèle de 7 milliards de paramètres et qui fonctionne très bien.

Je l’exécute en fait en 4 bits quantifiés pour qu’il s’exécute plus rapidement.

J’attribue cette tâche à un stagiaire. Y a-t-il des recommandations de qui que ce soit sur le service spécifique à souscrire ? Ceci est pour un test. Le stagiaire a actuellement un test configuré avec OpenAI. Cela fonctionne bien. Il/elle souhaite essayer le TGI HuggingFace, mais il semble que je doive lui fournir un serveur dédié avec GPU ? Quelles sont les spécifications minimales pour un test ?

Existe-t-il des liens que je peux donner au stagiaire ?

Je n’ai pas encore examiné ce projet en profondeur. J’anticipe simplement que le stagiaire aura besoin de certaines ressources et j’essaie de faire des recommandations raisonnables sur les services pour que le stagiaire fasse des recherches.

Salut, en exposant avec un certificat auto-signé dans un conteneur vllm sur une boîte GPU sur site, je n’ai pas trouvé de bon moyen d’ajouter le CA racine au conteneur discourse afin qu’il puisse accéder en toute sécurité à ce service sur site via HTTPS.

Par exemple :

./launcher enter app
curl -L https://vllm.infra.example.com/v1/models
curl: (60) Problème de certificat SSL : impossible d'obtenir le certificat de l'émetteur local
Plus de détails ici : https://curl.se/docs/sslcerts.html

curl n'a pas pu vérifier la légitimité du serveur et n'a donc pas pu
établir de connexion sécurisée avec lui. Pour en savoir plus sur cette situation et
comment la résoudre, veuillez visiter la page Web mentionnée ci-dessus.

Existe-t-il un bon moyen d’ajouter un certificat racine auto-signé dans le conteneur discourse qui survivrait aux mises à jour de l’image du conteneur ?

Pour autant que je sache, l’ajouter dans le fichier app.yml

run:
  - exec: wget ... && update-ca-certificates

ne fonctionnerait bien que lors de la construction/reconstruction de l’application.

Toute suggestion est la bienvenue.

14 messages ont été déplacées vers un nouveau sujet : Faire fonctionner discourse ai avec ollama localement