Развёртывание Open LLMs с помощью LLAMA-CPP Server: пошаговое руководство

Развертывание Open LLMs с помощью LLAMA-CPP Server: пошаговое руководство. Узнайте, как установить и настроить сервер LLAMA-CPP для обслуживания открытых языковых моделей, делая запросы через cURL, клиент OpenAI и пакет Python's requests. Оптимизируйте для локального и удаленного развертывания.

24 февраля 2025 г.

party-gif

Раскройте силу открытых крупномасштабных языковых моделей (LLM) с помощью этого всеобъемлющего руководства по развертыванию сервера LLAMA-CPP. Узнайте, как эффективно обслуживать нескольких пользователей с помощью одной LLM, оптимизируя производительность и доступность для ваших приложений, работающих на базе ИИ.

Установка LLAMA-CPP

Самый простой способ начать работу с LLAMA-CPP - использовать менеджер пакетов Homebrew для его установки. Это будет работать нативно как на macOS, так и на Linux-машинах. Для установки LLAMA-CPP на Windows-машине вам потребуется использовать Windows Subsystem for Linux (WSL).

Чтобы установить LLAMA-CPP с помощью Homebrew, выполните следующую команду в терминале:

brew install llama-cpp

Эта команда загрузит и установит пакет LLAMA-CPP на вашу систему. После завершения установки вы можете начать использовать команду llama-server для запуска ваших моделей LLM.

Запуск сервера LLAMA-CPP

Чтобы запустить сервер LLAMA-CPP, выполните следующие шаги:

  1. Установите LLAMA-CPP с помощью менеджера пакетов Homebrew:

    brew install llama.cpp
    

    Эта команда установит LLAMA-CPP на ваш Mac или Linux-машину. Для пользователей Windows вам потребуется использовать WSL (Windows Subsystem for Linux) для установки LLAMA-CPP.

  2. Запустите сервер LLAMA-CPP, выполнив следующую команду:

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

    Замените <hugging-face-repo-id> на идентификатор репозитория Hugging Face для модели, которую вы хотите запустить, и <quantization-file> на конкретный файл квантования, который вы хотите использовать (например, 4-битную квантованную версию в формате GGML).

  3. Сервер LLAMA-CPP будет прослушивать входящие запросы на localhost:8080 по умолчанию. Вы можете настроить адрес хоста и порт, используя доступные параметры, такие как --host и --port.

  4. Сервер поддерживает различные параметры конфигурации, включая установку максимального размера контекстного окна, размера пакета и многое другое. Вы можете изучить эти параметры, выполнив llama-server --help.

  5. После запуска сервера вы можете взаимодействовать с ним, используя различные методы, такие как cURL, клиент OpenAI или пакет Python requests, как показано в предыдущих разделах.

Отправка запросов на сервер LLAMA-CPP

Существует несколько способов взаимодействия с сервером LLAMA-CPP и отправки запросов к обслуживаемой модели:

  1. Использование команды cURL:

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

    Это отправит POST-запрос к конечной точке завершения чата, работающей на локальном хосте на порту 8080.

  2. Использование клиента OpenAI:

    import openai
    
    openai.api_base = "http://localhost:8080/v1"
    openai.Model.list()
    
    response = openai.ChatCompletion.create(
        model="chat-gpt-3.5",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Hello, how are you?"}
        ]
    )
    
    print(response.choices[0].message.content)
    

    Это использует клиент OpenAI для взаимодействия с сервером LLAMA-CPP, который совместим с API OpenAI.

  3. Использование пакета Python Requests:

    import requests
    
    url = "http://localhost:8080/v1/chat/completions"
    headers = {"Content-Type": "application/json"}
    data = {
        "prompt": "Hello, how are you?",
        "max_tokens": 50
    }
    
    response = requests.post(url, headers=headers, json=data)
    print(response.json())
    

    Это использует пакет Python Requests для отправки POST-запроса к конечной точке завершения чата.

Настройка сервера LLAMA-CPP

LLAMA-CPP предоставляет высоко настраиваемый сервер, который позволяет вам настраивать поведение вашего развертывания LLM. Вот некоторые ключевые параметры, которые вы можете настроить:

  1. Максимальное контекстное окно: Вы можете определить максимальный размер контекстного окна для LLM, который определяет максимальную длину входной последовательности, которую может обрабатывать модель.

  2. Размер пакета: LLAMA-CPP поддерживает пакетную обработку запросов, позволяя вам одновременно обрабатывать несколько входных данных для повышения пропускной способности. Вы можете настроить размер пакета для оптимизации производительности.

  3. Адрес хоста: По умолчанию сервер LLAMA-CPP прослушивает на localhost, но вы можете изменить адрес хоста, чтобы сделать сервер доступным с других машин в вашей сети.

  4. Порт: Сервер прослушивает на порту 8080 по умолчанию, но вы можете указать другой порт, если необходимо.

  5. Путь к модели: LLAMA-CPP позволяет вам настраивать путь, откуда он загружает файлы модели LLM, предоставляя вам гибкость в организации ваших модельных активов.

  6. Модели встраивания: Помимо языковых моделей, LLAMA-CPP также может обслуживать модели встраивания, позволяя вам интегрировать как генерацию текста, так и возможности кодирования текста в ваши приложения.

  7. Отслеживание метрик: Сервер LLAMA-CPP может отслеживать различные метрики, такие как задержка запроса и пропускная способность, чтобы помочь вам контролировать и оптимизировать производительность вашего развертывания.

Взаимодействие с сервером LLAMA-CPP с использованием различных методов

Чтобы взаимодействовать с сервером LLAMA-CPP, мы можем использовать различные методы:

  1. Использование команды cURL:

    • Отправьте POST-запрос к конечной точке "завершение чата", работающей на localhost.
    • Предоставьте необходимые заголовки и объект данных, содержащий запрос и желаемое количество токенов для генерации.
    • Ответ будет включать сгенерированный текст, а также информацию о процессе генерации, такую как температура, top-P, top-K и прогнозируемая скорость токенов в секунду.
  2. Использование клиента OpenAI:

    • Создайте клиент OpenAI с базовым URL-адресом, установленным на URL локального сервера LLAMA-CPP.
    • Используйте клиент конечной точки завершения чата и укажите название модели (например, chat-gpt-3.5).
    • Установите системную подсказку и пользовательскую подсказку, затем отправьте запрос на сервер.
    • Ответ будет возвращен в том же формате, что и API OpenAI.
  3. Использование пакета Requests (Python):

    • Определите URL и заголовки для POST-запроса.
    • Передайте несколько разных сообщений на сервер и наблюдайте, как он обрабатывает запросы параллельно.
    • Сервер будет ставить запросы в очередь и обрабатывать их по одному, не перегружаясь.

Заключение

В этом видео мы исследовали установку и использование LlamaCPP, мощного открытого проекта для обслуживания открытых больших языковых моделей. Мы узнали, как установить LlamaCPP на нашу локальную машину, запустить сервер и взаимодействовать с ним, используя различные методы, включая cURL, клиент OpenAI и пакет Python requests.

Мы также обсудили различные параметры конфигурации, доступные в LlamaCPP, позволяющие нам настраивать сервер под наши конкретные потребности, такие как установка максимального контекстного окна, размера пакета и адреса хоста. Кроме того, мы увидели, как LlamaCPP может отслеживать метрики, что делает его подходящим выбором для производственных сред.

Наконец, мы затронули практические применения LlamaCPP, особенно в контексте развертывания больших языковых моделей для различных вариантов использования. Мы упомянули фреймворк Rasa как потенциальное применение и предоставили ссылку на соответствующий курс в описании видео.

В целом, это видео предоставило всестороннее введение в LlamaCPP и его возможности, оснастив вас знаниями, необходимыми для начала обслуживания открытых больших языковых моделей на вашей локальной машине или в производственной среде.

Часто задаваемые вопросы