Перейти к основному содержимому
Вернуться в категорию

Установка LocalAI: Self-Hosted ИИ API, совместимый с OpenAI

Установка LocalAI через Docker, self-hosted ИИ-сервис, совместимый с OpenAI API, генерация текста, создание изображений, синтез речи, эмбеддинги и управление моделями.

Время чтения: 14 мин. ИИ и ML на своём сервере
localaiopenaiapiискусственный интеллектself-hostingdockerembedding

Содержание

Установка 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
RAM8 ГБ+16 ГБ+
Диск20 ГБ50 ГБ+
GPUНе требуетсяNVIDIA 8 ГБ+ VRAM
ОСLinux/macOSLinux (CUDA)
Docker24.0+24.0+ + nvidia-container-toolkit

Установка через Docker

Режим CPU

hljs bash
docker run -d \
  --name localai \
  -p 8080:8080 \
  -v localai_models:/build/models \
  localai/localai:latest-cpu

Режим GPU (NVIDIA CUDA)

hljs bash
docker run -d \
  --name localai \
  --gpus all \
  -p 8080:8080 \
  -v localai_models:/build/models \
  localai/localai:latest-gpu-nvidia-cuda-12

Docker Compose

hljs yaml
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:

Установка моделей

Загрузка из галереи

hljs bash
# Список доступных моделей
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

Ручное добавление модели

hljs bash
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"

Создание файла конфигурации модели:

hljs yaml
# 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

hljs bash
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
  }'

Создание эмбеддингов

hljs bash
curl http://localhost:8080/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-ada-002",
    "input": "Лучшие практики безопасности серверов"
  }'

Генерация изображений

hljs bash
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

hljs 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)}")

Конфигурация нескольких моделей

hljs yaml
# 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

Оптимизация производительности

hljs bash
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-серверами.