Implementación de Open LLMs con el servidor LLAMA-CPP: una guía paso a paso

Implementación de Open LLMs con el servidor LLAMA-CPP: una guía paso a paso. Aprende a instalar y configurar el servidor LLAMA-CPP para servir modelos de lenguaje de gran tamaño de código abierto, haciendo solicitudes a través de cURL, el cliente de OpenAI y el paquete de solicitudes de Python. Optimiza para implementación local y remota.

18 de octubre de 2024

party-gif

Desbloquea el poder de los modelos de lenguaje de código abierto (LLM) a gran escala con esta guía completa sobre la implementación del servidor LLAMA-CPP. Descubre cómo atender de manera eficiente a múltiples usuarios con un solo LLM, optimizando el rendimiento y la accesibilidad de tus aplicaciones impulsadas por IA.

Instalación de LLAMA-CPP

La forma más sencilla de comenzar con LLAMA-CPP es usar el administrador de paquetes Homebrew para instalarlo. Esto funcionará de forma nativa tanto en máquinas macOS como Linux. Para instalar LLAMA-CPP en una máquina Windows, deberá usar el Subsistema de Windows para Linux (WSL).

Para instalar LLAMA-CPP usando Homebrew, ejecute el siguiente comando en su terminal:

brew install llama-cpp

Este comando descargará e instalará el paquete LLAMA-CPP en su sistema. Una vez que se complete la instalación, puede comenzar a usar el comando llama-server para servir sus modelos de LLM.

Inicio del servidor LLAMA-CPP

Para iniciar el servidor LLAMA-CPP, siga estos pasos:

  1. Instale LLAMA-CPP usando el administrador de paquetes Homebrew:

    brew install llama.cpp
    

    Este comando instalará LLAMA-CPP en su Mac o máquina Linux. Para los usuarios de Windows, deberá usar WSL (Subsistema de Windows para Linux) para instalar LLAMA-CPP.

  2. Inicie el servidor LLAMA-CPP ejecutando el siguiente comando:

    llama-server --model <hugging-face-repo-id> --model-file <quantization-file>
    

    Reemplace <hugging-face-repo-id> con el ID del repositorio de Hugging Face del modelo que desea servir, y <quantization-file> con el archivo de cuantización específico que desea usar (por ejemplo, la versión cuantizada de 4 bits en formato GGML).

  3. El servidor LLAMA-CPP comenzará a escuchar las solicitudes entrantes en localhost:8080 de forma predeterminada. Puede personalizar la dirección del host y el puerto usando las opciones disponibles, como --host y --port.

  4. El servidor admite varias opciones de configuración, incluido el establecimiento de la ventana de contexto máxima, el tamaño del lote y más. Puede explorar estas opciones ejecutando llama-server --help.

  5. Una vez que el servidor esté en ejecución, puede interactuar con él usando diferentes métodos, como cURL, el cliente de OpenAI o el paquete Python requests, como se muestra en las secciones anteriores.

Realización de solicitudes al servidor LLAMA-CPP

Hay varias formas de interactuar con el servidor LLAMA-CPP y hacer solicitudes al modelo servido:

  1. Usando el comando cURL:

    curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello, how are you?", "max_tokens": 50}' http://localhost:8080/v1/chat/completions
    

    Esto hará una solicitud POST al punto final de finalización de chat que se ejecuta en el host local en el puerto 8080.

  2. Usando el cliente de OpenAI:

    1import openai 2 3openai.api_base = "http://localhost:8080/v1" 4openai.Model.list() 5 6response = openai.ChatCompletion.create( 7 model="chat-gpt-3.5", 8 messages=[ 9 {"role": "system", "content": "You are a helpful assistant."}, 10 {"role": "user", "content": "Hello, how are you?"} 11 ] 12) 13 14print(response.choices[0].message.content)

    Esto usa el cliente de OpenAI para interactuar con el servidor LLAMA-CPP, que es compatible con la API de OpenAI.

  3. Usando el paquete Python Requests:

    1import requests 2 3url = "http://localhost:8080/v1/chat/completions" 4headers = {"Content-Type": "application/json"} 5data = { 6 "prompt": "Hello, how are you?", 7 "max_tokens": 50 8} 9 10response = requests.post(url, headers=headers, json=data) 11print(response.json())

    Esto usa el paquete Python Requests para hacer una solicitud POST al punto final de finalización de chat.

Personalización del servidor LLAMA-CPP

LLAMA-CPP proporciona un servidor altamente personalizable que le permite ajustar el comportamiento de su implementación de LLM. Aquí hay algunas de las principales opciones que puede configurar:

  1. Ventana de contexto máxima: Puede definir el tamaño máximo de la ventana de contexto para el LLM, lo que determina la longitud máxima de la secuencia de entrada que el modelo puede procesar.

  2. Tamaño del lote: LLAMA-CPP admite el procesamiento por lotes de indicaciones, lo que le permite procesar múltiples entradas simultáneamente para mejorar el rendimiento. Puede configurar el tamaño del lote para optimizar el rendimiento.

  3. Dirección del host: De forma predeterminada, el servidor LLAMA-CPP escucha en localhost, pero puede cambiar la dirección del host para que el servidor sea accesible desde otras máquinas de su red.

  4. Puerto: El servidor escucha en el puerto 8080 de forma predeterminada, pero puede especificar un puerto diferente si es necesario.

  5. Ruta del modelo: LLAMA-CPP le permite personalizar la ruta desde la que carga los archivos del modelo LLM, lo que le da flexibilidad en la organización de sus activos de modelo.

  6. Modelos de incrustación: Además de los modelos de lenguaje, LLAMA-CPP también puede servir modelos de incrustación, lo que le permite integrar capacidades de generación de texto y codificación de texto en sus aplicaciones.

  7. Seguimiento de métricas: El servidor LLAMA-CPP puede rastrear varias métricas, como la latencia y el rendimiento de las solicitudes, para ayudarlo a monitorear y optimizar el rendimiento de su implementación.

Interacción con el servidor LLAMA-CPP utilizando diferentes métodos

Para interactuar con el servidor LLAMA-CPP, podemos usar varios métodos:

  1. Usando el comando cURL:

    • Hacer una solicitud POST al punto final de finalización de chat que se ejecuta en localhost.
    • Proporcionar los encabezados necesarios y el objeto de datos que contiene la indicación y el número deseado de tokens a generar.
    • La respuesta incluirá el texto generado, así como información sobre el proceso de generación, como temperatura, top-P, top-K y tokens predichos por segundo.
  2. Usando el cliente de OpenAI:

    • Crear un cliente de OpenAI con la URL base establecida en la URL del servidor local LLAMA-CPP.
    • Usar el cliente de finalización de chat y proporcionar el nombre del modelo (por ejemplo, chat-gpt-3.5).
    • Establecer la indicación del sistema y la indicación del usuario, luego hacer la solicitud al servidor.
    • La respuesta se devolverá con el mismo formato que la API de OpenAI.
  3. Usando el paquete Requests (Python):

    • Definir la URL y los encabezados para la solicitud POST.
    • Pasar múltiples mensajes diferentes al servidor y observar cómo procesa las solicitudes de forma concurrente.
    • El servidor pondrá en cola las solicitudes y las procesará una por una, sin saturarse.

Conclusión

En este video, hemos explorado la instalación y el uso de LlamaCPP, un poderoso proyecto de código abierto para servir modelos de lenguaje de gran tamaño de código abierto. Hemos aprendido cómo instalar LlamaCPP en nuestra máquina local, iniciar el servidor e interactuar con él usando varios métodos, incluidos cURL, el cliente de OpenAI y el paquete de solicitudes de Python.

También hemos discutido las diversas opciones de configuración disponibles en LlamaCPP, lo que nos permite personalizar el servidor a nuestras necesidades específicas, como establecer la ventana de contexto máxima, el tamaño del lote y la dirección del host. Además, hemos visto cómo LlamaCPP puede rastrear métricas, lo que lo convierte en una opción adecuada para entornos de producción.

Finalmente, hemos tocado las aplicaciones prácticas de LlamaCPP, particularmente en el contexto de implementar modelos de lenguaje de gran tamaño para varios casos de uso. Hemos mencionado el marco Rasa como una aplicación potencial y hemos proporcionado un enlace a un curso relacionado en la descripción del video.

En general, este video ha proporcionado una introducción integral a LlamaCPP y sus capacidades, equipándolo con el conocimiento para comenzar a servir modelos de lenguaje de gran tamaño de código abierto en su máquina local o en un entorno de producción.

Preguntas más frecuentes