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
This commit is contained in:
+128
-42
@@ -1,56 +1,134 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# Установка окружения MLflow на GPU-сервере (RTX 3090)
|
||||
# Запускать НА СЕРВЕРЕ: bash setup_server.sh
|
||||
# Установка окружения MLflow Practice
|
||||
# Поддержка: Linux (GPU-сервер, RTX 3090) и macOS (Intel/Apple Silicon)
|
||||
# Запускать: bash setup_server.sh
|
||||
# ============================================================
|
||||
set -e
|
||||
|
||||
echo "============================================"
|
||||
echo " MLflow Practice — установка на сервере"
|
||||
echo " MLflow Practice — установка окружения"
|
||||
echo "============================================"
|
||||
|
||||
# --- Проверка GPU ---
|
||||
echo ""
|
||||
echo "📡 Проверка GPU..."
|
||||
if command -v nvidia-smi &> /dev/null; then
|
||||
nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader
|
||||
# --- Определение ОС ---
|
||||
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
|
||||
echo "⚠️ nvidia-smi не найден — CUDA может быть не установлена"
|
||||
fi
|
||||
|
||||
# --- Проверка Python ---
|
||||
echo ""
|
||||
echo "🐍 Проверка Python..."
|
||||
python3 --version
|
||||
# --- Проверка 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
|
||||
|
||||
# --- Создание виртуального окружения ---
|
||||
echo ""
|
||||
echo "📦 Создание виртуального окружения venv..."
|
||||
if [ ! -d ".venv" ]; then
|
||||
python3 -m venv .venv
|
||||
fi
|
||||
source .venv/bin/activate
|
||||
echo " Активировано: $(which python)"
|
||||
# --- Проверка Python ---
|
||||
echo ""
|
||||
echo "🐍 Проверка Python..."
|
||||
python3 --version
|
||||
|
||||
# --- Обновление pip ---
|
||||
echo ""
|
||||
echo "⬆️ Обновление pip..."
|
||||
pip install --upgrade pip wheel setuptools
|
||||
# --- Создание venv ---
|
||||
echo ""
|
||||
echo "📦 Создание виртуального окружения venv..."
|
||||
if [ ! -d ".venv" ]; then
|
||||
python3 -m venv .venv
|
||||
fi
|
||||
source .venv/bin/activate
|
||||
echo " Активировано: $(which python)"
|
||||
|
||||
# --- Установка MLflow и базовых библиотек ---
|
||||
echo ""
|
||||
echo "📥 Установка MLflow + scikit-learn + matplotlib..."
|
||||
pip install mlflow scikit-learn pandas numpy matplotlib
|
||||
# --- pip ---
|
||||
echo ""
|
||||
echo "⬆️ Обновление pip..."
|
||||
pip install --upgrade pip wheel setuptools
|
||||
|
||||
# --- Установка PyTorch под CUDA ---
|
||||
echo ""
|
||||
echo "🔥 Установка PyTorch (CUDA 12.1)..."
|
||||
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
|
||||
# --- MLflow + базовые библиотеки ---
|
||||
echo ""
|
||||
echo "📥 Установка MLflow + scikit-learn + matplotlib..."
|
||||
pip install mlflow scikit-learn pandas numpy matplotlib
|
||||
|
||||
# --- Проверка CUDA ---
|
||||
echo ""
|
||||
echo "✅ Проверка PyTorch + CUDA..."
|
||||
python3 -c "
|
||||
# --- 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()}')
|
||||
@@ -58,15 +136,18 @@ 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 ---
|
||||
# ============================================
|
||||
# Общая проверка MLflow (обе платформы)
|
||||
# ============================================
|
||||
echo ""
|
||||
echo "✅ Проверка MLflow..."
|
||||
python3 -c "import mlflow; print(f'MLflow: {mlflow.__version__}')"
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " ✅ Установка завершена!"
|
||||
echo " ✅ Установка завершена! ($PLATFORM)"
|
||||
echo "============================================"
|
||||
echo ""
|
||||
echo "Следующие шаги:"
|
||||
@@ -74,6 +155,11 @@ echo " 1. Активируйте окружение: source .venv/bin/activate
|
||||
echo " 2. Запустите MLflow UI: ./start_ui.sh"
|
||||
echo " 3. В другом терминале:"
|
||||
echo " source .venv/bin/activate"
|
||||
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"
|
||||
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 ""
|
||||
|
||||
Reference in New Issue
Block a user