Bird
Raised Fist0
ML Pythonml~20 mins

CI/CD for ML pipelines in ML Python - ML Experiment: Train & Evaluate

Choose your learning style10 modes available
Experiment - CI/CD for ML pipelines
Problem:You have an ML pipeline that trains a model and deploys it manually. This process is slow and error-prone.
Current Metrics:Training accuracy: 90%, Validation accuracy: 88%, Deployment time: 2 hours manually
Issue:Manual deployment causes delays and risks mistakes. No automation to test, build, and deploy the ML model.
Your Task
Automate the ML pipeline with CI/CD to reduce deployment time to under 10 minutes and ensure consistent model quality.
Use GitHub Actions for CI/CD automation
Keep the same model architecture and dataset
Include automated testing of model training and evaluation
Hint 1
Hint 2
Hint 3
Solution
ML Python
name: ML Pipeline CI/CD

on:
  push:
    branches: [ main ]

jobs:
  build-and-test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.12'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install scikit-learn

    - name: Train and evaluate model
      run: |
        python train_and_evaluate.py

    - name: Check accuracy
      run: |
        ACC=$(python get_accuracy.py)
        echo "Model accuracy: $ACC"
        if (( $(echo "$ACC < 0.85" | bc -l) )); then
          echo "Accuracy too low, failing build."
          exit 1
        fi

    - name: Deploy model
      run: |
        echo "Deploying model..."
        # Simulate deployment step
        sleep 5
        echo "Model deployed successfully."
Added GitHub Actions workflow to automate training, testing, and deployment
Included accuracy check to fail pipeline if model quality is low
Reduced manual deployment time by automating with scripts
Results Interpretation

Before: Manual deployment took 2 hours and risked errors.
After: Automated CI/CD pipeline runs training, tests accuracy, and deploys model in under 10 minutes.

Automating ML pipelines with CI/CD improves speed, consistency, and reliability of model deployment.
Bonus Experiment
Add automated data validation and model performance monitoring to the CI/CD pipeline.
💡 Hint
Use scripts to check input data quality and track model metrics over time, triggering alerts if performance drops.

Practice

(1/5)
1. What is the main purpose of a CI/CD pipeline in machine learning projects?
easy
A. To manually update model parameters
B. To automate model training, testing, and deployment
C. To store large datasets only
D. To write machine learning algorithms from scratch

Solution

  1. Step 1: Understand CI/CD pipeline role

    CI/CD pipelines automate repetitive tasks like training, testing, and deploying ML models.
  2. Step 2: Compare options

    Only To automate model training, testing, and deployment describes automation of these tasks; others describe unrelated activities.
  3. Final Answer:

    To automate model training, testing, and deployment -> Option B
  4. Quick Check:

    CI/CD automates ML workflows = B [OK]
Hint: CI/CD means automating ML workflow steps [OK]
Common Mistakes:
  • Thinking CI/CD is only for code storage
  • Confusing manual updates with automation
  • Assuming CI/CD writes ML algorithms
2. Which of the following is the correct YAML syntax snippet to trigger a CI/CD pipeline on every code push in GitHub Actions?
easy
A. on: [push]
B. trigger: push
C. when: code_push
D. event: commit

Solution

  1. Step 1: Identify GitHub Actions trigger syntax

    GitHub Actions uses 'on:' keyword with event names like 'push' to trigger workflows.
  2. Step 2: Validate options

    Only 'on: [push]' is valid YAML syntax for triggering on code push.
  3. Final Answer:

    on: [push] -> Option A
  4. Quick Check:

    GitHub Actions trigger = on: [push] [OK]
Hint: GitHub Actions uses 'on:' for triggers [OK]
Common Mistakes:
  • Using 'trigger' instead of 'on'
  • Wrong keywords like 'when' or 'event'
  • Incorrect YAML list syntax
3. Given this simplified ML pipeline step in a CI/CD YAML file:
steps:
  - name: Train model
    run: python train.py --epochs 5
  - name: Test model
    run: python test.py
  - name: Deploy model
    run: python deploy.py

What will happen if train.py fails during execution?
medium
A. The pipeline stops and does not run test or deploy steps
B. The pipeline continues to test and deploy steps regardless
C. Only the deploy step is skipped, test runs
D. The pipeline retries the train step automatically

Solution

  1. Step 1: Understand default CI/CD step behavior

    By default, if a step fails, the pipeline stops and next steps do not run.
  2. Step 2: Apply to given steps

    If 'train.py' fails, 'test.py' and 'deploy.py' steps will not execute.
  3. Final Answer:

    The pipeline stops and does not run test or deploy steps -> Option A
  4. Quick Check:

    Step failure stops pipeline = A [OK]
Hint: Failed step stops pipeline unless configured otherwise [OK]
Common Mistakes:
  • Assuming pipeline continues after failure
  • Thinking only deploy step is skipped
  • Believing automatic retries happen by default
4. You wrote this GitHub Actions step to deploy your ML model:
- name: Deploy model
  run: python deploy.py
  if: success()

But the deploy step runs even if the test step fails. What is the likely cause?
medium
A. The deploy.py script always succeeds regardless of tests
B. The 'if' condition should be 'if: failure()' to run on failure
C. GitHub Actions ignores 'if' conditions on run steps
D. The 'if: success()' condition is incorrectly indented

Solution

  1. Step 1: Check YAML indentation rules

    In GitHub Actions, 'if:' must be at the same level as 'run:' to apply correctly.
  2. Step 2: Analyze given snippet

    'if: success()' is indented under 'run:', so it is ignored and deploy runs always.
  3. Final Answer:

    The 'if: success()' condition is incorrectly indented -> Option D
  4. Quick Check:

    YAML indentation affects condition execution = D [OK]
Hint: Check YAML indentation for 'if:' conditions [OK]
Common Mistakes:
  • Misplacing 'if:' under 'run:'
  • Confusing success() with failure()
  • Assuming scripts control step execution
5. You want to automate retraining your ML model weekly and also on every code push. Which CI/CD configuration best achieves this?
hard
A. trigger: push\nschedule: weekly\ncron: '0 0 * * 0'
B. on: push\nschedule: 'weekly' # invalid syntax
C. on: [push, schedule]\nschedule:\n - cron: '0 0 * * 0' # every Sunday midnight
D. on: [push]\nschedule: every Sunday

Solution

  1. Step 1: Understand GitHub Actions triggers

    To trigger on code push and schedule, use 'on:' with both 'push' and 'schedule' keys.
  2. Step 2: Validate cron syntax

    on: [push, schedule]\nschedule:\n - cron: '0 0 * * 0' # every Sunday midnight uses correct cron format for weekly schedule and valid YAML syntax.
  3. Final Answer:

    on: [push, schedule]\nschedule:\n - cron: '0 0 * * 0' # every Sunday midnight -> Option C
  4. Quick Check:

    Use 'on:' with push and schedule + valid cron [OK]
Hint: Use 'on:' with push and schedule plus cron for weekly [OK]
Common Mistakes:
  • Using invalid schedule syntax
  • Misplacing cron outside schedule
  • Using unsupported keywords like 'trigger'
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard