Skip to main content

MeinSweeper is a light-weight framework for running experiments on arbitrary compute nodes

Project description

MeinSweeper

Minesweeper image taken from https://www.pngwing.com/en/free-png-vxhwi

MeinSweeper is a lightweight framework for running experiments on arbitrary compute nodes, with built-in support for GPU management and job distribution.

- This is still in alpha, and was written for research
- I.e. expect bugs and smelly code!

Installation

Use the package manager pip to install MeinSweeper:

pip install meinsweeper

Features

  • Asynchronous job execution
  • Support for multiple node types (SSH and Local)
  • Automatic GPU management and allocation
  • Retry mechanism for failed jobs and unavailable nodes
  • Configurable via environment variables

Usage

Basic Usage

import meinsweeper

targets = {
    'local_gpu': {'type': 'local_async', 'params': {'gpus': ['0', '1']}},
    'remote_server': {'type': 'ssh', 'params': {'address': 'example.com', 'username': 'user', 'key_path': '/path/to/key'}}
}

commands = [
    ("python script1.py", "job1"), 
    ("python script2.py", "job2"),
    # ... more commands
]

meinsweeper.run_sweep(commands, targets)

Node Types

  1. Local Async Node: Executes jobs on the local machine, managing GPU allocation.
  2. SSH Node: Connects to remote machines via SSH, manages GPU allocation, and executes jobs.

Both node types handle GPU checking, allocation, and release automatically.

Configuration

MeinSweeper can be configured using environment variables:

  • MINIMUM_VRAM: Minimum free VRAM required for a GPU to be considered available (in GB, default: 8)
  • USAGE_CRITERION: Maximum GPU utilization for a GPU to be considered available (0-1, default: 0.8)
  • MAX_PROCESSES: Maximum number of concurrent processes (-1 for no limit, default: -1)
  • RUN_TIMEOUT: Timeout for each job execution (in seconds, default: 1200)
  • MAX_RETRIES: Maximum number of retries for failed jobs (default: 3)
  • MEINSWEEPER_RETRY_INTERVAL: Interval between retrying unavailable nodes (in seconds, default: 450)
  • MEINSWEEPER_DEBUG: Enable debug logging (set to 'True' for verbose output)

Example:

export MINIMUM_VRAM=10
export USAGE_CRITERION=0.5
export MEINSWEEPER_RETRY_INTERVAL=300
python your_script.py

Advanced Usage

Custom Node Types

You can create custom node types by subclassing the ComputeNode abstract base class:

from meinsweeper.modules.nodes.abstract import ComputeNode

class MyCustomNode(ComputeNode):
    async def open_connection(self):
        # Implementation
    
    async def run(self, command, label):
        # Implementation

# Usage
targets = {
    'custom_node': {'type': 'my_custom_node', 'params': {...}}
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meinsweeper-0.3.3.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meinsweeper-0.3.3-py3-none-any.whl (44.3 kB view details)

Uploaded Python 3

File details

Details for the file meinsweeper-0.3.3.tar.gz.

File metadata

  • Download URL: meinsweeper-0.3.3.tar.gz
  • Upload date:
  • Size: 37.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for meinsweeper-0.3.3.tar.gz
Algorithm Hash digest
SHA256 276ae33fe231b7a2e4e8a1343032da381918df040d638b3152dfba5369ead8f2
MD5 f876db3bfbef5df4c3f5345a75de62fe
BLAKE2b-256 8c0d64eb53dbc884c99fa56342774332f3b799fcb4092d8cb871ab1f3acf7d3a

See more details on using hashes here.

File details

Details for the file meinsweeper-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: meinsweeper-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 44.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.14

File hashes

Hashes for meinsweeper-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 56d806511046cb595acca1748f54484f3a686df50ff65a30d73e329565226c95
MD5 4e76e526658f9d6367ff47186d6ab1d3
BLAKE2b-256 483d6f58c9c60b10784fb3fd104852481840f4be9b6e65f235173cddd5c5839d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page