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

Установка Ollama: Руководство по локальному запуску LLM

Установка Ollama, запуск локальных LLM моделей (Llama 3, Mistral, Gemma), использование API, управление моделями, GPU-ускорение и развертывание через Docker.

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

Содержание

Установка Ollama: Руководство по локальному запуску LLM

Ollama — это инструмент с открытым исходным кодом, позволяющий легко запускать большие языковые модели (LLM) на вашем локальном сервере. Вы можете загрузить и использовать Llama 3, Mistral, Gemma, Phi-3 и многие другие модели одной командой. В этом руководстве подробно рассматриваются установка Ollama, управление моделями, использование API и GPU-ускорение.

Что такое Ollama?

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

  • Простая установка: Настройка и загрузка моделей одной командой
  • Широкая поддержка моделей: Llama 3, Mistral, Gemma, Phi-3, CodeLlama, Qwen и другие
  • REST API: OpenAI-совместимый API-эндпоинт
  • GPU-ускорение: Поддержка NVIDIA и AMD GPU
  • Modelfile: Создание пользовательских конфигураций моделей
  • Низкое потребление ресурсов: Малое потребление памяти с квантизированными моделями

Системные требования

КомпонентМинимумРекомендуется
RAM8 ГБ16 ГБ+
Диск20 ГБ50 ГБ+
GPU (опционально)NVIDIA 4 ГБ VRAMNVIDIA 8 ГБ+ VRAM
ОСLinux, macOS, WindowsUbuntu 22.04 LTS

Установка на Linux

Используйте официальный скрипт установки:

hljs bash
curl -fsSL https://ollama.com/install.sh | sh

После установки сервис Ollama запускается автоматически. Проверьте статус:

hljs bash
systemctl status ollama

Ручная установка

Если скрипт не работает:

hljs bash
# Загрузка бинарного файла
curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama

# Создание пользователя ollama
useradd -r -s /bin/false -m -d /usr/share/ollama ollama

# Файл сервиса systemd
cat > /etc/systemd/system/ollama.service << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="HOME=/usr/share/ollama"

[Install]
WantedBy=default.target
EOF

systemctl daemon-reload
systemctl enable --now ollama

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

Режим CPU

hljs bash
docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v ollama_data:/root/.ollama \
  ollama/ollama

Режим GPU (NVIDIA)

hljs bash
docker run -d \
  --name ollama \
  --gpus all \
  -p 11434:11434 \
  -v ollama_data:/root/.ollama \
  ollama/ollama

Docker Compose

hljs yaml
version: '3.8'
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama_data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  ollama_data:

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

hljs bash
# Модель Llama 3.1 8B
ollama pull llama3.1

# Mistral 7B
ollama pull mistral

# Google Gemma 2 9B
ollama pull gemma2

# Интерактивный чат
ollama run llama3.1

# Одиночный запрос
ollama run llama3.1 "Как проверить использование диска в Linux?"

Управление моделями

hljs bash
# Список установленных моделей
ollama list

# Информация о модели
ollama show llama3.1

# Удаление модели
ollama rm mistral

# Показать запущенные модели
ollama ps

Использование REST API

Ollama предоставляет REST API на порту 11434:

Завершение чата

hljs bash
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.1",
  "messages": [
    {"role": "system", "content": "Ты полезный ассистент."},
    {"role": "user", "content": "Что такое Docker?"}
  ],
  "stream": false
}'

Генерация текста

hljs bash
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.1",
  "prompt": "Напиши конфигурацию Nginx reverse proxy",
  "stream": false
}'

Использование API на Python

hljs python
import requests

def chat_with_ollama(prompt, model="llama3.1"):
    response = requests.post(
        "http://localhost:11434/api/chat",
        json={
            "model": model,
            "messages": [{"role": "user", "content": prompt}],
            "stream": False
        }
    )
    return response.json()["message"]["content"]

result = chat_with_ollama("Как отсортировать список в Python?")
print(result)

Пользовательские модели с Modelfile

hljs dockerfile
# Modelfile
FROM llama3.1

SYSTEM """Ты ассистент технической поддержки REXE Technology.
Ты помогаешь с управлением серверами, Docker, Linux и сетевыми вопросами."""

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096

Создание модели:

hljs bash
ollama create rexe-assistant -f Modelfile
ollama run rexe-assistant

GPU-ускорение

NVIDIA GPU

hljs bash
# Проверка драйвера NVIDIA
nvidia-smi

# Версия CUDA
nvcc --version

AMD GPU (ROCm)

hljs bash
curl -fsSL https://ollama.com/install.sh | OLLAMA_ACCELERATION=rocm sh

docker run -d \
  --name ollama \
  --device /dev/kfd \
  --device /dev/dri \
  -p 11434:11434 \
  -v ollama_data:/root/.ollama \
  ollama/ollama:rocm

Управление памятью GPU

hljs bash
export OLLAMA_NUM_GPU=1
export OLLAMA_GPU_MEMORY=6144
export OLLAMA_MAX_LOADED_MODELS=2
export CUDA_VISIBLE_DEVICES=0

Переменные окружения

hljs bash
# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/data/ollama"
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_KEEP_ALIVE=5m"

Применение изменений:

hljs bash
systemctl daemon-reload
systemctl restart ollama

Советы по производительности

hljs bash
# Экономия RAM с квантизированными моделями
ollama pull llama3.1:8b-q4_0    # 4-бит (~4,7 ГБ)
ollama pull llama3.1:8b-q5_1    # 5-бит (~5,7 ГБ)
ollama pull llama3.1:8b-q8_0    # 8-бит (~8,5 ГБ)

# Настройка контекстного окна
ollama run llama3.1 --num-ctx 2048

На GPU-серверах REXE вы можете запускать большие языковые модели с высокой производительностью через Ollama. GPU NVIDIA A100/H100 обеспечивают быстрые ответы даже для моделей с 70B параметрами.