Autoalojamiento de un LLM de código abierto para DiscourseAI

El plugin Discourse AI tiene muchas funciones que requieren un LLM habilitado, como, por ejemplo, Resumen, Ayudante de IA, Búsqueda de IA, Bot de IA. Si bien puedes usar una API de terceros, como Configurar claves API para OpenAI o Configurar claves API para Anthropic, construimos Discourse AI desde el primer día para no estar atados a ellos.

Ejecutando con HuggingFace TGI

HuggingFace proporciona una imagen de contenedor impresionante que puede ponerte en marcha rápidamente.

Por ejemplo:

mkdír -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

Debería ponerte en marcha con una instancia local de Mistral 7B Instruct en localhost en el puerto 8080, que se puede probar 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}}'

Ejecutando con vLLM

Otra opción para autoalojar LLMs que Discourse AI soporta es vLLM, que es un proyecto muy popular, licenciado bajo la Licencia Apache.

Aquí te explicamos cómo empezar con un modelo:

mkdír -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 puedes probar 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}'

Haciéndolo disponible para tu instancia de Discourse

La mayoría de las veces ejecutarás esto en un servidor dedicado debido al requisito de GPU. Al hacerlo, recomiendo ejecutar un proxy inverso, realizar la terminación TLS y asegurar el endpoint para que solo pueda ser conectado por tu instancia de Discourse.

Configurando DiscourseAI

Discourse AI incluye configuraciones del sitio para configurar el servidor de inferencia para modelos de código abierto. Deberías apuntarlo a tu servidor usando ai_hugging_face_api_url o ai_vllm_endpoint según el software de inferencia que hayas elegido.

Después de eso, cambia cada módulo para usar el modelo que estás ejecutando, en la configuración de selección de modelos, como

  • ai_helper_model
  • ai_embeddings_semantic_search_hyde_model
  • summarization strategy
  • ai_bot_enabled_chat_bots
16 Me gusta

Para cualquiera que busque este tema con/para:
#Llava-Api-keys

Yo también uso vLLM. También recomendaría el modelo openchat v3.5 0106, que es un modelo de 7B parámetros que funciona muy bien.

De hecho, lo estoy ejecutando en 4 bits cuantizados para que funcione más rápido.

Estoy asignando esta tarea a un pasante. ¿Hay alguna recomendación de alguien sobre qué servicio específico contratar? Esto es para una prueba. El pasante actualmente tiene una prueba configurada con OpenAI. Funciona bien. Están interesados en probar HuggingFace TGI, pero parece que necesito darles un servidor dedicado con GPU. ¿Cuáles son las especificaciones mínimas para una prueba?

¿Hay enlaces que pueda dar al pasante?

Aún no he analizado este proyecto en profundidad. Solo anticipo que el pasante necesitará algunos recursos y estoy tratando de hacer algunas recomendaciones razonables sobre servicios para que el pasante investigue.

Hola, al exponer con un certificado autofirmado el contenedor vllm en una caja de GPU on-prem, no encontré una buena manera de agregar la CA raíz al contenedor de discourse para que pueda acceder de forma segura a este servicio on-prem a través de https.

por ejemplo:

./launcher enter app
curl -L https://vllm.infra.example.com/v1/models
curl: (60) problema de certificado SSL: no se puede obtener el certificado del emisor local
Más detalles aquí: https://curl.se/docs/sslcerts.html

curl no pudo verificar la legitimidad del servidor y, por lo tanto, no pudo
establecer una conexión segura con él. Para obtener más información sobre esta situación y
cómo solucionarlo, visite la página web mencionada anteriormente.

¿Hay alguna buena manera de agregar un certificado de CA raíz autofirmado en el contenedor de discourse que sobreviva a las actualizaciones de la imagen del contenedor?

Hasta donde sé, agregarlo en el app.yml

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

solo funcionaría bien durante la compilación/recompilación de la aplicación.

Cualquier pista es bienvenida.

14 publicaciones se dividieron en un nuevo tema: Hacer que discourse ai funcione con ollama localmente