Как запускать любые LLM, vision и voice модели без GPU: LocalAI — open-source движок для любого железа
Я — Денис Шохирев, Enterprise AI архитектор из Эрлангена. В DennisCraft AI Studio внедряю AI-агентов для B2B-клиентов в DACH на стеке Claude, Supabase, n8n, Doppler, self-hosted Postgres. В январе клиент на logistics SaaS пришёл с задачей — добавить GPT-подобный ассистент, но без GPU и без облака. Стандартные решения не работали: CPU-инстанс с llama.cpp не тянул, а latency был за пределами SLA. Так я вышел на LocalAI. Почему LocalAI? Конкретные ограничения в проде Если вы строите LLM-агентов
Я — Денис Шохирев, Enterprise AI архитектор из Эрлангена. В DennisCraft AI Studio внедряю AI-агентов для B2B-клиентов в DACH на стеке Claude, Supabase, n8n, Doppler, self-hosted Postgres. В январе клиент на logistics SaaS пришёл с задачей — добавить GPT-подобный ассистент, но без GPU и без облака. Стандартные решения не работали: CPU-инстанс с llama.cpp не тянул, а latency был за пределами SLA. Так я вышел на LocalAI.
Почему LocalAI? Конкретные ограничения в проде
Если вы строите LLM-агентов для регулируемых рынков (финтех, логистика, индустриальный IoT), GPU-доступ — роскошь. В Европе 7 из 10 заказчиков по моему опыту требуют on-prem и airgap, из-за чего облачные OpenAI и Anthropic отпадают сразу. Даже "облегчённые" модели на llama.cpp или ollama часто не проходят по latency и memory footprint на скромных CPU серверах.
Что такое LocalAI
LocalAI — это open-source движок (Go), эмулирующий OpenAI API для локального запуска LLM, vision и voice моделей на CPU/ARM/x86. Поддерживает llama.cpp, whisper.cpp, Stable Diffusion, GGUF/ggml, CLIP, и десятки других бэкендов. Всё поднимается через один бинарник, нет зависимости от CUDA или облака.
Где выигрывает LocalAI
- Можно держать несколько моделей (LLM, voice, vision) на одном сервере x86 или ARM, даже на Raspberry Pi.
- API полностью повторяет OpenAI: интеграция с n8n, Supabase, Postgres — без переписывания пайплайнов.
- Много готовых моделей: Llama 2, Mistral, Falcon, GPT4All, Stable Diffusion, Whisper.
- Fine-tuning и quantization прямо через config.
Production-паттерны: запуск, настройка, API
Базовый запуск LocalAI
Для быстрой проверки на CPU сервере (<2 vCPU, 8GB RAM) достаточно скачать релиз и загрузить модель. Пример — Llama 2 7B через GGUF:
wget https://github.com/mudler/LocalAI/releases/download/v2.11.0/local-ai-linux-amd64
chmod +x local-ai-linux-amd64
./local-ai-linux-amd64 --models-path ./models --context-size 2048
# Модель Llama 2 7B (GGUF) — поместить в ./models
Проверка API:
curl -X POST http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{"model": "llama-2-7b", "prompt": "What is RAG?","max_tokens":100}'
Интеграция с n8n и Supabase
Поскольку LocalAI эмулирует OpenAI API, можно подключить его к n8n через стандартный OpenAI node, просто указав свой endpoint. Для Supabase — используйте edge-функцию, которая проксирует запросы к LocalAI, не меняя бизнес-логику.
// Edge function (Supabase)
import { serve } from 'std/server'
serve(async (req) => {
const resp = await fetch('http://localai:8080/v1/completions', {
method: 'POST',
headers: { ...req.headers },
body: req.body
});
return new Response(await resp.text(), resp);
})
Опыт: производительность, совместимость, ограничения
| Движок | Память (7B) | Latency (1 токен) | Совместимость API | Голос/vision |
|---|---|---|---|---|
| LocalAI | ~4.5GB | 0.9-1.2s | OpenAI 1:1 | + (Whisper, SD) |
| llama.cpp | ~4.2GB | 0.8-1.0s | Частично | - |
| Ollama | ~4.8GB | 0.7-1.1s | Своя API | - |
LocalAI чуть уступает llama.cpp по latency, но выигрывает в универсальности: можно держать LLM, voice и vision в одном API, что критично в сложных пайплайнах. Например, в одном из моих проектов (финтех, 2024) на Supabase edge функция через LocalAI обслуживает и текстовые, и аудио запросы без доп. проксей.
Ограничения
- Модели >13B на CPU — latency выше 4-5 секунд на 1 токен.
- Нет CUDA-ускорения (GPU поддержка только экспериментально).
- Некоторые OpenAI фичи (function calling, tool use) реализованы частично.
Безопасность и прод—миграция: реальные паттерны
Кодогенерация и RAG через LocalAI требует тех же мер, что и любой on-prem LLM: stateless контейнеры, ограничение прав, runtime sandbox. Я использую bandit и semgrep (2024) для статического анализа сгенерированных пайплайнов. Реальный кейс: на 2 неделе пилота LocalAI поймал prompt-инъекцию в RAG — пришлось добавить валидацию via OWASP шаблоны.
Для voice/vision моделей (например, Whisper для транскрипции) — убедитесь, что аудио/картинки не сохраняются на диск без шифрования, иначе не пройти compliance в финтехе или логистике.
FAQ
LocalAI реально держит несколько моделей одновременно?
Да, через config можно держать разные LLM и vision/voice модели, переключая по имени модели в API-запросе.
Можно ли использовать LocalAI на ARM (например, Raspberry Pi)?
Да, есть сборки под ARM, но latency выше. Для демонстраций или edge-устройств — ок, для прода — только с quantized моделями.
Как обновлять модели без остановки сервиса?
LocalAI поддерживает hot-reload моделей через REST API или файловую систему, можно подменять checkpoint без downtime.
Поддерживается ли function calling и tool use?
Частично. Базовая поддержка есть, но сложные сценарии как у OpenAI — только через внешние обвязки.
Какой минимальный сервер нужен для Llama 2 7B?
CPU с AVX2, 8GB RAM, SSD. Для стабильной работы — минимум 2 vCPU, 12GB RAM.
У вас в пайплайне остался legacy LLM-API с завязкой на облако? Какой главный блокер для перехода на on-prem движки типа LocalAI: latency, поддержка моделей или security review? Я реально хочу понять.
Я бесплатно разбираю стек для DACH-команд, кто строит AI в регламентированных рынках. Пишите в LinkedIn или @ger_dennis_ai.
Turn your process into an AI system
Fixed price. Production quality. DACH B2B focus.