Autohosting di un OpenSource LLM per DiscourseAI

Il plugin Discourse AI dispone di molte funzionalità che richiedono l’abilitazione di un LLM, come, ad esempio, Riassunto, Aiuto AI, Ricerca AI, Bot AI. Sebbene sia possibile utilizzare un’API di terze parti, come Configura chiavi API per OpenAI o Configura chiavi API per Anthropic, abbiamo creato Discourse AI fin dal primo giorno per non essere vincolati a questi.

Esecuzione con HuggingFace TGI

HuggingFace fornisce un’immagine container eccezionale che ti permette di essere operativo rapidamente.

Ad esempio:

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

Dovrebbe metterti in funzione con un’istanza locale di Mistral 7B Instruct su localhost alla porta 8080, che può essere testata con

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

Esecuzione con vLLM

Un’altra opzione per auto-ospitare LLM supportati da Discourse AI è vLLM, che è un progetto molto popolare, concesso in licenza secondo la licenza Apache.

Ecco come iniziare con un modello:

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

Che puoi testare con

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

Rendilo disponibile per la tua istanza Discourse

Nella maggior parte dei casi, eseguirai questo su un server dedicato a causa del requisito della GPU. Quando lo fai, consiglio di eseguire un proxy inverso, eseguire la terminazione TLS e proteggere l’endpoint in modo che possa essere connesso solo dalla tua istanza Discourse.

Configurazione di DiscourseAI

Discourse AI fornisce impostazioni del sito per configurare il server di inferenza per i modelli open source. Dovresti puntarlo al tuo server utilizzando ai_hugging_face_api_url o ai_vllm_endpoint in base al software di inferenza che hai scelto.

Successivamente, modifica ciascun modulo per utilizzare il modello che stai eseguendo, nelle impostazioni di selezione del modello, come

  • ai_helper_model
  • ai_embeddings_semantic_search_hyde_model
  • summarization strategy
  • ai_bot_enabled_chat_bots
16 Mi Piace

Per chiunque cerchi questo argomento con/per:
#Llava-Api-keys

Anch’io sto usando vLLM. Consiglierei anche il modello openchat v3.5 0106, che è un modello da 7 miliardi di parametri che offre prestazioni molto elevate.

In realtà lo sto eseguendo con quantizzazione a 4 bit in modo che funzioni più velocemente.

Sto assegnando questo compito a uno stagista. Ci sono raccomandazioni da parte di qualcuno su quale servizio specifico iscriversi? Questo è per un test. Lo stagista ha attualmente un test configurato con OpenAI. Funziona bene. Sono interessati a provare HuggingFace TGI, ma sembra che io debba dare loro un server dedicato con GPU? Quali sono le specifiche minime per un test?

Ci sono link che posso dare allo stagista?

Non ho ancora esaminato questo progetto in profondità. Sto solo anticipando che lo stagista avrà bisogno di alcune risorse e sto cercando di fare alcune raccomandazioni ragionevoli sui servizi per lo stagista nella ricerca.

Ciao, mentre esponevo con un certificato autofirmato un container vllm su una GPU box on-prem, non ho trovato un buon modo per aggiungere la Root CA al container di discourse in modo che possa accedere in modo sicuro a questo servizio on-prem tramite https.

ad esempio:

./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 non è riuscito a verificare la legittimità del server e quindi non ha potuto stabilire una connessione sicura. Per saperne di più su questa situazione e su come risolverla, visita la pagina web menzionata sopra.

C’è un buon modo per aggiungere un certificato root ca autofirmato nel container discourse che sopravviva agli aggiornamenti dell’immagine del container?

Per quanto ne so, aggiungerlo in app.yml

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

funzionerebbe bene solo durante la creazione/ricreazione dell’app.

Qualsiasi suggerimento è benvenuto.

14 messaggi sono stati divisi in un nuovo argomento: Getting discourse ai to work with ollama locally