LocalAI
Платформа LocalAI для локального запуска и управления ИИ-моделями на обычном оборудовании без необходимости в GPU. Совместима с OpenAI API, поддерживает генерацию текста, изображений, аудио и видео.* Модульный API-сервер на Go с множеством бэкендов для инференса, поддержка gRPC и p2p.
Подробнее о LocalAI
LocalAI - это платформа для локального запуска больших языковых моделей (LLM) и мультимодальных ИИ, совместимая с OpenAI API, позволяющая создавать автономных агентов, выполнять семантический поиск и генерацию мультимедиа без облака. Это делает её универсальным инструментом для работы с ИИ, но с уникальной особенностью - полным контролем и приватностью за счёт локального размещения. Это полноценный модульный AI-стек и платформа для локального инференса и разработки приложений с ИИ.
Архитектура
- Интерфейсы API: LocalAI предоставляет API, совместимый с OpenAI, что упрощает интеграцию существующих приложений, написанных для OpenAI API.
- Модульность: Вы можете выбирать между различными модулями для разных задач. Например, обработка естественного языка (NLP), генерация изображений, работа с аудио и другие модули.
- Инференс и оптимизация: Для эффективного выполнения вычислений используются различные бекэнды, такие как vLLM, llama.cpp и другие инструменты для ускорения процессов инференса.
- Масштабируемость: Хотя изначально платформа ориентирована на работу на одном устройстве, существует возможность расширения инфраструктуры путем объединения нескольких узлов в кластеры для распределенных вычислений.
Модели
- Language Models (LLMs): Такие модели генерируют текстовые ответы на запросы, отвечают на вопросы, создают описания и выполняют другие задачи NLP. Примером такой модели может служить семейство моделей семейства GPT или русскоязычные аналоги типа ruGPT.
- Image Generation: Эти модели способны создавать изображения на основе текстового описания.
- Audio Processing: Сюда входят модели распознавания речи, синтеза голоса и анализа аудиофайлов.
- Other Backends: LocalAI поддерживает интеграцию с внешними системами, такими как Hugging Face Transformers, позволяя подключать практически любые доступные модели, размещенные в репозиториях Hugging Face.
Установка LocalAI
Ресурсы для установки
Установка через Docker
docker run -d -p 8080:8080 \
--shm-size="512m" \
-v $(pwd)/models:/models \
quay.io/go-skynet/local-ai:latest
1.Запустит LocalAI на порту 8080
.
2.Установит модель в папку ./models (можно изменить).
3.Выделит 512 Мб оперативной памяти под модель.
Настройка и загрузка модели
mkdir -p models
cd models
wget https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf -O mistral-7b.gguf
Полезные параметры
--threads
Количество потоков CPU.--context-size
Размер контекста (например 2048).--model
Указать конкретную модель при запуске.
Пример с указанием модели и размера контекста
docker run -d -p 8080:8080 \
--shm-size="1g" \
-v $(pwd)/models:/models \
quay.io/go-skynet/local-ai:latest \
--model=models/mistral-7b.gguf \
--context-size=2048
Перезапуск контейнера после добавления модели
docker stop
docker rm
docker run -d -p 8080:8080 --shm-size="512m" -v $(pwd)/models:/models quay.io/go-skynet/local-ai:latest
Проверка поддержки модели русского языка
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "your-model-name",
"messages": [
{"role": "user", "content": "Привет! Расскажи о себе."}
]
}'
LocalAI поддерживает все языки, которые умеет обрабатывать выбранная вами модель. Английский и русский языки поддерживаются большинством популярных моделей формата GGUF, таких как Mistral, LLaMA, OpenChat и др.
Использование LocalAI через API
У LocalAI есть API, и он совместим с OpenAI API, что делает его очень удобным для интеграции в существующие приложения, использующие ИИ-модели.
Примеры использования API
Получение списка моделей
curl http://localhost:8080/v1/models
Генерация текста (chat)
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-7b",
"messages": [
{"role": "user", "content": "Расскажи о преимуществах локальных ИИ."}
],
"max_tokens": 150
}'
Генерация текста (completions)
curl -X POST http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-7b",
"prompt": "Жили-были...",
"max_tokens": 100
}'
Использование через SDK (Python, OpenAI)
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="mistral-7b",
messages=[
{"role": "user", "content": "Как работает локальный ИИ?"}
]
)
print(response.choices[0].message.content)
Поддерживаемые типы запросов
Тип запроса | Эндпоинт | Назначение |
---|---|---|
Список моделей | GET /v1/models |
Возвращает список доступных моделей |
Чат (Chat Completions) | POST /v1/chat/completions |
Для диалоговых задач (например, GPT-подобные модели) |
Генерация текста (Completions) | POST /v1/completions |
Для прямой генерации текста |
Векторизация (Embeddings) | POST /v1/embeddings |
Получение эмбеддингов текста для поиска и анализа |
Токенизация | POST /v1/tokenize |
Разбивает текст на токены |
Детокенизация | POST /v1/detokenize |
Преобразует последовательность токенов обратно в текст |