Установка LocalAI: Self-Hosted ИИ API, совместимый с OpenAI
Установка LocalAI через Docker, self-hosted ИИ-сервис, совместимый с OpenAI API, генерация текста, создание изображений, синтез речи, эмбеддинги и управление моделями.
Содержание
Установка LocalAI: Self-Hosted ИИ API, совместимый с OpenAI
LocalAI — это открытый self-hosted ИИ API-сервер, полностью совместимый с OpenAI API. Он объединяет все ИИ-возможности: генерацию текста, создание изображений, синтез речи, распознавание речи и эмбеддинги в одном сервисе. Его способность работать в режиме CPU без GPU — одно из главных преимуществ.
Что такое LocalAI?
LocalAI — это drop-in замена, точно воспроизводящая формат OpenAI API. Вы можете перенаправить существующие приложения, использующие OpenAI SDK, на LocalAI, просто изменив base URL. Основные возможности:
- Совместимость с OpenAI API: /v1/chat/completions, /v1/images/generations, /v1/audio/transcriptions
- Поддержка множества моделей: LLaMA, Mistral, Phi, Gemma, Whisper, Stable Diffusion
- CPU и GPU: Работает без GPU, поддержка NVIDIA/AMD GPU
- Эмбеддинги: Генерация текстовых эмбеддингов (для RAG-приложений)
- TTS/STT: Преобразование текста в речь и речи в текст
- Генерация изображений: Интеграция со Stable Diffusion
- Function Calling: Поддержка вызова функций OpenAI
Системные требования
| Компонент | Режим CPU | Режим GPU |
|---|---|---|
| RAM | 8 ГБ+ | 16 ГБ+ |
| Диск | 20 ГБ | 50 ГБ+ |
| GPU | Не требуется | NVIDIA 8 ГБ+ VRAM |
| ОС | Linux/macOS | Linux (CUDA) |
| Docker | 24.0+ | 24.0+ + nvidia-container-toolkit |
Установка через Docker
Режим CPU
docker run -d \
--name localai \
-p 8080:8080 \
-v localai_models:/build/models \
localai/localai:latest-cpu
Режим GPU (NVIDIA CUDA)
docker run -d \
--name localai \
--gpus all \
-p 8080:8080 \
-v localai_models:/build/models \
localai/localai:latest-gpu-nvidia-cuda-12
Docker Compose
version: '3.8'
services:
localai:
image: localai/localai:latest-gpu-nvidia-cuda-12
container_name: localai
ports:
- "8080:8080"
volumes:
- localai_models:/build/models
- ./config:/build/config
environment:
- THREADS=4
- CONTEXT_SIZE=4096
- GALLERIES=[{"name":"model-gallery","url":"github:mudler/LocalAI/gallery/index.yaml@master"}]
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"]
interval: 30s
timeout: 10s
retries: 3
volumes:
localai_models:
Установка моделей
Загрузка из галереи
# Список доступных моделей
curl http://localhost:8080/models/available
# Загрузка модели
curl http://localhost:8080/models/apply -d '{
"id": "huggingface://TheBloke/Llama-2-7B-Chat-GGUF/llama-2-7b-chat.Q4_K_M.gguf",
"name": "llama-3"
}'
# Список загруженных моделей
curl http://localhost:8080/v1/models
Ручное добавление модели
wget -O models/mistral-7b-instruct.gguf \
"https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf"
Создание файла конфигурации модели:
# config/mistral.yaml
name: mistral
backend: llama-cpp
parameters:
model: mistral-7b-instruct.gguf
temperature: 0.7
top_p: 0.9
top_k: 40
context_size: 4096
threads: 4
gpu_layers: 35
Использование API
Chat Completion
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3",
"messages": [
{"role": "system", "content": "Ты полезный ассистент."},
{"role": "user", "content": "Что такое Docker Compose?"}
],
"temperature": 0.7,
"max_tokens": 512
}'
Создание эмбеддингов
curl http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-ada-002",
"input": "Лучшие практики безопасности серверов"
}'
Генерация изображений
curl http://localhost:8080/v1/images/generations \
-H "Content-Type: application/json" \
-d '{
"model": "stablediffusion",
"prompt": "a futuristic server room, neon lights",
"size": "512x512"
}'
Использование с Python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="llama-3",
messages=[
{"role": "system", "content": "Ты эксперт по Linux."},
{"role": "user", "content": "Как установить Nginx?"}
],
max_tokens=1024
)
print(response.choices[0].message.content)
embedding = client.embeddings.create(
model="text-embedding-ada-002",
input="Управление Docker-контейнерами"
)
print(f"Размерность эмбеддинга: {len(embedding.data[0].embedding)}")
Конфигурация нескольких моделей
# config/models.yaml
- name: llama-3
backend: llama-cpp
parameters:
model: llama-3-8b.gguf
context_size: 4096
gpu_layers: 35
- name: mistral
backend: llama-cpp
parameters:
model: mistral-7b-instruct.gguf
context_size: 4096
gpu_layers: 35
- name: embedding
backend: llama-cpp
embeddings: true
parameters:
model: all-MiniLM-L6-v2.gguf
Оптимизация производительности
export THREADS=8
export CONTEXT_SIZE=4096
export GPU_LAYERS=35
export PARALLEL_REQUESTS=true
docker run -d \
--name localai \
--gpus all \
-p 8080:8080 \
-e THREADS=8 \
-e CONTEXT_SIZE=4096 \
-v localai_models:/build/models \
localai/localai:latest-gpu-nvidia-cuda-12
Запустите собственный OpenAI-совместимый ИИ API с LocalAI на серверах REXE. Получите высокопроизводительный инференс с нашими GPU-серверами.
Связанные статьи
Установка Ollama: Руководство по локальному запуску LLM
Установка Ollama, запуск локальных LLM моделей (Llama 3, Mistral, Gemma), использование API, управление моделями, GPU-ускорение и развертывание через Docker.
Установка Open WebUI: Локальный ИИ с интерфейсом как у ChatGPT
Установка Open WebUI через Docker, интеграция с Ollama, управление пользователями, RAG (запросы к документам), управление моделями и поддержка нескольких пользователей.
Развёртывание ИИ-моделей на GPU-сервере: Руководство по NVIDIA CUDA
Установка драйверов NVIDIA, CUDA toolkit, nvidia-container-toolkit, обслуживание моделей с vLLM, мониторинг GPU и развёртывание ИИ-моделей с Docker.