Нейросети
May 24

LocalGPT: Преимущества и особенности локального развертывания GPT-моделей

GPT (Generative Pre-trained Transformer) от OpenAI является одной из самых популярных моделей для обработки естественного языка. Она способна выполнять широкий спектр задач, таких как генерация текста, перевод, ответы на вопросы и многое другое. Однако использование GPT через облачные сервисы может вызывать беспокойство по поводу конфиденциальности данных, стоимости и зависимости от интернет-соединения. В этом контексте локальное развертывание GPT-моделей, или LocalGPT, становится все более актуальным. В этой статье мы рассмотрим преимущества и особенности LocalGPT 😺.

Преимущества LocalGPT

📁 Конфиденциальность данных

Одним из главных преимуществ LocalGPT является возможность обработки данных без их передачи в облако. Это особенно важно для организаций и пользователей, которые работают с конфиденциальной или чувствительной информацией. Локальное развертывание обеспечивает полный контроль над данными и предотвращает потенциальные утечки.

🌐❌ Отсутствие зависимости от интернет-соединения

LocalGPT позволяет использовать возможности GPT-моделей без необходимости постоянного подключения к интернету. Это делает систему более надежной и доступной в условиях, где интернет-соединение нестабильно или отсутствует.

💵 Снижение затрат

Использование облачных сервисов для работы с GPT-моделями может быть дорогостоящим, особенно при обработке больших объемов данных или при частом использовании. Локальное развертывание может значительно снизить затраты, поскольку нет необходимости оплачивать услуги облачных провайдеров.

🔧 Настройка и оптимизация

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

Особенности LocalGPT

🖥Требования к оборудованию

Локальное развертывание GPT-моделей требует мощного оборудования, особенно в случае использования больших моделей, таких как GPT-3. Необходимы графические процессоры (GPU) или специализированные ускорители для эффективной работы с такими моделями. Это может потребовать значительных инвестиций в оборудование.

💿Установка и настройка

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

⬆️Обновления и поддержка

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

Примеры использования LocalGPT

🧑‍⚕️ Медицинские учреждения

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

🤵‍♂️ Корпоративные решения

Компании могут использовать LocalGPT для обработки внутренних документов, автоматизации рутинных задач, создания интеллектуальных чат-ботов и многого другого, без риска утечки коммерческой тайны или других конфиденциальных данных.

👩‍🔬Научные исследования

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

Установка LocalGPT

Клонируйте репозиторий с помощью git:

git clone https://github.com/PromtEngineer/localGPT.git

Установите conda для управления виртуальными окружениями:

Создайте и активируйте новое виртуальное окружение.

conda create -n localGPT python=3.10.0
conda activate localGPT

Установите зависимости с помощью pip:

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

pip install -r requirements.txt

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

LocalGPT использует LlamaCpp-Python для моделей GGML (вам понадобится llama-cpp-python <=0.1.76) и GGUF (llama-cpp-python >=0.1.83).

LlamaCpp — это библиотека для работы с моделями машинного обучения, оптимизированная для использования с различными аппаратными ускорителями, такими как NVIDIA GPU и Apple Metal (M1/M2). Она предоставляет удобный интерфейс для работы с моделями GGML (Generalized Geometric Machine Learning) и GGUF (Generalized Geometric Universal Framework), позволяя разработчикам эффективно развертывать и использовать модели на локальном оборудовании.

Если вы хотите использовать BLAS или Metal с llama-cpp, вы можете установить соответствующие флаги:

Для поддержки NVIDIA GPU используйте cuBLAS

# Пример: cuBLAS
CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python --no-cache-dir

BLAS (Basic Linear Algebra Subprograms)— это стандартная спецификация для библиотек линейной алгебры, которая определяет набор базовых операций над векторами и матрицами. Эти операции включают в себя:

  • Уровень 1: Операции над векторами (например, скалярное произведение, нахождение нормы, сложение векторов).
  • Уровень 2: Операции матрица-вектор (например, умножение матрицы на вектор).
  • Уровень 3: Операции матрица-матрица (например, умножение матрицы на матрицу).

cuBLAS — это реализация BLAS от NVIDIA, разработанная для использования на графических процессорах (GPU) с поддержкой CUDA. cuBLAS предоставляет аналогичные функции, что и традиционные библиотеки BLAS, но с оптимизациями для выполнения на GPU, что позволяет значительно ускорить вычисления по сравнению с выполнением на центральном процессоре (CPU).

Для поддержки Apple Metal (M1/M2) используйте

# Пример: METAL
CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install llama-cpp-python --no-cache-dir

Apple Metal — это низкоуровневый API для графики и вычислений, разработанный компанией Apple. Он предоставляет высокую производительность и низкую задержку для обработки графики и выполнения вычислительных задач на устройствах Apple, включая iOS, macOS, iPadOS и tvOS. Metal позволяет разработчикам напрямую взаимодействовать с графическим процессором (GPU) для создания высокоэффективных графических и вычислительных приложений.

Запуск LocalGPT в Docker

Запуск LocalGPT в Docker обеспечивает изолированное и воспроизводимое окружение, что упрощает управление зависимостями и настройку окружения. В этом руководстве мы рассмотрим шаги по установке и запуску LocalGPT в контейнере Docker.

Шаг 1: Установка Docker

Для начала необходимо установить Docker. Об этом можно прочитать тут:

Docker: революция в разработке и развертывании приложений

Шаг 2: Клонирование репозитория LocalGPT

Клонируйте репозиторий LocalGPT с GitHub:

git clone https://github.com/PromtEngineer/localGPT.git
cd localGPT

Шаг 3: Создание и запуск Docker-образа

Сборка Docker-образа: Выполните команду для сборки Docker-образа:

docker build -t localgpt .

Запуск Docker-контейнера: После успешной сборки образа выполните команду для запуска контейнера:

docker run --rm -it localgpt 

Шаг 4: Настройка GPU (не обязательно)

Если вы хотите использовать GPU для ускорения выполнения моделей, вам необходимо установить Docker с поддержкой NVIDIA. Следуйте этим шагам:

Установить Docker с поддержкой NVIDIA:

  1. Установите nvidia-docker или NVIDIA Container Toolkit
  2. Запуск контейнера с поддержкой GPU: docker run --gpus all --rm -it localgpt

Пример Docker-команды для запуска скрипта с поддержкой cuBLAS

Если вы используете NVIDIA GPU и хотите запустить контейнер с поддержкой cuBLAS, используйте следующую команду:

docker run --gpus all --rm -e CMAKE_ARGS="-DLLAMA_CUBLAS=on" -it localgpt

Запуск LocalGPT в Docker обеспечивает удобство и изолированность окружения, упрощает управление зависимостями и настройку. Docker позволяет легко развернуть и масштабировать приложения, обеспечивая их воспроизводимость и совместимость. Следуя этому руководству, вы сможете быстро настроить и запустить LocalGPT в контейнере Docker, используя как CPU, так и GPU для ускорения вычислений.

Данные для LocalGPT

Тестовый набор данных

Для тестирования в репозитории проекта есть файл для примера - Конституция США.

Ваши личные данные

Поместите ваши файлы в папку SOURCE_DOCUMENTS. Вы можете создавать несколько папок внутри папки SOURCE_DOCUMENTS, и код рекурсивно прочитает все ваши файлы.

Поддерживаемые форматы файлов

LocalGPT в настоящее время поддерживает следующие форматы файлов. LocalGPT использует LangChain для загрузки этих форматов файлов. В коде в файле constants.py используется словарь DOCUMENT_MAP для сопоставления форматов файлов с соответствующими загрузчиками. Чтобы добавить поддержку другого формата файла, просто добавьте его в этот словарь с указанием соответствующего загрузчика из LangChain.

DOCUMENT_MAP = {
    ".txt": TextLoader,
    ".md": TextLoader,
    ".py": TextLoader,
    ".pdf": PDFMinerLoader,
    ".csv": CSVLoader,
    ".xls": UnstructuredExcelLoader,
    ".xlsx": UnstructuredExcelLoader,
    ".docx": Docx2txtLoader,
    ".doc": Docx2txtLoader,
}

Сбор данных

Запустите следующую команду, чтобы собрать все данные.

Если у вас настроена CUDA:

python ingest.py

Используйте аргумент device_type, чтобы указать конкретное устройство. Для запуска на CPU:

python ingest.py --device_type cpu

Для запуска на M1/M2:

python ingest.py --device_type mps

Используйте help для получения полного списка поддерживаемых устройств:

python ingest.py --help

Эта команда создаст новую папку DB и использует её для нового хранилища векторов. Вы можете загрузить столько документов, сколько захотите, и все они будут накоплены в локальной базе данных. Если вы хотите начать с пустой базы данных, удалите папку DB и повторите сбор данных из документов.

Примечание: При первом запуске потребуется доступ к интернету для загрузки модели эмбеддингов (встраиваемых данных, по умолчанию: Instructor Embedding). При последующих запусках данные не будут покидать ваше локальное окружение, и вы сможете собирать данные без подключения к интернету.

Чат LocalGPT

Чтобы начать диалог с данными из ваших документов, выполните следующую команду (по умолчанию будет использоваться CUDA):

python run_localGPT.py

Вы также можете указать тип устройства так же, как в ingest.py:

python run_localGPT.py --device_type mps # для запуска на Apple silicon

Эта команда загрузит сбор данных в хранилище векторов и модель эмбеддингов. Затем вам будет предложено ввести запрос:

> Enter a query:

После ввода вашего вопроса нажмите Enter. LocalGPT займет некоторое время на обработку запроса в зависимости от вашего оборудования.🧙🏻‍♀️

Заключение

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