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.
- 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.
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")
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['stdout']}")
print(f"AI Analysis: {ai_result['response']}")
asyncio.run(main())# 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]- Full Documentation: https://radical-cybertools.github.io/rhapsody/
- API Reference: https://radical-cybertools.github.io/rhapsody/api/
- Examples: See
examples/directory
We welcome contributions! Please see our Contributing Guide for details.
- 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
Please use the GitHub issue tracker to report bugs or request features.
RHAPSODY is licensed under the MIT License.
RHAPSODY is a collaborative project between two teams:
- RADICAL Research Group — Rutgers University, New Jersey: core architecture, API design, session management, telemetry, and backend abstraction.
- Hewlett Packard Enterprise (HPE) — USA / Canada: DragonHPC runtime integration and Dragon backend development.
See the full Team page for details.
- AsyncFlow: Asynchronous workflow management
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.
If you use RHAPSODY in your research, please cite:
@software{rhapsody2024,
title={RHAPSODY: Runtime for Heterogeneous Applications, Service Orchestration and Dynamism},
author={RADICAL Research Group, Rutgers University and Hewlett Packard Enterprise},
year={2024},
url={https://github.com/radical-cybertools/rhapsody},
version={0.1.0}
}