LocalAI — self-hosted движок для запуска LLM и мультимодальных моделей

· 2 мин чтения
llm local self-hosted inference openai-api
📂 Исходный код на GitHub

Open-source AI-движок: запускает LLM, vision, голосовые, графические и видео-модели на любом железе, включая CPU. Совместим с OpenAI API.

LocalAI — self-hosted движок для запуска LLM и мультимодальных моделей

LocalAI — это open-source AI-движок, который запускает любые модели на любом железе: LLM, vision, голос, изображения и видео. GPU не обязателен. Проект создал Ettore Di Giacinto, код распространяется по лицензии MIT. Главная идея проста: вы поднимаете свой сервер инференса, который ведёт себя как OpenAI API, но все данные остаются на вашей инфраструктуре. Ни один запрос не уходит во внешнее облако.

Небольшое ядро вместо монолита

LocalAI построен как компактное ядро плюс подключаемые бэкенды. Каждый бэкенд оборачивает проверенный движок — llama.cpp, vLLM, whisper.cpp, stable-diffusion, MLX — в отдельный OCI-образ. Образ скачивается только тогда, когда вам нужна конкретная модель. Ставите то, что используете, и ничего лишнего.

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

Drop-in замена популярных API

Самое ценное в LocalAI — совместимость API. Сервер понимает API OpenAI, Anthropic и ElevenLabs на каждом бэкенде. Это значит, что существующее приложение можно переключить на локальные модели одной переменной окружения — заменой базового URL и ключа.

Внутри одного сервера доступны:

  • генерация текста (llama.cpp, transformers, vLLM и другие, полная таблица — в матрице совместимости);
  • синтез речи и распознавание аудио;
  • генерация изображений и видео;
  • Realtime API — разговор голосом в реальном времени;
  • эмбеддинги и Reranker API для поиска;
  • Vision API и детекция объектов;
  • ограниченные грамматики — модель отвечает строго в заданном формате.

Быстрый старт

Самый простой способ — Docker. На чистом CPU:

docker run -ti --name local-ai -p 8080:8080 localai/localai:latest

Для GPU достаточно выбрать нужный образ. LocalAI сам определяет возможности вашей видеокарты и скачивает подходящий бэкенд.

# NVIDIA GPU (CUDA 13)
docker run -ti --name local-ai -p 8080:8080 --gpus all localai/localai:latest-gpu-nvidia-cuda-13

# AMD GPU (ROCm)
docker run -ti --name local-ai -p 8080:8080 --device=/dev/kfd --device=/dev/dri --group-add=video localai/localai:latest-gpu-hipblas

# Intel GPU (oneAPI)
docker run -ti --name local-ai -p 8080:8080 --device=/dev/dri/card1 --device=/dev/dri/renderD128 localai/localai:latest-gpu-intel

# Vulkan
docker run -ti --name local-ai -p 8080:8080 localai/localai:latest-gpu-vulkan

Есть и десктопная сборка для macOS в виде DMG. Полные инструкции — в руководстве по началу работы, детали по ускорению — в гайде про GPU.

Загрузка моделей

Модели запускаются одной командой local-ai run. Источники разные:

# Из галереи моделей
local-ai run llama-3.2-1b-instruct:q4_k_m

# С Hugging Face
local-ai run huggingface://TheBloke/phi-2-GGUF/phi-2.Q8_0.gguf

# Из OCI-реестра Ollama
local-ai run ollama://gemma:2b

# Из YAML-конфига
local-ai run https://gist.githubusercontent.com/.../phi-2.yaml

# Из обычного OCI-реестра, например Docker Hub
local-ai run oci://localai/phi-2:latest

Каталог доступных моделей — на models.localai.io. Когда сервер запущен, с ним можно работать из терминала через встроенного агента: во второй сессии выполняете local-ai chat --model <имя>, и агент отвечает на вопросы, читает файлы и запускает команды, спрашивая подтверждение на каждое изменение. Команда /models показывает установленные модели, /model <name> переключает между ними. Подробности — в документации терминального агента.

Железо

LocalAI работает на NVIDIA (CUDA 12 и 13), AMD (ROCm), Intel (oneAPI и SYCL), Apple Silicon (Metal), а также через Vulkan и на NVIDIA Jetson. Поддерживается и обычный CPU — медленнее, но работает. Один и тот же сервер можно разворачивать и на ноутбуке разработчика, и на серверном кластере.

Мультимодальность и собственные движки

Большинство бэкендов оборачивают сторонние движки. Но у проекта есть и собственные движки на чистом C++ и GGML — без Python на этапе инференса. Вот несколько заметных:

Движок Что делает
vllm.cpp Порт vLLM на C++20: paged KV cache, непрерывный батчинг, кэш префиксов
parakeet.cpp Порт NVIDIA NeMo Parakeet для распознавания речи со стримингом
vibevoice.cpp Порт Microsoft VibeVoice: синтез речи с клонированием голоса
face-detect.cpp Детекция и распознавание лиц, защита от подделки
locate-anything.cpp Детекция объектов с открытым словарём
depth-anything.cpp Оценка глубины сцены по одному кадру

Команда также развивает apex-quant — рецепты квантизации для MoE-моделей, которые дают качество не ниже Q8_0 и работают в обычном llama.cpp без доработок.

Агенты, MCP и многопользовательский режим

В LocalAI встроены автономные агенты: они используют инструменты, работают с RAG и навыками, поддерживают MCP и стриминг через SSE. Для готовых агентов есть каталог Agent Hub.

Сервер сразу готов к командной работе:

  • авторизация по API-ключам и через OIDC;
  • квоты и лимиты на пользователя с предиктивной аналитикой;
  • учёт расхода токенов по каждому ключу;
  • разграничение доступа по ролям;
  • встроенный веб-интерфейс с историей чатов.

Распределённый режим

Для больших нагрузок есть распределённый режим: несколько нод LocalAI объединяются в кластер через PostgreSQL и NATS. Роутер учитывает, какая модель и где уже загружена в VRAM, и направляет запросы на нужную ноду. Поддерживаются автомасштабирование, распределённый инференс с разбиением модели по слоям и P2P-режим.

Куда смотреть дальше

Если вам нужен локальный «OpenAI без облака» — под данные, под приватность или просто без ежемесячных счетов, — LocalAI сейчас один из самых зрелых вариантов: одна точка входа, десятки движков, любое железо.

Источник: https://github.com/mudler/LocalAI