Files
mlflow-practice/setup_server.sh
T
second_constantine d5c5bf3767 Recall везде + фиксы окружения
- recall_macro/recall_weighted во всех скриптах с метриками
  (train_simple, train_gpu, autolog_demo, hyperparam_sweep,
   grid_search_cv, load_and_predict, compare_runs)
- grid_search_cv: multi-metric scoring (accuracy + recall_macro)
- register_model: выбор лучшей модели по recall (--metric)
- MLflow warnings: name вместо artifact_path, сигнатура модели,
  numpy input_example для pytorch, подавление env-var INFO
- start_ui.sh: порт 5555 + file-store backend (фикс: UI не показывал
  эксперименты, т.к. скрипты писали в mlruns/, а сервер читал sqlite)
- setup_server.sh: развилка macOS/Linux + проверка MPS
- train_gpu: get_device CUDA→MPS→CPU, num_workers=0 на macOS
- AGENTS.md: гид для агента + саморегламент обновления
- README/CODE_WALKTHROUGH: выровнена нумерация уроков 8/9
- .gitignore: +.DS_Store
- удалён scripts/setup_git.sh
2026-07-20 22:28:23 +03:00

166 lines
5.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ============================================================
# Установка окружения MLflow Practice
# Поддержка: Linux (GPU-сервер, RTX 3090) и macOS (Intel/Apple Silicon)
# Запускать: bash setup_server.sh
# ============================================================
set -e
echo "============================================"
echo " MLflow Practice — установка окружения"
echo "============================================"
# --- Определение ОС ---
OS="$(uname -s)"
case "$OS" in
Darwin*) PLATFORM="macos" ;;
Linux*) PLATFORM="linux" ;;
*) echo "❌ Неподдерживаемая ОС: $OS"; exit 1 ;;
esac
ARCH="$(uname -m)"
echo "📍 Платформа: $PLATFORM ($ARCH)"
# ============================================
# macOS — установка без CUDA (есть MPS на Apple Silicon)
# ============================================
if [ "$PLATFORM" = "macos" ]; then
echo ""
echo "🍎 macOS: подготовка системы..."
# --- Homebrew ---
if ! command -v brew &> /dev/null; then
echo "⚠️ Homebrew не найден. Установите его вручную:"
echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\""
echo " и запустите скрипт снова."
exit 1
fi
echo " Homebrew: $(brew --version | head -1)"
# --- Python через brew (если нет) ---
if ! command -v python3 &> /dev/null; then
echo "📥 Устанавливаю python@3.13 через brew..."
brew install python@3.13
fi
echo "🐍 Python: $(python3.13 --version)"
# --- Создание venv ---
echo ""
echo "📦 Создание виртуального окружения venv..."
if [ ! -d ".venv" ]; then
python3.13 -m venv .venv
fi
source .venv/bin/activate
echo " Активировано: $(which python)"
# --- pip ---
echo ""
echo "⬆️ Обновление pip..."
pip install --upgrade pip wheel setuptools
# --- MLflow + базовые библиотеки ---
echo ""
echo "📥 Установка MLflow + scikit-learn + matplotlib..."
pip install mlflow scikit-learn pandas numpy matplotlib
# --- PyTorch (CPU на Intel, MPS на Apple Silicon) ---
echo ""
echo "🔥 Установка PyTorch (PyPI — без CUDA)..."
pip install torch torchvision
# --- Проверка PyTorch + устройства ---
echo ""
echo "✅ Проверка PyTorch..."
python3 -c "
import torch, platform
print(f'PyTorch: {torch.__version__}')
print(f'MPS available: {torch.backends.mps.is_available()}')
if torch.backends.mps.is_available():
print('Устройство: Apple Silicon GPU (MPS)')
else:
print('Устройство: CPU (Intel Mac)')
print('️ На macOS CUDA недоступна — train_gpu.py будет использовать CPU/MPS')
"
# ============================================
# Linux — GPU-сервер с CUDA (RTX 3090)
# ============================================
else
# --- Проверка GPU ---
echo ""
echo "📡 Проверка GPU..."
if command -v nvidia-smi &> /dev/null; then
nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader
else
echo "⚠️ nvidia-smi не найден — CUDA может быть не установлена"
fi
# --- Проверка Python ---
echo ""
echo "🐍 Проверка Python..."
python3 --version
# --- Создание venv ---
echo ""
echo "📦 Создание виртуального окружения venv..."
if [ ! -d ".venv" ]; then
python3 -m venv .venv
fi
source .venv/bin/activate
echo " Активировано: $(which python)"
# --- pip ---
echo ""
echo "⬆️ Обновление pip..."
pip install --upgrade pip wheel setuptools
# --- MLflow + базовые библиотеки ---
echo ""
echo "📥 Установка MLflow + scikit-learn + matplotlib..."
pip install mlflow scikit-learn pandas numpy matplotlib
# --- PyTorch под CUDA 12.1 ---
echo ""
echo "🔥 Установка PyTorch (CUDA 12.1)..."
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
# --- Проверка PyTorch + CUDA ---
echo ""
echo "✅ Проверка PyTorch + CUDA..."
python3 -c "
import torch
print(f'PyTorch: {torch.__version__}')
print(f'CUDA available: {torch.cuda.is_available()}')
if torch.cuda.is_available():
print(f'GPU: {torch.cuda.get_device_name(0)}')
print(f'VRAM: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB')
"
fi
# ============================================
# Общая проверка MLflow (обе платформы)
# ============================================
echo ""
echo "✅ Проверка MLflow..."
python3 -c "import mlflow; print(f'MLflow: {mlflow.__version__}')"
echo ""
echo "============================================"
echo " ✅ Установка завершена! ($PLATFORM)"
echo "============================================"
echo ""
echo "Следующие шаги:"
echo " 1. Активируйте окружение: source .venv/bin/activate"
echo " 2. Запустите MLflow UI: ./start_ui.sh"
echo " 3. В другом терминале:"
echo " source .venv/bin/activate"
if [ "$PLATFORM" = "macos" ]; then
echo " python src/train_simple.py --n-estimators 100 --max-depth 8"
echo " python src/train_gpu.py --epochs 3 --batch-size 64 --lr 0.01 # CPU/MPS, меньше эпох"
else
echo " python src/train_simple.py --n-estimators 100 --max-depth 8"
echo " python src/train_gpu.py --epochs 10 --batch-size 256 --lr 0.001"
fi
echo ""