Установка LLM на Ubuntu: Ollama, Llama.cpp, GPU поддержка | AdminWiki

Установка LLM на Ubuntu: Полное руководство для разработчиков

18 декабря 2025 9 мин. чтения #docker #gpu #llama.cpp #llm #nvidia #ollama #ubuntu #искусственный интеллект #установка
Содержание статьи

Представь, что ты разработчик, который хочет запустить локальную языковую модель на своём сервере Ubuntu. Может быть, для экспериментов, разработки приложений или просто чтобы не зависеть от облачных API. Давай разберем, как это сделать правильно, начиная с выбора инструмента и заканчивая запуском полноценного API-сервера.

Что такое LLM? Large Language Model (большая языковая модель) — это нейросеть, обученная на огромных объемах текста. Примеры: Llama 3, Mistral, Gemma. Они могут генерировать текст, отвечать на вопросы, писать код.

Подготовка системы Ubuntu

Перед установкой любой LLM убедись, что твоя система готова. Начнем с обновления пакетов и установки базовых зависимостей.

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential cmake curl git wget python3 python3-pip python3-venv

Проверка и установка драйверов NVIDIA (для GPU)

Если у тебя есть видеокарта NVIDIA и ты хочешь использовать её для ускорения LLM, выполни эти шаги:

bash
# Проверяем, видит ли система GPU
lspci | grep -i nvidia

# Устанавливаем драйверы (если нужно)
sudo apt install -y nvidia-driver-550

# Перезагружаемся
sudo reboot

# После перезагрузки проверяем установку CUDA
nvidia-smi
Версия драйвера (например, 550) должна быть совместима с твоей видеокартой. Проверь актуальную информацию на сайте NVIDIA.

Способ 1: Установка через Ollama (самый простой)

Ollama — это фреймворк для запуска LLM локально. Он автоматически загружает модели, управляет версиями и предоставляет простой API.

Установка Ollama на Ubuntu

bash
# Официальный скрипт установки
curl -fsSL https://ollama.com/install.sh | sh

# Добавляем текущего пользователя в группу ollama (чтобы не использовать sudo)
sudo usermod -aG ollama $USER

# Перезагружаемся или выходим/входим в систему
newgrp ollama

# Запускаем сервис Ollama
sudo systemctl start ollama
sudo systemctl enable ollama

Загрузка и запуск модели в Ollama

bash
# Скачиваем модель (например, Llama 3.1 8B)
ollama pull llama3.1:8b

# Запускаем модель в интерактивном режиме
ollama run llama3.1:8b

# Или запускаем как сервер (для API)
ollama serve &

# Проверяем работу через curl
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.1:8b",
  "prompt": "Привет, как дела?",
  "stream": false
}'

Способ 2: Установка через llama.cpp (для полного контроля)

Llama.cpp — это реализация LLM на C++ с оптимизациями для CPU и GPU. Даёт больше контроля, но требует сборки из исходников.

Сборка llama.cpp с поддержкой CUDA

bash
# Клонируем репозиторий
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp

# Устанавливаем зависимости для сборки с CUDA
sudo apt install -y nvidia-cuda-toolkit

# Собираем с поддержкой CUDA
make LLAMA_CUDA=1 -j$(nproc)

# Или для чистого CPU (без видеокарты)
# make -j$(nproc)

Конвертация и запуск модели в llama.cpp

bash
# Создаем виртуальное окружение Python
python3 -m venv venv
source venv/bin/activate

# Устанавливаем зависимости для конвертации моделей
pip install torch numpy sentencepiece

# Конвертируем модель GGUF (скачанную заранее)
python3 convert.py \
  --outfile models/llama-2-7b.Q4_K_M.gguf \
  --outtype q4_k_m \
  /путь/к/скачанной/модели

# Запускаем инференс
./main -m models/llama-2-7b.Q4_K_M.gguf \
  -p "Расскажи анекдот про программистов" \
  -n 256 \
  -ngl 35  # Количество слоев на GPU

Сравнение методов установки LLM

Метод Сложность Поддержка GPU Управление моделями Лучше для
Ollama Низкая Автоматическая Встроенная Быстрый старт, разработка
llama.cpp Высокая Ручная настройка Ручное Производительность, кастомные модели
Docker Средняя Через NVIDIA Container Toolkit Зависит от образа Продакшен, изоляция

Запуск LLM через Docker (продакшен-вариант)

Для продакшена или чтобы не засорять систему, используй Docker-контейнеры.

Установка Docker и NVIDIA Container Toolkit

bash
# Устанавливаем Docker
sudo apt install -y docker.io docker-compose
sudo usermod -aG docker $USER
newgrp docker

# Для GPU: устанавливаем NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

Запуск Ollama в Docker с GPU

bash
# Запускаем контейнер Ollama с доступом к GPU
docker run -d \
  --gpus all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama:latest

# Загружаем модель внутрь контейнера
docker exec -it ollama ollama pull llama3.1:8b

Docker Compose для LLM-стэка

Создай docker-compose.yml для управления всем стэком:

yaml
version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    volumes:
      - ollama_data:/root/.ollama
    ports:
      - "11434:11434"
    restart: unless-stopped

volumes:
  ollama_data:

Настройка API-сервера для LLM

Чтобы интегрировать LLM в свои приложения, нужен API-сервер. Рассмотрим два варианта.

Ollama API Server

Ollama уже включает API. После запуска ollama serve доступны эндпоинты:

  • POST /api/generate — генерация текста
  • POST /api/chat — чат-интерфейс
  • GET /api/tags — список загруженных моделей
python
import requests
import json

response = requests.post(
    'http://localhost:11434/api/generate',
    json={
        'model': 'llama3.1:8b',
        'prompt': 'Напиши функцию на Python для сортировки списка',
        'stream': False
    }
)

print(json.dumps(response.json(), indent=2, ensure_ascii=False))

Llama.cpp Server

bash
# Собираем серверную часть llama.cpp
cd llama.cpp
make server LLAMA_CUDA=1

# Запускаем сервер
./server -m models/llama-2-7b.Q4_K_M.gguf \
  -c 2048 \
  --port 8080 \
  --host 0.0.0.0 \
  -ngl 35

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

После установки важно настроить систему для максимальной производительности.

Настройки для GPU

  • CUDA/ROCm: Убедись, что драйверы установлены правильно (nvidia-smi)
  • Память GPU: Проверь, что модель помещается в VRAM. Для 7B модели в 4-битной кванттации нужно ~4-5GB
  • Температура: Мониторь температуру GPU при длительных инференсах

Настройки для CPU

bash
# Увеличиваем размер swap-файла (если мало RAM)
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Добавляем в fstab для автозагрузки
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# Настройка параметров ядра для лучшей производительности
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Кванттация моделей — ключевая оптимизация. Модели в формате GGUF с кванттацией Q4_K_M дают хороший баланс между качеством и размером. Используй llama.cpp для конвертации в нужный формат.

Частые проблемы и решения

Проблема: Не хватает памяти (OOM Error)

Решение:

  • Используй модели меньшего размера (например, 7B вместо 70B)
  • Примени более агрессивную кванттацию (Q2_K вместо Q4_K_M)
  • Увеличь swap-файл как показано выше
  • Для GPU: используй --ngl чтобы оставить часть слоев на CPU

Проблема: Медленная работа на CPU

Решение:

  • Убедись, что собрал llama.cpp с флагами оптимизации (make -j$(nproc))
  • Используй AVX2/AVX512 если процессор поддерживает
  • Попробуй ggml с поддержкой BLAS (OpenBLAS)

Проблема: Docker не видит GPU

Решение:

bash
# Проверяем, что NVIDIA Container Toolkit установлен
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

# Если не работает, переустанавливаем toolkit
sudo apt purge nvidia-container-toolkit
sudo apt install nvidia-container-toolkit
sudo systemctl restart docker

Дальнейшие шаги

После успешной установки LLM на Ubuntu ты можешь:

  1. Интегрировать с приложениями: Написать Python/FastAPI сервис для доступа к модели
  2. Настроить автозагрузку: Создать systemd сервис для автоматического запуска LLM-сервера
  3. Добавить авторизацию: Поставить nginx как reverse proxy с Basic Auth или JWT
  4. Экспериментировать с моделями: Попробовать Mistral, Gemma, Phi-3 или специализированные модели для кода
  5. Мониторинг: Настроить Prometheus + Grafana для отслеживания использования ресурсов
Совет от DevOps: Для продакшена всегда используй версионирование моделей, логирование запросов и мониторинг. Храни конфигурации в Git, а секреты (API keys) — в Vault или аналогичном хранилище.

Часто задаваемые вопросы (FAQ)

Какая видеокарта нужна для запуска LLM на Ubuntu?

Минимум — NVIDIA с 8GB VRAM для 7B моделей. Для 70B моделей нужно 40GB+ VRAM или использование CPU+RAM. Карты серии RTX 3090/4090 (24GB) — хороший выбор. AMD карты работают через ROCm, но поддержка хуже.

Можно ли запустить LLM без видеокарты на Ubuntu?

Да, через llama.cpp на CPU. Производительность будет ниже, но для 7B-13B моделей на современном процессоре (Core i7/Ryzen 7) скорость приемлемая для разработки. Используй квантованные модели (GGUF формат).

Какую модель выбрать для начала?

Начни с Llama 3.1 8B через Ollama — хороший баланс качества и требований. Для кодирования попробуй CodeLlama 7B. Для русского языка — Saiga или Russian llama-based модели.

Как обновлять LLM на Ubuntu?

Для Ollama: ollama pull модель:тег загрузит новую версию. Для llama.cpp: пересобрать из исходников (git pull && make) и скачать новые веса моделей.

Безопасно ли запускать LLM локально?

Да, локальный запуск безопаснее облачных API — твои данные никуда не уходят. Но изолируй сервер в Docker, настрой фаервол и не открывай порты наружу без необходимости.

Заключение

Установка LLM на Ubuntu — процесс, который можно разбить на простые шаги. Начни с Ollama для быстрого старта, затем переходи к llama.cpp для тонкой настройки и оптимизации. Docker поможет изолировать окружение для продакшена.

Ключевые моменты:

  • Выбери метод установки по своим навыкам и требованиям
  • Проверь наличие GPU и драйверов для ускорения
  • Используй квантованные модели для экономии памяти
  • Настрой мониторинг и логирование для продакшена

Теперь у тебя есть полноценная LLM на твоём сервере Ubuntu. Экспериментируй с разными моделями, интегрируй в свои проекты и не забывай следить за обновлениями инструментов.

Поделиться:
Сохранить гайд? В закладки браузера