Руководство по развертыванию
Полное руководство по развертыванию проекта Engineering Practices ML в различных окружениях.
Содержание
- Локальное развертывание
- Развертывание с Docker
- Развертывание в облаке
- Настройка CI/CD
- Развертывание ClearML Server
- Развертывание MinIO
Локальное развертывание
Предварительные требования
- Python 3.10+
- UV (быстрый менеджер пакетов для Python)
- Git
- Docker и Docker Compose (для MinIO и ClearML)
Шаг 1: Клонирование репозитория
Шаг 2: Создание виртуального окружения
# Создание виртуального окружения
uv venv
# Активация окружения
source .venv/bin/activate # Linux/macOS
# или
.venv\Scripts\activate # Windows
Шаг 3: Установка зависимостей
# Установка UV (если не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Установка зависимостей проекта (в активированном окружении, включая dev)
uv sync --all-extras
Шаг 4: Настройка DVC
# Инициализация DVC
# Убедитесь, что виртуальное окружение активировано!
dvc init --no-scm
# Настройка remote storage (выберите один вариант)
# Локальное хранилище
dvc remote add local storage/local
dvc remote default local
# MinIO (требует запущенный MinIO)
dvc remote add minio s3://engineering-practices-ml/dvc
dvc remote modify minio endpointurl http://localhost:9000
dvc remote modify minio access_key_id minioadmin --local
dvc remote modify minio secret_access_key minioadmin --local
dvc remote default minio
Шаг 4: Настройка pre-commit hooks
Шаг 5: Запуск пайплайна
# Добавление исходных данных
# Убедитесь, что виртуальное окружение активировано!
dvc add data/raw/WineQT.csv
# Запуск пайплайна
dvc repro
Развертывание с Docker
Сборка образа
Запуск контейнера
# Простой запуск
docker run -it engineering-practices-ml:latest
# С монтированием директорий
docker run -it \
-v $(pwd)/data:/app/data \
-v $(pwd)/src:/app/src \
-v $(pwd)/config:/app/config \
engineering-practices-ml:latest
Docker Compose
Для запуска всех сервисов (MinIO, ClearML, проект):
# Запуск всех сервисов
docker compose up -d
# Просмотр логов
docker compose logs -f
# Остановка
docker compose down
Развертывание в облаке
AWS
Настройка S3 для DVC
# Создание S3 bucket
aws s3 mb s3://engineering-practices-ml-dvc
# Настройка DVC для S3
dvc remote add s3 s3://engineering-practices-ml-dvc/dvc
# Настройка credentials через переменные окружения
export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
Развертывание на EC2
- Создайте EC2 инстанс с Ubuntu
- Установите зависимости:
- Клонируйте репозиторий и настройте проект
- Настройте systemd service для автоматического запуска
Google Cloud Platform
Настройка GCS для DVC
# Установка gsutil
pip install gsutil
# Создание bucket
gsutil mb gs://engineering-practices-ml-dvc
# Настройка DVC для GCS
dvc remote add gcs gs://engineering-practices-ml-dvc/dvc
Azure
Настройка Azure Blob Storage для DVC
# Настройка DVC для Azure
dvc remote add azure azure://engineering-practices-ml-dvc/dvc
dvc remote modify azure account_name your_account_name
dvc remote modify azure account_key your_account_key --local
Настройка CI/CD
GitHub Actions
Проект уже настроен с GitHub Actions для автоматической проверки кода и тестирования.
Файл конфигурации: .github/workflows/ci.yml
Добавление автоматической публикации документации
См. .github/workflows/docs.yml для автоматической публикации документации на GitHub Pages.
GitLab CI/CD
Пример .gitlab-ci.yml:
stages:
- test
- build
- deploy
test:
stage: test
image: python:3.10
script:
- pip install uv
- uv sync
- pytest # Убедитесь, что виртуальное окружение активировано!
build:
stage: build
image: docker:latest
script:
- docker build -t engineering-practices-ml:$CI_COMMIT_SHA .
deploy:
stage: deploy
script:
- echo "Deploy to production"
Развертывание ClearML Server
Локальное развертывание с Docker Compose
# Запуск всех сервисов ClearML
docker compose up -d clearml-mongo clearml-elastic clearml-redis clearml-server clearml-fileserver clearml-webserver
# Проверка статуса
docker compose ps
# Просмотр логов
docker compose logs -f clearml-server
Развертывание в production
- Настройка MongoDB:
- Используйте managed MongoDB (MongoDB Atlas) или настроенный кластер
-
Обновите
docker-compose.ymlс правильными connection strings -
Настройка Elasticsearch:
- Используйте managed Elasticsearch или настроенный кластер
-
Настройте индексы и mappings
-
Настройка Redis:
- Используйте managed Redis или настроенный кластер
-
Настройте persistence и replication
-
Настройка ClearML Server:
- Обновите конфигурацию в
docker-compose.yml - Настройте SSL/TLS для production
- Настройте backup стратегию
Настройка credentials
- Откройте ClearML Web UI: http://localhost:8080
- Создайте пользовательский аккаунт (не системный)
- Создайте credentials в Settings > Workspace
- Настройте локальный клиент:
bash python scripts/clearml/init_clearml.py \ --api-host http://your-clearml-server:8008 \ --web-host http://your-clearml-server:8080 \ --access-key <your-key> \ --secret-key <your-secret>
Развертывание MinIO
Локальное развертывание
# Запуск MinIO через Docker Compose
docker compose up -d minio
# Проверка статуса
docker compose ps minio
# Доступ к MinIO Console
# http://localhost:9001
# Credentials: minioadmin / minioadmin
Production развертывание
- Настройка MinIO в production:
- Используйте MinIO в distributed mode для высокой доступности
- Настройте SSL/TLS
-
Настройте backup и replication
-
Настройка credentials:
- Измените default credentials
-
Используйте secrets management для хранения credentials
-
Настройка bucket policies:
- Настройте IAM policies для доступа
- Настройте lifecycle policies
Мониторинг и логирование
Настройка мониторинга
Проект включает систему мониторинга пайплайнов:
# Запуск с мониторингом
python scripts/pipeline/run_pipeline.py \
--config config/train_params.yaml \
--monitor
Отчеты сохраняются в reports/monitoring/pipeline_report.json.
Настройка логирования
Настройте логирование в config/logging.yaml или через переменные окружения.
Troubleshooting
Проблемы с DVC
Проблемы с ClearML
# Проверка подключения
python -c "from clearml import Task; print('OK')"
# Просмотр логов
docker compose logs clearml-server
Проблемы с MinIO
# Проверка статуса
docker compose ps minio
# Просмотр логов
docker compose logs minio
# Перезапуск
docker compose restart minio
Дополнительные ресурсы
Для получения дополнительной информации см. Quick Start Guide.