Локальное развертывание LLM: обзор open-source решений
Введение
Большие языковые модели (LLM, Large Language Models) стали незаменимыми инструментами для разработчиков и исследователей. С их помощью можно решать разнообразные задачи.. Однако использование таких моделей часто связано с зависимостью от внешних сервисов, что накладывает определённые ограничения. Локальное развертывание LLM позволяет сохранить контроль над данными и гибко настроить модель под конкретные нужды, используя при этом преимущества локальной инфраструктуры.
В этой статье я бы хотел рассказать о преимуществах локального развертывания LLM и рассмотрим несколько open-source решений, которые можно использовать для этой цели.
Почему стоит разворачивать LLM локально?
Развертывание больших языковых моделей локально имеет несколько ключевых преимуществ:
Отсутствие зависимости от сторонних сервисов: Работая локально, вы можете обойтись без внешних API, что особенно важно для проектов с высокими требованиями к конфиденциальности или в ситуациях, где интернет-соединение ограничено.
Улучшенная защита данных: Все данные остаются в вашей инфраструктуре, что снижает риски утечек и повышает безопасность, что особенно важно для организаций, работающих с конфиденциальной информацией.
Гибкость настройки: Локальное использование моделей позволяет настроить их под конкретные задачи и даже дообучить на данных компании, улучшая тем самым качество результатов.
Оптимизация использования ресурсов: Вы можете оптимизировать использование доступных вычислительных мощностей, будь то GPU, CPU или другие ресурсы, что может значительно повысить производительность.
Обзор популярных open-source решений
Существует несколько популярных open-source проектов для локального развертывания LLM. Рассмотрим основные из них:
-
LocalAI:
Описание: LocalAI — это проект, который позволяет запускать языковые модели в локальном окружении с минимальной настройкой. Он поддерживает разнообразные модели и легко интегрируется с другими инструментами.
-
Основные возможности:
Поддержка различных форматов моделей, включая модели из Hugging Face и других источников.
Легко использовать благодаря REST API, что позволяет быстро интегрировать его в разные приложения.
Возможность тонкой настройки и дообучения моделей, что позволяет адаптировать их под конкретные задачи.
Поддержка аппаратного ускорения с использованием GPU для улучшения производительности.
Преимущества: Простота использования и установки, гибкость в выборе моделей, возможность работы на различных платформах.
Недостатки: Может потребоваться значительное количество ресурсов для работы с крупными моделями.
-
AnythingLLM:
Описание: AnythingLLM предоставляет универсальный подход к запуску языковых моделей, поддерживая различные архитектуры и предлагая высокую степень гибкости в настройке.
-
Основные возможности:
Гибкость в настройке моделей, включая возможность загружать и использовать любые доступные модели, включая собственные.
Поддержка множества архитектур, таких как GPT, BERT и других.
Модульная архитектура, которая позволяет добавлять дополнительные функции и модули по мере необходимости.
Интуитивно понятный интерфейс и подробная документация упрощают процесс установки и использования.
Преимущества: Широкая поддержка различных моделей, гибкость настройки под конкретные нужды.
Недостатки: Для полноценного использования может потребоваться больше времени и опыта.
-
Ollama:
Описание: Ollama — это решение, ориентированное на простоту установки и использования, предоставляющее минимальные требования к настройке и управлению.
Преимущества: Быстрая установка и запуск, минимальные требования к конфигурации.
Недостатки: Меньше возможностей для тонкой настройки по сравнению с более комплексными решениями.
-
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
Шаги для запуска:
Скачайте или создайте
docker-compose.yml
и.env
в одном каталоге.Настройте переменные в файле
.env
под ваши нужды.В терминале выполните команду
docker-compose up -d
, находясь в директории сdocker-compose.yml
.
Эти шаги помогут вам быстро развернуть LocalAI и AnythingLLM на вашем компьютере, что даст возможность работать с большими языковыми моделями без зависимости от внешних API.
Заключение
Локальное развертывание LLM предоставляет множество преимуществ, особенно в плане конфиденциальности данных и гибкости настройки. Существуют различные open-source решения, такие как LocalAI, AnythingLLM, Ollama и Hugging Face Transformers, которые подойдут для разных сценариев и потребностей. Благодаря Docker Compose развернуть эти инструменты стало проще, чем когда-либо.
Используйте локальные LLM для своих проектов и наслаждайтесь свободой настройки и конфиденциальностью!
Комментарии (8)
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 модели
YuryVl
28.08.2024 21:06Скажите пожалуйста, а модели будут иметь доступ к "интернету"?
rmuhamedgaliev Автор
28.08.2024 21:06Доступ извне можно реализовать открыв порт 8080, localai поддерживает так же защиту при помощи токена.
А если заставить саму модель ходить в интернет, то я не уверен, так как на сколько я понимаю та чуть поупражняться надо. https://www.reddit.com/r/LocalLLaMA/comments/18yv28m/dumb_question_perhaps_how_do_i_enable_internet/
iosuslov
28.08.2024 21:06+1Для питона есть либа LangChain, которая, помимо прочего, может предоставить любой модели доступ к поисковой выдаче.
Derfirm
28.08.2024 21:06+1Может быть полезным https://llm.datasette.io/en/stable/
Большое количество моделей, простой способ установки, хранения ключей и пользование прямо из консоли с запуском модели на каждый чих или поднятьия для множества промтов... И это лишь часть интересной тулы
bondeg
28.08.2024 21:06Стоит ещё дополнить про google colab, который позволит запускать на GPU модельки погонять какое-то время. (~1-2 часа в сутки).
Это уже не совсем локально, но тем не менее полезно в миксе с ollama, например.
doitagain
Скачал LM Studio, в ней скачал последнюю gemini, а она не хочет отвечать на мои не удобные вопросы, говорит нельзя так делать, обратитесь лучше в службы помощи по номерам телефонов начинающихся с +1-.......
d00m911
Uncensored-моделей довольно много, плюс та же LLAMA 3.1 может отвечать практически на все вопросы после правильно сформулированного системного промпта.