Selbst-Hosting eines Open-Source LLM für DiscourseAI

Das Discourse AI Plugin hat viele Funktionen, die ein LLM erfordern, um aktiviert zu werden, wie z.B. Zusammenfassung, KI-Helfer, KI-Suche, KI-Bot. Obwohl Sie eine Drittanbieter-API wie API-Schlüssel für OpenAI konfigurieren oder API-Schlüssel für Anthropic konfigurieren verwenden können, haben wir Discourse AI von Anfang an so entwickelt, dass es nicht an diese gebunden ist.

Ausführung mit HuggingFace TGI

HuggingFace bietet ein großartiges Container-Image, mit dem Sie schnell loslegen können.

Zum Beispiel:

mkdir -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

Sollte Ihnen eine lokale Instanz von Mistral 7B Instruct auf dem Localhost unter Port 8080 zur Verfügung stellen, die Sie testen können mit

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}}'

Ausführung mit vLLM

Eine weitere Option zum Self-Hosting von LLMs, die Discourse AI unterstützt, ist vLLM, ein sehr beliebtes Projekt unter der Apache License.

Hier erfahren Sie, wie Sie mit einem Modell beginnen:

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

Das Sie testen können mit

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}'

Verfügbarmachung für Ihre Discourse-Instanz

Meistens werden Sie dies aufgrund der GPU-Anforderungen auf einem dedizierten Server ausführen. Wenn Sie dies tun, empfehle ich die Ausführung eines Reverse-Proxys, der TLS-Terminierung durchführt und den Endpunkt sichert, sodass er nur von Ihrer Discourse-Instanz verbunden werden kann.

Konfiguration von DiscourseAI

Discourse AI liefert Site-Einstellungen zur Konfiguration des Inferenzservers für Open-Source-Modelle. Sie sollten ihn über ai_hugging_face_api_url oder ai_vllm_endpoint auf Ihren Server verweisen, je nachdem, welche Inferenzsoftware Sie gewählt haben.

Ändern Sie anschließend jedes Modul, um das von Ihnen ausgeführte Modell in den Modelleinstellungen zu verwenden, wie z.B.

  • ai_helper_model
  • ai_embeddings_semantic_search_hyde_model
  • summarization strategy
  • ai_bot_enabled_chat_bots
16 „Gefällt mir“

Für alle, die dieses Thema mit/für suchen:
#Llava-Api-keys

Ich benutze auch vLLM. Ich würde auch das OpenChat v3.5 0106-Modell empfehlen, ein Modell mit 7 Milliarden Parametern, das sehr gut funktioniert.

Ich lasse es tatsächlich in 4-Bit quantisiert laufen, damit es schneller läuft.

Ich weise diese Aufgabe einem Praktikanten zu. Gibt es Empfehlungen von jemandem, für welchen spezifischen Dienst er sich anmelden soll? Dies ist für einen Test. Der Praktikant hat derzeit einen Test mit OpenAI konfiguriert. Es funktioniert gut. Er ist daran interessiert, den HuggingFace TGI auszuprobieren, aber es scheint, dass ich ihm einen dedizierten Server mit GPU geben muss? Was sind die minimalen Spezifikationen für einen Test?

Gibt es Links, die ich dem Praktikanten geben kann?

Ich habe mich noch nicht eingehend mit diesem Projekt befasst. Ich antizipiere nur, dass der Praktikant einige Ressourcen benötigen wird, und ich versuche, einige vernünftige Empfehlungen zu Diensten für den Praktikanten bei der Recherche zu geben.

Hallo, während der Bereitstellung mit einem selbstsignierten Zertifikat vllm-Container auf einer GPU-Box on-prem, habe ich keine gute Möglichkeit gefunden, die Root CA zum Discourse-Container hinzuzufügen, damit er sicher auf diesen On-Prem-Dienst über HTTPS zugreifen kann.

z.B.:

./launcher enter app
curl -L https://vllm.infra.example.com/v1/models
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html

curl konnte die Legitimität des Servers nicht überprüfen und konnte daher keine sichere Verbindung zu ihm herstellen. Weitere Informationen zu dieser Situation und wie Sie sie beheben können, finden Sie auf der oben genannten Webseite.

Gibt es eine gute Möglichkeit, ein selbstsigniertes Root-CA-Zertifikat in den Discourse-Container einzufügen, das Container-Image-Updates übersteht?

Soweit ich weiß, würde das Hinzufügen in der app.yml

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

nur beim Erstellen/Neuerstellen der App gut funktionieren.

Jeder Hinweis ist willkommen.

14 Beiträge wurden in ein neues Thema aufgeteilt: Getting discourse ai to work with ollama locally