Skip to content

Added Experiment Folders Handling #27

Added Experiment Folders Handling

Added Experiment Folders Handling #27

Workflow file for this run

# Название рабочего процесса CI/CD для ML проекта
name: ML Pipeline CI/CD
# Триггеры для запуска workflow
on:
push:
branches: [ main, master ]
pull_request:
branches: [ main, master ]
workflow_dispatch: # Позволяет запускать вручную
# Права доступа для GITHUB_TOKEN
permissions:
contents: write # Разрешаем запись в репозиторий
# Определение заданий
jobs:
# Задание для проверки качества кода и обучения модели
ml-pipeline:
runs-on: ubuntu-latest
steps:
# Шаг 1: Получение кода из репозитория
- name: Checkout код
uses: actions/checkout@v4
# Шаг 2: Установка Python
- name: Установка Python 3.9
uses: actions/setup-python@v4
with:
python-version: '3.9'
cache: 'pip'
# Шаг 3: Установка зависимостей
- name: Установка зависимостей
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install anywidget
# Шаг 4: Подготовка данных
- name: Подготовка данных и директорий
run: |
mkdir -p data reports models
if [ ! -f data/iris_dataset.csv ]; then
echo "Генерация датасета Iris..."
python -c "
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
df.to_csv('data/iris_dataset.csv', index=False)
print('Датасет создан')
"
fi
# Шаг 5: Проверка качества данных с Deepchecks
- name: Проверка данных с Deepchecks
run: |
echo "Запуск проверки качества данных..."
python check_data.py
# Шаг 6: Анализ дрейфа данных с EvidentlyAI
- name: Анализ дрейфа данных с EvidentlyAI
run: |
echo "Запуск анализа дрейфа данных..."
python analyze_drift.py
# Шаг 7: Обучение модели с MLflow
- name: Обучение модели с MLflow
env:
CI: true
HOME: ${{ github.workspace }}
MLFLOW_TRACKING_URI: file://${{ github.workspace }}/mlruns
MLFLOW_ARTIFACT_ROOT: ${{ github.workspace }}/mlruns
MLFLOW_REGISTRY_URI: file://${{ github.workspace }}/mlruns
run: |
echo "Создание директории mlruns..."
mkdir -p mlruns
echo "Рабочая директория: $(pwd)"
echo "HOME: $HOME"
echo "MLFLOW_TRACKING_URI: $MLFLOW_TRACKING_URI"
echo "Запуск обучения модели..."
python train.py
echo ""
echo "Проверка созданных артефактов:"
ls -lah mlruns/ || echo "mlruns пуста"
du -sh mlruns/ || echo "mlruns не существует"
find mlruns/ -type f | head -10 || echo "Нет файлов в mlruns"
# Шаг 8: Коммит результатов в репозиторий
- name: Коммит MLflow артефактов
if: success()
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
# Настраиваем аутентификацию с GITHUB_TOKEN
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
# Временно разрешаем добавление mlruns
git add -f mlruns/
git add -f models/
# Проверяем, есть ли изменения
if git diff --staged --quiet; then
echo "Нет изменений для коммита"
else
git commit -m "CI: Добавлены MLflow артефакты и модели [skip ci]"
git push origin HEAD:${{ github.ref }}
fi
# Шаг 9: Сохранение артефактов (отчеты, модели)
- name: Сохранение артефактов
uses: actions/upload-artifact@v4
if: always()
with:
name: ml-artifacts
path: |
reports/**/*
models/**/*
data/**/*
mlruns/**/*
retention-days: 30
include-hidden-files: true
# Шаг 10: Публикация результатов
- name: Публикация результатов
if: always()
run: |
echo "Пайплайн завершен успешно"
echo "Артефакты сохранены и доступны для скачивания"