Skip to content

Руководство по развертыванию

Полное руководство по развертыванию проекта Engineering Practices ML в различных окружениях.

Содержание

Локальное развертывание

Предварительные требования

  • Python 3.10+
  • UV (быстрый менеджер пакетов для Python)
  • Git
  • Docker и Docker Compose (для MinIO и ClearML)

Шаг 1: Клонирование репозитория

git clone https://github.com/M0rtel/engineering_practices_ml.git
cd engineering_practices_ml

Шаг 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

# Убедитесь, что виртуальное окружение активировано!
pre-commit install
pre-commit run --all-files

Шаг 5: Запуск пайплайна

# Добавление исходных данных
# Убедитесь, что виртуальное окружение активировано!
dvc add data/raw/WineQT.csv

# Запуск пайплайна
dvc repro

Развертывание с Docker

Сборка образа

docker build -t engineering-practices-ml:latest .

Запуск контейнера

# Простой запуск
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

  1. Создайте EC2 инстанс с Ubuntu
  2. Установите зависимости:
    sudo apt-get update
    sudo apt-get install -y python3.10 python3-pip git
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  3. Клонируйте репозиторий и настройте проект
  4. Настройте 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

  1. Настройка MongoDB:
  2. Используйте managed MongoDB (MongoDB Atlas) или настроенный кластер
  3. Обновите docker-compose.yml с правильными connection strings

  4. Настройка Elasticsearch:

  5. Используйте managed Elasticsearch или настроенный кластер
  6. Настройте индексы и mappings

  7. Настройка Redis:

  8. Используйте managed Redis или настроенный кластер
  9. Настройте persistence и replication

  10. Настройка ClearML Server:

  11. Обновите конфигурацию в docker-compose.yml
  12. Настройте SSL/TLS для production
  13. Настройте backup стратегию

Настройка credentials

  1. Откройте ClearML Web UI: http://localhost:8080
  2. Создайте пользовательский аккаунт (не системный)
  3. Создайте credentials в Settings > Workspace
  4. Настройте локальный клиент: 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 развертывание

  1. Настройка MinIO в production:
  2. Используйте MinIO в distributed mode для высокой доступности
  3. Настройте SSL/TLS
  4. Настройте backup и replication

  5. Настройка credentials:

  6. Измените default credentials
  7. Используйте secrets management для хранения credentials

  8. Настройка bucket policies:

  9. Настройте IAM policies для доступа
  10. Настройте lifecycle policies

Мониторинг и логирование

Настройка мониторинга

Проект включает систему мониторинга пайплайнов:

# Запуск с мониторингом
python scripts/pipeline/run_pipeline.py \
  --config config/train_params.yaml \
  --monitor

Отчеты сохраняются в reports/monitoring/pipeline_report.json.

Настройка логирования

Настройте логирование в config/logging.yaml или через переменные окружения.

Troubleshooting

Проблемы с DVC

# Проверка статуса
dvc status

# Очистка кэша
dvc cache dir
dvc cache clean

Проблемы с 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.