101 lines
3.9 KiB
Bash
Executable File
101 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# Скрипт для проверки подключения GPU в Docker контейнере Ollama
|
||
|
||
set -e
|
||
|
||
CONTAINER_NAME="ollama"
|
||
|
||
echo "=== Проверка GPU в Docker контейнере ==="
|
||
echo ""
|
||
|
||
# Определяем команду docker
|
||
DOCKER_CMD="docker"
|
||
if ! docker ps >/dev/null 2>&1; then
|
||
DOCKER_CMD="sudo docker"
|
||
fi
|
||
|
||
echo "1. Проверка конфигурации в docker-compose.yml..."
|
||
if grep -q "driver: nvidia" docker-compose.yml 2>/dev/null; then
|
||
echo " ✓ GPU настроен в docker-compose.yml"
|
||
echo " Конфигурация:"
|
||
grep -A 5 "driver: nvidia" docker-compose.yml | head -6
|
||
else
|
||
echo " ✗ GPU не настроен в docker-compose.yml"
|
||
fi
|
||
|
||
echo ""
|
||
echo "2. Проверка конфигурации контейнера..."
|
||
GPU_CONFIG=$($DOCKER_CMD inspect $CONTAINER_NAME 2>/dev/null | grep -i "nvidia\|gpu" | head -5)
|
||
if [ -n "$GPU_CONFIG" ]; then
|
||
echo " ✓ Найдена конфигурация GPU:"
|
||
echo "$GPU_CONFIG"
|
||
else
|
||
echo " ⚠ Конфигурация GPU не найдена в inspect"
|
||
fi
|
||
|
||
echo ""
|
||
echo "3. Проверка доступности nvidia-smi в контейнере..."
|
||
if $DOCKER_CMD exec $CONTAINER_NAME which nvidia-smi >/dev/null 2>&1; then
|
||
echo " ✓ nvidia-smi доступен"
|
||
echo ""
|
||
echo " Вывод nvidia-smi:"
|
||
$DOCKER_CMD exec $CONTAINER_NAME nvidia-smi 2>&1 | head -15 || echo " ⚠ nvidia-smi не может выполниться"
|
||
else
|
||
echo " ✗ nvidia-smi не найден в контейнере"
|
||
echo " Возможно, контейнер не имеет доступа к GPU"
|
||
fi
|
||
|
||
echo ""
|
||
echo "4. Проверка переменных окружения NVIDIA..."
|
||
NVIDIA_ENV=$($DOCKER_CMD exec $CONTAINER_NAME env | grep -i nvidia)
|
||
if [ -n "$NVIDIA_ENV" ]; then
|
||
echo " ✓ Переменные NVIDIA найдены:"
|
||
echo "$NVIDIA_ENV"
|
||
else
|
||
echo " ⚠ Переменные NVIDIA не найдены"
|
||
fi
|
||
|
||
echo ""
|
||
echo "5. Проверка логов Ollama на использование GPU..."
|
||
RECENT_LOGS=$($DOCKER_CMD logs $CONTAINER_NAME --tail 50 2>&1)
|
||
if echo "$RECENT_LOGS" | grep -qi "gpu\|cuda\|nvidia"; then
|
||
echo " ✓ Найдены упоминания GPU в логах:"
|
||
echo "$RECENT_LOGS" | grep -i "gpu\|cuda\|nvidia" | tail -5
|
||
else
|
||
echo " ⚠ Нет упоминаний GPU в последних логах"
|
||
fi
|
||
|
||
echo ""
|
||
echo "6. Проверка на хосте..."
|
||
if command -v nvidia-smi >/dev/null 2>&1; then
|
||
echo " GPU на хосте:"
|
||
nvidia-smi --query-gpu=name,driver_version,memory.total --format=csv,noheader 2>/dev/null || echo " ⚠ Не удалось получить информацию о GPU"
|
||
else
|
||
echo " ⚠ nvidia-smi не найден на хосте"
|
||
fi
|
||
|
||
echo ""
|
||
echo "=== Резюме ==="
|
||
echo ""
|
||
if $DOCKER_CMD exec $CONTAINER_NAME nvidia-smi >/dev/null 2>&1; then
|
||
echo "✓ GPU подключен и доступен в контейнере"
|
||
echo ""
|
||
echo "Для детальной информации выполните:"
|
||
echo " sudo docker exec ollama nvidia-smi"
|
||
else
|
||
echo "✗ GPU не доступен в контейнере"
|
||
echo ""
|
||
echo "Возможные причины:"
|
||
echo " 1. Docker не имеет доступа к GPU (нужен nvidia-docker2 или nvidia-container-toolkit)"
|
||
echo " 2. Контейнер не был перезапущен после изменения docker-compose.yml"
|
||
echo " 3. Драйверы NVIDIA не установлены на хосте"
|
||
echo ""
|
||
echo "Решение:"
|
||
echo " 1. Установите nvidia-container-toolkit:"
|
||
echo " sudo apt-get install -y nvidia-container-toolkit"
|
||
echo " sudo systemctl restart docker"
|
||
echo ""
|
||
echo " 2. Перезапустите контейнер:"
|
||
echo " docker compose restart ollama"
|
||
fi
|