Представь, что ты разработчик, который хочет запустить локальную языковую модель на своём сервере Ubuntu. Может быть, для экспериментов, разработки приложений или просто чтобы не зависеть от облачных API. Давай разберем, как это сделать правильно, начиная с выбора инструмента и заканчивая запуском полноценного API-сервера.
Подготовка системы Ubuntu
Перед установкой любой LLM убедись, что твоя система готова. Начнем с обновления пакетов и установки базовых зависимостей.
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, выполни эти шаги:
# Проверяем, видит ли система GPU
lspci | grep -i nvidia
# Устанавливаем драйверы (если нужно)
sudo apt install -y nvidia-driver-550
# Перезагружаемся
sudo reboot
# После перезагрузки проверяем установку CUDA
nvidia-smi
Способ 1: Установка через Ollama (самый простой)
Ollama — это фреймворк для запуска LLM локально. Он автоматически загружает модели, управляет версиями и предоставляет простой API.
Установка Ollama на Ubuntu
# Официальный скрипт установки
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
# Скачиваем модель (например, 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
# Клонируем репозиторий
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
# Создаем виртуальное окружение 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
# Устанавливаем 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
# Запускаем контейнер 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 для управления всем стэком:
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— список загруженных моделей
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
# Собираем серверную часть 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
# Увеличиваем размер 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
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
Решение:
# Проверяем, что 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 ты можешь:
- Интегрировать с приложениями: Написать Python/FastAPI сервис для доступа к модели
- Настроить автозагрузку: Создать systemd сервис для автоматического запуска LLM-сервера
- Добавить авторизацию: Поставить nginx как reverse proxy с Basic Auth или JWT
- Экспериментировать с моделями: Попробовать Mistral, Gemma, Phi-3 или специализированные модели для кода
- Мониторинг: Настроить Prometheus + Grafana для отслеживания использования ресурсов
Часто задаваемые вопросы (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. Экспериментируй с разными моделями, интегрируй в свои проекты и не забывай следить за обновлениями инструментов.