Runtime system for executing heterogeneous HPC-AI workflows with dynamic task graphs on high-performance computing infrastructures.
Project description
RHAPSODY
RHAPSODY – Runtime 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
- Full Documentation: https://radical-cybertools.github.io/rhapsody/
- API Reference: https://radical-cybertools.github.io/rhapsody/api/
- Examples: See
examples/directory
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Workflow
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for new functionality
- Ensure all tests pass (
make test-regular) - Run code quality checks (
pre-commit run --all-files) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rhapsody_py-0.1.2.tar.gz.
File metadata
- Download URL: rhapsody_py-0.1.2.tar.gz
- Upload date:
- Size: 117.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1778abfc77de832cbb4d61974283d4922a445fe2d8b0a71b076e42575dab98e
|
|
| MD5 |
7279ef4a21b24a991c193fe4a53f8e2b
|
|
| BLAKE2b-256 |
b07b8229543c913cf2d3e14f3ea4f87cf925c90ea44f264677331fedd4d75c0c
|
File details
Details for the file rhapsody_py-0.1.2-py3-none-any.whl.
File metadata
- Download URL: rhapsody_py-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a1f3a8688d74077dd7d1a81f754a835210bf356ddeff17be382364dc40d5e88
|
|
| MD5 |
0f1854779362105c1d8431653420bd6a
|
|
| BLAKE2b-256 |
29263f04b7165dc4fe0f1494646d5faad835ab7e400c2b966d989cdf08050aae
|