Локальное развертывание LLM: обзор open-source решений

Введение

Большие языковые модели (LLM, Large Language Models) стали незаменимыми инструментами для разработчиков и исследователей. С их помощью можно решать разнообразные задачи.. Однако использование таких моделей часто связано с зависимостью от внешних сервисов, что накладывает определённые ограничения. Локальное развертывание LLM позволяет сохранить контроль над данными и гибко настроить модель под конкретные нужды, используя при этом преимущества локальной инфраструктуры.

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

Почему стоит разворачивать LLM локально?

Развертывание больших языковых моделей локально имеет несколько ключевых преимуществ:

  1. Отсутствие зависимости от сторонних сервисов: Работая локально, вы можете обойтись без внешних API, что особенно важно для проектов с высокими требованиями к конфиденциальности или в ситуациях, где интернет-соединение ограничено.

  2. Улучшенная защита данных: Все данные остаются в вашей инфраструктуре, что снижает риски утечек и повышает безопасность, что особенно важно для организаций, работающих с конфиденциальной информацией.

  3. Гибкость настройки: Локальное использование моделей позволяет настроить их под конкретные задачи и даже дообучить на данных компании, улучшая тем самым качество результатов.

  4. Оптимизация использования ресурсов: Вы можете оптимизировать использование доступных вычислительных мощностей, будь то GPU, CPU или другие ресурсы, что может значительно повысить производительность.

Обзор популярных open-source решений

Существует несколько популярных open-source проектов для локального развертывания LLM. Рассмотрим основные из них:

  1. LocalAI:

    • Описание: LocalAI — это проект, который позволяет запускать языковые модели в локальном окружении с минимальной настройкой. Он поддерживает разнообразные модели и легко интегрируется с другими инструментами.

    • Основные возможности:

      • Поддержка различных форматов моделей, включая модели из Hugging Face и других источников.

      • Легко использовать благодаря REST API, что позволяет быстро интегрировать его в разные приложения.

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

      • Поддержка аппаратного ускорения с использованием GPU для улучшения производительности.

    • Преимущества: Простота использования и установки, гибкость в выборе моделей, возможность работы на различных платформах.

    • Недостатки: Может потребоваться значительное количество ресурсов для работы с крупными моделями.

  2. AnythingLLM:

    • Описание: AnythingLLM предоставляет универсальный подход к запуску языковых моделей, поддерживая различные архитектуры и предлагая высокую степень гибкости в настройке.

    • Основные возможности:

      • Гибкость в настройке моделей, включая возможность загружать и использовать любые доступные модели, включая собственные.

      • Поддержка множества архитектур, таких как GPT, BERT и других.

      • Модульная архитектура, которая позволяет добавлять дополнительные функции и модули по мере необходимости.

      • Интуитивно понятный интерфейс и подробная документация упрощают процесс установки и использования.

    • Преимущества: Широкая поддержка различных моделей, гибкость настройки под конкретные нужды.

    • Недостатки: Для полноценного использования может потребоваться больше времени и опыта.

  3. Ollama:

    • Описание: Ollama — это решение, ориентированное на простоту установки и использования, предоставляющее минимальные требования к настройке и управлению.

    • Преимущества: Быстрая установка и запуск, минимальные требования к конфигурации.

    • Недостатки: Меньше возможностей для тонкой настройки по сравнению с более комплексными решениями.

  4. Hugging Face Transformers:

    • Описание: Библиотека от Hugging Face предоставляет доступ к большому количеству предобученных моделей и инструментов для их настройки и использования.

    • Преимущества: Поддержка множества моделей и языков, активное развитие и большое сообщество пользователей.

    • Недостатки: Требует значительных вычислительных мощностей для работы с крупными моделями.

Как быстро развернуть LocalAI и AnythingLLM с помощью Docker Compose

Если вы хотите быстро начать использовать LocalAI и AnythingLLM, Docker Compose — это отличный инструмент, который значительно упрощает процесс развертывания. Вот пример файла docker-compose.yml, который поможет вам быстро настроить окружение:

version: "3.9"
services:
  anythingllm:
    image: mintplexlabs/anythingllm
    container_name: anythingllm
    ports:
      - 3001:3001
    cap_add:
      - SYS_ADMIN
    volumes:
      - ${STORAGE_LOCATION}:/app/server/storage
      - ${STORAGE_LOCATION}/.env:/app/server/.env
    environment:
      - STORAGE_DIR=/app/server/storage

  api:
    image: localai/localai:latest-aio-cpu
    # Для конкретной версии:
    # image: localai/localai:v2.20.1-aio-cpu
    # Для Nvidia GPUs раскомментируйте одну из следующих строк (cuda11 или cuda12):
    # image: localai/localai:v2.20.1-aio-gpu-nvidia-cuda-11
    # image: localai/localai:v2.20.1-aio-gpu-nvidia-cuda-12
    # image: localai/localai:latest-aio-gpu-nvidia-cuda-11
    # image: localai/localai:latest-aio-gpu-nvidia-cuda-12
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"]
      interval: 1m
      timeout: 20m
      retries: 5
    ports:
      - 8080:8080
    environment:
      - DEBUG=true
      # ...
    volumes:
      - ./models:/build/models:cached
    # Раскомментируйте следующую часть, если используете Nvidia GPUs
    # deploy:
    #   resources:
    #     reservations:
    #       devices:
    #         - driver: nvidia
    #           count: 1
    #           capabilities: [gpu]

Создайте также файл .env, чтобы задать переменные среды:

STORAGE_LOCATION=$HOME/anythingllm

Шаги для запуска:

  1. Скачайте или создайте docker-compose.yml и .env в одном каталоге.

  2. Настройте переменные в файле .env под ваши нужды.

  3. В терминале выполните команду docker-compose up -d, находясь в директории с docker-compose.yml.

Эти шаги помогут вам быстро развернуть LocalAI и AnythingLLM на вашем компьютере, что даст возможность работать с большими языковыми моделями без зависимости от внешних API.

Заключение

Локальное развертывание LLM предоставляет множество преимуществ, особенно в плане конфиденциальности данных и гибкости настройки. Существуют различные open-source решения, такие как LocalAI, AnythingLLM, Ollama и Hugging Face Transformers, которые подойдут для разных сценариев и потребностей. Благодаря Docker Compose развернуть эти инструменты стало проще, чем когда-либо.

Используйте локальные LLM для своих проектов и наслаждайтесь свободой настройки и конфиденциальностью!

Комментарии (8)


  1. doitagain
    28.08.2024 21:06
    +1

    Скачал LM Studio, в ней скачал последнюю gemini, а она не хочет отвечать на мои не удобные вопросы, говорит нельзя так делать, обратитесь лучше в службы помощи по номерам телефонов начинающихся с +1-.......


    1. d00m911
      28.08.2024 21:06
      +3

      Uncensored-моделей довольно много, плюс та же LLAMA 3.1 может отвечать практически на все вопросы после правильно сформулированного системного промпта.


  1. rmuhamedgaliev Автор
    28.08.2024 21:06
    +2

    Я для эксперимента на сервере развернул малютку - https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct. А так AnythingLLM поддерживает еще и https://ollama.com/ но у меня сервер без GPU поэтому я использую CPU only модели


    1. YuryVl
      28.08.2024 21:06

      Скажите пожалуйста, а модели будут иметь доступ к "интернету"?


      1. rmuhamedgaliev Автор
        28.08.2024 21:06

        Доступ извне можно реализовать открыв порт 8080, localai поддерживает так же защиту при помощи токена.
        А если заставить саму модель ходить в интернет, то я не уверен, так как на сколько я понимаю та чуть поупражняться надо. https://www.reddit.com/r/LocalLLaMA/comments/18yv28m/dumb_question_perhaps_how_do_i_enable_internet/


      1. iosuslov
        28.08.2024 21:06
        +1

        Для питона есть либа LangChain, которая, помимо прочего, может предоставить любой модели доступ к поисковой выдаче.


  1. Derfirm
    28.08.2024 21:06
    +1

    Может быть полезным https://llm.datasette.io/en/stable/

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


  1. bondeg
    28.08.2024 21:06

    Стоит ещё дополнить про google colab, который позволит запускать на GPU модельки погонять какое-то время. (~1-2 часа в сутки).

    Это уже не совсем локально, но тем не менее полезно в миксе с ollama, например.