configured mlruns dir upload #24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Название рабочего процесса CI/CD для ML проекта | |
| name: ML Pipeline CI/CD | |
| # Триггеры для запуска workflow | |
| on: | |
| push: | |
| branches: [ main, master ] | |
| pull_request: | |
| branches: [ main, master ] | |
| workflow_dispatch: # Позволяет запускать вручную | |
| # Определение заданий | |
| 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]" | |
| # Временно разрешаем добавление 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 | |
| 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 "Артефакты сохранены и доступны для скачивания" |