Skip to main content

Runtime system for executing heterogeneous HPC-AI workflows with dynamic task graphs on high-performance computing infrastructures.

Project description

RHAPSODY

Build Status Docs Python Version PyPI Version License

RHAPSODYRuntime for Heterogeneous APplications, Service Orchestration and DYnamism

A unified runtime for executing AI and HPC workloads on supercomputing infrastructures. RHAPSODY seamlessly integrates traditional scientific computing with AI inference, enabling complex workflows that combine simulation, analysis, and machine learning.

What RHAPSODY Offers

  • Unified AI-HPC API: Single interface for compute tasks and AI inference
  • Multi-Backend Execution: Run on local machines, HPC clusters (Dragon), or distributed systems (Dask)
  • Async-First Design: Native asyncio integration for efficient task orchestration
  • Integratable Design: RHAPSODY is designed to be integratable with existing workflows and tools such as AsyncFlow and LangGraph/FlowGentic.
  • Scale-Ready: Scale your workload and workflows to thousands of tasks and nodes.

Quick Example: AI-HPC Workflow

import asyncio
from rhapsody.api import Session, ComputeTask, AITask
from rhapsody.backends import DragonExecutionBackendV3, DragonVllmInferenceBackend

async def main():
    # Initialize backends
    hpc_backend = await DragonExecutionBackendV3(name="hpc", num_workers=128)
    ai_backend = await DragonVllmInferenceBackend(name="vllm", model="Qwen2.5-7B")

    # Create session with multiple backends
    async with Session(backends=[hpc_backend, ai_backend]) as session:

        # HPC simulation task
        simulation = ComputeTask(
            executable="./simulate",
            arguments=["--config", "params.yaml"],
            backend=hpc_backend.name
        )

        # AI analysis task
        analysis = AITask(
            prompt="Analyze the simulation results and identify key patterns...",
            backend=ai_backend.name
        )

        # Submit and execute
        await session.submit_tasks([simulation, analysis])

        # Wait for completion (tasks are awaitable!)
        sim_result = await simulation
        ai_result = await analysis

        print(f"Simulation: {sim_result['state']}")
        print(f"AI Analysis: {ai_result['output']}")

asyncio.run(main())

Installation

# Basic installation
pip install rhapsody-py

# With specific backends
pip install rhapsody-py[dask]           # Dask distributed computing
pip install rhapsody-py[dragon]         # Dragon runtime (Python 3.10-3.12)

# Development
pip install rhapsody-py[dev]

Documentation

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass (make test-regular)
  6. Run code quality checks (pre-commit run --all-files)
  7. Commit your changes (git commit -m 'Add amazing feature')
  8. Push to the branch (git push origin feature/amazing-feature)
  9. Open a Pull Request

Reporting Issues

Please use the GitHub issue tracker to report bugs or request features.

License

RHAPSODY is licensed under the MIT License.

Acknowledgments

RHAPSODY is developed by the RADICAL Research Group at Rutgers University.

Related Projects

  • AsyncFlow: Asynchronous workflow management

NSF-Funded Project

RHAPSODY is supported by the National Science Foundation (NSF) under Award ID 2103986. This collaborative project aims to advance the state-of-the-art in heterogeneous workflow execution for scientific computing.

Citations

If you use RHAPSODY in your research, please cite:

@software{rhapsody2024,
  title={RHAPSODY: Runtime for Heterogeneous Applications, Service Orchestration and Dynamism},
  author={RADICAL Research Team},
  year={2024},
  url={https://github.com/radical-cybertools/rhapsody},
  version={0.1.0}
}

Support

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

rhapsody_py-0.1.1.tar.gz (117.3 kB view details)

Uploaded Source

Built Distribution

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

rhapsody_py-0.1.1-py3-none-any.whl (80.8 kB view details)

Uploaded Python 3

File details

Details for the file rhapsody_py-0.1.1.tar.gz.

File metadata

  • Download URL: rhapsody_py-0.1.1.tar.gz
  • Upload date:
  • Size: 117.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rhapsody_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b52e8e2f6eb7eff38de902fee3f2197ccf6c4700c1e32af138ffe0fd08c841a1
MD5 67a9e90baf0ba7f06604c5e41904d382
BLAKE2b-256 ae02a89ef512fae848eca00347788a64e8e89d9764b6ec49d92434ec5c78db0c

See more details on using hashes here.

File details

Details for the file rhapsody_py-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: rhapsody_py-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 80.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rhapsody_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 21fa048bc30dda7829e124a38284674802b5729bac90d82c7bff4e9e77d12abf
MD5 47dff350ba8f51f456cdb5621fe60356
BLAKE2b-256 aab08cba24530d018aaa656509acad30dc1d1a7a11121cace4f9943c54feca33

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