forked from templates/template-go-orm
Загрузить файлы в «/»
This commit is contained in:
350
README (1).md
Normal file
350
README (1).md
Normal file
@@ -0,0 +1,350 @@
|
||||
cat << 'EOF' > README.md
|
||||
# Ollama Remote AI Server Setup
|
||||
|
||||
Полная инструкция по настройке сервера для запуска локальных LLM через Ollama
|
||||
и подключению к нему с удалённого компьютера (ноутбука).
|
||||
|
||||
Сервер: Ubuntu-server 24.04
|
||||
API Ollama: порт 11434
|
||||
|
||||
---
|
||||
|
||||
# Архитектура системы
|
||||
|
||||
Ноутбук используется для разработки и запуска инструментов (VS Code / Codex).
|
||||
Сервер выполняет вычисления модели.
|
||||
|
||||
Ноутбук подключается к серверу через SSH туннель.
|
||||
|
||||
Схема:
|
||||
|
||||
Laptop
|
||||
↓
|
||||
SSH tunnel
|
||||
↓
|
||||
Ollama Server
|
||||
↓
|
||||
LLM models
|
||||
|
||||
---
|
||||
|
||||
# 1. Установка драйверов GPU и CUDA
|
||||
|
||||
На сервере были установлены:
|
||||
|
||||
- драйверы видеокарты
|
||||
|
||||
Однако позже было принято решение временно использовать CPU,
|
||||
так как установленная видеокарта оказалась слишком слабой.
|
||||
|
||||
GPU можно будет вернуть позже.
|
||||
|
||||
---
|
||||
|
||||
# 2. Установка Ollama
|
||||
|
||||
Установка выполняется официальным install-script.
|
||||
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
|
||||
После установки бинарный файл появляется:
|
||||
|
||||
/usr/local/bin/ollama
|
||||
|
||||
---
|
||||
|
||||
# 3. Создание systemd сервиса
|
||||
|
||||
Чтобы Ollama работал как сервер и автоматически запускался,
|
||||
создаётся systemd сервис.
|
||||
|
||||
sudo nano /etc/systemd/system/ollama.service
|
||||
|
||||
Содержимое:
|
||||
|
||||
[Unit]
|
||||
Description=Ollama Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/ollama serve
|
||||
Restart=always
|
||||
User=ollama
|
||||
Group=ollama
|
||||
|
||||
Environment="OLLAMA_HOST=0.0.0.0"
|
||||
Environment="OLLAMA_FLASH_ATTENTION=1"
|
||||
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
---
|
||||
|
||||
# Разбор параметров
|
||||
|
||||
OLLAMA_HOST=0.0.0.0
|
||||
|
||||
Позволяет принимать подключения с других устройств.
|
||||
Если использовать 127.0.0.1 — сервер будет доступен только локально.
|
||||
|
||||
OLLAMA_FLASH_ATTENTION=1
|
||||
|
||||
Оптимизированная реализация attention для ускорения.
|
||||
|
||||
OLLAMA_KV_CACHE_TYPE=q8_0
|
||||
|
||||
Квантизированный KV cache для экономии памяти.
|
||||
|
||||
При данной видеокарте я также добавил в конфигурацию, что работа должна быть от CPU.
|
||||
|
||||
---
|
||||
|
||||
# 4. Создание пользователя сервиса
|
||||
|
||||
Сервис Ollama запускается не от root.
|
||||
|
||||
sudo useradd -r -s /bin/false ollama
|
||||
|
||||
Параметры:
|
||||
|
||||
-r системный пользователь
|
||||
-s запрет входа в shell
|
||||
|
||||
---
|
||||
|
||||
# 5. Запуск сервиса
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
|
||||
sudo systemctl enable ollama
|
||||
|
||||
sudo systemctl start ollama
|
||||
|
||||
Проверка:
|
||||
|
||||
sudo systemctl status ollama
|
||||
|
||||
Если всё работает:
|
||||
|
||||
Active: active (running)
|
||||
|
||||
---
|
||||
|
||||
# 6. Проверка API Ollama
|
||||
|
||||
curl http://localhost:11434/api/tags
|
||||
|
||||
Если сервер работает — возвращается JSON.
|
||||
|
||||
---
|
||||
|
||||
# 7. Установка моделей
|
||||
|
||||
Пример установки:
|
||||
|
||||
ollama pull qwen2.5-coder:1.5b
|
||||
|
||||
Также была установлена:
|
||||
|
||||
gpt-oss:20b
|
||||
|
||||
Проверка:
|
||||
|
||||
ollama list
|
||||
|
||||
---
|
||||
|
||||
# 8. ПРОБЛЕМА: после reboot исчезли модели
|
||||
|
||||
После перезагрузки сервера:
|
||||
|
||||
sudo reboot
|
||||
|
||||
команда
|
||||
|
||||
ollama list
|
||||
|
||||
показывала:
|
||||
|
||||
NAME ID SIZE MODIFIED
|
||||
|
||||
то есть список моделей был пустым.
|
||||
|
||||
Хотя модели были скачаны ранее.
|
||||
|
||||
---
|
||||
|
||||
# 9. Причина проблемы
|
||||
|
||||
Модели были скачаны под пользователем:
|
||||
|
||||
user
|
||||
|
||||
и лежали в директории:
|
||||
|
||||
/home/user/.ollama
|
||||
|
||||
Но сервис Ollama работает под пользователем:
|
||||
|
||||
ollama
|
||||
|
||||
Поэтому он ищет модели в:
|
||||
|
||||
/usr/share/ollama/.ollama
|
||||
|
||||
Получилась ситуация:
|
||||
|
||||
модели существуют
|
||||
но Ollama их не видит
|
||||
|
||||
---
|
||||
|
||||
# 10. Диагностика
|
||||
|
||||
Проверяем пользователя процесса:
|
||||
|
||||
ps -o user= -p 1035
|
||||
|
||||
результат:
|
||||
|
||||
ollama
|
||||
|
||||
Проверяем пользователя:
|
||||
|
||||
getent passwd ollama
|
||||
|
||||
ollama:x:999:988::/usr/share/ollama:/bin/false
|
||||
|
||||
---
|
||||
|
||||
Проверяем папки:
|
||||
|
||||
sudo ls /usr/share/ollama/.ollama/models
|
||||
|
||||
Но модели лежали здесь:
|
||||
|
||||
/home/user/.ollama/models
|
||||
|
||||
---
|
||||
|
||||
# 11. Поиск manifests
|
||||
|
||||
sudo find / -type d -name "manifests" 2>/dev/null
|
||||
|
||||
результат:
|
||||
|
||||
/home/user/.ollama/models/manifests
|
||||
/usr/share/ollama/.ollama/models/manifests
|
||||
|
||||
Это подтвердило наличие двух разных директорий моделей.
|
||||
|
||||
---
|
||||
|
||||
# 12. Решение: перенос моделей
|
||||
|
||||
sudo mv /home/user/.ollama/models/* /usr/share/ollama/.ollama/models/
|
||||
|
||||
---
|
||||
|
||||
# 13. Исправление прав
|
||||
|
||||
sudo chown -R ollama:ollama /usr/share/ollama/.ollama
|
||||
|
||||
---
|
||||
|
||||
# 14. Перезапуск сервиса
|
||||
|
||||
sudo systemctl restart ollama
|
||||
|
||||
---
|
||||
|
||||
# 15. Проверка
|
||||
|
||||
ollama list
|
||||
|
||||
результат:
|
||||
|
||||
qwen2.5-coder:1.5b
|
||||
gpt-oss:20b
|
||||
|
||||
Модели снова доступны.
|
||||
|
||||
---
|
||||
|
||||
# 16. Удаление старой директории
|
||||
|
||||
sudo rm -rf /home/user/.ollama
|
||||
|
||||
Теперь существует только одна директория моделей.
|
||||
|
||||
---
|
||||
|
||||
# 17. Проверка порта Ollama
|
||||
|
||||
ss -ltnp | grep 11434
|
||||
|
||||
результат:
|
||||
|
||||
LISTEN *:11434
|
||||
|
||||
Это означает, что сервер принимает подключения из сети.
|
||||
|
||||
---
|
||||
|
||||
# 18. Просмотр файлов моделей
|
||||
|
||||
cd /usr/share/ollama/.ollama/models/blobs
|
||||
|
||||
ls -lhS --reverse
|
||||
|
||||
Самые большие файлы — сами модели.
|
||||
|
||||
---
|
||||
|
||||
# 19. Подключение с ноутбука
|
||||
|
||||
На ноутбуке в отдельном терминале открывается SSH туннель:
|
||||
|
||||
ssh -N -L 11434:localhost:11434 user@10.111.111.40
|
||||
|
||||
Это создаёт соединение:
|
||||
|
||||
localhost:11434 (ноутбук)
|
||||
↓
|
||||
10.111.111.40:11434 (сервер Ollama)
|
||||
|
||||
Теперь любые программы на ноутбуке могут использовать сервер.
|
||||
|
||||
---
|
||||
|
||||
# 20. Проверка подключения
|
||||
|
||||
curl http://localhost:11434
|
||||
|
||||
Ответ:
|
||||
|
||||
Ollama is running
|
||||
|
||||
---
|
||||
|
||||
# 21. Использование моделей
|
||||
|
||||
В отдельном терминале запускаем codex через ollama:
|
||||
|
||||
ollama launch codex
|
||||
|
||||
Выбираем нужную модель - всё!
|
||||
|
||||
# Итог
|
||||
|
||||
Сервер работает как удалённый backend для LLM.
|
||||
|
||||
Он:
|
||||
|
||||
- принимает подключения по сети
|
||||
- хранит модели централизованно
|
||||
- управляется через systemd
|
||||
- поддерживает CPU и GPU режим
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user