Skip to content

Latest commit

 

History

History
 
 

README.md

ec2-gha Demos

This directory contains the reusable workflow and demo workflows for ec2-gha, demonstrating various capabilities.

For documentation about the main workflow, runner.yml, see the main README.

demos – run all demo workflows

Useful regression test, demonstrates and verifies features.

Core demos

dbg-minimal – configurable debugging instance

  • workflow_dispatch with customizable parameters (instance type, AMI, timeouts)
  • Also callable via workflow_call (used by cpu-sweep)
  • Extended debug mode for troubleshooting
  • Instance type: t3.large (default), configurable
  • Use case: Interactive debugging and testing

gpu-minimalnvidia-smi "hello world"

  • Instance type: g4dn.xlarge

cpu-sweep – OS/architecture matrix

  • Tests 12 combinations across operating systems and architectures
  • OS: Ubuntu 22.04/24.04, Debian 11/12, AL2, AL2023
  • Architectures: x86 (t3.*) and ARM (t4g.*)
  • Calls dbg-minimal for each combination
  • Use case: Cross-platform compatibility testing

gpu-sweep – GPU instance types with PyTorch

  • Tests different GPU instance families
  • Instance types: g4dn.xlarge, g5.xlarge, g6.xlarge, g5g.xlarge (ARM64 + GPU)
  • Uses Deep Learning OSS PyTorch 2.5.1 AMIs
  • Activates conda environment and runs PyTorch CUDA tests
  • Use case: GPU compatibility and performance testing

Parallelization

instances-mtx – multiple instances for parallel jobs

  • Creates configurable number of instances (default: 3)
  • Uses matrix strategy to run jobs in parallel
  • Each job runs on its own EC2 instance
  • Instance type: t3.medium
  • Use case: Parallel test execution, distributed builds

runners-mtx – multiple runners on single instance

  • Configurable runners per instance (default: 3)
  • All runners share the same instance resources
  • Demonstrates resource-efficient parallel execution
  • Instance type: t3.xlarge (larger instance for multiple runners)
  • Use case: Shared environment testing, resource optimization

jobs-split – different job types on separate instances

  • Launches 2 instances
  • Build job runs on first instance
  • Test job runs on second instance
  • Demonstrates targeted job placement
  • Instance type: t3.medium
  • Use case: Pipeline with dedicated instances per stage

Stress testing

test-disk-full – disk-full scenario testing

  • Tests runner behavior when disk space is exhausted
  • Configurable parameters:
    • disk_size: Root disk size (0=AMI default, +N=AMI+N GB, e.g., +2)
    • fill_strategy: How to fill disk (gradual, immediate, or during-tests)
    • debug: Debug mode (false, true/trace, or number for trace+sleep)
    • max_instance_lifetime: Maximum lifetime before forced shutdown (default: 15 minutes)
  • Features tested:
    • Heartbeat mechanism for detecting stuck jobs
    • Stale job file detection and cleanup
    • Worker/Listener process monitoring
    • Robust shutdown with multiple fallback methods
  • Instance type: t3.medium (default)
  • Use case: Verifying robustness in resource-constrained environments

Real-world example: Mamba installation testing

  • Tests different versions of mamba_ssm package on GPU instances
  • Customizes instance_name: "$repo/$name==${{ inputs.mamba_version }} (#$run)"
    • Results in descriptive names like "mamba/install==2.2.5 (#123)"
    • Makes it easy to identify which version is being tested on each instance
  • Uses pre-installed PyTorch from DLAMI conda environment
  • Use case: Package compatibility testing across versions